OSDN Git Service

FDDブートに変更
[tryos/TryOS.git] / Boot / Source / DescriptorTable.S
index 0412ba8..09d3ad5 100644 (file)
@@ -27,8 +27,8 @@ IDT_LIMIT             = 0x07ff
        GDTR_TEMP
 ------------------------------------------------------------------------------*/
        .align          16
-       .global _GDTR_TEMP
-_GDTR_TEMP:
+.global tempGDTR
+tempGDTR:
 _GDTR_TEMP_Limit:
        .word           _GDT_END - gdt - 1
 _GDTR_TEMP_Base:
@@ -37,7 +37,7 @@ _GDTR_TEMP_Base:
 
 /*------------------------------------------------------------------------------
        GDTR
-------------------------------------------------------------------------------*/
+------------------------------------------------------------------------------*
        .align          16
 
 _GDTR:
@@ -45,7 +45,7 @@ _GDTR_Limit:
        .word           GDT_LIMIT
 _GDTR_Base:
        .long           GDT_BASE
-
+*/
 
 /*------------------------------------------------------------------------------
        GDT
@@ -53,38 +53,54 @@ _GDTR_Base:
        .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: