Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/mips32/include/exception.h

    rce890ec9 rd99c1d2  
    2727 */
    2828
    29 /** @addtogroup mips32
     29/** @addtogroup mips32 
    3030 * @{
    3131 */
     
    3838#include <typedefs.h>
    3939#include <arch/cp0.h>
    40 #include <trace.h>
    4140
    42 #define EXC_Int    0
    43 #define EXC_Mod    1
    44 #define EXC_TLBL   2
    45 #define EXC_TLBS   3
    46 #define EXC_AdEL   4
    47 #define EXC_AdES   5
    48 #define EXC_IBE    6
    49 #define EXC_DBE    7
    50 #define EXC_Sys    8
    51 #define EXC_Bp     9
    52 #define EXC_RI     10
    53 #define EXC_CpU    11
    54 #define EXC_Ov     12
    55 #define EXC_Tr     13
    56 #define EXC_VCEI   14
    57 #define EXC_FPE    15
    58 #define EXC_WATCH  23
    59 #define EXC_VCED   31
     41#define EXC_Int         0
     42#define EXC_Mod         1
     43#define EXC_TLBL        2
     44#define EXC_TLBS        3
     45#define EXC_AdEL        4
     46#define EXC_AdES        5
     47#define EXC_IBE         6
     48#define EXC_DBE         7
     49#define EXC_Sys         8
     50#define EXC_Bp          9
     51#define EXC_RI          10
     52#define EXC_CpU         11
     53#define EXC_Ov          12
     54#define EXC_Tr          13
     55#define EXC_VCEI        14
     56#define EXC_FPE         15
     57#define EXC_WATCH       23
     58#define EXC_VCED        31
    6059
    6160typedef struct istate {
    62         /*
    63          * The first seven registers are arranged so that the istate structure
    64          * can be used both for exception handlers and for the syscall handler.
    65          */
    66         uint32_t a0;    /* arg1 */
    67         uint32_t a1;    /* arg2 */
    68         uint32_t a2;    /* arg3 */
    69         uint32_t a3;    /* arg4 */
    70         uint32_t t0;    /* arg5 */
    71         uint32_t t1;    /* arg6 */
    72         uint32_t v0;    /* arg7 */
     61        uint32_t at;
     62        uint32_t v0;
    7363        uint32_t v1;
    74         uint32_t at;
     64        uint32_t a0;
     65        uint32_t a1;
     66        uint32_t a2;
     67        uint32_t a3;
     68        uint32_t t0;
     69        uint32_t t1;
    7570        uint32_t t2;
    7671        uint32_t t3;
     
    7974        uint32_t t6;
    8075        uint32_t t7;
    81         uint32_t s0;
    82         uint32_t s1;
    83         uint32_t s2;
    84         uint32_t s3;
    85         uint32_t s4;
    86         uint32_t s5;
    87         uint32_t s6;
    88         uint32_t s7;
    8976        uint32_t t8;
    9077        uint32_t t9;
    91         uint32_t kt0;
    92         uint32_t kt1;   /* We use it as thread-local pointer */
    9378        uint32_t gp;
    9479        uint32_t sp;
    95         uint32_t s8;
    9680        uint32_t ra;
    9781       
    9882        uint32_t lo;
    9983        uint32_t hi;
    100        
    101         uint32_t status;        /* cp0_status */
    102         uint32_t epc;           /* cp0_epc */
    10384
    104         uint32_t alignment;     /* to make sizeof(istate_t) a multiple of 8 */
     85        uint32_t status; /* cp0_status */
     86        uint32_t epc; /* cp0_epc */
     87        uint32_t k1; /* We use it as thread-local pointer */
    10588} istate_t;
    10689
    107 NO_TRACE static inline void istate_set_retaddr(istate_t *istate,
    108     uintptr_t retaddr)
     90static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
    10991{
    11092        istate->epc = retaddr;
     
    11294
    11395/** Return true if exception happened while in userspace */
    114 NO_TRACE static inline int istate_from_uspace(istate_t *istate)
     96static inline int istate_from_uspace(istate_t *istate)
    11597{
    11698        return istate->status & cp0_status_um_bit;
    11799}
    118 
    119 NO_TRACE static inline unative_t istate_get_pc(istate_t *istate)
     100static inline unative_t istate_get_pc(istate_t *istate)
    120101{
    121102        return istate->epc;
    122103}
    123 
    124 NO_TRACE static inline unative_t istate_get_fp(istate_t *istate)
     104static inline unative_t istate_get_fp(istate_t *istate)
    125105{
    126         return istate->sp;
     106        return 0;       /* FIXME */
    127107}
    128108
Note: See TracChangeset for help on using the changeset viewer.