summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown2009-02-17 04:33:26 +0100
committerMichael Brown2009-02-17 04:38:40 +0100
commit5026a35fef9d036be304d2e3923d40f613531f1b (patch)
treef6c44ddc330883503844f045a961dca77d335ad0 /src/include
parent[comboot] Unhook interrupt vectors after returning from a COMBOOT image (diff)
downloadipxe-5026a35fef9d036be304d2e3923d40f613531f1b.tar.gz
ipxe-5026a35fef9d036be304d2e3923d40f613531f1b.tar.xz
ipxe-5026a35fef9d036be304d2e3923d40f613531f1b.zip
[comboot] Restore the real-mode stack pointer on exit from a COMBOOT image
COMBOOT images use INTs to issue API calls; these end up making calls into gPXE from real mode, and so temporarily change the real-mode stack pointer. When our COMBOOT code uses a longjmp() to implement the various "exit COMBOOT image" API calls, this leaves the real-mode stack pointer stuck with its temporary value, which causes problems if we eventually try to exit out of gPXE back to the BIOS. Fix by adding rmsetjmp() and rmlongjmp() calls (analogous to sigsetjmp()/siglongjmp()); these save and restore the additional state needed for real-mode calls to function correctly.
Diffstat (limited to 'src/include')
0 files changed, 0 insertions, 0 deletions