source: rtems-docs/cpu-supplement/powerpc.rst

Last change on this file was e52906b, checked in by Sebastian Huber <sebastian.huber@…>, on 01/09/19 at 15:14:06

Simplify SPDX-License-Identifier comment

  • Property mode set to 100644
File size: 4.4 KB
RevLine 
[e52906b]1.. SPDX-License-Identifier: CC-BY-SA-4.0
[489740f]2
[4886d60]3.. Copyright (C) 1988, 2002 On-Line Applications Research Corporation (OAR)
[f233256]4
[d755cbd]5PowerPC Specific Information
[6916004]6****************************
[d755cbd]7
8Multilibs
9=========
10
11The following multilibs are available:
12
[4cc9094]13#. ``.``: 32-bit PowerPC with FPU
[d755cbd]14
[4cc9094]15#. ``nof``: 32-bit PowerPC with software floating point support
[d755cbd]16
[4cc9094]17#. ``m403``: Instruction set for PPC403 with FPU
[d755cbd]18
[4cc9094]19#. ``m505``: Instruction set for MPC505 with FPU
[d755cbd]20
[4cc9094]21#. ``m603e``: Instruction set for MPC603e with FPU
[d755cbd]22
[4cc9094]23#. ``m603e/nof``: Instruction set for MPC603e with software floating
24   point support
[d755cbd]25
[4cc9094]26#. ``m604``: Instruction set for MPC604 with FPU
[d755cbd]27
[4cc9094]28#. ``m604/nof``: Instruction set for MPC604 with software floating point
29   support
[d755cbd]30
[4cc9094]31#. ``m860``: Instruction set for MPC860 with FPU
[d755cbd]32
[4cc9094]33#. ``m7400``: Instruction set for MPC7500 with FPU
[d755cbd]34
[4cc9094]35#. ``m7400/nof``: Instruction set for MPC7500 with software floating
36   point support
[d755cbd]37
[4cc9094]38#. ``m8540``: Instruction set for e200, e500 and e500v2 cores with
39   single-precision FPU and SPE
[d755cbd]40
[4cc9094]41#. ``m8540/gprsdouble``: Instruction set for e200, e500 and e500v2 cores
42   with double-precision FPU and SPE
[d755cbd]43
[4cc9094]44#. ``m8540/nof/nospe``: Instruction set for e200, e500 and e500v2 cores
45   with software floating point support and no SPE
[d755cbd]46
[4cc9094]47#. ``me6500/m32``: 32-bit instruction set for e6500 core with FPU and
48   AltiVec
[d755cbd]49
[4cc9094]50#. ``me6500/m32/nof/noaltivec``: 32-bit instruction set for e6500 core
51   with software floating point support and no AltiVec
[d755cbd]52
[b6977f7]53#. ``me6500/m64``: 64-bit instruction set for e6500 core with FPU and
54   AltiVec
[f233256]55
[b6977f7]56#. ``me6500/m64/nof/noaltivec``: 64-bit instruction set for e6500 core
57   with software floating point support and no AltiVec
[d755cbd]58
[b6977f7]59Application Binary Interface
60============================
[d755cbd]61
[b6977f7]62In 32-bit PowerPC configurations the ABI defined by
63`Power Architecture 32-bit Application Binary Interface Supplement 1.0 - Embedded <https://ftp.rtems.org/pub/rtems/people/sebh/Power-Arch-32-bit-ABI-supp-1.0-Embedded.pdf>`_
64is used.
[d755cbd]65
[b6977f7]66In 64-bit PowerPC configurations the ABI defined by
67`Power Architecture 64-Bit ELF V2 ABI Specification, Version 1.1 <https://ftp.rtems.org/pub/rtems/people/sebh/ABI64BitOpenPOWERv1.1_16July2015_pub.pdf>`_
68is used.
[d755cbd]69
70Special Registers
[b6977f7]71=================
[d755cbd]72
[b6977f7]73The following special-purpose registers are used by RTEMS:
[d755cbd]74
[6297ad3]75*Special-Purpose Register General 0 (SPRG0)*
[b6977f7]76    In SMP configurations, this register contains the address of the per-CPU
[6297ad3]77    control of the processor.
78
79*Special-Purpose Register General 1 (SPRG1)*
80    This register contains the interrupt stack pointer for the outer-most
81    interrupt service routine.
82
83*Special-Purpose Register General 2 (SPRG2)*
84    This register contains the address of interrupt stack area begin.
85
[d755cbd]86Memory Model
87============
88
[b6977f7]89The memory model is flat.
[d755cbd]90
91Interrupt Processing
92====================
93
94Interrupt Levels
95----------------
96
[b6977f7]97There are exactly two interrupt levels on PowerPC with respect to RTEMS.  Level
98zero corresponds to interrupts enabled.  Level one corresponds to interrupts
99disabled.
[d755cbd]100
[b6977f7]101Interrupt Stack
102---------------
[d755cbd]103
[b6977f7]104The interrupt stack size can be configured via the
105``CONFIGURE_INTERRUPT_STACK_SIZE`` application configuration option.
[d755cbd]106
107Default Fatal Error Processing
108==============================
109
[b6977f7]110The default fatal error handler is BSP-specific.
[d755cbd]111
112Symmetric Multiprocessing
113=========================
114
115SMP is supported.  Available platforms are the Freescale QorIQ P series (e.g.
116P1020) and T series (e.g. T2080, T4240).
117
118Thread-Local Storage
119====================
120
121Thread-local storage is supported.
122
[b6977f7]12364-bit Caveats
124==============
[d755cbd]125
[3fdea2d]126* The thread pointer is ``r13`` in contrast to ``r2`` used in the 32-bit ABI.
[d755cbd]127
[3fdea2d]128* The TOC pointer is ``r2``.  It must be initialized as part of the C run-time
[b6977f7]129  setup.  A valid stack pointer is not enough to call C functions.  They may
130  use the TOC to get addresses and constants.
[d755cbd]131
[873ba80]132* The TOC must be within the first 2GiB of the address space.  This simplifies
[3fdea2d]133  the interrupt prologue, since the ``r2`` can be set to ``.TOC.`` via the
134  usual ``lis`` followed by ``ori`` combination.  The ``lis`` is subject to
135  sign-extension.
[d755cbd]136
[3fdea2d]137* The ``PPC_REG_LOAD``, ``PPC_REG_STORE``, ``PPC_REG_STORE_UPDATE``, and
138  ``PPC_REG_CMP`` macros are available for assembly code to provide register
139  size operations selected by the GCC ``-m32`` and ``-m64`` options.
[d755cbd]140
[3fdea2d]141* The ``MSR[CM]`` bit must be set all the time, otherwise the MMU translation
142  my yield unexpected results.  The ``EPCR[ICM]`` or ``EPCR[GICM]`` bits may be
143  used to enable the 64-bit compute mode for exceptions.
Note: See TracBrowser for help on using the repository browser.