aboutsummaryrefslogtreecommitdiffstats
path: root/src/asm-offsets.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2008-11-16 18:14:33 -0500
committerKevin O'Connor <kevin@koconnor.net>2008-11-16 18:14:33 -0500
commit952974e3eccaefc667466e8309e15a7fbb867326 (patch)
tree3388804ea0ca999a065103e0a1af92542a65cbfa /src/asm-offsets.c
parent3eac009553c4ecee2840a1d56358e0bb6bb0bf45 (diff)
downloadseabios-952974e3eccaefc667466e8309e15a7fbb867326.tar.gz
Add tool for generating assembler offset definition file.
Replace __call16 hardcoded offsets with auto generated struct offsets. Also, load/save %ds register in __call16().
Diffstat (limited to 'src/asm-offsets.c')
-rw-r--r--src/asm-offsets.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/asm-offsets.c b/src/asm-offsets.c
new file mode 100644
index 00000000..8f17c045
--- /dev/null
+++ b/src/asm-offsets.c
@@ -0,0 +1,21 @@
+// Generate assembler offsets.
+
+#include "gen-defs.h"
+#include "bregs.h"
+
+/* workaround for a warning with -Wmissing-prototypes */
+void foo(void) VISIBLE16;
+
+void foo(void)
+{
+ OFFSET(BREGS_es, bregs, es);
+ OFFSET(BREGS_ds, bregs, ds);
+ OFFSET(BREGS_eax, bregs, eax);
+ OFFSET(BREGS_ebx, bregs, ebx);
+ OFFSET(BREGS_ecx, bregs, ecx);
+ OFFSET(BREGS_edx, bregs, edx);
+ OFFSET(BREGS_esi, bregs, esi);
+ OFFSET(BREGS_edi, bregs, edi);
+ OFFSET(BREGS_flags, bregs, flags);
+ OFFSET(BREGS_ip, bregs, ip);
+}