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_RESCHEDULE = 3U,
|
||||||
EC_MIGRATE = 4U,
|
EC_MIGRATE = 4U,
|
||||||
EC_TIME = 5U,
|
EC_TIME = 5U,
|
||||||
|
EC_RDMSR = 6U,
|
||||||
|
EC_WRMSR = 7U,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Sc_op {
|
enum Sc_op {
|
||||||
@@ -543,7 +545,7 @@ namespace Nova {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum { DEFAULT_QUANTUM = 1500, DEFAULT_PRIORITY = 64 };
|
enum { DEFAULT_QUANTUM = 10000, DEFAULT_PRIORITY = 64 };
|
||||||
|
|
||||||
Qpd(mword_t quantum = DEFAULT_QUANTUM,
|
Qpd(mword_t quantum = DEFAULT_QUANTUM,
|
||||||
mword_t priority = DEFAULT_PRIORITY)
|
mword_t priority = DEFAULT_PRIORITY)
|
||||||
|
|||||||
@@ -253,6 +253,21 @@ namespace Nova {
|
|||||||
return util_time(NOVA_EC_CTRL, ec, Ec_op::EC_TIME, time);
|
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
|
ALWAYS_INLINE
|
||||||
inline uint8_t create_sc(mword_t sc, mword_t pd, mword_t ec, Qpd qpd)
|
inline uint8_t create_sc(mword_t sc, mword_t pd, mword_t ec, Qpd qpd)
|
||||||
|
|||||||
Reference in New Issue
Block a user