diff options
author | Patrick Georgi <patrick@georgi-clan.de> | 2012-08-17 15:57:36 +0200 |
---|---|---|
committer | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2012-10-05 22:05:42 +0200 |
commit | 4bb7a8d68fd55a59ae908bb662a7a488a9ad35c9 (patch) | |
tree | 003fa0d2771564411a8886bd956a2c06c9093fbe | |
parent | 89bbcf4c9b8849687f86a8a31c3bdd02818953f9 (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.h | 35 |
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; |