Subversion Repositories HelenOS

Rev

Rev 2071 | Rev 2608 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2071 Rev 2089
Line 33... Line 33...
33
 */
33
 */
34
 
34
 
35
#ifndef KERN_ia64_INTERRUPT_H_
35
#ifndef KERN_ia64_INTERRUPT_H_
36
#define KERN_ia64_INTERRUPT_H_
36
#define KERN_ia64_INTERRUPT_H_
37
 
37
 
38
#include <typedefs.h>
-
 
39
#include <arch/types.h>
38
#include <arch/types.h>
40
#include <arch/register.h>
39
#include <arch/register.h>
41
 
40
 
42
/** ia64 has 256 INRs. */
41
/** ia64 has 256 INRs. */
43
#define INR_COUNT   256
42
#define INR_COUNT   256
Line 62... Line 61...
62
#define GE_DISBLDISTRAN     4
61
#define GE_DISBLDISTRAN     4
63
#define GE_ILLEGALDEP       8
62
#define GE_ILLEGALDEP       8
64
 
63
 
65
#define EOI 0       /**< The actual value doesn't matter. */
64
#define EOI 0       /**< The actual value doesn't matter. */
66
 
65
 
67
struct istate {
66
typedef struct {
68
    __r128 f2;
67
    uint128_t f2;
69
    __r128 f3;
68
    uint128_t f3;
70
    __r128 f4;
69
    uint128_t f4;
71
    __r128 f5;
70
    uint128_t f5;
72
    __r128 f6;
71
    uint128_t f6;
73
    __r128 f7;
72
    uint128_t f7;
74
    __r128 f8;
73
    uint128_t f8;
75
    __r128 f9;
74
    uint128_t f9;
76
    __r128 f10;
75
    uint128_t f10;
77
    __r128 f11;
76
    uint128_t f11;
78
    __r128 f12;
77
    uint128_t f12;
79
    __r128 f13;
78
    uint128_t f13;
80
    __r128 f14;
79
    uint128_t f14;
81
    __r128 f15;
80
    uint128_t f15;
82
    __r128 f16;
81
    uint128_t f16;
83
    __r128 f17;
82
    uint128_t f17;
84
    __r128 f18;
83
    uint128_t f18;
85
    __r128 f19;
84
    uint128_t f19;
86
    __r128 f20;
85
    uint128_t f20;
87
    __r128 f21;
86
    uint128_t f21;
88
    __r128 f22;
87
    uint128_t f22;
89
    __r128 f23;
88
    uint128_t f23;
90
    __r128 f24;
89
    uint128_t f24;
91
    __r128 f25;
90
    uint128_t f25;
92
    __r128 f26;
91
    uint128_t f26;
93
    __r128 f27;
92
    uint128_t f27;
94
    __r128 f28;
93
    uint128_t f28;
95
    __r128 f29;
94
    uint128_t f29;
96
    __r128 f30;
95
    uint128_t f30;
97
    __r128 f31;
96
    uint128_t f31;
98
       
97
       
99
    uintptr_t ar_bsp;
98
    uintptr_t ar_bsp;
100
    uintptr_t ar_bspstore;
99
    uintptr_t ar_bspstore;
101
    uintptr_t ar_bspstore_new;
100
    uintptr_t ar_bspstore_new;
102
    uint64_t ar_rnat;
101
    uint64_t ar_rnat;
Line 117... Line 116...
117
    uint64_t in0;
116
    uint64_t in0;
118
    uint64_t in1;
117
    uint64_t in1;
119
    uint64_t in2;
118
    uint64_t in2;
120
    uint64_t in3;
119
    uint64_t in3;
121
    uint64_t in4;
120
    uint64_t in4;
122
};
121
} istate_t;
123
 
122
 
124
static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
123
static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr)
125
{
124
{
126
    istate->cr_iip = retaddr;
125
    istate->cr_iip = retaddr;
127
    istate->cr_ipsr.ri = 0;     /* return to instruction slot #0 */
126
    istate->cr_ipsr.ri = 0;     /* return to instruction slot #0 */