diff --git a/repos/base-nova/include/32bit/nova/syscalls.h b/repos/base-nova/include/32bit/nova/syscalls.h index 7cae332ed9..bfd06c7bc1 100644 --- a/repos/base-nova/include/32bit/nova/syscalls.h +++ b/repos/base-nova/include/32bit/nova/syscalls.h @@ -280,9 +280,9 @@ namespace Nova { ALWAYS_INLINE - inline uint8_t sm_ctrl(unsigned sm, Sem_op op) + inline uint8_t sm_ctrl(unsigned sm, Sem_op op, unsigned long long timeout = 0) { - return syscall_0(NOVA_SM_CTRL, op, sm); + return syscall_2(NOVA_SM_CTRL, op, sm, timeout >> 32, timeout); } diff --git a/repos/base-nova/include/64bit/nova/syscalls.h b/repos/base-nova/include/64bit/nova/syscalls.h index fb1c2ec0ff..f54032ccd9 100644 --- a/repos/base-nova/include/64bit/nova/syscalls.h +++ b/repos/base-nova/include/64bit/nova/syscalls.h @@ -231,9 +231,10 @@ namespace Nova { ALWAYS_INLINE - inline uint8_t sm_ctrl(mword_t sm, Sem_op op) + inline uint8_t sm_ctrl(mword_t sm, Sem_op op, unsigned long long timeout = 0) { - return syscall_0(NOVA_SM_CTRL, op, sm); + return syscall_2(NOVA_SM_CTRL, op, sm, timeout >> 32, + timeout & 0xFFFFFFFFULL); } diff --git a/repos/base-nova/include/nova/syscall-generic.h b/repos/base-nova/include/nova/syscall-generic.h index 3f5539c2ba..1f18bc71b3 100644 --- a/repos/base-nova/include/nova/syscall-generic.h +++ b/repos/base-nova/include/nova/syscall-generic.h @@ -71,7 +71,7 @@ namespace Nova { enum Status { NOVA_OK = 0, - NOVA_IPC_TIMEOUT = 1, + NOVA_TIMEOUT = 1, NOVA_IPC_ABORT = 2, NOVA_INV_HYPERCALL = 3, NOVA_INV_SELECTOR = 4, diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index 9f439a3788..af0f8d944a 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -fceaac7f0e0d711be17a2e7f9f4b5d396a4e2b63 +2876dd57fafcaf860278d38368e7ba9a551393ab diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 517a1a5c60..b3aa67a661 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -3,7 +3,8 @@ VERSION := git DOWNLOADS := nova.git URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := r5 +# r6 branch +REV(nova) := f304d54b176ef7b1de9bd6fff6884e1444a0c116 DIR(nova) := src/kernel/nova PATCHES := $(wildcard $(REP_DIR)/patches/*.patch) diff --git a/repos/base-nova/run/env b/repos/base-nova/run/env index f2ade72607..e9e4d00ce9 100644 --- a/repos/base-nova/run/env +++ b/repos/base-nova/run/env @@ -73,7 +73,7 @@ proc build_boot_image {binaries} { puts $fh "default 0" puts $fh "\ntitle Genode on NOVA" puts $fh " kernel /boot/bender" - puts $fh " module /hypervisor iommu serial nopcid" + puts $fh " module /hypervisor iommu serial" puts $fh " module /genode/core" puts $fh " module /genode/config" foreach binary $binaries { @@ -89,7 +89,7 @@ proc build_boot_image {binaries} { # set fh [open "[run_dir]/config-52-54-00-12-34-56" "WRONLY CREAT TRUNC"] puts $fh " exec /boot/bender" - puts $fh " load /hypervisor iommu serial nopcid" + puts $fh " load /hypervisor iommu serial" puts $fh " load /genode/core" puts $fh " load /genode/config" foreach binary $binaries { diff --git a/repos/base-nova/src/core/platform.cc b/repos/base-nova/src/core/platform.cc index 2e83209cca..22efb5c717 100644 --- a/repos/base-nova/src/core/platform.cc +++ b/repos/base-nova/src/core/platform.cc @@ -209,7 +209,7 @@ Platform::Platform() : { Hip *hip = (Hip *)__initial_sp; /* check for right API version */ - if (hip->api_version != 6) + if (hip->api_version != 7) nova_die(); /*