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