summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <patrick@georgi-clan.de>2012-08-17 15:57:36 +0200
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-10-05 22:05:42 +0200
commit4bb7a8d68fd55a59ae908bb662a7a488a9ad35c9 (patch)
tree003fa0d2771564411a8886bd956a2c06c9093fbe
parent89bbcf4c9b8849687f86a8a31c3bdd02818953f9 (diff)
Provide access to smaller registers in eregs
This is in preparation for sharing interrupt handlers between YABEL and x86emu. Change-Id: Iff92c1d899b8ada20972731944341805a49b6326 Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/1560 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r--src/arch/x86/include/arch/registers.h35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/arch/x86/include/arch/registers.h b/src/arch/x86/include/arch/registers.h
index bc1b681339..d120a2a496 100644
--- a/src/arch/x86/include/arch/registers.h
+++ b/src/arch/x86/include/arch/registers.h
@@ -20,8 +20,41 @@
#ifndef __ARCH_REGISTERS_H
#define __ARCH_REGISTERS_H
+#define __PACKED __attribute__((packed))
+
+#define DOWNTO8(A) \
+ union { \
+ struct { \
+ union { \
+ struct { \
+ uint8_t A##l; \
+ uint8_t A##h; \
+ } __PACKED; \
+ uint16_t A##x; \
+ } __PACKED; \
+ uint16_t h##A##x; \
+ } __PACKED; \
+ uint32_t e##A##x; \
+ } __PACKED;
+
+#define DOWNTO16(A) \
+ union { \
+ struct { \
+ uint16_t A; \
+ uint16_t h##A; \
+ } __PACKED; \
+ uint32_t e##A; \
+ } __PACKED;
+
struct eregs {
- uint32_t eax, ecx, edx, ebx, esp, ebp, esi, edi;
+ DOWNTO8(a);
+ DOWNTO8(c);
+ DOWNTO8(d);
+ DOWNTO8(b);
+ DOWNTO16(sp);
+ DOWNTO16(bp);
+ DOWNTO16(si);
+ DOWNTO16(di);
uint32_t vector;
uint32_t error_code;
uint32_t eip;