79 lines
2.0 KiB
C
79 lines
2.0 KiB
C
|
/*
|
||
|
* plex86: run multiple x86 operating systems concurrently
|
||
|
* Copyright (C) 1999-2003 Kevin P. Lawton
|
||
|
*
|
||
|
* eflags.h: Bitfields of EFLAGS registers
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
* License as published by the Free Software Foundation; either
|
||
|
* version 2 of the License, or (at your option) any later version.
|
||
|
*
|
||
|
* This library is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Lesser General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
* License along with this library; if not, write to the Free Software
|
||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
*/
|
||
|
|
||
|
#ifndef __EFLAGS_H__
|
||
|
#define __EFLAGS_H__
|
||
|
|
||
|
/*
|
||
|
* the eflags field looks like this:
|
||
|
* bit: 0 1 2 3 4 5 6 7 8 9 A B C/D E F 10 11 12 13 14 15 16
|
||
|
* flg: CF 1 PF 0 AF 0 ZF SF TF IF DF OF IOPL NT 0 RF VM AC VIF VIP ID 0
|
||
|
*/
|
||
|
|
||
|
#define FLG_CF (1<<0)
|
||
|
#define FLG_PF (1<<2)
|
||
|
#define FLG_AF (1<<4)
|
||
|
#define FLG_ZF (1<<6)
|
||
|
#define FLG_SF (1<<7)
|
||
|
#define FLG_TF (1<<8)
|
||
|
#define FLG_IF (1<<9)
|
||
|
#define FLG_DF (1<<10)
|
||
|
#define FLG_OF (1<<11)
|
||
|
#define FLG_IOPL (3<<12)
|
||
|
#define FLG_NT (1<<14)
|
||
|
#define FLG_RF (1<<16)
|
||
|
#define FLG_VM (1<<17)
|
||
|
#define FLG_AC (1<<18)
|
||
|
#define FLG_VIF (1<<19)
|
||
|
#define FLG_VIP (1<<20)
|
||
|
#define FLG_ID (1<<21)
|
||
|
|
||
|
|
||
|
typedef union {
|
||
|
struct {
|
||
|
Bit8u cf:1;
|
||
|
Bit8u R1:1;
|
||
|
Bit8u pf:1;
|
||
|
Bit8u R3:1;
|
||
|
Bit8u af:1;
|
||
|
Bit8u R5:1;
|
||
|
Bit8u zf:1;
|
||
|
Bit8u sf:1;
|
||
|
Bit8u tf:1;
|
||
|
Bit8u if_:1;
|
||
|
Bit8u df:1;
|
||
|
Bit8u of:1;
|
||
|
Bit8u iopl:2;
|
||
|
Bit8u nt:1;
|
||
|
Bit8u R15:1;
|
||
|
Bit8u rf:1;
|
||
|
Bit8u vm:1;
|
||
|
Bit8u ac:1;
|
||
|
Bit8u vif:1;
|
||
|
Bit8u vip:1;
|
||
|
Bit8u id:1;
|
||
|
Bit16u R31_22:10;
|
||
|
} __attribute__ ((packed)) fields;
|
||
|
Bit32u raw;
|
||
|
} __attribute__ ((packed)) eflags_t;
|
||
|
|
||
|
#endif /* __EFLAGS_H__ */
|