Rev 1702 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1702 | Rev 1780 | ||
---|---|---|---|
Line 138... | Line 138... | ||
138 | unsigned : 32; |
138 | unsigned : 32; |
139 | } __attribute__ ((packed)); |
139 | } __attribute__ ((packed)); |
140 | typedef struct idescriptor idescriptor_t; |
140 | typedef struct idescriptor idescriptor_t; |
141 | 141 | ||
142 | struct ptr_16_64 { |
142 | struct ptr_16_64 { |
143 | __u16 limit; |
143 | uint16_t limit; |
144 | __u64 base; |
144 | uint64_t base; |
145 | } __attribute__ ((packed)); |
145 | } __attribute__ ((packed)); |
146 | typedef struct ptr_16_64 ptr_16_64_t; |
146 | typedef struct ptr_16_64 ptr_16_64_t; |
147 | 147 | ||
148 | struct ptr_16_32 { |
148 | struct ptr_16_32 { |
149 | __u16 limit; |
149 | uint16_t limit; |
150 | __u32 base; |
150 | uint32_t base; |
151 | } __attribute__ ((packed)); |
151 | } __attribute__ ((packed)); |
152 | typedef struct ptr_16_32 ptr_16_32_t; |
152 | typedef struct ptr_16_32 ptr_16_32_t; |
153 | 153 | ||
154 | struct tss { |
154 | struct tss { |
155 | __u32 reserve1; |
155 | uint32_t reserve1; |
156 | __u64 rsp0; |
156 | uint64_t rsp0; |
157 | __u64 rsp1; |
157 | uint64_t rsp1; |
158 | __u64 rsp2; |
158 | uint64_t rsp2; |
159 | __u64 reserve2; |
159 | uint64_t reserve2; |
160 | __u64 ist1; |
160 | uint64_t ist1; |
161 | __u64 ist2; |
161 | uint64_t ist2; |
162 | __u64 ist3; |
162 | uint64_t ist3; |
163 | __u64 ist4; |
163 | uint64_t ist4; |
164 | __u64 ist5; |
164 | uint64_t ist5; |
165 | __u64 ist6; |
165 | uint64_t ist6; |
166 | __u64 ist7; |
166 | uint64_t ist7; |
167 | __u64 reserve3; |
167 | uint64_t reserve3; |
168 | __u16 reserve4; |
168 | uint16_t reserve4; |
169 | __u16 iomap_base; |
169 | uint16_t iomap_base; |
170 | __u8 iomap[TSS_IOMAP_SIZE]; |
170 | uint8_t iomap[TSS_IOMAP_SIZE]; |
171 | } __attribute__ ((packed)); |
171 | } __attribute__ ((packed)); |
172 | typedef struct tss tss_t; |
172 | typedef struct tss tss_t; |
173 | 173 | ||
174 | extern tss_t *tss_p; |
174 | extern tss_t *tss_p; |
175 | 175 | ||
Line 180... | Line 180... | ||
180 | extern ptr_16_32_t bootstrap_gdtr; |
180 | extern ptr_16_32_t bootstrap_gdtr; |
181 | extern ptr_16_32_t protected_ap_gdtr; |
181 | extern ptr_16_32_t protected_ap_gdtr; |
182 | 182 | ||
183 | extern void pm_init(void); |
183 | extern void pm_init(void); |
184 | 184 | ||
185 | extern void gdt_tss_setbase(descriptor_t *d, __address base); |
185 | extern void gdt_tss_setbase(descriptor_t *d, uintptr_t base); |
186 | extern void gdt_tss_setlimit(descriptor_t *d, __u32 limit); |
186 | extern void gdt_tss_setlimit(descriptor_t *d, uint32_t limit); |
187 | 187 | ||
188 | extern void idt_init(void); |
188 | extern void idt_init(void); |
189 | extern void idt_setoffset(idescriptor_t *d, __address offset); |
189 | extern void idt_setoffset(idescriptor_t *d, uintptr_t offset); |
190 | 190 | ||
191 | extern void tss_initialize(tss_t *t); |
191 | extern void tss_initialize(tss_t *t); |
192 | 192 | ||
193 | #endif /* __ASM__ */ |
193 | #endif /* __ASM__ */ |
194 | 194 |