OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [doc/] [supplements/] [arm/] [cpumodel.t] - Diff between revs 1026 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 1026 Rev 1765
@c
@c
@c  COPYRIGHT (c) 1988-2002.
@c  COPYRIGHT (c) 1988-2002.
@c  On-Line Applications Research Corporation (OAR).
@c  On-Line Applications Research Corporation (OAR).
@c  All rights reserved.
@c  All rights reserved.
@c
@c
@c  cpumodel.t,v 1.1 2002/07/30 21:43:53 joel Exp
@c  cpumodel.t,v 1.1 2002/07/30 21:43:53 joel Exp
@c
@c
@chapter CPU Model Dependent Features
@chapter CPU Model Dependent Features
@section Introduction
@section Introduction
Microprocessors are generally classified into
Microprocessors are generally classified into
families with a variety of CPU models or implementations within
families with a variety of CPU models or implementations within
that family.  Within a processor family, there is a high level
that family.  Within a processor family, there is a high level
of binary compatibility.  This family may be based on either an
of binary compatibility.  This family may be based on either an
architectural specification or on maintaining compatibility with
architectural specification or on maintaining compatibility with
a popular processor.  Recent microprocessor families such as the
a popular processor.  Recent microprocessor families such as the
ARM, SPARC, and PA-RISC are based on an architectural specification
ARM, SPARC, and PA-RISC are based on an architectural specification
which is independent or any particular CPU model or
which is independent or any particular CPU model or
implementation.  Older families such as the M68xxx and the iX86
implementation.  Older families such as the M68xxx and the iX86
evolved as the manufacturer strived to produce higher
evolved as the manufacturer strived to produce higher
performance processor models which maintained binary
performance processor models which maintained binary
compatibility with older models.
compatibility with older models.
RTEMS takes advantage of the similarity of the
RTEMS takes advantage of the similarity of the
various models within a CPU family.  Although the models do vary
various models within a CPU family.  Although the models do vary
in significant ways, the high level of compatibility makes it
in significant ways, the high level of compatibility makes it
possible to share the bulk of the CPU dependent executive code
possible to share the bulk of the CPU dependent executive code
across the entire family.  Each processor family supported by
across the entire family.  Each processor family supported by
RTEMS has a list of features which vary between CPU models
RTEMS has a list of features which vary between CPU models
within a family.  For example, the most common model dependent
within a family.  For example, the most common model dependent
feature regardless of CPU family is the presence or absence of a
feature regardless of CPU family is the presence or absence of a
floating point unit or coprocessor.  When defining the list of
floating point unit or coprocessor.  When defining the list of
features present on a particular CPU model, one simply notes
features present on a particular CPU model, one simply notes
that floating point hardware is or is not present and defines a
that floating point hardware is or is not present and defines a
single constant appropriately.  Conditional compilation is
single constant appropriately.  Conditional compilation is
utilized to include the appropriate source code for this CPU
utilized to include the appropriate source code for this CPU
model's feature set.  It is important to note that this means
model's feature set.  It is important to note that this means
that RTEMS is thus compiled using the appropriate feature set
that RTEMS is thus compiled using the appropriate feature set
and compilation flags optimal for this CPU model used.  The
and compilation flags optimal for this CPU model used.  The
alternative would be to generate a binary which would execute on
alternative would be to generate a binary which would execute on
all family members using only the features which were always
all family members using only the features which were always
present.
present.
This chapter presents the set of features which vary
This chapter presents the set of features which vary
across ARM implementations and are of importance to RTEMS.
across ARM implementations and are of importance to RTEMS.
The set of CPU model feature macros are defined in the file
The set of CPU model feature macros are defined in the file
cpukit/score/cpu/arm/rtems/score/arm.h based upon the particular CPU
cpukit/score/cpu/arm/rtems/score/arm.h based upon the particular CPU
model defined on the compilation command line.
model defined on the compilation command line.
@section CPU Model Name
@section CPU Model Name
The macro @code{CPU_MODEL_NAME} is a string which designates
The macro @code{CPU_MODEL_NAME} is a string which designates
the architectural level of this CPU model.  The following is
the architectural level of this CPU model.  The following is
a list of the settings for this string based upon @code{gcc}
a list of the settings for this string based upon @code{gcc}
CPU model predefines:
CPU model predefines:
@example
@example
__ARM_ARCH4__   "ARMv4"
__ARM_ARCH4__   "ARMv4"
__ARM_ARCH4T__  "ARMv4T"
__ARM_ARCH4T__  "ARMv4T"
__ARM_ARCH5__   "ARMv5"
__ARM_ARCH5__   "ARMv5"
__ARM_ARCH5T__  "ARMv5T"
__ARM_ARCH5T__  "ARMv5T"
__ARM_ARCH5E__  "ARMv5E"
__ARM_ARCH5E__  "ARMv5E"
__ARM_ARCH5TE__ "ARMv5TE"
__ARM_ARCH5TE__ "ARMv5TE"
@end example
@end example
@section Count Leading Zeroes Instruction
@section Count Leading Zeroes Instruction
The macro @code{ARM_HAS_CLZ} is set to 1 to indicate that
The macro @code{ARM_HAS_CLZ} is set to 1 to indicate that
the architectural version has the @code{clz} instruction.
the architectural version has the @code{clz} instruction.
On ARM architectural version 5 and above, the count
On ARM architectural version 5 and above, the count
leading zeroes instruction (@code{clz}) is available and
leading zeroes instruction (@code{clz}) is available and
can be used to speed up the find first bit operation.
can be used to speed up the find first bit operation.
The use of this instruction significantly speeds up the
The use of this instruction significantly speeds up the
scheduling associated with a thread blocking.
scheduling associated with a thread blocking.
@section Floating Point Unit
@section Floating Point Unit
The macro ARM_HAS_FPU is set to 1 to indicate that
The macro ARM_HAS_FPU is set to 1 to indicate that
this CPU model has a hardware floating point unit and 0
this CPU model has a hardware floating point unit and 0
otherwise.  It does not matter whether the hardware floating
otherwise.  It does not matter whether the hardware floating
point support is incorporated on-chip or is an external
point support is incorporated on-chip or is an external
coprocessor.
coprocessor.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.