Changeset d2202ac in rtems


Ignore:
Timestamp:
Nov 26, 2012, 5:04:12 PM (7 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, master
Children:
815994f
Parents:
f0e3cc0
git-author:
Sebastian Huber <sebastian.huber@…> (11/26/12 17:04:12)
git-committer:
Sebastian Huber <sebastian.huber@…> (11/27/12 16:03:40)
Message:

powerpc: Add CPU_Exception_frame

The powerpc port uses now a unified CPU_Exception_frame. This resulted
in a CPU_Exception_frame layout change for the MPC5XX.

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libcpu/powerpc/mpc5xx/vectors/vectors.h

    rf0e3cc0 rd2202ac  
    3535#define SRR1_FRAME_OFFSET 12
    3636#define EXCEPTION_NUMBER_OFFSET 16
    37 #define GPR0_OFFSET 20
    38 #define GPR1_OFFSET 24
    39 #define GPR2_OFFSET 28
    40 #define GPR3_OFFSET 32
    41 #define GPR4_OFFSET 36
    42 #define GPR5_OFFSET 40
    43 #define GPR6_OFFSET 44
    44 #define GPR7_OFFSET 48
    45 #define GPR8_OFFSET 52
    46 #define GPR9_OFFSET 56
    47 #define GPR10_OFFSET 60
    48 #define GPR11_OFFSET 64
    49 #define GPR12_OFFSET 68
    50 #define GPR13_OFFSET 72
    51 #define GPR14_OFFSET 76
    52 #define GPR15_OFFSET 80
    53 #define GPR16_OFFSET 84
    54 #define GPR17_OFFSET 88
    55 #define GPR18_OFFSET 92
    56 #define GPR19_OFFSET 96
    57 #define GPR20_OFFSET 100
    58 #define GPR21_OFFSET 104
    59 #define GPR22_OFFSET 108
    60 #define GPR23_OFFSET 112
    61 #define GPR24_OFFSET 116
    62 #define GPR25_OFFSET 120
    63 #define GPR26_OFFSET 124
    64 #define GPR27_OFFSET 128
    65 #define GPR28_OFFSET 132
    66 #define GPR29_OFFSET 136
    67 #define GPR30_OFFSET 140
    68 #define GPR31_OFFSET 144
    69 #define EXC_CR_OFFSET 148
    70 #define EXC_CTR_OFFSET 152
    71 #define EXC_XER_OFFSET 156
    72 #define EXC_LR_OFFSET 160
     37#define EXC_CR_OFFSET 20
     38#define EXC_CTR_OFFSET 24
     39#define EXC_XER_OFFSET 28
     40#define EXC_LR_OFFSET 32
     41#define GPR0_OFFSET 36
     42#define GPR1_OFFSET 40
     43#define GPR2_OFFSET 44
     44#define GPR3_OFFSET 48
     45#define GPR4_OFFSET 52
     46#define GPR5_OFFSET 56
     47#define GPR6_OFFSET 60
     48#define GPR7_OFFSET 64
     49#define GPR8_OFFSET 68
     50#define GPR9_OFFSET 72
     51#define GPR10_OFFSET 76
     52#define GPR11_OFFSET 80
     53#define GPR12_OFFSET 84
     54#define GPR13_OFFSET 88
     55#define GPR14_OFFSET 92
     56#define GPR15_OFFSET 96
     57#define GPR16_OFFSET 100
     58#define GPR17_OFFSET 104
     59#define GPR18_OFFSET 108
     60#define GPR19_OFFSET 112
     61#define GPR20_OFFSET 116
     62#define GPR21_OFFSET 120
     63#define GPR22_OFFSET 124
     64#define GPR23_OFFSET 128
     65#define GPR24_OFFSET 132
     66#define GPR25_OFFSET 136
     67#define GPR26_OFFSET 140
     68#define GPR27_OFFSET 144
     69#define GPR28_OFFSET 148
     70#define GPR29_OFFSET 152
     71#define GPR30_OFFSET 156
     72#define GPR31_OFFSET 160
    7373/*
    7474 * maintain the EABI requested 8 bytes aligment
     
    7979
    8080#ifndef ASM
     81
     82#include <rtems.h>
     83
    8184/*
    8285 * default raw exception handlers
     
    8689extern  int  default_exception_vector_code_prolog_size;
    8790extern  void initialize_exceptions();
    88 
    89 typedef struct {
    90   unsigned      EXC_SRR0;
    91   unsigned      EXC_SRR1;
    92   unsigned      _EXC_number;
    93   unsigned      GPR0;
    94   unsigned      GPR1;
    95   unsigned      GPR2;
    96   unsigned      GPR3;
    97   unsigned      GPR4;
    98   unsigned      GPR5;
    99   unsigned      GPR6;
    100   unsigned      GPR7;
    101   unsigned      GPR8;
    102   unsigned      GPR9;
    103   unsigned      GPR10;
    104   unsigned      GPR11;
    105   unsigned      GPR12;
    106   unsigned      GPR13;
    107   unsigned      GPR14;
    108   unsigned      GPR15;
    109   unsigned      GPR16;
    110   unsigned      GPR17;
    111   unsigned      GPR18;
    112   unsigned      GPR19;
    113   unsigned      GPR20;
    114   unsigned      GPR21;
    115   unsigned      GPR22;
    116   unsigned      GPR23;
    117   unsigned      GPR24;
    118   unsigned      GPR25;
    119   unsigned      GPR26;
    120   unsigned      GPR27;
    121   unsigned      GPR28;
    122   unsigned      GPR29;
    123   unsigned      GPR30;
    124   unsigned      GPR31;
    125   unsigned      EXC_CR;
    126   unsigned      EXC_CTR;
    127   unsigned      EXC_XER;
    128   unsigned      EXC_LR;
    129 }CPU_Exception_frame;
    130 
    13191
    13292typedef void rtems_exception_handler_t (CPU_Exception_frame* excPtr);
  • c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c

    rf0e3cc0 rd2202ac  
    2727#include <bsp/vectors.h>
    2828#include <bsp/bootcard.h>
     29
     30#define PPC_EXC_ASSERT_OFFSET(field, off) \
     31  RTEMS_STATIC_ASSERT( \
     32    offsetof(CPU_Exception_frame, field) + FRAME_LINK_SPACE == off, \
     33    CPU_Exception_frame_offset_ ## field \
     34  )
     35
     36#define PPC_EXC_ASSERT_CANONIC_OFFSET(field) \
     37  PPC_EXC_ASSERT_OFFSET(field, field ## _OFFSET)
     38
     39PPC_EXC_ASSERT_OFFSET(EXC_SRR0, SRR0_FRAME_OFFSET);
     40PPC_EXC_ASSERT_OFFSET(EXC_SRR1, SRR1_FRAME_OFFSET);
     41PPC_EXC_ASSERT_OFFSET(_EXC_number, EXCEPTION_NUMBER_OFFSET);
     42PPC_EXC_ASSERT_CANONIC_OFFSET(EXC_CR);
     43PPC_EXC_ASSERT_CANONIC_OFFSET(EXC_CTR);
     44PPC_EXC_ASSERT_CANONIC_OFFSET(EXC_XER);
     45PPC_EXC_ASSERT_CANONIC_OFFSET(EXC_LR);
     46#ifdef __SPE__
     47  PPC_EXC_ASSERT_OFFSET(EXC_SPEFSCR, PPC_EXC_SPEFSCR_OFFSET);
     48  PPC_EXC_ASSERT_OFFSET(EXC_ACC, PPC_EXC_ACC_OFFSET);
     49#endif
     50PPC_EXC_ASSERT_CANONIC_OFFSET(GPR0);
     51PPC_EXC_ASSERT_CANONIC_OFFSET(GPR1);
     52PPC_EXC_ASSERT_CANONIC_OFFSET(GPR2);
     53PPC_EXC_ASSERT_CANONIC_OFFSET(GPR3);
     54PPC_EXC_ASSERT_CANONIC_OFFSET(GPR4);
     55PPC_EXC_ASSERT_CANONIC_OFFSET(GPR5);
     56PPC_EXC_ASSERT_CANONIC_OFFSET(GPR6);
     57PPC_EXC_ASSERT_CANONIC_OFFSET(GPR7);
     58PPC_EXC_ASSERT_CANONIC_OFFSET(GPR8);
     59PPC_EXC_ASSERT_CANONIC_OFFSET(GPR9);
     60PPC_EXC_ASSERT_CANONIC_OFFSET(GPR10);
     61PPC_EXC_ASSERT_CANONIC_OFFSET(GPR11);
     62PPC_EXC_ASSERT_CANONIC_OFFSET(GPR12);
     63PPC_EXC_ASSERT_CANONIC_OFFSET(GPR13);
     64PPC_EXC_ASSERT_CANONIC_OFFSET(GPR14);
     65PPC_EXC_ASSERT_CANONIC_OFFSET(GPR15);
     66PPC_EXC_ASSERT_CANONIC_OFFSET(GPR16);
     67PPC_EXC_ASSERT_CANONIC_OFFSET(GPR17);
     68PPC_EXC_ASSERT_CANONIC_OFFSET(GPR18);
     69PPC_EXC_ASSERT_CANONIC_OFFSET(GPR19);
     70PPC_EXC_ASSERT_CANONIC_OFFSET(GPR20);
     71PPC_EXC_ASSERT_CANONIC_OFFSET(GPR21);
     72PPC_EXC_ASSERT_CANONIC_OFFSET(GPR22);
     73PPC_EXC_ASSERT_CANONIC_OFFSET(GPR23);
     74PPC_EXC_ASSERT_CANONIC_OFFSET(GPR24);
     75PPC_EXC_ASSERT_CANONIC_OFFSET(GPR25);
     76PPC_EXC_ASSERT_CANONIC_OFFSET(GPR26);
     77PPC_EXC_ASSERT_CANONIC_OFFSET(GPR27);
     78PPC_EXC_ASSERT_CANONIC_OFFSET(GPR28);
     79PPC_EXC_ASSERT_CANONIC_OFFSET(GPR29);
     80PPC_EXC_ASSERT_CANONIC_OFFSET(GPR30);
     81PPC_EXC_ASSERT_CANONIC_OFFSET(GPR31);
     82
     83RTEMS_STATIC_ASSERT(
     84  PPC_EXC_MINIMAL_FRAME_SIZE % CPU_STACK_ALIGNMENT == 0,
     85  PPC_EXC_MINIMAL_FRAME_SIZE
     86);
     87
     88RTEMS_STATIC_ASSERT(
     89  PPC_EXC_FRAME_SIZE % CPU_STACK_ALIGNMENT == 0,
     90  PPC_EXC_FRAME_SIZE
     91);
     92
     93RTEMS_STATIC_ASSERT(
     94  sizeof(CPU_Exception_frame) + FRAME_LINK_SPACE <= PPC_EXC_FRAME_SIZE,
     95  CPU_Exception_frame
     96);
    2997
    3098uint32_t ppc_exc_cache_wb_check = 1;
  • c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/vectors.h

    rf0e3cc0 rd2202ac  
    247247 */
    248248
    249 typedef struct {
    250   unsigned EXC_SRR0;
    251   unsigned EXC_SRR1;
    252   unsigned _EXC_number;
    253   unsigned EXC_CR;
    254   unsigned EXC_CTR;
    255   unsigned EXC_XER;
    256   unsigned EXC_LR;
    257   #ifdef __SPE__
    258     uint32_t EXC_SPEFSCR;
    259     uint64_t EXC_ACC;
    260   #endif
    261   PPC_GPR_TYPE GPR0;
    262   PPC_GPR_TYPE GPR1;
    263   PPC_GPR_TYPE GPR2;
    264   PPC_GPR_TYPE GPR3;
    265   PPC_GPR_TYPE GPR4;
    266   PPC_GPR_TYPE GPR5;
    267   PPC_GPR_TYPE GPR6;
    268   PPC_GPR_TYPE GPR7;
    269   PPC_GPR_TYPE GPR8;
    270   PPC_GPR_TYPE GPR9;
    271   PPC_GPR_TYPE GPR10;
    272   PPC_GPR_TYPE GPR11;
    273   PPC_GPR_TYPE GPR12;
    274   PPC_GPR_TYPE GPR13;
    275   PPC_GPR_TYPE GPR14;
    276   PPC_GPR_TYPE GPR15;
    277   PPC_GPR_TYPE GPR16;
    278   PPC_GPR_TYPE GPR17;
    279   PPC_GPR_TYPE GPR18;
    280   PPC_GPR_TYPE GPR19;
    281   PPC_GPR_TYPE GPR20;
    282   PPC_GPR_TYPE GPR21;
    283   PPC_GPR_TYPE GPR22;
    284   PPC_GPR_TYPE GPR23;
    285   PPC_GPR_TYPE GPR24;
    286   PPC_GPR_TYPE GPR25;
    287   PPC_GPR_TYPE GPR26;
    288   PPC_GPR_TYPE GPR27;
    289   PPC_GPR_TYPE GPR28;
    290   PPC_GPR_TYPE GPR29;
    291   PPC_GPR_TYPE GPR30;
    292   PPC_GPR_TYPE GPR31;
    293 } BSP_Exception_frame;
     249typedef CPU_Exception_frame BSP_Exception_frame;
    294250
    295251/** @} */
     
    535491 * Compatibility with pc386
    536492 */
    537 typedef BSP_Exception_frame CPU_Exception_frame;
    538493typedef exception_handler_t cpuExcHandlerType;
    539494
  • cpukit/score/cpu/powerpc/rtems/score/cpu.h

    rf0e3cc0 rd2202ac  
    991991);
    992992
     993typedef struct {
     994  uint32_t EXC_SRR0;
     995  uint32_t EXC_SRR1;
     996  uint32_t _EXC_number;
     997  uint32_t EXC_CR;
     998  uint32_t EXC_CTR;
     999  uint32_t EXC_XER;
     1000  uint32_t EXC_LR;
     1001  #ifdef __SPE__
     1002    uint32_t EXC_SPEFSCR;
     1003    uint64_t EXC_ACC;
     1004  #endif
     1005  PPC_GPR_TYPE GPR0;
     1006  PPC_GPR_TYPE GPR1;
     1007  PPC_GPR_TYPE GPR2;
     1008  PPC_GPR_TYPE GPR3;
     1009  PPC_GPR_TYPE GPR4;
     1010  PPC_GPR_TYPE GPR5;
     1011  PPC_GPR_TYPE GPR6;
     1012  PPC_GPR_TYPE GPR7;
     1013  PPC_GPR_TYPE GPR8;
     1014  PPC_GPR_TYPE GPR9;
     1015  PPC_GPR_TYPE GPR10;
     1016  PPC_GPR_TYPE GPR11;
     1017  PPC_GPR_TYPE GPR12;
     1018  PPC_GPR_TYPE GPR13;
     1019  PPC_GPR_TYPE GPR14;
     1020  PPC_GPR_TYPE GPR15;
     1021  PPC_GPR_TYPE GPR16;
     1022  PPC_GPR_TYPE GPR17;
     1023  PPC_GPR_TYPE GPR18;
     1024  PPC_GPR_TYPE GPR19;
     1025  PPC_GPR_TYPE GPR20;
     1026  PPC_GPR_TYPE GPR21;
     1027  PPC_GPR_TYPE GPR22;
     1028  PPC_GPR_TYPE GPR23;
     1029  PPC_GPR_TYPE GPR24;
     1030  PPC_GPR_TYPE GPR25;
     1031  PPC_GPR_TYPE GPR26;
     1032  PPC_GPR_TYPE GPR27;
     1033  PPC_GPR_TYPE GPR28;
     1034  PPC_GPR_TYPE GPR29;
     1035  PPC_GPR_TYPE GPR30;
     1036  PPC_GPR_TYPE GPR31;
     1037} CPU_Exception_frame;
     1038
    9931039/*
    9941040 * _CPU_Initialize_altivec()
Note: See TracChangeset for help on using the changeset viewer.