2 ; -----------------------------------------------------------------------
4 ; Copyright 2005 H. Peter Anvin - All Rights Reserved
6 ; This program is free software; you can redistribute it and/or modify
7 ; it under the terms of the GNU General Public License as published by
8 ; the Free Software Foundation, Inc., 53 Temple Place Ste 330,
9 ; Boston MA 02111-1307, USA; either version 2 of the License, or
10 ; (at your option) any later version; incorporated herein by reference.
12 ; -----------------------------------------------------------------------
17 ; Code to terminate a kernel load
21 ; abort_check: let the user abort with <ESC> or <Ctrl-C>
23 abort_load equ abort_check.do_abort
34 .kill: mov si,aborted_msg
36 ; ... fall through ...
39 ; abort_load: Called by various routines which wants to print a fatal
40 ; error message and return to the command prompt. Since this
41 ; may happen at just about any stage of the boot process, assume
42 ; our state is messed up, and just reset the segment registers
43 ; and the stack forcibly.
45 ; SI = offset (in _text) of error message to print
48 mov ax,cs ; Restore CS = DS = ES
51 %if IS_SYSLINUX || IS_EXTLINUX
52 mov ss,ax ; Just in case...
53 mov sp,StackBuf-2*3 ; Reset stack
59 NEED TO KNOW HOW TO RESET STACK
62 call cwritestr ; Expects SI -> error msg
64 ; If onerror is set, jump to onerror, otherwise return
65 ; to the command prompt
69 jmp enter_command ; Return to command prompt