diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-01-01 18:31:11 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-01-01 18:31:11 -0500 |
commit | 7f343097712ebdd1f11953c867e208da899b4ba3 (patch) | |
tree | a2bee74e381ce87766c006975eb03b34ee47b213 /src/biosvar.h | |
parent | 964622410105c28c42378440ac3cb6d1a996da49 (diff) | |
download | seabios-7f343097712ebdd1f11953c867e208da899b4ba3.tar.gz |
Switch to new stack when calling ATA function in 16bit mode.
This reduces stack usage (old dos programs don't provide much space).
Diffstat (limited to 'src/biosvar.h')
-rw-r--r-- | src/biosvar.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/biosvar.h b/src/biosvar.h index cd8e0ac9..2fb4b8d2 100644 --- a/src/biosvar.h +++ b/src/biosvar.h @@ -214,8 +214,8 @@ struct extended_bios_data_area_s { u16 boot_sequence; - // Resume stack - u8 resume_stack[128] __aligned(8); + // Stack space available for code that needs it. + u8 extra_stack[512] __aligned(8); } PACKED; // Accessor functions @@ -234,11 +234,16 @@ get_ebda_ptr() GET_FARVAR(eseg, ((struct extended_bios_data_area_s *)0)->var) #define SET_EBDA2(eseg, var, val) \ SET_FARVAR(eseg, ((struct extended_bios_data_area_s *)0)->var, (val)) -#define GET_EBDA(var) \ +#define GET_EBDA(var) \ GET_EBDA2(get_ebda_seg(), var) -#define SET_EBDA(var, val) \ +#define SET_EBDA(var, val) \ SET_EBDA2(get_ebda_seg(), var, (val)) +#define EBDA_OFFSET_TOP_STACK \ + offsetof(struct extended_bios_data_area_s, extra_stack[ \ + FIELD_SIZEOF(struct extended_bios_data_area_s \ + , extra_stack)]) + /**************************************************************** * Global variables |