Lines Matching full:architecture

3 Architecture Porting Guide
6 An architecture port is needed to enable Zephyr to run on an :abbr:`ISA
7 (instruction set architecture)` or an :abbr:`ABI (Application Binary
20 An architecture port can be divided in several parts; most are required and
23 * **The early boot sequence**: each architecture has different steps it must
26 * **Interrupt and exception handling**: each architecture handles asynchronous
33 and architecture-dependent, and thread abortion possibly as well (required).
36 controller are tied to the architecture (some required, some optional).
39 architecture-specific implementation for performance reasons (required).
44 * **Fault management**: for implementing architecture-specific debug help and
47 * **Linker scripts and toolchains**: architecture-specific details will most
50 * **Memory Management and Memory Mapping**: for architecture-specific details
53 * **Stack Objects**: for architecture-specific details on memory protection
79 Some examples of architecture-specific steps that have to be taken:
93 Each architecture defines interrupt and exception handling differently.
129 It thus needs an architecture-specific implementation, called the
142 * Using some architecture defined mechanism, the parameter value is forced in
146 requiring the architecture to discover at runtime which interrupt is
155 Each architecture also has to implement primitives for interrupt control:
181 Two crucial concepts when writing an architecture port are the following:
240 On x86 and Nios2, :code:`_Swap` is generic enough and the architecture
288 context switched out. This is to be implemented in an architecture-specific
298 The need for an architecture-specific thread termination implementation depends
299 on the architecture. There is a generic implementation, but it might not work
300 for a given architecture.
302 One reason that has been encountered for having an architecture-specific
309 This means implementing an architecture-specific version of
311 :kconfig:option:`CONFIG_ARCH_HAS_THREAD_ABORT` as needed for the architecture (e.g. see
317 To enable thread local storage on a new architecture:
325 toolchain and architecture).
328 does not do architecture and/or toolchain specific data.
333 and architecture documentation on which registers to use.
335 kconfig related to the new architecture.
345 tied to the architecture, they are part of the architecture port.
358 Interrupt Controller)` as part of the architecture definition. There is no need
363 The ARCv2 has its interrupt unit as part of the architecture definition, which
376 x86 has APIC timers and the HPET as part of its architecture definition. ARM
386 There is one other device that is almost a requirement for an architecture
400 expected to be implemented as part of an architecture port.
404 * If instructions do exist for a given architecture, the implementation is
408 * If instructions do not exist for a given architecture,
415 * If instructions do not exist for a given architecture, it is always
428 instruction for the architecture with interrupts unlocked, for example
447 Both functions must exist for a given architecture. However, the implementation
458 In the event of an unhandled CPU exception, the architecture
460 out architecture-agnostic information and makes a policy
472 Some architecture-specific definitions are needed in :zephyr_file:`include/zephyr/toolchain/gcc.h`.
475 Each architecture also needs its own linker script, even if most sections can
477 be specific to the new architecture, for example the SCB section on ARM and the
495 created. All architecture ports must specify the required alignment of the
497 is defined in architecture headers with :c:macro:`ARCH_STACK_PTR_ALIGN` and
514 Additional macros may be defined in the architecture layer to specify
812 architecture and some additional APIs must be implemented. This is common
854 To enable GDB stub for remote debugging on a new architecture:
856 #. Create a new ``gdbstub.h`` header file under appropriate architecture
865 * Architecture can define as many members as needed for GDB stub to
873 * If the architecture relies on interrupts to service breakpoints,
894 * This must stop code execution via architecture specific method (e.g.
922 the G-packet is architecture specific. Consult GDB on what is
953 handle software breakpoints in the architecture code (where
958 the architecture datasheet on how to enable hardware breakpoints.
960 * If hardware breakpoints are not supported by the architecture,
961 there is no need to implement these in architecture code.
964 #. For architecture where certain memory regions are not accessible,
1026 Miscellaneous Architecture APIs