- .word 0xffff, 0, 0x9b00, 0x00cf // 32 bit flat code segment (0x10)
- .word 0xffff, 0, 0x9300, 0x00cf // 32 bit flat data segment (0x18)
- .word 0xffff, 0, 0x9b0f, 0x0000 // 16 bit code segment base=0xf0000 limit=0xffff
- .word 0xffff, 0, 0x9300, 0x0000 // 16 bit data segment base=0x0 limit=0xffff
-
-
+ // 32 bit flat code segment (PROTECTED_MODE_CS)
+ .word 0xffff, 0, 0x9b00, 0x00cf
+ // 32 bit flat data segment (PROTECTED_MODE_DS)
+ .word 0xffff, 0, 0x9300, 0x00cf
+ // 16 bit code segment base=0xf0000 limit=0xffff (REAL_MODE_CS)
+ .word 0xffff, 0, 0x9b0f, 0x0000
+ // 16 bit data segment base=0x0 limit=0xffff (REAL_MODE_DS)
+ .word 0xffff, 0, 0x9300, 0x0000
+
+
+/****************************************************************
+ * Interrupt entry points
+ ****************************************************************/
+
+ // Call a C function - this does the minimal work necessary to
+ // call into C. It sets up %ds, backs up %es, and backs up
+ // those registers that are call clobbered by the C compiler.