coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
regs.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  I32_reg_t
 
struct  I16_reg_t
 
struct  I8_reg_t
 
union  i386_general_register
 
struct  i386_general_regs
 
struct  i386_special_regs
 
struct  i386_segment_regs
 
struct  X86EMU_regs
 
struct  X86EMU_sysEnv
 

Macros

#define R_AH   gen.A.I8_reg.h_reg
 
#define R_AL   gen.A.I8_reg.l_reg
 
#define R_BH   gen.B.I8_reg.h_reg
 
#define R_BL   gen.B.I8_reg.l_reg
 
#define R_CH   gen.C.I8_reg.h_reg
 
#define R_CL   gen.C.I8_reg.l_reg
 
#define R_DH   gen.D.I8_reg.h_reg
 
#define R_DL   gen.D.I8_reg.l_reg
 
#define R_AX   gen.A.I16_reg.x_reg
 
#define R_BX   gen.B.I16_reg.x_reg
 
#define R_CX   gen.C.I16_reg.x_reg
 
#define R_DX   gen.D.I16_reg.x_reg
 
#define R_EAX   gen.A.I32_reg.e_reg
 
#define R_EBX   gen.B.I32_reg.e_reg
 
#define R_ECX   gen.C.I32_reg.e_reg
 
#define R_EDX   gen.D.I32_reg.e_reg
 
#define R_SP   spc.SP.I16_reg.x_reg
 
#define R_BP   spc.BP.I16_reg.x_reg
 
#define R_SI   spc.SI.I16_reg.x_reg
 
#define R_DI   spc.DI.I16_reg.x_reg
 
#define R_IP   spc.IP.I16_reg.x_reg
 
#define R_FLG   spc.FLAGS
 
#define R_SP   spc.SP.I16_reg.x_reg
 
#define R_BP   spc.BP.I16_reg.x_reg
 
#define R_SI   spc.SI.I16_reg.x_reg
 
#define R_DI   spc.DI.I16_reg.x_reg
 
#define R_IP   spc.IP.I16_reg.x_reg
 
#define R_FLG   spc.FLAGS
 
#define R_ESP   spc.SP.I32_reg.e_reg
 
#define R_EBP   spc.BP.I32_reg.e_reg
 
#define R_ESI   spc.SI.I32_reg.e_reg
 
#define R_EDI   spc.DI.I32_reg.e_reg
 
#define R_EIP   spc.IP.I32_reg.e_reg
 
#define R_EFLG   spc.FLAGS
 
#define R_CS   seg.CS
 
#define R_DS   seg.DS
 
#define R_SS   seg.SS
 
#define R_ES   seg.ES
 
#define R_FS   seg.FS
 
#define R_GS   seg.GS
 
#define FB_CF   0x0001 /* CARRY flag */
 
#define FB_PF   0x0004 /* PARITY flag */
 
#define FB_AF   0x0010 /* AUX flag */
 
#define FB_ZF   0x0040 /* ZERO flag */
 
#define FB_SF   0x0080 /* SIGN flag */
 
#define FB_TF   0x0100 /* TRAP flag */
 
#define FB_IF   0x0200 /* INTERRUPT ENABLE flag */
 
#define FB_DF   0x0400 /* DIR flag */
 
#define FB_OF   0x0800 /* OVERFLOW flag */
 
#define F_ALWAYS_ON   (0x0002) /* flag bits always on */
 
#define F_MSK   (FB_CF|FB_PF|FB_AF|FB_ZF|FB_SF|FB_TF|FB_IF|FB_DF|FB_OF)
 
#define F_CF   0x0001 /* CARRY flag */
 
#define F_PF   0x0004 /* PARITY flag */
 
#define F_AF   0x0010 /* AUX flag */
 
#define F_ZF   0x0040 /* ZERO flag */
 
#define F_SF   0x0080 /* SIGN flag */
 
#define F_TF   0x0100 /* TRAP flag */
 
#define F_IF   0x0200 /* INTERRUPT ENABLE flag */
 
#define F_DF   0x0400 /* DIR flag */
 
#define F_OF   0x0800 /* OVERFLOW flag */
 
#define TOGGLE_FLAG(flag)   (M.x86.R_FLG ^= (flag))
 
