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 | ||