Cleanup of fixed space addresses.

The BIOS_CONFIG_TABLE must be aligned to 1 (or gcc may change it).
Consistently use __aligned(x) wrapper throughout C code.
Register the official fixed address handlers - even if it is only a
    jump to the real handler.
Declare .type of data objects - it improves disassembler output.
Put labels at all fixed addresses - it improves disassembler output.
entry_hwirq should be calling 'cli' - use regular entry macro.
int1D is a data table, not code - so don't put an iretw there.
diff --git a/src/cbt.c b/src/cbt.c
index 26744ca..8a2a11a 100644
--- a/src/cbt.c
+++ b/src/cbt.c
@@ -27,7 +27,7 @@
 // INT 16/AH=09h (keyboard functionality) supported
 #define CBT_F2_INT1609  (1<<6)
 
-struct bios_config_table_s BIOS_CONFIG_TABLE = {
+struct bios_config_table_s BIOS_CONFIG_TABLE __aligned(1) = {
     .size     = sizeof(BIOS_CONFIG_TABLE) - 2,
     .model    = CONFIG_MODEL_ID,
     .submodel = CONFIG_SUBMODEL_ID,
diff --git a/src/floppy_dbt.c b/src/floppy_dbt.c
index 987568b..c04d222 100644
--- a/src/floppy_dbt.c
+++ b/src/floppy_dbt.c
@@ -9,7 +9,7 @@
 // Since no provisions are made for multiple drive types, most
 // values in this table are ignored.  I set parameters for 1.44M
 // floppy here
-struct floppy_dbt_s diskette_param_table __attribute__((aligned (1))) VISIBLE16 = {
+struct floppy_dbt_s diskette_param_table __aligned(1) VISIBLE16 = {
     .specify1       = 0xAF,
     .specify2       = 0x02, // head load time 0000001, DMA used
     .shutoff_ticks  = 0x25,
diff --git a/src/font.c b/src/font.c
index 01c73ed..17f0690 100644
--- a/src/font.c
+++ b/src/font.c
@@ -7,7 +7,7 @@
  * found at ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
  * This font is public domain
  */
-const u8 vgafont8[128*8] __attribute__((aligned (1))) = {
+const u8 vgafont8[128*8] __aligned(1) = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e,
     0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e,
diff --git a/src/pirtable.c b/src/pirtable.c
index 705cc50..8e3c366 100644
--- a/src/pirtable.c
+++ b/src/pirtable.c
@@ -12,7 +12,7 @@
 struct pir_table {
     struct pir_header pir;
     struct pir_slot slots[6];
-} PACKED PIR_TABLE __attribute__((aligned(16))) = {
+} PACKED PIR_TABLE __aligned(16) = {
 #if CONFIG_PIRTABLE
     .pir = {
         .version = 0x0100,
diff --git a/src/post.c b/src/post.c
index 31b9c2f..77c7797 100644
--- a/src/post.c
+++ b/src/post.c
@@ -54,15 +54,15 @@
 
     // Initialize software handlers.
     set_irq(0x10, entry_10);
-    set_irq(0x11, entry_11);
-    set_irq(0x12, entry_12);
-    set_irq(0x13, entry_13);
+    set_irq(0x11, entry_11_official);
+    set_irq(0x12, entry_12_official);
+    set_irq(0x13, entry_13_official);
     set_irq(0x14, entry_14);
     set_irq(0x15, entry_15);
     set_irq(0x16, entry_16);
     set_irq(0x17, entry_17);
     set_irq(0x18, entry_18);
-    set_irq(0x19, entry_19);
+    set_irq(0x19, entry_19_official);
     set_irq(0x1a, entry_1a);
     set_irq(0x1c, entry_1c);
     set_irq(0x40, entry_40);
diff --git a/src/rombios16.lds.S b/src/rombios16.lds.S
index d51d69c..009eb89 100644
--- a/src/rombios16.lds.S
+++ b/src/rombios16.lds.S
@@ -14,8 +14,10 @@
         code16_start = . ;
         .text16 : {
                 *(.text)
+                code16_rodata = . ;
                 *(.rodata*)
                 *(.data)
+                code16_bss = . ;
                 *(.bss)
                 *(COMMON)
                 }
diff --git a/src/rombios32.lds.S b/src/rombios32.lds.S
index 3308345..cc3fc36 100644
--- a/src/rombios32.lds.S
+++ b/src/rombios32.lds.S
@@ -16,13 +16,11 @@
                 *(.text)
                 code32_rodata = . ;
                 *(.rodata*)
-                code32_data = . ;
                 *(.data)
                 . = ALIGN(16) ;
-                __bss_start = . ;
+                code32_bss = . ;
                 *(.bss)
                 *(COMMON)
-                __bss_end = . ;
                 }
         code32_end = . ;
 }
diff --git a/src/romlayout.S b/src/romlayout.S
index d0b463c..e5da763 100644
--- a/src/romlayout.S
+++ b/src/romlayout.S
@@ -304,6 +304,7 @@
         retl
 
 // Entry point when a post call looks like a resume.
+// %eax = shutdown status from cmos
 entry_resume:
         // Save old shutdown status.
         movl %eax, %ebx
@@ -393,6 +394,7 @@
 // Set base to f0000 to correspond to beginning of BIOS,
 // in case I actually define an IDT later
 // Set limit to 0
+        .type pmode_IDT_info, @object
 pmode_IDT_info:
         .word 0x0000  // limit 15:00
         .long 0xf0000 // base 16:47
@@ -402,15 +404,18 @@
 // Set to typical real-mode values.
 // base  = 000000
 // limit =   03ff
+        .type rmode_IDT_info, @object
 rmode_IDT_info:
         .word 0x03ff  // limit 15:00
         .long 0       // base 16:47
 
+        .type rombios32_gdt_48, @object
 rombios32_gdt_48:
         .word (rombios32_gdt_end - rombios32_gdt)
         .long (BUILD_BIOS_ADDR + rombios32_gdt)
 
         .balign 8
+        .type rombios32_gdt, @object
 rombios32_gdt:
         .word 0, 0, 0, 0
         .word 0, 0, 0, 0
@@ -432,6 +437,7 @@
 // actually a PnP BIOS, so make sure it is *not* aligned, so OSes will
 // not see it if they scan.
         .global pnp_string
+        .type pnp_string, @object
         .balign 2
         .byte 0
 pnp_string:
@@ -463,20 +469,19 @@
         ORG 0xe2c3
         IRQ_ENTRY nmi
 
-        IRQ_ENTRY_ARG 13
-        IRQ_ENTRY_ARG 12
-        IRQ_ENTRY_ARG 11
-        IRQ_ENTRY 76
-        IRQ_ENTRY 1c
-        IRQ_ENTRY 70
-
         ORG 0xe3fe
+        .global entry_13_official
+entry_13_official:
         jmp entry_13
 
         ORG 0xe401
+        .type __fdpt, @object
+__fdpt:
         // XXX - Fixed Disk Parameter Table
 
         ORG 0xe6f2
+        .global entry_19_official
+entry_19_official:
         jmp entry_19
 
         ORG 0xe6f5
@@ -484,16 +489,76 @@
         .text
 
         ORG 0xe729
+        .type __brgt, @object
+__brgt:
         // XXX - Baud Rate Generator Table
 
         ORG 0xe739
         IRQ_ENTRY_ARG 14
 
+        ORG 0xe82e
+        IRQ_ENTRY_ARG 16
+
+        ORG 0xe987
+        IRQ_ENTRY 09
+
+        ORG 0xec59
+        IRQ_ENTRY_ARG 40
+
+        ORG 0xef57
+        IRQ_ENTRY 0e
+
+        ORG 0xefc7
+.include "out/floppy_dbt.proc.16.s"
+        .text
+
+        ORG 0xefd2
+        IRQ_ENTRY_ARG 17
+
+        ORG 0xf045
+__int10_0x0f:
+        // XXX - INT 10 Functions 0-Fh Entry Point
+        iretw
+
+        ORG 0xf065
+        IRQ_ENTRY_ARG 10
+
+        ORG 0xf0a4
+        .type __int1d, @object
+__int1d:
+        // XXX - INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
+        .space 0x58
+
+        .global freespace2_start, freespace2_end
+freespace2_start:
+
+        ORG 0xf841
+freespace2_end:
+        .global entry_12_official
+entry_12_official:
+        jmp entry_12
+
+        ORG 0xf84d
+        .global entry_11_official
+entry_11_official:
+        jmp entry_11
+
+        ORG 0xf859
+        IRQ_ENTRY_ARG 15
+
+        // Fit other misc defs if the freespace between 0xf859-0xfa6e
+
+        IRQ_ENTRY_ARG 13
+        IRQ_ENTRY_ARG 12
+        IRQ_ENTRY_ARG 11
+        IRQ_ENTRY 76
+        IRQ_ENTRY 1c
+        IRQ_ENTRY 70
         IRQ_ENTRY 74
         IRQ_ENTRY 75
+        IRQ_ENTRY hwirq
 
         // int 18/19 are special - they reset the stack and do not return.
-        .global entry_19
 entry_19:
         RESET_STACK
         pushl $_code32_handle_19
@@ -523,53 +588,6 @@
         IRQ_TRAMPOLINE 1c
         IRQ_TRAMPOLINE 4a
 
-        ORG 0xe82e
-        IRQ_ENTRY_ARG 16
-
-        .global entry_hwirq
-entry_hwirq:
-        ENTRY handle_hwirq
-
-        ORG 0xe987
-        IRQ_ENTRY 09
-
-        ORG 0xec59
-        IRQ_ENTRY_ARG 40
-
-        ORG 0xef57
-        IRQ_ENTRY 0e
-
-        ORG 0xefc7
-.include "out/floppy_dbt.proc.16.s"
-        .text
-
-        ORG 0xefd2
-        IRQ_ENTRY_ARG 17
-
-        ORG 0xf045
-        // XXX int 10
-        iretw
-
-        ORG 0xf065
-        IRQ_ENTRY_ARG 10
-
-        ORG 0xf0a4
-        // XXX int 1D
-        iretw
-
-        .global freespace2_start, freespace2_end
-freespace2_start:
-
-        ORG 0xf841
-freespace2_end:
-        jmp entry_12
-
-        ORG 0xf84d
-        jmp entry_11
-
-        ORG 0xf859
-        IRQ_ENTRY_ARG 15
-
         ORG 0xfa6e
 .include "out/font.proc.16.s"
         .text
@@ -581,11 +599,14 @@
         IRQ_ENTRY 08
 
         ORG 0xfef3
+__initvector:
         // XXX - Initial Interrupt Vector Offsets Loaded by POST
 
         ORG 0xff00
+        .type __copyright, @object
+__copyright:
         // XXX - BIOS_COPYRIGHT_STRING
-        .ascii "(c) 2002 MandrakeSoft S.A. Written by Kevin Lawton & the Bochs team."
+        .asciz "(c) 2002 MandrakeSoft S.A. Written by Kevin Lawton & the Bochs team."
 
         ORG 0xff53
         .global dummy_iret_handler
@@ -601,13 +622,18 @@
         ljmpw $SEG_BIOS, $post16
 
         ORG 0xfff5
+        .type __biosdate, @object
+__biosdate:
         // BIOS build date
         .ascii "06/23/99"
 
         ORG 0xfffe
+        .type __model_id, @object
+__model_id:
         .byte CONFIG_MODEL_ID
 
         .global bios_checksum
+        .type bios_checksum, @object
 bios_checksum:
         .byte 0x00