#define SET_FLAG(flag)   (M.x86.R_FLG |= (flag))
 
#define CLEAR_FLAG(flag)   (M.x86.R_FLG &= ~(flag))
 
#define ACCESS_FLAG(flag)   (M.x86.R_FLG & (flag))
 
#define CLEARALL_FLAG(m)   (M.x86.R_FLG = 0)
 
#define CONDITIONAL_SET_FLAG(COND, FLAG)    if (COND) SET_FLAG(FLAG); else CLEAR_FLAG(FLAG)
 
#define F_PF_CALC   0x010000 /* PARITY flag has been calced */
 
#define F_ZF_CALC   0x020000 /* ZERO flag has been calced */
 
#define F_SF_CALC   0x040000 /* SIGN flag has been calced */
 
#define F_ALL_CALC   0xff0000 /* All have been calced */
 
#define SYSMODE_SEG_DS_SS   0x00000001
 
#define SYSMODE_SEGOVR_CS   0x00000002
 
#define SYSMODE_SEGOVR_DS   0x00000004
 
#define SYSMODE_SEGOVR_ES   0x00000008
 
#define SYSMODE_SEGOVR_FS   0x00000010
 
#define SYSMODE_SEGOVR_GS   0x00000020
 
#define SYSMODE_SEGOVR_SS   0x00000040
 
#define SYSMODE_PREFIX_REPE   0x00000080
 
#define SYSMODE_PREFIX_REPNE   0x00000100
 
#define SYSMODE_PREFIX_DATA   0x00000200
 
#define SYSMODE_PREFIX_ADDR   0x00000400
 
#define SYSMODE_32BIT_REP   0x00000800
 
#define SYSMODE_INTR_PENDING   0x10000000
 
#define SYSMODE_EXTRN_INTR   0x20000000
 
#define SYSMODE_HALTED   0x40000000
 
#define SYSMODE_SEGMASK
 
#define SYSMODE_CLRMASK
 
#define INTR_SYNCH   0x1
 
#define INTR_ASYNCH   0x2
 
#define INTR_HALTED   0x4
 
#define M   _X86EMU_env
 
#define X86_EAX   M.x86.R_EAX
 
#define X86_EBX   M.x86.R_EBX
 
#define X86_ECX   M.x86.R_ECX
 
#define X86_EDX   M.x86.R_EDX
 
#define X86_ESI   M.x86.R_ESI
 
#define X86_EDI   M.x86.R_EDI
 
#define X86_EBP   M.x86.R_EBP
 
#define X86_EIP   M.x86.R_EIP
 
#define X86_ESP   M.x86.R_ESP
 
#define X86_EFLAGS   M.x86.R_EFLG
 
#define X86_FLAGS   M.x86.R_FLG
 
#define X86_AX   M.x86.R_AX
 
#define X86_BX   M.x86.R_BX
 
#define X86_CX   M.x86.R_CX
 
#define X86_DX   M.x86.R_DX
 
#define X86_SI   M.x86.R_SI
 
#define X86_DI   M.x86.R_DI
 
#define X86_BP   M.x86.R_BP
 
#define X86_IP   M.x86.R_IP
 
#define X86_SP   M.x86.R_SP
 
#define X86_CS   M.x86.R_CS
 
#define X86_DS   M.x86.R_DS
 
#define X86_ES   M.x86.R_ES
 
#define X86_SS   M.x86.R_SS
 
#define X86_FS   M.x86.R_FS
 
#define X86_GS   M.x86.R_GS
 
#define X86_AL   M.x86.R_AL
 
#define X86_BL   M.x86.R_BL
 
#define X86_CL   M.x86.R_CL
 
#define X86_DL   M.x86.R_DL
 
#define X86_AH   M.x86.R_AH
 
#define X86_BH   M.x86.R_BH
 
#define X86_CH   M.x86.R_CH
 
#define X86_DH   M.x86.R_DH
 

Typedefs

typedef struct i386_general_regs Gen_reg_t
 

Variables

X86EMU_sysEnv _X86EMU_env
 

Macro Definition Documentation

◆ ACCESS_FLAG

#define ACCESS_FLAG (   flag)    (M.x86.R_FLG & (flag))

