mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 09:46:20 +00:00
parent
c04561f026
commit
6bf4fd3340
@ -208,32 +208,35 @@ namespace Nova {
|
||||
public:
|
||||
|
||||
enum {
|
||||
ACDB = 1U << 0, /* eax, ecx, edx, ebx */
|
||||
EBSD = 1U << 1, /* ebp, esi, edi */
|
||||
ESP = 1U << 2,
|
||||
EIP = 1U << 3,
|
||||
EFL = 1U << 4, /* eflags */
|
||||
ESDS = 1U << 5,
|
||||
FSGS = 1U << 6,
|
||||
CSSS = 1U << 7,
|
||||
TR = 1U << 8,
|
||||
LDTR = 1U << 9,
|
||||
GDTR = 1U << 10,
|
||||
IDTR = 1U << 11,
|
||||
CR = 1U << 12,
|
||||
DR = 1U << 13, /* DR7 */
|
||||
SYS = 1U << 14, /* Sysenter MSRs CS, ESP, EIP */
|
||||
QUAL = 1U << 15, /* exit qualification */
|
||||
CTRL = 1U << 16, /* execution controls */
|
||||
INJ = 1U << 17, /* injection info */
|
||||
STA = 1U << 18, /* interruptibility state */
|
||||
TSC = 1U << 19, /* time-stamp counter */
|
||||
EFER = 1U << 20, /* EFER MSR */
|
||||
PDPTE = 1U << 21, /* PDPTE0 .. PDPTE3 */
|
||||
FPU = 1U << 31, /* FPU state */
|
||||
ACDB = 1U << 0, /* eax, ecx, edx, ebx */
|
||||
EBSD = 1U << 1, /* ebp, esi, edi */
|
||||
ESP = 1U << 2,
|
||||
EIP = 1U << 3,
|
||||
EFL = 1U << 4, /* eflags */
|
||||
ESDS = 1U << 5,
|
||||
FSGS = 1U << 6,
|
||||
CSSS = 1U << 7,
|
||||
TR = 1U << 8,
|
||||
LDTR = 1U << 9,
|
||||
GDTR = 1U << 10,
|
||||
IDTR = 1U << 11,
|
||||
CR = 1U << 12,
|
||||
DR = 1U << 13, /* DR7 */
|
||||
SYS = 1U << 14, /* Sysenter MSRs CS, ESP, EIP */
|
||||
QUAL = 1U << 15, /* exit qualification */
|
||||
CTRL = 1U << 16, /* execution controls */
|
||||
INJ = 1U << 17, /* injection info */
|
||||
STA = 1U << 18, /* interruptibility state */
|
||||
TSC = 1U << 19, /* time-stamp counter */
|
||||
EFER = 1U << 20, /* EFER MSR */
|
||||
PDPTE = 1U << 21, /* PDPTE0 .. PDPTE3 */
|
||||
R8_R15 = 1U << 22, /* R8 .. R15 */
|
||||
SYSCALL_SWAPGS = 1U << 23, /* SYSCALL and SWAPGS MSRs */
|
||||
TPR = 1U << 24, /* TPR and TPR threshold */
|
||||
FPU = 1U << 31, /* FPU state */
|
||||
|
||||
IRQ = EFL | STA | INJ | TSC,
|
||||
ALL = 0x000fffff & ~CTRL,
|
||||
ALL = (0x000fffff & ~CTRL) | EFER | R8_R15 | SYSCALL_SWAPGS | TPR,
|
||||
};
|
||||
|
||||
Mtd(mword_t value) : _value(value) { }
|
||||
@ -475,6 +478,12 @@ namespace Nova {
|
||||
mword_t pdpte[4];
|
||||
#ifdef __x86_64__
|
||||
mword_t cr8, efer;
|
||||
unsigned long long star;
|
||||
unsigned long long lstar;
|
||||
unsigned long long fmask;
|
||||
unsigned long long kernel_gs_base;
|
||||
unsigned tpr;
|
||||
unsigned tpr_threshold;
|
||||
#endif
|
||||
mword_t dr7, sysenter_cs, sysenter_sp, sysenter_ip;
|
||||
|
||||
@ -505,11 +514,67 @@ namespace Nova {
|
||||
};
|
||||
|
||||
#ifdef __x86_64__
|
||||
inline mword_t read_r8() { return r8; }
|
||||
inline void write_r8(mword_t value) { r8 = value; }
|
||||
inline mword_t read_r9() { return r9; }
|
||||
inline void write_r9(mword_t value) { r9 = value; }
|
||||
inline mword_t read_r10() { return r10; }
|
||||
inline void write_r10(mword_t value) { r10 = value; }
|
||||
inline mword_t read_r11() { return r11; }
|
||||
inline void write_r11(mword_t value) { r11 = value; }
|
||||
inline mword_t read_r12() { return r12; }
|
||||
inline void write_r12(mword_t value) { r12 = value; }
|
||||
inline mword_t read_r13() { return r13; }
|
||||
inline void write_r13(mword_t value) { r13 = value; }
|
||||
inline mword_t read_r14() { return r14; }
|
||||
inline void write_r14(mword_t value) { r14 = value; }
|
||||
inline mword_t read_r15() { return r15; }
|
||||
inline void write_r15(mword_t value) { r15 = value; }
|
||||
inline mword_t read_efer() { return efer; }
|
||||
inline void write_efer(mword_t e) { efer = e; }
|
||||
inline void write_efer(mword_t value) { efer = value; }
|
||||
inline mword_t read_star() { return star; }
|
||||
inline void write_star(mword_t value) { star = value; }
|
||||
inline mword_t read_lstar() { return lstar; }
|
||||
inline void write_lstar(mword_t value) { lstar = value; }
|
||||
inline mword_t read_fmask() { return fmask; }
|
||||
inline void write_fmask(mword_t value) { fmask = value; }
|
||||
inline mword_t read_kernel_gs_base() { return kernel_gs_base; }
|
||||
inline void write_kernel_gs_base(mword_t value) { kernel_gs_base = value; }
|
||||
inline uint32_t read_tpr() { return tpr; }
|
||||
inline void write_tpr(uint32_t value) { tpr = value; }
|
||||
inline uint32_t read_tpr_threshold() { return tpr_threshold; }
|
||||
inline void write_tpr_threshold(uint32_t value) { tpr_threshold = value; }
|
||||
#else
|
||||
inline mword_t read_r8() { return 0UL; }
|
||||
inline void write_r8(mword_t) { }
|
||||
inline mword_t read_r9() { return 0UL; }
|
||||
inline void write_r9(mword_t) { }
|
||||
inline mword_t read_r10() { return 0UL; }
|
||||
inline void write_r10(mword_t) { }
|
||||
inline mword_t read_r11() { return 0UL; }
|
||||
inline void write_r11(mword_t) { }
|
||||
inline mword_t read_r12() { return 0UL; }
|
||||
inline void write_r12(mword_t) { }
|
||||
inline mword_t read_r13() { return 0UL; }
|
||||
inline void write_r13(mword_t) { }
|
||||
inline mword_t read_r14() { return 0UL; }
|
||||
inline void write_r14(mword_t) { }
|
||||
inline mword_t read_r15() { return 0UL; }
|
||||
inline void write_r15(mword_t) { }
|
||||
inline mword_t read_efer() { return 0UL; }
|
||||
inline void write_efer(mword_t) { }
|
||||
inline mword_t read_star() { return 0UL; }
|
||||
inline void write_star(mword_t) { }
|
||||
inline mword_t read_lstar() { return 0UL; }
|
||||
inline void write_lstar(mword_t) { }
|
||||
inline mword_t read_fmask() { return 0UL; }
|
||||
inline void write_fmask(mword_t) { }
|
||||
inline mword_t read_kernel_gs_base() { return 0UL; }
|
||||
inline void write_kernel_gs_base(mword_t) { }
|
||||
inline uint32_t read_tpr() { return 0; }
|
||||
inline void write_tpr(uint32_t) { }
|
||||
inline uint32_t read_tpr_threshold() { return 0; }
|
||||
inline void write_tpr_threshold(uint32_t) { }
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -1 +1 @@
|
||||
71d690621c7ccb59f1feac867257e52b038fcf3b
|
||||
e08cc27e2cfe25ed72395cd5c245ff7bf460b900
|
||||
|
@ -4,7 +4,7 @@ DOWNLOADS := nova.git
|
||||
|
||||
# r9 branch - use r9_debug for more verbose kernel messages
|
||||
URL(nova) := https://github.com/alex-ab/NOVA.git
|
||||
REV(nova) := 1f37f260e0b1d9f9bc40e8b1e67297647a0fe819
|
||||
REV(nova) := 7c0c451d3de1a4645e8fadde1fdbebb3203c1f8d
|
||||
DIR(nova) := src/kernel/nova
|
||||
|
||||
PATCHES := $(wildcard $(REP_DIR)/patches/*.patch)
|
||||
|
@ -1 +1 @@
|
||||
ac479be8608aa7923053f4f12f05de533209b848
|
||||
e6e6d4f8b6e3ee3d7c6389b23493e3c5d647e7df
|
||||
|
@ -3,8 +3,8 @@ VERSION := git
|
||||
DOWNLOADS := seoul.git
|
||||
|
||||
URL(seoul) := https://github.com/alex-ab/seoul.git
|
||||
# branch genode_15_08
|
||||
REV(seoul) := 2861f495ddcbf714c8b7944ce1c39985a164348c
|
||||
# branch genode_15_11
|
||||
REV(seoul) := 31c07e2b61e67732dbb115561665ebb3415a49a7
|
||||
DIR(seoul) := src/app/seoul
|
||||
|
||||
#
|
||||
|
Loading…
x
Reference in New Issue
Block a user