mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-11-09 08:37:58 +08:00
powerpc: Add up to date CPU_Interrupt_frame
Rename ppc_exc_min_frame to CPU_Interrupt_frame. Move it and the corresponding defines to <rtems/score/cpuimpl.h>. Update #2809.
This commit is contained in:
1 parent
bf4fdb1f1d
commit
2599c8e63e
8 files changed
+399
-394
No files matched your search
@@ -58,7 +58,7 @@ mpc55xx_exc_vector_base:
|
||||
stw r4, GPR4_OFFSET(r1)
|
||||
li r4, 4
|
||||
b ppc_exc_wrap_nopush_std
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32763
|
||||
@@ -88,7 +88,7 @@ mpc55xx_exc_vector_base:
|
||||
stw r4, GPR4_OFFSET(r1)
|
||||
li r4, 24
|
||||
b ppc_exc_wrap_nopush_std
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32752
|
||||
@@ -98,7 +98,7 @@ mpc55xx_exc_vector_base:
|
||||
nop
|
||||
nop
|
||||
#endif
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32749
|
||||
|
||||
@@ -344,7 +344,7 @@ bsp_exc_vector_base:
|
||||
stw r4, GPR4_OFFSET(r1)
|
||||
li r4, 4
|
||||
b ppc_exc_wrap_nopush_std
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32763
|
||||
@@ -375,7 +375,7 @@ system_call:
|
||||
stw r4, GPR4_OFFSET(r1)
|
||||
li r4, 24
|
||||
b ppc_exc_wrap_nopush_std
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32752
|
||||
@@ -385,7 +385,7 @@ system_call:
|
||||
nop
|
||||
nop
|
||||
#endif
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32749
|
||||
|
||||
@@ -109,7 +109,7 @@ bsp_exc_vector_base:
|
||||
stw r4, GPR4_OFFSET(r1)
|
||||
li r4, 4
|
||||
b ppc_exc_wrap_nopush_std
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32763
|
||||
b ppc_exc_wrap_async_normal
|
||||
@@ -133,11 +133,11 @@ bsp_exc_vector_base:
|
||||
stw r4, GPR4_OFFSET(r1)
|
||||
li r4, 24
|
||||
b ppc_exc_wrap_nopush_std
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32752
|
||||
b ppc_exc_wrap_async_normal
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
li r4, -32749
|
||||
b ppc_exc_wrap_async_normal
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
#ifdef RTEMS_PROFILING
|
||||
/*
|
||||
* The PPC_EXC_MINIMAL_FRAME_SIZE is enough to store this additional register.
|
||||
* The CPU_INTERRUPT_FRAME_SIZE is enough to store this additional register.
|
||||
*/
|
||||
#define ENTRY_INSTANT_REGISTER r15
|
||||
#define ENTRY_INSTANT_OFFSET GPR13_OFFSET
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
ppc_exc_min_prolog_async_tmpl_normal:
|
||||
|
||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||
stwu r1, -CPU_INTERRUPT_FRAME_SIZE(r1)
|
||||
|
||||
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||
stw VECTOR_REGISTER, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||
@@ -468,7 +468,7 @@ thread_dispatching_done:
|
||||
#endif /* RTEMS_PROFILING */
|
||||
|
||||
/* Pop stack */
|
||||
addi r1, r1, PPC_EXC_MINIMAL_FRAME_SIZE
|
||||
addi r1, r1, CPU_INTERRUPT_FRAME_SIZE
|
||||
|
||||
/* Return */
|
||||
rfi
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -36,7 +36,7 @@
|
||||
#define LIBCPU_VECTORS_H
|
||||
|
||||
#include <bspopts.h>
|
||||
|
||||
#include <rtems/score/cpuimpl.h>
|
||||
#include <libcpu/powerpc-utility.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -143,49 +143,6 @@ extern "C" {
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifndef __SPE__
|
||||
#define PPC_EXC_GPR_OFFSET(gpr) ((gpr) * PPC_GPR_SIZE + 36)
|
||||
#define PPC_EXC_VECTOR_PROLOGUE_OFFSET PPC_EXC_GPR_OFFSET(4)
|
||||
#if defined(PPC_MULTILIB_ALTIVEC) && defined(PPC_MULTILIB_FPU)
|
||||
#define PPC_EXC_VRSAVE_OFFSET 168
|
||||
#define PPC_EXC_VSCR_OFFSET 172
|
||||
#define PPC_EXC_VR_OFFSET(v) ((v) * 16 + 176)
|
||||
#define PPC_EXC_FR_OFFSET(f) ((f) * 8 + 688)
|
||||
#define PPC_EXC_FPSCR_OFFSET 944
|
||||
#define PPC_EXC_FRAME_SIZE 960
|
||||
#define PPC_EXC_MIN_VSCR_OFFSET 92
|
||||
#define PPC_EXC_MIN_VR_OFFSET(v) ((v) * 16 + 96)
|
||||
#define PPC_EXC_MIN_FR_OFFSET(f) ((f) * 8 + 416)
|
||||
#define PPC_EXC_MIN_FPSCR_OFFSET 528
|
||||
#define PPC_EXC_MINIMAL_FRAME_SIZE 544
|
||||
#elif defined(PPC_MULTILIB_ALTIVEC)
|
||||
#define PPC_EXC_VRSAVE_OFFSET 168
|
||||
#define PPC_EXC_VSCR_OFFSET 172
|
||||
#define PPC_EXC_VR_OFFSET(v) ((v) * 16 + 176)
|
||||
#define PPC_EXC_FRAME_SIZE 688
|
||||
#define PPC_EXC_MIN_VSCR_OFFSET 92
|
||||
#define PPC_EXC_MIN_VR_OFFSET(v) ((v) * 16 + 96)
|
||||
#define PPC_EXC_MINIMAL_FRAME_SIZE 416
|
||||
#elif defined(PPC_MULTILIB_FPU)
|
||||
#define PPC_EXC_FR_OFFSET(f) ((f) * 8 + 168)
|
||||
#define PPC_EXC_FPSCR_OFFSET 424
|
||||
#define PPC_EXC_FRAME_SIZE 448
|
||||
#define PPC_EXC_MIN_FR_OFFSET(f) ((f) * 8 + 96)
|
||||
#define PPC_EXC_MIN_FPSCR_OFFSET 92
|
||||
#define PPC_EXC_MINIMAL_FRAME_SIZE 224
|
||||
#else
|
||||
#define PPC_EXC_FRAME_SIZE 176
|
||||
#define PPC_EXC_MINIMAL_FRAME_SIZE 96
|
||||
#endif
|
||||
#else
|
||||
#define PPC_EXC_SPEFSCR_OFFSET 36
|
||||
#define PPC_EXC_ACC_OFFSET 40
|
||||
#define PPC_EXC_GPR_OFFSET(gpr) ((gpr) * PPC_GPR_SIZE + 48)
|
||||
#define PPC_EXC_VECTOR_PROLOGUE_OFFSET (PPC_EXC_GPR_OFFSET(4) + 4)
|
||||
#define PPC_EXC_MINIMAL_FRAME_SIZE 160
|
||||
#define PPC_EXC_FRAME_SIZE 320
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @defgroup ppc_exc_frame PowerPC Exception Frame
|
||||
*
|
||||
@@ -201,46 +158,6 @@ extern "C" {
|
||||
*/
|
||||
#define LINK_REGISTER_CALLEE_UPDATE_ROOM 4
|
||||
|
||||
#define SRR0_FRAME_OFFSET 8
|
||||
#define SRR1_FRAME_OFFSET 12
|
||||
#define EXCEPTION_NUMBER_OFFSET 16
|
||||
#define EXC_CR_OFFSET 20
|
||||
#define EXC_CTR_OFFSET 24
|
||||
#define EXC_XER_OFFSET 28
|
||||
#define EXC_LR_OFFSET 32
|
||||
#define GPR0_OFFSET PPC_EXC_GPR_OFFSET(0)
|
||||
#define GPR1_OFFSET PPC_EXC_GPR_OFFSET(1)
|
||||
#define GPR2_OFFSET PPC_EXC_GPR_OFFSET(2)
|
||||
#define GPR3_OFFSET PPC_EXC_GPR_OFFSET(3)
|
||||
#define GPR4_OFFSET PPC_EXC_GPR_OFFSET(4)
|
||||
#define GPR5_OFFSET PPC_EXC_GPR_OFFSET(5)
|
||||
#define GPR6_OFFSET PPC_EXC_GPR_OFFSET(6)
|
||||
#define GPR7_OFFSET PPC_EXC_GPR_OFFSET(7)
|
||||
#define GPR8_OFFSET PPC_EXC_GPR_OFFSET(8)
|
||||
#define GPR9_OFFSET PPC_EXC_GPR_OFFSET(9)
|
||||
#define GPR10_OFFSET PPC_EXC_GPR_OFFSET(10)
|
||||
#define GPR11_OFFSET PPC_EXC_GPR_OFFSET(11)
|
||||
#define GPR12_OFFSET PPC_EXC_GPR_OFFSET(12)
|
||||
#define GPR13_OFFSET PPC_EXC_GPR_OFFSET(13)
|
||||
#define GPR14_OFFSET PPC_EXC_GPR_OFFSET(14)
|
||||
#define GPR15_OFFSET PPC_EXC_GPR_OFFSET(15)
|
||||
#define GPR16_OFFSET PPC_EXC_GPR_OFFSET(16)
|
||||
#define GPR17_OFFSET PPC_EXC_GPR_OFFSET(17)
|
||||
#define GPR18_OFFSET PPC_EXC_GPR_OFFSET(18)
|
||||
#define GPR19_OFFSET PPC_EXC_GPR_OFFSET(19)
|
||||
#define GPR20_OFFSET PPC_EXC_GPR_OFFSET(20)
|
||||
#define GPR21_OFFSET PPC_EXC_GPR_OFFSET(21)
|
||||
#define GPR22_OFFSET PPC_EXC_GPR_OFFSET(22)
|
||||
#define GPR23_OFFSET PPC_EXC_GPR_OFFSET(23)
|
||||
#define GPR24_OFFSET PPC_EXC_GPR_OFFSET(24)
|
||||
#define GPR25_OFFSET PPC_EXC_GPR_OFFSET(25)
|
||||
#define GPR26_OFFSET PPC_EXC_GPR_OFFSET(26)
|
||||
#define GPR27_OFFSET PPC_EXC_GPR_OFFSET(27)
|
||||
#define GPR28_OFFSET PPC_EXC_GPR_OFFSET(28)
|
||||
#define GPR29_OFFSET PPC_EXC_GPR_OFFSET(29)
|
||||
#define GPR30_OFFSET PPC_EXC_GPR_OFFSET(30)
|
||||
#define GPR31_OFFSET PPC_EXC_GPR_OFFSET(31)
|
||||
|
||||
#define EXC_GENERIC_SIZE PPC_EXC_FRAME_SIZE
|
||||
|
||||
#if defined(__ALTIVEC__) && !defined(PPC_MULTILIB_ALTIVEC)
|
||||
@@ -257,9 +174,6 @@ extern "C" {
|
||||
#define EXC_VEC_SIZE (0)
|
||||
#endif
|
||||
|
||||
/* Exception stack frame -> BSP_Exception_frame */
|
||||
#define FRAME_LINK_SPACE 8
|
||||
|
||||
/*
|
||||
* maintain the EABI requested 8 bytes aligment
|
||||
* As SVR4 ABI requires 16, make it 16 (as some
|
||||
@@ -277,79 +191,6 @@ extern "C" {
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
uint32_t EXC_SRR0;
|
||||
uint32_t EXC_SRR1;
|
||||
uint32_t unused;
|
||||
uint32_t EXC_CR;
|
||||
uint32_t EXC_CTR;
|
||||
uint32_t EXC_XER;
|
||||
uint32_t EXC_LR;
|
||||
#ifdef __SPE__
|
||||
uint32_t EXC_SPEFSCR;
|
||||
uint64_t EXC_ACC;
|
||||
#endif
|
||||
PPC_GPR_TYPE GPR0;
|
||||
PPC_GPR_TYPE GPR1;
|
||||
PPC_GPR_TYPE GPR2;
|
||||
PPC_GPR_TYPE GPR3;
|
||||
PPC_GPR_TYPE GPR4;
|
||||
PPC_GPR_TYPE GPR5;
|
||||
PPC_GPR_TYPE GPR6;
|
||||
PPC_GPR_TYPE GPR7;
|
||||
PPC_GPR_TYPE GPR8;
|
||||
PPC_GPR_TYPE GPR9;
|
||||
PPC_GPR_TYPE GPR10;
|
||||
PPC_GPR_TYPE GPR11;
|
||||
PPC_GPR_TYPE GPR12;
|
||||
uint32_t EARLY_INSTANT;
|
||||
#ifdef PPC_MULTILIB_ALTIVEC
|
||||
/* This field must take stvewx/lvewx requirements into account */
|
||||
uint32_t VSCR;
|
||||
|
||||
uint8_t V0[16];
|
||||
uint8_t V1[16];
|
||||
uint8_t V2[16];
|
||||
uint8_t V3[16];
|
||||
uint8_t V4[16];
|
||||
uint8_t V5[16];
|
||||
uint8_t V6[16];
|
||||
uint8_t V7[16];
|
||||
uint8_t V8[16];
|
||||
uint8_t V9[16];
|
||||
uint8_t V10[16];
|
||||
uint8_t V11[16];
|
||||
uint8_t V12[16];
|
||||
uint8_t V13[16];
|
||||
uint8_t V14[16];
|
||||
uint8_t V15[16];
|
||||
uint8_t V16[16];
|
||||
uint8_t V17[16];
|
||||
uint8_t V18[16];
|
||||
uint8_t V19[16];
|
||||
#endif
|
||||
#ifdef PPC_MULTILIB_FPU
|
||||
#ifndef PPC_MULTILIB_ALTIVEC
|
||||
uint32_t reserved_for_alignment;
|
||||
#endif
|
||||
double F0;
|
||||
double F1;
|
||||
double F2;
|
||||
double F3;
|
||||
double F4;
|
||||
double F5;
|
||||
double F6;
|
||||
double F7;
|
||||
double F8;
|
||||
double F9;
|
||||
double F10;
|
||||
double F11;
|
||||
double F12;
|
||||
double F13;
|
||||
uint64_t FPSCR;
|
||||
#endif
|
||||
} ppc_exc_min_frame;
|
||||
|
||||
typedef CPU_Exception_frame BSP_Exception_frame;
|
||||
|
||||
/** @} */
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -5,7 +5,12 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013, 2016 embedded brains GmbH
|
||||
* Copyright (C) 1999 Eric Valette (valette@crf.canon.fr)
|
||||
* Canon Centre Recherche France.
|
||||
*
|
||||
* Copyright (C) 2007 Till Straumann <strauman@slac.stanford.edu>
|
||||
*
|
||||
* Copyright (c) 2009, 2016 embedded brains GmbH
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
@@ -17,6 +22,92 @@
|
||||
|
||||
#include <rtems/score/cpu.h>
|
||||
|
||||
#define SRR0_FRAME_OFFSET 8
|
||||
#define SRR1_FRAME_OFFSET 12
|
||||
#define EXCEPTION_NUMBER_OFFSET 16
|
||||
#define EXC_CR_OFFSET 20
|
||||
#define EXC_CTR_OFFSET 24
|
||||
#define EXC_XER_OFFSET 28
|
||||
#define EXC_LR_OFFSET 32
|
||||
#define GPR0_OFFSET PPC_EXC_GPR_OFFSET(0)
|
||||
#define GPR1_OFFSET PPC_EXC_GPR_OFFSET(1)
|
||||
#define GPR2_OFFSET PPC_EXC_GPR_OFFSET(2)
|
||||
#define GPR3_OFFSET PPC_EXC_GPR_OFFSET(3)
|
||||
#define GPR4_OFFSET PPC_EXC_GPR_OFFSET(4)
|
||||
#define GPR5_OFFSET PPC_EXC_GPR_OFFSET(5)
|
||||
#define GPR6_OFFSET PPC_EXC_GPR_OFFSET(6)
|
||||
#define GPR7_OFFSET PPC_EXC_GPR_OFFSET(7)
|
||||
#define GPR8_OFFSET PPC_EXC_GPR_OFFSET(8)
|
||||
#define GPR9_OFFSET PPC_EXC_GPR_OFFSET(9)
|
||||
#define GPR10_OFFSET PPC_EXC_GPR_OFFSET(10)
|
||||
#define GPR11_OFFSET PPC_EXC_GPR_OFFSET(11)
|
||||
#define GPR12_OFFSET PPC_EXC_GPR_OFFSET(12)
|
||||
#define GPR13_OFFSET PPC_EXC_GPR_OFFSET(13)
|
||||
#define GPR14_OFFSET PPC_EXC_GPR_OFFSET(14)
|
||||
#define GPR15_OFFSET PPC_EXC_GPR_OFFSET(15)
|
||||
#define GPR16_OFFSET PPC_EXC_GPR_OFFSET(16)
|
||||
#define GPR17_OFFSET PPC_EXC_GPR_OFFSET(17)
|
||||
#define GPR18_OFFSET PPC_EXC_GPR_OFFSET(18)
|
||||
#define GPR19_OFFSET PPC_EXC_GPR_OFFSET(19)
|
||||
#define GPR20_OFFSET PPC_EXC_GPR_OFFSET(20)
|
||||
#define GPR21_OFFSET PPC_EXC_GPR_OFFSET(21)
|
||||
#define GPR22_OFFSET PPC_EXC_GPR_OFFSET(22)
|
||||
#define GPR23_OFFSET PPC_EXC_GPR_OFFSET(23)
|
||||
#define GPR24_OFFSET PPC_EXC_GPR_OFFSET(24)
|
||||
#define GPR25_OFFSET PPC_EXC_GPR_OFFSET(25)
|
||||
#define GPR26_OFFSET PPC_EXC_GPR_OFFSET(26)
|
||||
#define GPR27_OFFSET PPC_EXC_GPR_OFFSET(27)
|
||||
#define GPR28_OFFSET PPC_EXC_GPR_OFFSET(28)
|
||||
#define GPR29_OFFSET PPC_EXC_GPR_OFFSET(29)
|
||||
#define GPR30_OFFSET PPC_EXC_GPR_OFFSET(30)
|
||||
#define GPR31_OFFSET PPC_EXC_GPR_OFFSET(31)
|
||||
|
||||
/* Exception stack frame -> BSP_Exception_frame */
|
||||
#define FRAME_LINK_SPACE 8
|
||||
|
||||
#ifndef __SPE__
|
||||
#define PPC_EXC_GPR_OFFSET(gpr) ((gpr) * PPC_GPR_SIZE + 36)
|
||||
#define PPC_EXC_VECTOR_PROLOGUE_OFFSET PPC_EXC_GPR_OFFSET(4)
|
||||
#if defined(PPC_MULTILIB_ALTIVEC) && defined(PPC_MULTILIB_FPU)
|
||||
#define PPC_EXC_VRSAVE_OFFSET 168
|
||||
#define PPC_EXC_VSCR_OFFSET 172
|
||||
#define PPC_EXC_VR_OFFSET(v) ((v) * 16 + 176)
|
||||
#define PPC_EXC_FR_OFFSET(f) ((f) * 8 + 688)
|
||||
#define PPC_EXC_FPSCR_OFFSET 944
|
||||
#define PPC_EXC_FRAME_SIZE 960
|
||||
#define PPC_EXC_MIN_VSCR_OFFSET 92
|
||||
#define PPC_EXC_MIN_VR_OFFSET(v) ((v) * 16 + 96)
|
||||
#define PPC_EXC_MIN_FR_OFFSET(f) ((f) * 8 + 416)
|
||||
#define PPC_EXC_MIN_FPSCR_OFFSET 528
|
||||
#define CPU_INTERRUPT_FRAME_SIZE 544
|
||||
#elif defined(PPC_MULTILIB_ALTIVEC)
|
||||
#define PPC_EXC_VRSAVE_OFFSET 168
|
||||
#define PPC_EXC_VSCR_OFFSET 172
|
||||
#define PPC_EXC_VR_OFFSET(v) ((v) * 16 + 176)
|
||||
#define PPC_EXC_FRAME_SIZE 688
|
||||
#define PPC_EXC_MIN_VSCR_OFFSET 92
|
||||
#define PPC_EXC_MIN_VR_OFFSET(v) ((v) * 16 + 96)
|
||||
#define CPU_INTERRUPT_FRAME_SIZE 416
|
||||
#elif defined(PPC_MULTILIB_FPU)
|
||||
#define PPC_EXC_FR_OFFSET(f) ((f) * 8 + 168)
|
||||
#define PPC_EXC_FPSCR_OFFSET 424
|
||||
#define PPC_EXC_FRAME_SIZE 448
|
||||
#define PPC_EXC_MIN_FR_OFFSET(f) ((f) * 8 + 96)
|
||||
#define PPC_EXC_MIN_FPSCR_OFFSET 92
|
||||
#define CPU_INTERRUPT_FRAME_SIZE 224
|
||||
#else
|
||||
#define PPC_EXC_FRAME_SIZE 176
|
||||
#define CPU_INTERRUPT_FRAME_SIZE 96
|
||||
#endif
|
||||
#else
|
||||
#define PPC_EXC_SPEFSCR_OFFSET 36
|
||||
#define PPC_EXC_ACC_OFFSET 40
|
||||
#define PPC_EXC_GPR_OFFSET(gpr) ((gpr) * PPC_GPR_SIZE + 48)
|
||||
#define PPC_EXC_VECTOR_PROLOGUE_OFFSET (PPC_EXC_GPR_OFFSET(4) + 4)
|
||||
#define CPU_INTERRUPT_FRAME_SIZE 160
|
||||
#define PPC_EXC_FRAME_SIZE 320
|
||||
#endif
|
||||
|
||||
#define CPU_PER_CPU_CONTROL_SIZE 0
|
||||
|
||||
#ifdef RTEMS_SMP
|
||||
@@ -32,6 +123,78 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
uint32_t FRAME_SP;
|
||||
uint32_t FRAME_LR;
|
||||
uint32_t EXC_SRR0;
|
||||
uint32_t EXC_SRR1;
|
||||
uint32_t unused;
|
||||
uint32_t EXC_CR;
|
||||
uint32_t EXC_CTR;
|
||||
uint32_t EXC_XER;
|
||||
uint32_t EXC_LR;
|
||||
#ifdef __SPE__
|
||||
uint32_t EXC_SPEFSCR;
|
||||
uint64_t EXC_ACC;
|
||||
#endif
|
||||
PPC_GPR_TYPE GPR0;
|
||||
PPC_GPR_TYPE GPR1;
|
||||
PPC_GPR_TYPE GPR2;
|
||||
PPC_GPR_TYPE GPR3;
|
||||
PPC_GPR_TYPE GPR4;
|
||||
PPC_GPR_TYPE GPR5;
|
||||
PPC_GPR_TYPE GPR6;
|
||||
PPC_GPR_TYPE GPR7;
|
||||
PPC_GPR_TYPE GPR8;
|
||||
PPC_GPR_TYPE GPR9;
|
||||
PPC_GPR_TYPE GPR10;
|
||||
PPC_GPR_TYPE GPR11;
|
||||
PPC_GPR_TYPE GPR12;
|
||||
uint32_t EARLY_INSTANT;
|
||||
#ifdef PPC_MULTILIB_ALTIVEC
|
||||
/* This field must take stvewx/lvewx requirements into account */
|
||||
uint32_t VSCR;
|
||||
|
||||
uint8_t V0[16] RTEMS_ALIGNED(16);
|
||||
uint8_t V1[16];
|
||||
uint8_t V2[16];
|
||||
uint8_t V3[16];
|
||||
uint8_t V4[16];
|
||||
uint8_t V5[16];
|
||||
uint8_t V6[16];
|
||||
uint8_t V7[16];
|
||||
uint8_t V8[16];
|
||||
uint8_t V9[16];
|
||||
uint8_t V10[16];
|
||||
uint8_t V11[16];
|
||||
uint8_t V12[16];
|
||||
uint8_t V13[16];
|
||||
uint8_t V14[16];
|
||||
uint8_t V15[16];
|
||||
uint8_t V16[16];
|
||||
uint8_t V17[16];
|
||||
uint8_t V18[16];
|
||||
uint8_t V19[16];
|
||||
#endif
|
||||
#ifdef PPC_MULTILIB_FPU
|
||||
double F0;
|
||||
double F1;
|
||||
double F2;
|
||||
double F3;
|
||||
double F4;
|
||||
double F5;
|
||||
double F6;
|
||||
double F7;
|
||||
double F8;
|
||||
double F9;
|
||||
double F10;
|
||||
double F11;
|
||||
double F12;
|
||||
double F13;
|
||||
uint64_t FPSCR;
|
||||
#endif
|
||||
} CPU_Interrupt_frame;
|
||||
|
||||
#ifdef RTEMS_SMP
|
||||
|
||||
static inline struct Per_CPU_Control *_PPC_Get_current_per_CPU_control( void )
|
||||
|
||||
Reference in new issue
Block a user