root/core/abort.inc

Revision f502c307fcace74e8c99774112016150e8a7a01a, 2.1 KB (checked in by H. Peter Anvin <hpa@…>, 3 years ago)

Merge branch 'master' into core32

Conflicts:

core/isolinux.asm

  • Property mode set to 100644
Line 
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
Note: See TracBrowser for help on using the browser.