There's no need to clobber %ax in ENTRY_INTO32. Now that %eax isn't
clobbered, use ENTRY_INTO32 in entry_csm.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
.endm
// Reset stack, transition to 32bit mode, and call a C function.
- // Clobbers %ax
.macro ENTRY_INTO32 cfunc
- xorw %ax, %ax
- movw %ax, %ss
+ xorw %dx, %dx
+ movw %dx, %ss
movl $ BUILD_STACK_ADDR , %esp
movl $ \cfunc , %edx
jmp transition32
shll $4, %eax
addl %esp, %eax
- // Change to BUILD_STACK_ADDR stack
- xorl %ebx, %ebx
- movw %bx, %ss
- movl $BUILD_STACK_ADDR, %esp
-
- // Jump to 32bit mode and call handle_csm(bregs)
- movl $_cfunc32flat_handle_csm, %edx
- jmp transition32
+ // Change to BUILD_STACK_ADDR stack and call handle_csm(bregs)
+ ENTRY_INTO32 _cfunc32flat_handle_csm
DECLFUNC __csm_return
.code32