// The OS/K Team licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. // Register types enum { GPR = 0, // Non-reserved RES = 1 << 0, // Reserved for insternal use SYS = 1 << 1, // Reserved for supervisor mode }; // FLG register enum { ZF = 1 << 0, // Zero flag SF = 1 << 1, // Sign flag CF = 1 << 4, // Carry flag OF = 1 << 5, // Overflow flag PF = 1 << 8, // Parity flag DF = 1 << 9, // Direction flag }; // CR0 register enum { IF = 1 << 0, // Interrupts-enable flag UF = 1 << 1, // User-mode flag }; struct reg_t { char *name; ulong flags; }; enum { INV, FC1, CR0, CR1, CR2, CR3, CR4, TRP, RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFX, RIP, R10, R11, R12, R13, R14, R15, AX0, AX1, AX2, AX3, AX4, AX5, AX6, AX7, NX0, NX1, NX2, NX3, NX4, NX5, NX6, NX7, NREGS }; #define fc0 ctx->ninstrs #define fc2 ctx->ni_thisfr #define rpc ctx->cur_pc #define fc1 R(FC1) #define rfx R(RFX) #define rax R(RAX) #define rdx R(RDX) #define ax0 R(AX0) #define ax1 R(AX1)