|
@@ -28,9 +28,6 @@ FILE_LICENCE ( GPL2_OR_LATER )
|
28
|
28
|
* Call init_librm to set up the GDT before attempting to use any
|
29
|
29
|
* protected-mode code.
|
30
|
30
|
*
|
31
|
|
- * Define FLATTEN_REAL_MODE if you want to use so-called "flat real
|
32
|
|
- * mode" with 4GB limits instead.
|
33
|
|
- *
|
34
|
31
|
* NOTE: This must be located before prot_to_real, otherwise gas
|
35
|
32
|
* throws a "can't handle non absolute segment in `ljmp'" error due to
|
36
|
33
|
* not knowing the value of REAL_CS when the ljmp is encountered.
|
|
@@ -40,12 +37,6 @@ FILE_LICENCE ( GPL2_OR_LATER )
|
40
|
37
|
* "non absolute segment" error. This is most probably a bug in gas.
|
41
|
38
|
****************************************************************************
|
42
|
39
|
*/
|
43
|
|
-
|
44
|
|
-#ifdef FLATTEN_REAL_MODE
|
45
|
|
-#define RM_LIMIT_16_19__AVL__SIZE__GRANULARITY 0x8f
|
46
|
|
-#else
|
47
|
|
-#define RM_LIMIT_16_19__AVL__SIZE__GRANULARITY 0x00
|
48
|
|
-#endif
|
49
|
40
|
.section ".data16", "aw", @progbits
|
50
|
41
|
.align 16
|
51
|
42
|
gdt:
|
|
@@ -75,14 +66,14 @@ physical_ds: /* 32 bit protected mode data segment, physical addresses */
|
75
|
66
|
.byte 0, 0x93, 0xcf, 0
|
76
|
67
|
|
77
|
68
|
.org gdt + REAL_CS, 0
|
78
|
|
-real_cs: /* 16 bit real mode code segment */
|
|
69
|
+real_cs: /* 16 bit flat real mode code segment */
|
79
|
70
|
.word 0xffff, 0
|
80
|
|
- .byte 0, 0x9b, RM_LIMIT_16_19__AVL__SIZE__GRANULARITY, 0
|
|
71
|
+ .byte 0, 0x9b, 0x8f, 0
|
81
|
72
|
|
82
|
73
|
.org gdt + REAL_DS
|
83
|
|
-real_ds: /* 16 bit real mode data segment */
|
|
74
|
+real_ds: /* 16 bit flat real mode data segment */
|
84
|
75
|
.word 0xffff, 0
|
85
|
|
- .byte 0, 0x93, RM_LIMIT_16_19__AVL__SIZE__GRANULARITY, 0
|
|
76
|
+ .byte 0, 0x93, 0x8f, 0
|
86
|
77
|
|
87
|
78
|
gdt_end:
|
88
|
79
|
.equ gdt_length, gdt_end - gdt
|