Definition at line 206 of file regs.h.

◆ CLEAR_FLAG

#define CLEAR_FLAG (   flag)    (M.x86.R_FLG &= ~(flag))

Definition at line 205 of file regs.h.

◆ CLEARALL_FLAG

#define CLEARALL_FLAG (   m)    (M.x86.R_FLG = 0)

Definition at line 207 of file regs.h.

◆ CONDITIONAL_SET_FLAG

#define CONDITIONAL_SET_FLAG (   COND,
  FLAG 
)     if (COND) SET_FLAG(FLAG); else CLEAR_FLAG(FLAG)

Definition at line 209 of file regs.h.

◆ F_AF

#define F_AF   0x0010 /* AUX flag */

Definition at line 195 of file regs.h.

◆ F_ALL_CALC

#define F_ALL_CALC   0xff0000 /* All have been calced */

Definition at line 216 of file regs.h.

◆ F_ALWAYS_ON

#define F_ALWAYS_ON   (0x0002) /* flag bits always on */

Definition at line 183 of file regs.h.

◆ F_CF

#define F_CF   0x0001 /* CARRY flag */

Definition at line 193 of file regs.h.

◆ F_DF

#define F_DF   0x0400 /* DIR flag */

Definition at line 200 of file regs.h.

◆ F_IF

#define F_IF   0x0200 /* INTERRUPT ENABLE flag */

Definition at line 199 of file regs.h.

◆ F_MSK

#define F_MSK   (FB_CF|FB_PF|FB_AF|FB_ZF|FB_SF|FB_TF|FB_IF|FB_DF|FB_OF)

Definition at line 189 of file regs.h.

◆ F_OF

#define F_OF   0x0800 /* OVERFLOW flag */

Definition at line 201 of file regs.h.

◆ F_PF

#define F_PF   0x0004 /* PARITY flag */

Definition at line 194 of file regs.h.

◆ F_PF_CALC

#define F_PF_CALC   0x010000 /* PARITY flag has been calced */

Definition at line 212 of file regs.h.

◆ F_SF

#define F_SF   0x0080 /* SIGN flag */

Definition at line 197 of file regs.h.

◆ F_SF_CALC

#define F_SF_CALC   0x040000 /* SIGN flag has been calced */

Definition at line 214 of file regs.h.

◆ F_TF

#define F_TF   0x0100 /* TRAP flag */

Definition at line 198 of file regs.h.

◆ F_ZF

#define F_ZF   0x0040 /* ZERO flag */

Definition at line 196 of file regs.h.

◆ F_ZF_CALC

#define F_ZF_CALC   0x020000 /* ZERO flag has been calced */

Definition at line 213 of file regs.h.

◆ FB_AF

#define FB_AF   0x0010 /* AUX flag */

Definition at line 174 of file regs.h.

◆ FB_CF

#define FB_CF   0x0001 /* CARRY flag */

Definition at line 172 of file regs.h.

◆ FB_DF

#define FB_DF   0x0400 /* DIR flag */

Definition at line 179 of file regs.h.

◆ FB_IF

#define FB_IF   0x0200 /* INTERRUPT ENABLE flag */

Definition at line 178 of file regs.h.

◆ FB_OF

#define FB_OF   0x0800 /* OVERFLOW flag */

Definition at line 180 of file regs.h.

◆ FB_PF

#define FB_PF   0x0004 /* PARITY flag */

Definition at line 173 of file regs.h.

◆ FB_SF

#define FB_SF   0x0080 /* SIGN flag */

Definition at line 176 of file regs.h.

◆ FB_TF

#define FB_TF   0x0100 /* TRAP flag */

Definition at line 177 of file regs.h.

◆ FB_ZF

#define FB_ZF   0x0040 /* ZERO flag */

Definition at line 175 of file regs.h.

◆ INTR_ASYNCH

#define INTR_ASYNCH   0x2

Definition at line 259 of file regs.h.

◆ INTR_HALTED

#define INTR_HALTED   0x4

Definition at line 260 of file regs.h.

◆ INTR_SYNCH

#define INTR_SYNCH   0x1

Definition at line 258 of file regs.h.

◆ M

#define M   _X86EMU_env

Definition at line 327 of file regs.h.

◆ R_AH

#define R_AH   gen.A.I8_reg.h_reg

Definition at line 118 of file regs.h.

◆ R_AL

#define R_AL   gen.A.I8_reg.l_reg

Definition at line 119 of file regs.h.

◆ R_AX

#define R_AX   gen.A.I16_reg.x_reg

Definition at line 128 of file regs.h.

◆ R_BH

#define R_BH   gen.B.I8_reg.h_reg

Definition at line 120 of file regs.h.

◆ R_BL

#define R_BL   gen.B.I8_reg.l_reg

Definition at line 121 of file regs.h.

◆ R_BP [1/2]

#define R_BP   spc.BP.I16_reg.x_reg

Definition at line 149 of file regs.h.

◆ R_BP [2/2]

#define R_BP   spc.BP.I16_reg.x_reg

Definition at line 149 of file regs.h.

◆ R_BX

#define R_BX   gen.B.I16_reg.x_reg

Definition at line 129 of file regs.h.

◆ R_CH

#define R_CH   gen.C.I8_reg.h_reg

Definition at line 122 of file regs.h.

◆ R_CL

#define R_CL   gen.C.I8_reg.l_reg

Definition at line 123 of file regs.h.

◆ R_CS

#define R_CS   seg.CS

Definition at line 164 of file regs.h.

◆ R_CX

#define R_CX   gen.C.I16_reg.x_reg

Definition at line 130 of file regs.h.

◆ R_DH

#define R_DH   gen.D.I8_reg.h_reg

Definition at line 124 of file regs.h.

◆ R_DI [1/2]

#define R_DI   spc.DI.I16_reg.x_reg

Definition at line 151 of file regs.h.

◆ R_DI [2/2]

#define R_DI   spc.DI.I16_reg.x_reg

Definition at line 151 of file regs.h.

◆ R_DL

#define R_DL   gen.D.I8_reg.l_reg

Definition at line 125 of file regs.h.

◆ R_DS

#define R_DS   seg.DS

Definition at line 165 of file regs.h.

◆ R_DX

#define R_DX   gen.D.I16_reg.x_reg

Definition at line 131 of file regs.h.

◆ R_EAX

#define R_EAX   gen.A.I32_reg.e_reg

Definition at line 134 of file regs.h.

◆ R_EBP

#define R_EBP   spc.BP.I32_reg.e_reg

Definition at line 157 of file regs.h.

◆ R_EBX

#define R_EBX   gen.B.I32_reg.e_reg

Definition at line 135 of file regs.h.

◆ R_ECX

#define R_ECX   gen.C.I32_reg.e_reg

Definition at line 136 of file regs.h.

◆ R_EDI

#define R_EDI   spc.DI.I32_reg.e_reg

Definition at line 159 of file regs.h.

◆ R_EDX

#define R_EDX   gen.D.I32_reg.e_reg

Definition at line 137 of file regs.h.

◆ R_EFLG

#define R_EFLG   spc.FLAGS

Definition at line 161 of file regs.h.

◆ R_EIP

#define R_EIP   spc.IP.I32_reg.e_reg

Definition at line 160 of file regs.h.

◆ R_ES

#define R_ES   seg.ES

Definition at line 167 of file regs.h.

◆ R_ESI

#define R_ESI   spc.SI.I32_reg.e_reg

Definition at line 158 of file regs.h.

◆ R_ESP

#define R_ESP   spc.SP.I32_reg.e_reg

Definition at line 156 of file regs.h.

◆ R_FLG [1/2]

#define R_FLG   spc.FLAGS

Definition at line 153 of file regs.h.

◆ R_FLG [2/2]

#define R_FLG   spc.FLAGS

Definition at line 153 of file regs.h.

◆ R_FS

#define R_FS   seg.FS

Definition at line 168 of file regs.h.

◆ R_GS

#define R_GS   seg.GS

Definition at line 169 of file regs.h.

◆ R_IP [1/2]

#define R_IP   spc.IP.I16_reg.x_reg

Definition at line 152 of file regs.h.

◆ R_IP [2/2]

#define R_IP   spc.IP.I16_reg.x_reg

Definition at line 152 of file regs.h.

