Changeset 121 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Inc
- Timestamp:
- Feb 28, 2011, 5:13:38 PM (14 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc
r96 r121 32 32 33 33 34 ;-------------------------------------------------------------------- 35 ; Stores POST stack pointer to BOOTVARS. 36 ; 37 ; STORE_POST_STACK_POINTER 38 ; Parameters: 39 ; DS: BDA and Interrupt Vector segment (zero) 40 ; Returns: 41 ; Nothing 42 ; Corrupts registers: 43 ; Nothing 44 ;-------------------------------------------------------------------- 45 %macro STORE_POST_STACK_POINTER 0 46 mov [BOOTVARS.dwPostStack], sp 47 mov [BOOTVARS.dwPostStack+2], ss 48 %endmacro 49 50 51 ;-------------------------------------------------------------------- 52 ; Initializes stack for boot menu usage. 53 ; POST stack is not large enough when DPTs are stored to 30:0h. 54 ; 55 ; Note regarding LOAD_BDA_SEGMENT_TO: If you force the use of SP 56 ; then you also have to unconditionally enable the CLI/STI pair. 57 ; The reason for this is that only some buggy 808x CPU:s need the 58 ; CLI/STI instruction pair when changing stacks. Other CPU:s disable 59 ; interrupts automatically when SS is modified for the duration of 60 ; the immediately following instruction to give time to change SP. 61 ; 62 ; SWITCH_TO_BOOT_MENU_STACK 63 ; Parameters: 64 ; Nothing 65 ; Returns: 66 ; SS:SP: Pointer to top of Boot Menu stack 67 ; Corrupts registers: 68 ; Nothing 69 ;-------------------------------------------------------------------- 70 %macro SWITCH_TO_BOOT_MENU_STACK 0 71 %ifndef USE_186 72 cli ; Disable interrupts 73 %endif 74 LOAD_BDA_SEGMENT_TO ss, sp 75 mov sp, BOOTVARS.rgbMnuStack ; Load offset to stack 76 %ifndef USE_186 77 sti ; Enable interrupts 78 %endif 79 %endmacro 80 81 82 ;-------------------------------------------------------------------- 83 ; Restores SS and SP to initial boot loader values. 84 ; 85 ; Before doing any changes, see the note regarding 86 ; LOAD_BDA_SEGMENT_TO in BootVars_SwitchToBootMenuStack 87 ; 88 ; SWITCH_BACK_TO_POST_STACK 89 ; Parameters: 90 ; Nothing 91 ; Returns: 92 ; SS:SP: Ptr to POST stack 93 ; Corrupts registers: 94 ; Nothing 95 ;-------------------------------------------------------------------- 96 %macro SWITCH_BACK_TO_POST_STACK 0 97 %ifndef USE_386 98 cli ; Disable interrupts 99 LOAD_BDA_SEGMENT_TO ss, sp 100 mov sp, [ss:BOOTVARS.dwPostStack] 101 mov ss, [ss:BOOTVARS.dwPostStack+2] 102 sti ; Enable interrupts 103 %else 104 LOAD_BDA_SEGMENT_TO ss, sp 105 lss sp, [ss:BOOTVARS.dwPostStack] 106 %endif 107 %endmacro 108 109 34 110 %endif ; BOOTVARS_INC
Note:
See TracChangeset
for help on using the changeset viewer.