Use TEXT16_CODE() rather than manually specifying ".code16" etc, since
authorMichael Brown <mcb30@etherboot.org>
Thu, 24 Aug 2006 18:43:28 +0000 (18:43 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 24 Aug 2006 18:43:28 +0000 (18:43 +0000)
our manual ".code32" will break a KEEP_IT_REAL build.

src/arch/i386/interface/pcbios/int13.c

index 1c1009c..abba2bd 100644 (file)
@@ -391,24 +391,20 @@ static void hook_int13 ( void ) {
         * should not chain to the previous handler.  (The wrapper
         * clears CF and OF before calling int13()).
         */
-       __asm__  __volatile__ ( ".section \".text16\", \"ax\", @progbits\n\t"
-                               ".code16\n\t"
-                               "\nint13_wrapper:\n\t"
-                               "orb $0, %%al\n\t" /* clear CF and OF */
-                               "pushl %0\n\t" /* call int13() */
-                               "pushw %%cs\n\t"
-                               "call prot_call\n\t"
-                               "jo 1f\n\t" /* chain if OF not set */
-                               "pushfw\n\t"
-                               "lcall *%%cs:int13_vector\n\t"
-                               "\n1:\n\t"
-                               "call 2f\n\t" /* return with flags intact */
-                               "lret $2\n\t"
-                               "\n2:\n\t"
-                               "ret $4\n\t"
-                               ".previous\n\t"
-                               ".code32\n\t" : :
-                               "i" ( int13 ) );
+       __asm__  __volatile__ (
+              TEXT16_CODE ( "\nint13_wrapper:\n\t"
+                            "orb $0, %%al\n\t" /* clear CF and OF */
+                            "pushl %0\n\t" /* call int13() */
+                            "pushw %%cs\n\t"
+                            "call prot_call\n\t"
+                            "jo 1f\n\t" /* chain if OF not set */
+                            "pushfw\n\t"
+                            "lcall *%%cs:int13_vector\n\t"
+                            "\n1:\n\t"
+                            "call 2f\n\t" /* return with flags intact */
+                            "lret $2\n\t"
+                            "\n2:\n\t"
+                            "ret $4\n\t" ) : : "i" ( int13 ) );
 
        hook_bios_interrupt ( 0x13, ( unsigned int ) int13_wrapper,
                              &int13_vector );