Subversion Repositories HelenOS

Rev

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

Rev 1830 Rev 1831
Line 38... Line 38...
38
 
38
 
39
typedef struct {
39
typedef struct {
40
    uint8_t vector;     /**< Exception vector */
40
    uint8_t vector;     /**< Exception vector */
41
    uint8_t flags;      /**< 0-3: privilege level; 4: clear event enable */
41
    uint8_t flags;      /**< 0-3: privilege level; 4: clear event enable */
42
    uint16_t cs;        /**< Code selector */
42
    uint16_t cs;        /**< Code selector */
43
    uintptr_t address;  /**< Code offset */
43
    void *address;      /**< Code offset */
44
} trap_info_t;
44
} trap_info_t;
45
 
45
 
46
 
46
 
-
 
47
typedef struct {
-
 
48
    evtchn_t port;
-
 
49
} evtchn_send_t;
-
 
50
 
-
 
51
typedef struct {
-
 
52
    uint32_t cmd;
-
 
53
    union {
-
 
54
        evtchn_send_t send;
-
 
55
    };
-
 
56
} evtchn_op_t;
-
 
57
 
-
 
58
 
47
#define XEN_SET_TRAP_TABLE      0
59
#define XEN_SET_TRAP_TABLE      0
48
#define XEN_MMU_UPDATE          1
60
#define XEN_MMU_UPDATE          1
49
#define XEN_SET_CALLBACKS       4
61
#define XEN_SET_CALLBACKS       4
50
#define XEN_UPDATE_VA_MAPPING   14
62
#define XEN_UPDATE_VA_MAPPING   14
-
 
63
#define XEN_EVENT_CHANNEL_OP    16
51
#define XEN_VERSION             17
64
#define XEN_VERSION             17
52
#define XEN_CONSOLE_IO          18
65
#define XEN_CONSOLE_IO          18
53
#define XEN_VM_ASSIST           21
66
#define XEN_VM_ASSIST           21
54
#define XEN_MMUEXT_OP           26
67
#define XEN_MMUEXT_OP           26
55
 
68
 
Line 76... Line 89...
76
#define MMUEXT_FLUSH_CACHE      12
89
#define MMUEXT_FLUSH_CACHE      12
77
#define MMUEXT_SET_LDT          13
90
#define MMUEXT_SET_LDT          13
78
#define MMUEXT_NEW_USER_BASEPTR 15
91
#define MMUEXT_NEW_USER_BASEPTR 15
79
 
92
 
80
 
93
 
-
 
94
#define EVTCHNOP_SEND           4
-
 
95
 
-
 
96
 
81
#define UVMF_NONE               0        /**< No flushing at all */
97
#define UVMF_NONE               0        /**< No flushing at all */
82
#define UVMF_TLB_FLUSH          1        /**< Flush entire TLB(s) */
98
#define UVMF_TLB_FLUSH          1        /**< Flush entire TLB(s) */
83
#define UVMF_INVLPG             2        /**< Flush only one entry */
99
#define UVMF_INVLPG             2        /**< Flush only one entry */
84
#define UVMF_FLUSHTYPE_MASK     3
100
#define UVMF_FLUSHTYPE_MASK     3
85
#define UVMF_MULTI              0        /**< Flush subset of TLBs */
101
#define UVMF_MULTI              0        /**< Flush subset of TLBs */
Line 224... Line 240...
224
static inline int xen_version(const unsigned int cmd, const void *arg)
240
static inline int xen_version(const unsigned int cmd, const void *arg)
225
{
241
{
226
    return hypercall2(XEN_VERSION, cmd, arg);
242
    return hypercall2(XEN_VERSION, cmd, arg);
227
}
243
}
228
 
244
 
-
 
245
static inline int xen_notify_remote(evtchn_t channel)
-
 
246
{
-
 
247
    evtchn_op_t op;
-
 
248
   
-
 
249
    op.cmd = EVTCHNOP_SEND;
-
 
250
    op.send.port = channel;
-
 
251
    return hypercall1(XEN_EVENT_CHANNEL_OP, &op);
-
 
252
}
-
 
253
 
229
#endif
254
#endif