Changeset 39cea6a in mainline for arch/amd64/src/pm.c
- Timestamp:
- 2006-04-13T17:38:03Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e185136
- Parents:
- 897ad60
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/src/pm.c
r897ad60 r39cea6a 47 47 */ 48 48 49 struct descriptorgdt[GDT_ITEMS] = {49 descriptor_t gdt[GDT_ITEMS] = { 50 50 /* NULL descriptor */ 51 51 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, … … 111 111 }; 112 112 113 struct idescriptoridt[IDT_ITEMS];114 115 struct ptr_16_64gdtr = {.limit = sizeof(gdt), .base= (__u64) gdt };116 struct ptr_16_64idtr = {.limit = sizeof(idt), .base= (__u64) idt };117 118 static struct tsstss;119 struct tss*tss_p = NULL;120 121 void gdt_tss_setbase( struct descriptor*d, __address base)122 { 123 struct tss_descriptor *td = (struct tss_descriptor*) d;113 idescriptor_t idt[IDT_ITEMS]; 114 115 ptr_16_64_t gdtr = {.limit = sizeof(gdt), .base= (__u64) gdt }; 116 ptr_16_64_t idtr = {.limit = sizeof(idt), .base= (__u64) idt }; 117 118 static tss_t tss; 119 tss_t *tss_p = NULL; 120 121 void gdt_tss_setbase(descriptor_t *d, __address base) 122 { 123 tss_descriptor_t *td = (tss_descriptor_t *) d; 124 124 125 125 td->base_0_15 = base & 0xffff; … … 129 129 } 130 130 131 void gdt_tss_setlimit( struct descriptor*d, __u32 limit)132 { 133 struct tss_descriptor *td = ( struct tss_descriptor*) d;131 void gdt_tss_setlimit(descriptor_t *d, __u32 limit) 132 { 133 struct tss_descriptor *td = (tss_descriptor_t *) d; 134 134 135 135 td->limit_0_15 = limit & 0xffff; … … 137 137 } 138 138 139 void idt_setoffset( struct idescriptor*d, __address offset)139 void idt_setoffset(idescriptor_t *d, __address offset) 140 140 { 141 141 /* … … 147 147 } 148 148 149 void tss_initialize( struct tss*t)150 { 151 memsetb((__address) t, sizeof( struct tss), 0);149 void tss_initialize(tss_t *t) 150 { 151 memsetb((__address) t, sizeof(tss_t), 0); 152 152 } 153 153 … … 157 157 void idt_init(void) 158 158 { 159 struct idescriptor*d;159 idescriptor_t *d; 160 160 int i; 161 161 … … 184 184 void pm_init(void) 185 185 { 186 struct descriptor*gdt_p = (struct descriptor *) gdtr.base;187 struct tss_descriptor*tss_desc;186 descriptor_t *gdt_p = (struct descriptor *) gdtr.base; 187 tss_descriptor_t *tss_desc; 188 188 189 189 /* … … 201 201 } 202 202 else { 203 tss_p = (struct tss *) malloc(sizeof( struct tss),FRAME_ATOMIC);203 tss_p = (struct tss *) malloc(sizeof(tss_t), FRAME_ATOMIC); 204 204 if (!tss_p) 205 205 panic("could not allocate TSS\n"); … … 208 208 tss_initialize(tss_p); 209 209 210 tss_desc = ( struct tss_descriptor*) (&gdt_p[TSS_DES]);210 tss_desc = (tss_descriptor_t *) (&gdt_p[TSS_DES]); 211 211 tss_desc->present = 1; 212 212 tss_desc->type = AR_TSS; … … 214 214 215 215 gdt_tss_setbase(&gdt_p[TSS_DES], (__address) tss_p); 216 gdt_tss_setlimit(&gdt_p[TSS_DES], sizeof( struct tss) - 1);216 gdt_tss_setlimit(&gdt_p[TSS_DES], sizeof(tss_t) - 1); 217 217 218 218 gdtr_load(&gdtr);
Note:
See TracChangeset
for help on using the changeset viewer.