diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2013-07-14 14:40:19 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2013-07-14 14:40:19 -0400 |
commit | 14b255bcc2150932f655eb1bf441e470ecf3dff2 (patch) | |
tree | a314e5be4dd0aa5c71a1b795419544480a0bdbb5 /README | |
parent | c83e7c2fb11ba8a5de2075ba36c860d750944e5b (diff) | |
download | seabios-14b255bcc2150932f655eb1bf441e470ecf3dff2.tar.gz |
Update README to include info on VARLOW variables.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'README')
-rw-r--r-- | README | 25 |
1 files changed, 14 insertions, 11 deletions
@@ -98,19 +98,22 @@ mode instead of a segment/offset pair. Most BIOS variables are stored in global variables, the "BDA", or "EBDA" memory areas. Because this is common, three sets of helper macros (GET/SET_GLOBAL, GET/SET_BDA, and GET/SET_EBDA) are available -to simplify these accesses. +to simplify these accesses. Also, an area in the 0xc0000-0xf0000 +memory range is made available for internal BIOS run-time variables +that are marked iwth the VARLOW attribute. These variables can then +be accessed with the GET/SET_LOW macros. Global variables defined in the C code can be read in 16bit mode if -the variable declaration is marked with VAR16, VAR16VISIBLE, -VAR16EXPORT, or VAR16FIXED. The GET_GLOBAL macro will then allow read -access to the variable. Global variables are stored in the 0xf000 -segment. Because the f-segment is marked read-only during run-time, -the 16bit code is not permitted to change the value of 16bit variables -(use of the SET_GLOBAL macro from 16bit mode will cause a link error). -Code running in 32bit mode can not access variables with VAR16, but -can access variables marked with VAR16VISIBLE, VAR16EXPORT, -VAR16FIXED, or with no marking at all. The 32bit code can use the -GET/SET_GLOBAL macros, but they are not required. +the variable declaration is marked with VAR16, VARFSEG, or VAR16FIXED. +The GET_GLOBAL macro will then allow read access to the variable. +Global variables are stored in the 0xf000 segment. Because the +f-segment is marked read-only during run-time, the 16bit code is not +permitted to change the value of 16bit variables (use of the +SET_GLOBAL macro from 16bit mode will cause a link error). Code +running in 32bit mode can not access variables with VAR16, but can +access variables marked with VARFSEG, VARLOW, VAR16FIXED, or with no +marking at all. The 32bit code can use the GET/SET_GLOBAL macros, but +they are not required. GCC 16 bit stack limitations: |