GDTR_TEMP
------------------------------------------------------------------------------*/
.align 16
- .global _GDTR_TEMP
-_GDTR_TEMP:
+.global tempGDTR
+tempGDTR:
_GDTR_TEMP_Limit:
.word _GDT_END - gdt - 1
_GDTR_TEMP_Base:
/*------------------------------------------------------------------------------
GDTR
-------------------------------------------------------------------------------*/
+------------------------------------------------------------------------------*
.align 16
_GDTR:
.word GDT_LIMIT
_GDTR_Base:
.long GDT_BASE
-
+*/
/*------------------------------------------------------------------------------
GDT
.align 16
gdt:
-gdtNull: #0x0000
- .word 0x0000
- .word 0x0000
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
-
-gdtKernelCS: #0x0008 Base:0x00000000, Limit:0xfffff(単位:Page), SegmentType:Code(Exe/Read)
- .word 0xffff
- .word 0x0000
- .byte 0x00
- .byte 0x9a
- .byte 0xcf
- .byte 0x00
-
-gdtKernelDS: #0x0010 Base:0x00000000, Limit:0xfffff(単位:Page), SegmentType:Data(Read/Write)
- .word 0xffff
- .word 0x0000
- .byte 0x00
- .byte 0x92
- .byte 0xcf
- .byte 0x00
-
-gdtBootLoaderCS: #0x0018 Base:0x00060000, Limit:0xfffff(単位:Page), SegmentType:Code(Exe/Read)
- .word 0xffff
- .word 0x0000
- .byte 0x06
- .byte 0x9a
- .byte 0xcf
- .byte 0x00
-
+gdtNull: #0x0000
+ .word 0x0000
+ .word 0x0000
+ .byte 0x00
+ .byte 0x00
+ .byte 0x00
+ .byte 0x00
+
+// ブート用
+gdt08: # Base:0x0000 1000, Limit:0xfffff(単位:Page), SegmentType:Code(Exe/Read)
+ .word 0xffff // Llimit[0-15]
+ .word 0x1000 // Base[0-15]
+ .byte 0x00 // Base[16-24]
+ .byte 0x9a // P, DPL, S, Type, A
+ .byte 0xcf // G, D/B, 予約, AVL, Limit[16-19]
+ .byte 0x00 // Base[25-32]
+
+gdt10: # Base:0x0000 1000, Limit:0xfffff(単位:Page), SegmentType:Data(Read/Write)
+ .word 0xffff
+ .word 0x1000
+ .byte 0x00
+ .byte 0x92
+ .byte 0xcf
+ .byte 0x00
+
+gdt18: # Base:0x0001 0000, Limit:0xfffff(単位:Page), SegmentType:Data(Read only)
+ .word 0xffff
+ .word 0x0000
+ .byte 0x01
+ .byte 0x90
+ .byte 0xcf
+ .byte 0x00
+
+gdt20: # Base:0x0010 0000, Limit:0xfffff(単位:Page), SegmentType:Code(Exe/Read)
+ .word 0xffff
+ .word 0x0000
+ .byte 0x10
+ .byte 0x9a
+ .byte 0xcf
+ .byte 0x00
+
+gdt28: # Base:0x0010 0000, Limit:0xfffff(単位:Page), SegmentType:Data(Read/Write)
+ .word 0xffff
+ .word 0x0000
+ .byte 0x10
+ .byte 0x92
+ .byte 0xcf
+ .byte 0x00
_GDT_END: