diff --git a/repos/base-nova/include/32bit/nova/syscalls.h b/repos/base-nova/include/32bit/nova/syscalls.h index c568bf6ed..579fc9a5f 100644 --- a/repos/base-nova/include/32bit/nova/syscalls.h +++ b/repos/base-nova/include/32bit/nova/syscalls.h @@ -248,7 +248,14 @@ namespace Nova { ALWAYS_INLINE inline uint8_t create_sm(unsigned sm, unsigned pd, mword_t cnt) { - return syscall_2(NOVA_CREATE_SM, 0, sm, pd, cnt); + return syscall_3(NOVA_CREATE_SM, 0, sm, pd, cnt, 0); + } + + + ALWAYS_INLINE + inline uint8_t create_si(mword_t si, mword_t pd, mword_t value, mword_t sm) + { + return syscall_3(NOVA_CREATE_SM, 0, si, pd, value, sm); } @@ -288,12 +295,20 @@ namespace Nova { } + ALWAYS_INLINE + inline uint8_t si_ctrl(mword_t sm, Sem_op op, mword_t &value, mword_t &cnt) + { + return syscall_5(NOVA_SM_CTRL, op, sm, value, cnt); + } + + ALWAYS_INLINE inline uint8_t assign_pci(mword_t pd, mword_t mem, mword_t rid) { return syscall_2(NOVA_ASSIGN_PCI, 0, pd, mem, rid); } + ALWAYS_INLINE inline uint8_t assign_gsi(mword_t sm, mword_t dev, mword_t cpu, mword_t &msi_addr, mword_t &msi_data) { diff --git a/repos/base-nova/include/64bit/nova/syscalls.h b/repos/base-nova/include/64bit/nova/syscalls.h index 134f6201e..da017d0eb 100644 --- a/repos/base-nova/include/64bit/nova/syscalls.h +++ b/repos/base-nova/include/64bit/nova/syscalls.h @@ -211,7 +211,14 @@ namespace Nova { ALWAYS_INLINE inline uint8_t create_sm(mword_t sm, mword_t pd, mword_t cnt) { - return syscall_2(NOVA_CREATE_SM, 0, sm, pd, cnt); + return syscall_3(NOVA_CREATE_SM, 0, sm, pd, cnt, 0); + } + + + ALWAYS_INLINE + inline uint8_t create_si(mword_t si, mword_t pd, mword_t value, mword_t sm) + { + return syscall_3(NOVA_CREATE_SM, 0, si, pd, value, sm); } @@ -240,6 +247,13 @@ namespace Nova { } + ALWAYS_INLINE + inline uint8_t si_ctrl(mword_t sm, Sem_op op, mword_t &value, mword_t &cnt) + { + return syscall_5(NOVA_SM_CTRL, op, sm, value, cnt); + } + + ALWAYS_INLINE inline uint8_t sc_ctrl(mword_t sm, Sem_op op, mword_t &time) { diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index b5dc9ce17..fb0a7a590 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -7b061888d5ff7417ee1f24eab2d06136e83d720d +64d63799ff123098285ae3f74e2c17ce00e580ad diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 76b266135..5bff2bf2b 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git URL(nova) := https://github.com/alex-ab/NOVA.git # r8 branch -REV(nova) := 27392e1d28c5a4550f71ddda449779e071e86546 +REV(nova) := 123f1e73080b7129a707c7e9547e14052ea6fe32 DIR(nova) := src/kernel/nova PATCHES := $(wildcard $(REP_DIR)/patches/*.patch)