diff --git a/arch/x86/cpu/start16.S b/arch/x86/cpu/start16.S
index 474efe4df5f426ba799499cc775f87752b6f5c51..54f4ff6662a8d8999311be3e7553882b1b245c2a 100644
--- a/arch/x86/cpu/start16.S
+++ b/arch/x86/cpu/start16.S
@@ -13,8 +13,6 @@
 #include <asm/processor-flags.h>
 
 #define BOOT_SEG	0xffff0000	/* linear segment of boot code */
-#define a32		.byte 0x67;
-#define o32		.byte 0x66;
 
 .section .start16, "ax"
 .code16
@@ -33,8 +31,8 @@ start16:
 	wbinvd
 
 	/* load the temporary Global Descriptor Table */
-o32 cs	lidt	idt_ptr
-o32 cs	lgdt	gdt_ptr
+data32 cs	lidt	idt_ptr
+data32 cs	lgdt	gdt_ptr
 
 	/* Now, we enter protected mode */
 	movl	%cr0, %eax
@@ -46,10 +44,8 @@ o32 cs	lgdt	gdt_ptr
 ff:
 
 	/* Finally restore BIST and jump to the 32-bit initialization code */
-	movw	$code32start, %ax
-	movw	%ax, %bp
 	movl	%ecx, %eax
-o32 cs	ljmp	*(%bp)
+data32 cs	ljmp	*code32start
 
 	/* 48-bit far pointer */
 code32start: