1; ----------------------------------------------------------------------- 2; 3; Copyright 2005-2009 H. Peter Anvin - All Rights Reserved 4; Copyright 2009 Intel Corporation; author: H. Peter Anvin 5; 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. 11; 12; ----------------------------------------------------------------------- 13 14; 15; abort.inc 16; 17; Code to terminate a kernel load 18; 19 20 section .text16 21 22; 23; dot_pause: same as abort_check, except prints a dot, too 24; assumes CS == DS 25; 26dot_pause: 27 push si 28 mov si,dot_msg 29 call writestr_qchk 30 pop si 31 ; fall through 32 33; 34; abort_check: let the user abort with <ESC> or <Ctrl-C> 35; 36abort_check: 37 call reset_idle ; Not idle despite pollchar 38 call pollchar 39 jz .ret1 40 pusha 41 call getchar 42 cmp al,27 ; <ESC> 43 je .kill 44 cmp al,3 ; <Ctrl-C> 45 je .kill 46.ret2: popa 47.ret1: ret 48 49.kill: mov si,aborted_msg 50 mov bx,enter_command 51 jmp abort_load_chain 52 53; 54; abort_load: Called by various routines which wants to print a fatal 55; error message and return to the command prompt. Since this 56; may happen at just about any stage of the boot process, assume 57; our state is messed up, and just reset the segment registers 58; and the stack forcibly. 59; 60; SI = offset (in _text) of error message to print 61; BX = future entry point (abort_load_chain) 62; 63abort_load: 64 mov bx,error_or_command 65abort_load_chain: 66 RESET_STACK_AND_SEGS AX 67 call writestr ; Expects SI -> error msg 68 69 ; Return to the command prompt 70 jmp bx 71 72; 73; error_or_command: Execute ONERROR if appropriate, otherwise enter_command 74; 75error_or_command: 76 mov cx,[OnerrorLen] 77 and cx,cx 78 jnz on_error 79 jmp enter_command 80 81 section .data16 82aborted_msg db ' aborted.', CR, LF, 0 83 84 section .text16 85

