Subversion Repositories HelenOS-historic

Rev

Rev 1702 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1702 Rev 1780
Line 86... Line 86...
86
    __r128 f28;
86
    __r128 f28;
87
    __r128 f29;
87
    __r128 f29;
88
    __r128 f30;
88
    __r128 f30;
89
    __r128 f31;
89
    __r128 f31;
90
       
90
       
91
    __address ar_bsp;
91
    uintptr_t ar_bsp;
92
    __address ar_bspstore;
92
    uintptr_t ar_bspstore;
93
    __address ar_bspstore_new;
93
    uintptr_t ar_bspstore_new;
94
    __u64 ar_rnat;
94
    uint64_t ar_rnat;
95
    __u64 ar_ifs;
95
    uint64_t ar_ifs;
96
    __u64 ar_pfs;
96
    uint64_t ar_pfs;
97
    __u64 ar_rsc;
97
    uint64_t ar_rsc;
98
    __address cr_ifa;
98
    uintptr_t cr_ifa;
99
    cr_isr_t cr_isr;
99
    cr_isr_t cr_isr;
100
    __address cr_iipa;
100
    uintptr_t cr_iipa;
101
    psr_t cr_ipsr;
101
    psr_t cr_ipsr;
102
    __address cr_iip;
102
    uintptr_t cr_iip;
103
    __u64 pr;
103
    uint64_t pr;
104
    __address sp;
104
    uintptr_t sp;
105
   
105
   
106
    /*
106
    /*
107
     * The following variables are defined only for break_instruction handler.
107
     * The following variables are defined only for break_instruction handler.
108
     */
108
     */
109
    __u64 in0;
109
    uint64_t in0;
110
    __u64 in1;
110
    uint64_t in1;
111
    __u64 in2;
111
    uint64_t in2;
112
    __u64 in3;
112
    uint64_t in3;
113
    __u64 in4;
113
    uint64_t in4;
114
};
114
};
115
 
115
 
116
static inline void istate_set_retaddr(istate_t *istate, __address retaddr)
116
static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
117
{
117
{
118
    istate->cr_iip = retaddr;
118
    istate->cr_iip = retaddr;
119
    istate->cr_ipsr.ri = 0;     /* return to instruction slot #0 */
119
    istate->cr_ipsr.ri = 0;     /* return to instruction slot #0 */
120
}
120
}
121
 
121
 
122
static inline __native istate_get_pc(istate_t *istate)
122
static inline unative_t istate_get_pc(istate_t *istate)
123
{
123
{
124
    return istate->cr_iip;
124
    return istate->cr_iip;
125
}
125
}
126
#include <panic.h>
126
#include <panic.h>
127
static inline int istate_from_uspace(istate_t *istate)
127
static inline int istate_from_uspace(istate_t *istate)
Line 129... Line 129...
129
    return (istate->cr_iip)<0xe000000000000000ULL;
129
    return (istate->cr_iip)<0xe000000000000000ULL;
130
}
130
}
131
 
131
 
132
extern void *ivt;
132
extern void *ivt;
133
 
133
 
134
extern void general_exception(__u64 vector, istate_t *istate);
134
extern void general_exception(uint64_t vector, istate_t *istate);
135
extern int break_instruction(__u64 vector, istate_t *istate);
135
extern int break_instruction(uint64_t vector, istate_t *istate);
136
extern void universal_handler(__u64 vector, istate_t *istate);
136
extern void universal_handler(uint64_t vector, istate_t *istate);
137
extern void nop_handler(__u64 vector, istate_t *istate);
137
extern void nop_handler(uint64_t vector, istate_t *istate);
138
extern void external_interrupt(__u64 vector, istate_t *istate);
138
extern void external_interrupt(uint64_t vector, istate_t *istate);
139
extern void virtual_interrupt(__u64 irq, void *param);
139
extern void virtual_interrupt(uint64_t irq, void *param);
140
extern void disabled_fp_register(__u64 vector, istate_t *istate);
140
extern void disabled_fp_register(uint64_t vector, istate_t *istate);
141
 
141
 
142
 
142
 
143
 
143
 
144
#endif
144
#endif
145
 
145