xref: /kvmtool/x86/bios/macro.S (revision af7b08685968ff8f6ffdf5cac1ef067688bce8c6)
19292f776SCyrill Gorcunov/*
29292f776SCyrill Gorcunov * handy BIOS macros
39292f776SCyrill Gorcunov */
49292f776SCyrill Gorcunov
59292f776SCyrill Gorcunov/*
69292f776SCyrill Gorcunov * switch to BIOS stack
79292f776SCyrill Gorcunov */
89292f776SCyrill Gorcunov.macro stack_swap
9*505d225aSCyrill Gorcunov	movw %ss, %cs:(__CALLER_SS)
10*505d225aSCyrill Gorcunov	movl %esp, %cs:(__CALLER_SP)
11*505d225aSCyrill Gorcunov	movl %edx, %cs:(__CALLER_CLOBBER)
12*505d225aSCyrill Gorcunov	movw $MB_BIOS_SS, %dx
13*505d225aSCyrill Gorcunov	movw %dx, %ss
14*505d225aSCyrill Gorcunov	movw $MB_BIOS_SP, %sp
15*505d225aSCyrill Gorcunov	movl %cs:(__CALLER_CLOBBER), %edx
169292f776SCyrill Gorcunov.endm
179292f776SCyrill Gorcunov
189292f776SCyrill Gorcunov/*
199292f776SCyrill Gorcunov * restore the original stack
209292f776SCyrill Gorcunov */
219292f776SCyrill Gorcunov.macro stack_restore
22*505d225aSCyrill Gorcunov	movl %cs:(__CALLER_SP), %esp
23*505d225aSCyrill Gorcunov	movw %cs:(__CALLER_SS), %ss
249292f776SCyrill Gorcunov.endm
259292f776SCyrill Gorcunov
26