◆ R_SI [1/2]

#define R_SI   spc.SI.I16_reg.x_reg

Definition at line 150 of file regs.h.

◆ R_SI [2/2]

#define R_SI   spc.SI.I16_reg.x_reg

Definition at line 150 of file regs.h.

◆ R_SP [1/2]

#define R_SP   spc.SP.I16_reg.x_reg

Definition at line 148 of file regs.h.

◆ R_SP [2/2]

#define R_SP   spc.SP.I16_reg.x_reg

Definition at line 148 of file regs.h.

◆ R_SS

#define R_SS   seg.SS

Definition at line 166 of file regs.h.

◆ SET_FLAG

#define SET_FLAG (   flag)    (M.x86.R_FLG |= (flag))

Definition at line 204 of file regs.h.

◆ SYSMODE_32BIT_REP

#define SYSMODE_32BIT_REP   0x00000800

Definition at line 235 of file regs.h.

◆ SYSMODE_CLRMASK

#define SYSMODE_CLRMASK
Value:
SYSMODE_SEGOVR_CS | \
SYSMODE_SEGOVR_DS | \
SYSMODE_SEGOVR_ES | \
SYSMODE_SEGOVR_FS | \
SYSMODE_SEGOVR_GS | \
SYSMODE_SEGOVR_SS | \
SYSMODE_PREFIX_DATA | \
SYSMODE_PREFIX_ADDR | \
SYSMODE_32BIT_REP)
#define SYSMODE_SEG_DS_SS
Definition: regs.h:222

Definition at line 247 of file regs.h.

◆ SYSMODE_EXTRN_INTR

#define SYSMODE_EXTRN_INTR   0x20000000

Definition at line 237 of file regs.h.

◆ SYSMODE_HALTED

#define SYSMODE_HALTED   0x40000000

Definition at line 238 of file regs.h.

◆ SYSMODE_INTR_PENDING

#define SYSMODE_INTR_PENDING   0x10000000

Definition at line 236 of file regs.h.

◆ SYSMODE_PREFIX_ADDR

#define SYSMODE_PREFIX_ADDR   0x00000400

Definition at line 232 of file regs.h.

◆ SYSMODE_PREFIX_DATA

#define SYSMODE_PREFIX_DATA   0x00000200

Definition at line 231 of file regs.h.

◆ SYSMODE_PREFIX_REPE

#define SYSMODE_PREFIX_REPE   0x00000080

Definition at line 229 of file regs.h.

◆ SYSMODE_PREFIX_REPNE

#define SYSMODE_PREFIX_REPNE   0x00000100

Definition at line 230 of file regs.h.

◆ SYSMODE_SEG_DS_SS

#define SYSMODE_SEG_DS_SS   0x00000001

Definition at line 222 of file regs.h.

◆ SYSMODE_SEGMASK

#define SYSMODE_SEGMASK
Value:
SYSMODE_SEGOVR_CS | \
SYSMODE_SEGOVR_DS | \
SYSMODE_SEGOVR_ES | \
SYSMODE_SEGOVR_FS | \
SYSMODE_SEGOVR_GS | \
SYSMODE_SEGOVR_SS)

Definition at line 240 of file regs.h.

◆ SYSMODE_SEGOVR_CS

#define SYSMODE_SEGOVR_CS   0x00000002

Definition at line 223 of file regs.h.

◆ SYSMODE_SEGOVR_DS

#define SYSMODE_SEGOVR_DS   0x00000004

Definition at line 224 of file regs.h.

◆ SYSMODE_SEGOVR_ES

#define SYSMODE_SEGOVR_ES   0x00000008

Definition at line 225 of file regs.h.

◆ SYSMODE_SEGOVR_FS

#define SYSMODE_SEGOVR_FS   0x00000010

Definition at line 226 of file regs.h.

◆ SYSMODE_SEGOVR_GS

#define SYSMODE_SEGOVR_GS   0x00000020

Definition at line 227 of file regs.h.

◆ SYSMODE_SEGOVR_SS

#define SYSMODE_SEGOVR_SS   0x00000040

Definition at line 228 of file regs.h.

◆ TOGGLE_FLAG

