diff options
Diffstat (limited to 'extras')
-rw-r--r-- | extras/mini-os/h/hypervisor.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/extras/mini-os/h/hypervisor.h b/extras/mini-os/h/hypervisor.h index 4c4d752615..3afd245fd6 100644 --- a/extras/mini-os/h/hypervisor.h +++ b/extras/mini-os/h/hypervisor.h @@ -129,7 +129,8 @@ static inline int HYPERVISOR_yield(void) int ret; __asm__ __volatile__ ( TRAP_INSTR - : "=a" (ret) : "0" (__HYPERVISOR_yield) ); + : "=a" (ret) : "0" (__HYPERVISOR_sched_op), + "b" (SCHEDOP_yield) ); return ret; } @@ -139,7 +140,19 @@ static inline int HYPERVISOR_exit(void) int ret; __asm__ __volatile__ ( TRAP_INSTR - : "=a" (ret) : "0" (__HYPERVISOR_exit) ); + : "=a" (ret) : "0" (__HYPERVISOR_sched_op), + "b" (SCHEDOP_exit) ); + + return ret; +} + +static inline int HYPERVISOR_stop(void) +{ + int ret; + __asm__ __volatile__ ( + TRAP_INSTR + : "=a" (ret) : "0" (__HYPERVISOR_sched_op), + "b" (SCHEDOP_stop) ); return ret; } |