Bochs/bochs/plex86/kernel/include/eflags.h

79 lines
2.0 KiB
C
Raw Normal View History

/*
* 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__ */