1 #ifndef __LUNAIX_I386_ASM_H
2 #define __LUNAIX_I386_ASM_H
4 #define SEL_INDEX(i) ((i) << 3)
5 #define SEL_RPL(rpl) ((rpl) & 0b11)
7 #define KCODE_SEG (SEL_INDEX(1) | SEL_RPL(0))
8 #define UCODE_SEG (SEL_INDEX(2) | SEL_RPL(3))
10 #ifdef CONFIG_ARCH_I386
11 #define KDATA_SEG (SEL_INDEX(3) | SEL_RPL(0))
12 #define UDATA_SEG (SEL_INDEX(4) | SEL_RPL(3))
13 #define TSS_SEG (SEL_INDEX(5) | SEL_RPL(0))
16 #define KDATA_SEG (SEL_INDEX(3) | SEL_RPL(0))
17 #define UDATA_SEG (SEL_INDEX(4) | SEL_RPL(3))
18 #define TSS_SEG (SEL_INDEX(5) | SEL_RPL(0))
24 #include <lunaix/types.h>
26 #define IRQ_TRIG_EDGE 0b0
27 #define IRQ_TRIG_LEVEL 0b1
29 #define IRQ_TYPE_FIXED (0b01 << 1)
30 #define IRQ_TYPE_NMI (0b11 << 1)
31 #define IRQ_TYPE (0b11 << 1)
33 #define IRQ_VE_HI (0b1 << 3)
34 #define IRQ_VE_LO (0b0 << 3)
36 #define IRQ_DEFAULT (IRQ_TRIG_EDGE | IRQ_TYPE_FIXED | IRQ_VE_HI)
44 void (*irq_attach)(struct x86_intc*,
49 void (*notify_eoi)(struct x86_intc*, cpu_t id, int iv);
52 #ifdef CONFIG_ARCH_X86_64
74 typedef u64_t x86_segdesc_t;
91 typedef struct x86_sysdesc x86_segdesc_t;
96 #endif /* __LUNAIX_I386_ASM_H */