forked from Imagelibrary/rtems
* cpu_supplement/arm.t: Update. * cpu_supplement/preface.texi: Typo. * cpu_supplement/general.t: Expanded abbreviation.
103 lines
3.3 KiB
Perl
103 lines
3.3 KiB
Perl
@c
|
|
@c COPYRIGHT (c) 1988-2002.
|
|
@c On-Line Applications Research Corporation (OAR).
|
|
@c All rights reserved.
|
|
@c
|
|
@c $Id$
|
|
@c
|
|
|
|
@ifinfo
|
|
@end ifinfo
|
|
@chapter ARM Specific Information
|
|
|
|
This chapter discusses the
|
|
@uref{http://en.wikipedia.org/wiki/ARM_architecture,ARM architecture}
|
|
dependencies in this port of RTEMS. The ARM family has a wide variety of
|
|
implementations by a wide range of vendors. Consequently, there are many, many
|
|
CPU models within it. Currently the ARMv5 (and compatible) architecture
|
|
version as defined in the @code{ARMv5 Architecture Reference Manual} is supported by RTEMS.
|
|
|
|
@subheading Architecture Documents
|
|
|
|
For information on the ARM architecture refer to the
|
|
@uref{http://infocenter.arm.com,ARM Infocenter}.
|
|
|
|
@section CPU Model Dependent Features
|
|
|
|
This section presents the set of features which vary
|
|
across ARM implementations and are of importance to RTEMS. The set of CPU
|
|
model feature macros are defined in the file
|
|
@file{cpukit/score/cpu/arm/rtems/score/arm.h} based upon the particular CPU
|
|
model flags specified on the compilation command line.
|
|
|
|
@subsection CPU Model Name
|
|
|
|
The macro @code{CPU_MODEL_NAME} is a string which designates
|
|
the architectural level of this CPU model. See in
|
|
@file{cpukit/score/cpu/arm/rtems/score/arm.h} for the values.
|
|
|
|
@subsection Count Leading Zeroes Instruction
|
|
|
|
The ARMv5 and later has the count leading zeroes @code{clz} instruction which
|
|
could be used to speed up the find first bit operation. The use of this
|
|
instruction should significantly speed up the scheduling associated with a
|
|
thread blocking. This is currently not used.
|
|
|
|
@subsection Floating Point Unit
|
|
|
|
A floating point unit is currently not supported.
|
|
|
|
@section Calling Conventions
|
|
|
|
Please refer to the
|
|
@uref{http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042c/IHI0042C_aapcs.pdf,Procedure Call Standard for the ARM Architecture}.
|
|
|
|
@section Memory Model
|
|
|
|
A flat 32-bit memory model is supported. The board support package must take
|
|
care about the MMU if necessary.
|
|
|
|
@section Interrupt Processing
|
|
|
|
The ARMv5 (and compatible) architecture has seven exception types:
|
|
|
|
@itemize @bullet
|
|
|
|
@item Reset
|
|
@item Undefined
|
|
@item Software Interrupt (SWI)
|
|
@item Prefetch Abort
|
|
@item Data Abort
|
|
@item Interrupt (IRQ)
|
|
@item Fast Interrupt (FIQ)
|
|
|
|
@end itemize
|
|
|
|
Of these types only the IRQ has explicit operating system support. It is
|
|
intentional that the FIQ is not supported by the operating system. Without
|
|
operating system support for the FIQ it is not necessary to disable them during
|
|
critical sections of the system.
|
|
|
|
@subsection Interrupt Levels
|
|
|
|
The RTEMS interrupt level mapping scheme for the ARM is not a numeric level as
|
|
on most RTEMS ports. It is a bit mapping that corresponds the enable bit
|
|
postions in the Current Program Status Register (CPSR). There are only two
|
|
levels: IRQ enabled and IRQ disabled.
|
|
|
|
@subsection Interrupt Stack
|
|
|
|
The board support package must initialize the interrupt stack. The memory for
|
|
the stacks is usually reserved in the linker script.
|
|
|
|
@section Default Fatal Error Processing
|
|
|
|
The default fatal error handler for this architecture performs the
|
|
following actions:
|
|
|
|
@itemize @bullet
|
|
@item disables operating system supported interrupts (IRQ),
|
|
@item places the error code in @code{r0}, and
|
|
@item executes an infinite loop to simulate a halt processor instruction.
|
|
@end itemize
|