source: rtems/doc/supplements/arm/cpumodel.t @ 6c243f11

4.104.114.84.95
Last change on this file since 6c243f11 was 8d7393a, checked in by Joel Sherrill <joel.sherrill@…>, on 07/30/02 at 21:43:53

2002-07-30 Joel Sherrill <joel@…>

  • BSP_TIMES, ChangeLog?, Makefile.am, arm.texi, bsp.t, callconv.t, cpumodel.t, cputable.t, fatalerr.t, intr_NOTIMES.t, memmodel.t, preface.texi, stamp-vti, timeBSP.t, timing.texi, version.texi, wksheets.texi: New files as ARM supplement initial version added.
  • Property mode set to 100644
File size: 3.3 KB
Line 
1@c
2@c  COPYRIGHT (c) 1988-2002.
3@c  On-Line Applications Research Corporation (OAR).
4@c  All rights reserved.
5@c
6@c  $Id$
7@c
8
9@chapter CPU Model Dependent Features
10
11@section Introduction
12
13Microprocessors are generally classified into
14families with a variety of CPU models or implementations within
15that family.  Within a processor family, there is a high level
16of binary compatibility.  This family may be based on either an
17architectural specification or on maintaining compatibility with
18a popular processor.  Recent microprocessor families such as the
19ARM, SPARC, and PA-RISC are based on an architectural specification
20which is independent or any particular CPU model or
21implementation.  Older families such as the M68xxx and the iX86
22evolved as the manufacturer strived to produce higher
23performance processor models which maintained binary
24compatibility with older models.
25
26RTEMS takes advantage of the similarity of the
27various models within a CPU family.  Although the models do vary
28in significant ways, the high level of compatibility makes it
29possible to share the bulk of the CPU dependent executive code
30across the entire family.  Each processor family supported by
31RTEMS has a list of features which vary between CPU models
32within a family.  For example, the most common model dependent
33feature regardless of CPU family is the presence or absence of a
34floating point unit or coprocessor.  When defining the list of
35features present on a particular CPU model, one simply notes
36that floating point hardware is or is not present and defines a
37single constant appropriately.  Conditional compilation is
38utilized to include the appropriate source code for this CPU
39model's feature set.  It is important to note that this means
40that RTEMS is thus compiled using the appropriate feature set
41and compilation flags optimal for this CPU model used.  The
42alternative would be to generate a binary which would execute on
43all family members using only the features which were always
44present.
45
46This chapter presents the set of features which vary
47across ARM implementations and are of importance to RTEMS.
48The set of CPU model feature macros are defined in the file
49cpukit/score/cpu/arm/rtems/score/arm.h based upon the particular CPU
50model defined on the compilation command line.
51
52@section CPU Model Name
53
54The macro @code{CPU_MODEL_NAME} is a string which designates
55the architectural level of this CPU model.  The following is
56a list of the settings for this string based upon @code{gcc}
57CPU model predefines:
58
59@example
60__ARM_ARCH4__   "ARMv4"
61__ARM_ARCH4T__  "ARMv4T"
62__ARM_ARCH5__   "ARMv5"
63__ARM_ARCH5T__  "ARMv5T"
64__ARM_ARCH5E__  "ARMv5E"
65__ARM_ARCH5TE__ "ARMv5TE"
66@end example
67
68@section Count Leading Zeroes Instruction
69
70The macro @code{ARM_HAS_CLZ} is set to 1 to indicate that
71the architectural version has the @code{clz} instruction.
72On ARM architectural version 5 and above, the count
73leading zeroes instruction (@code{clz}) is available and
74can be used to speed up the find first bit operation. 
75The use of this instruction significantly speeds up the
76scheduling associated with a thread blocking.
77
78@section Floating Point Unit
79
80The macro ARM_HAS_FPU is set to 1 to indicate that
81this CPU model has a hardware floating point unit and 0
82otherwise.  It does not matter whether the hardware floating
83point support is incorporated on-chip or is an external
84coprocessor.
85
Note: See TracBrowser for help on using the repository browser.