mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 12:32:56 +01:00
NOVA: Added syscall to read and write MSRs. This enables core to use performance counters.
This commit is contained in:
@@ -246,6 +246,8 @@ namespace Nova {
|
||||
EC_RESCHEDULE = 3U,
|
||||
EC_MIGRATE = 4U,
|
||||
EC_TIME = 5U,
|
||||
EC_RDMSR = 6U,
|
||||
EC_WRMSR = 7U,
|
||||
};
|
||||
|
||||
enum Sc_op {
|
||||
@@ -543,7 +545,7 @@ namespace Nova {
|
||||
|
||||
public:
|
||||
|
||||
enum { DEFAULT_QUANTUM = 1500, DEFAULT_PRIORITY = 64 };
|
||||
enum { DEFAULT_QUANTUM = 10000, DEFAULT_PRIORITY = 64 };
|
||||
|
||||
Qpd(mword_t quantum = DEFAULT_QUANTUM,
|
||||
mword_t priority = DEFAULT_PRIORITY)
|
||||
|
||||
@@ -253,6 +253,21 @@ namespace Nova {
|
||||
return util_time(NOVA_EC_CTRL, ec, Ec_op::EC_TIME, time);
|
||||
}
|
||||
|
||||
ALWAYS_INLINE
|
||||
inline uint8_t ec_rdmsr(mword_t const ec, mword_t reg, mword_t ®_val)
|
||||
{
|
||||
uint8_t res = syscall_5(NOVA_EC_CTRL, EC_RDMSR, ec, reg_val, reg);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE
|
||||
inline uint8_t ec_wrmsr(mword_t const ec, mword_t reg, mword_t ®_val)
|
||||
{
|
||||
uint8_t res = syscall_5(NOVA_EC_CTRL, EC_WRMSR, ec, reg_val, reg);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE
|
||||
inline uint8_t create_sc(mword_t sc, mword_t pd, mword_t ec, Qpd qpd)
|
||||
|
||||
Reference in New Issue
Block a user