kvisc/vm/pc/regs.h

61 lines
1.1 KiB
C
Raw Normal View History

2019-05-29 16:57:22 +02:00
// The OS/K Team licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
2019-06-14 12:46:09 +02:00
// Register types
enum
{
2019-07-11 18:34:21 +02:00
GPR = 0, // Non-reserved
RES = 1 << 0, // Reserved for insternal use
SYS = 1 << 1, // Reserved for supervisor mode
2019-06-14 12:46:09 +02:00
};
// FLG register
enum
{
2019-07-11 18:34:21 +02:00
ZF = 1 << 0, // Zero flag
SF = 1 << 1, // Sign flag
2019-06-14 12:46:09 +02:00
2019-07-11 18:34:21 +02:00
CF = 1 << 4, // Carry flag
OF = 1 << 5, // Overflow flag
2019-06-14 12:46:09 +02:00
2019-07-11 18:34:21 +02:00
PF = 1 << 8, // Parity flag
DF = 1 << 9, // Direction flag
2019-06-14 12:46:09 +02:00
};
// CR0 register
enum
{
2019-06-19 21:41:22 +02:00
IF = 1 << 0, // Interrupts-enable flag
UF = 1 << 1, // User-mode flag
2019-06-14 12:46:09 +02:00
};
struct reg_t
{
char *name;
ulong flags;
};
2019-05-29 16:57:22 +02:00
enum
{
2019-07-17 22:25:50 +02:00
RZX, FC1, CR0, CR1, CR2, CR3, CR4, TRP,
2019-07-01 00:45:08 +02:00
RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP,
2019-07-11 18:34:21 +02:00
RFX, RIP, R10, R11, R12, R13, R14, R15,
2019-07-01 00:45:08 +02:00
AX0, AX1, AX2, AX3, AX4, AX5, AX6, AX7,
NX0, NX1, NX2, NX3, NX4, NX5, NX6, NX7,
NREGS
};
2019-07-04 20:33:49 +02:00
#define fc0 ctx->ninstrs
2019-07-11 18:34:21 +02:00
#define fc2 ctx->ni_thisfr
#define rpc ctx->cur_pc
2019-07-01 21:46:36 +02:00
2019-07-04 20:33:49 +02:00
#define fc1 R(FC1)
2019-05-29 16:57:22 +02:00
2019-06-02 16:33:28 +02:00
#define rax R(RAX)
#define rdx R(RDX)
2019-05-29 16:57:22 +02:00
2019-06-05 19:31:48 +02:00
#define ax0 R(AX0)
#define ax1 R(AX1)
2019-05-29 16:57:22 +02:00