diff options
-rw-r--r-- | core/pxelinux.asm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/core/pxelinux.asm b/core/pxelinux.asm index a46b3da5..165472d3 100644 --- a/core/pxelinux.asm +++ b/core/pxelinux.asm @@ -365,6 +365,15 @@ pxenv: pushfd pushad + ; We may be removing ourselves from memory + cmp bx,0073h + jz .disable_timer + jmp .store_stack + +.disable_timer: + call timer_cleanup + +.store_stack: mov [cs:PXEStack],sp mov [cs:PXEStack+2],ss lss sp,[cs:InitStack] @@ -391,6 +400,16 @@ pxenv: ; This clobbers the AX return, but we already saved it into ; the PXEStatus variable. popad + + ; If the TFTP failed, it could return. + cmp bx,0073h + jz .enable_timer + jmp .pop_flags + +.enable_timer: + call timer_init + +.pop_flags: popfd ; Restore flags (incl. IF, DF) ret |