Share rm_idtr and idtr to save a few bytes.
authorStefan Hajnoczi <stefanha@gmail.com>
Wed, 4 Jun 2008 08:08:17 +0000 (09:08 +0100)
committerStefan Hajnoczi <stefanha@gmail.com>
Wed, 4 Jun 2008 08:08:17 +0000 (09:08 +0100)
src/arch/i386/transitions/librm.S

index 6d4ac94..3b6b75d 100644 (file)
@@ -242,10 +242,11 @@ real_to_prot:
        /* Return to virtual address */
        ret
 
-       /* Default protected-mode IDTR */
+       /* Default IDTR with no interrupts */
        .section ".data16"
        .weak idtr
 idtr:
+rm_idtr:
        .word 0xffff /* limit */
        .long 0 /* base */
 
@@ -290,9 +291,6 @@ prot_to_real:
        /* Record protected-mode %esp (after removal of data) */
        movl    %esi, pm_esp
 
-       /* Reset IDTR to the real-mode defaults */
-       lidt    rm_idtr
-
        /* Load real-mode segment limits */
        movw    $REAL_DS, %ax
        movw    %ax, %ds
@@ -320,6 +318,9 @@ p2r_jump_target:
        movw    %bp, %ss
        movl    %edx, %esp
 
+       /* Reset IDTR to the real-mode defaults */
+       lidt    rm_idtr
+
        /* Return to real-mode address */
        data32 ret
 
@@ -339,12 +340,6 @@ rm_cs:     .word 0
        .section ".text16.data"
 rm_ds: .word 0
 
-       /* Default real-mode IDTR */
-       .section ".data"
-rm_idtr:
-       .word 0xffff /* limit */
-       .long 0 /* base */
-
 /****************************************************************************
  * prot_call (real-mode far call, 16-bit real-mode far return address)
  *