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>
This commit is contained in:
Patrick Georgi 2012-08-17 15:57:36 +02:00 committed by Stefan Reinauer
parent 89bbcf4c9b
commit 4bb7a8d68f
1 changed files with 34 additions and 1 deletions

View File

@ -20,8 +20,41 @@
#ifndef __ARCH_REGISTERS_H #ifndef __ARCH_REGISTERS_H
#define __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 { 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 vector;
uint32_t error_code; uint32_t error_code;
uint32_t eip; uint32_t eip;