#define TOGGLE_FLAG (   flag)    (M.x86.R_FLG ^= (flag))

Definition at line 203 of file regs.h.

◆ X86_AH

#define X86_AH   M.x86.R_AH

Definition at line 362 of file regs.h.

◆ X86_AL

#define X86_AL   M.x86.R_AL

Definition at line 357 of file regs.h.

◆ X86_AX

#define X86_AX   M.x86.R_AX

Definition at line 341 of file regs.h.

◆ X86_BH

#define X86_BH   M.x86.R_BH

Definition at line 363 of file regs.h.

◆ X86_BL

#define X86_BL   M.x86.R_BL

Definition at line 358 of file regs.h.

◆ X86_BP

#define X86_BP   M.x86.R_BP

Definition at line 347 of file regs.h.

◆ X86_BX

#define X86_BX   M.x86.R_BX

Definition at line 342 of file regs.h.

◆ X86_CH

#define X86_CH   M.x86.R_CH

Definition at line 364 of file regs.h.

◆ X86_CL

#define X86_CL   M.x86.R_CL

Definition at line 359 of file regs.h.

◆ X86_CS

#define X86_CS   M.x86.R_CS

Definition at line 350 of file regs.h.

◆ X86_CX

#define X86_CX   M.x86.R_CX

Definition at line 343 of file regs.h.

◆ X86_DH

#define X86_DH   M.x86.R_DH

Definition at line 365 of file regs.h.

◆ X86_DI

#define X86_DI   M.x86.R_DI

Definition at line 346 of file regs.h.

◆ X86_DL

#define X86_DL   M.x86.R_DL

Definition at line 360 of file regs.h.

◆ X86_DS

#define X86_DS   M.x86.R_DS

Definition at line 351 of file regs.h.

◆ X86_DX

#define X86_DX   M.x86.R_DX

Definition at line 344 of file regs.h.

◆ X86_EAX

#define X86_EAX   M.x86.R_EAX

Definition at line 329 of file regs.h.

◆ X86_EBP

#define X86_EBP   M.x86.R_EBP

Definition at line 335 of file regs.h.

◆ X86_EBX

#define X86_EBX   M.x86.R_EBX

Definition at line 330 of file regs.h.

◆ X86_ECX

#define X86_ECX   M.x86.R_ECX

Definition at line 331 of file regs.h.

◆ X86_EDI

#define X86_EDI   M.x86.R_EDI

Definition at line 334 of file regs.h.

◆ X86_EDX

#define X86_EDX   M.x86.R_EDX

Definition at line 332 of file regs.h.

◆ X86_EFLAGS

#define X86_EFLAGS   M.x86.R_EFLG

Definition at line 338 of file regs.h.

◆ X86_EIP

#define X86_EIP   M.x86.R_EIP

Definition at line 336 of file regs.h.

◆ X86_ES

#define X86_ES   M.x86.R_ES

Definition at line 352 of file regs.h.

◆ X86_ESI

#define X86_ESI   M.x86.R_ESI

Definition at line 333 of file regs.h.

◆ X86_ESP

#define X86_ESP   M.x86.R_ESP

Definition at line 337 of file regs.h.

◆ X86_FLAGS

#define X86_FLAGS   M.x86.R_FLG

Definition at line 340 of file regs.h.

◆ X86_FS

#define X86_FS   M.x86.R_FS

Definition at line 354 of file regs.h.

◆ X86_GS

#define X86_GS   M.x86.R_GS

Definition at line 355 of file regs.h.

◆ X86_IP

#define X86_IP   M.x86.R_IP

Definition at line 348 of file regs.h.

◆ X86_SI

#define X86_SI   M.x86.R_SI

Definition at line 345 of file regs.h.

◆ X86_SP

#define X86_SP   M.x86.R_SP

Definition at line 349 of file regs.h.

◆ X86_SS

#define X86_SS   M.x86.R_SS

Definition at line 353 of file regs.h.

Typedef Documentation

◆ Gen_reg_t

typedef struct i386_general_regs Gen_reg_t

Definition at line 1 of file regs.h.

Variable Documentation

◆ _X86EMU_env

X86EMU_sysEnv _X86EMU_env
extern

Definition at line 45 of file x86.c.