diff --git a/arch/Kconfig b/arch/Kconfig index 21e3f5d10d..d49d844386 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -14,6 +14,7 @@ config ARCH_ARM select ARCH_HAVE_STACKCHECK select ARCH_HAVE_CUSTOMOPT select ARCH_HAVE_STDARG_H + select ARCH_HAVE_SYSCALL_HOOKS ---help--- The ARM architectures @@ -60,6 +61,7 @@ config ARCH_RISCV select ARCH_HAVE_STACKCHECK select ARCH_HAVE_CUSTOMOPT select ARCH_HAVE_STDARG_H + select ARCH_HAVE_SYSCALL_HOOKS ---help--- RISC-V 32 and 64-bit RV32 / RV64 architectures. diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile index 98b85fca46..32507ba297 100644 --- a/arch/arm/src/Makefile +++ b/arch/arm/src/Makefile @@ -69,6 +69,12 @@ else NUTTX = "$(TOPDIR)$(DELIM)nuttx$(EXEEXT)" endif +# Additional rules for system call wrapper + +ifeq ($(CONFIG_SCHED_INSTRUMENTATION_SYSCALL),y) + EXTRALINKCMDS += @$(TOPDIR)/syscall/syscall_wraps.ldcmd +endif + # The "head" object HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) @@ -99,7 +105,7 @@ UOBJS = $(UAOBJS) $(UCOBJS) KBIN = libkarch$(LIBEXT) BIN = libarch$(LIBEXT) -LDFLAGS += $(ARCHSCRIPT) +LDFLAGS += $(ARCHSCRIPT) $(EXTRALINKCMDS) # Override in Make.defs if linker is not 'ld' diff --git a/arch/risc-v/src/Makefile b/arch/risc-v/src/Makefile index 0bab78231d..eba63324c8 100644 --- a/arch/risc-v/src/Makefile +++ b/arch/risc-v/src/Makefile @@ -66,6 +66,12 @@ else NUTTX = "$(TOPDIR)$(DELIM)nuttx$(EXEEXT)" endif +# Additional rules for system call wrapper + +ifeq ($(CONFIG_SCHED_INSTRUMENTATION_SYSCALL),y) + EXTRALINKCMDS += @$(TOPDIR)/syscall/syscall_wraps.ldcmd +endif + # The "head" object HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT)) @@ -96,7 +102,7 @@ UOBJS = $(UAOBJS) $(UCOBJS) KBIN = libkarch$(LIBEXT) BIN = libarch$(LIBEXT) -LDFLAGS += $(ARCHSCRIPT) +LDFLAGS += $(ARCHSCRIPT) $(EXTRALINKCMDS) LDSTARTGROUP ?= --start-group LDENDGROUP ?= --end-group diff --git a/sched/Kconfig b/sched/Kconfig index 460b58a77f..f57bb4a735 100644 --- a/sched/Kconfig +++ b/sched/Kconfig @@ -975,7 +975,7 @@ config SCHED_INSTRUMENTATION_SPINLOCKS config SCHED_INSTRUMENTATION_SYSCALL bool "System call monitor hooks" default n - depends on LIB_SYSCALL && ARCH_HAVE_SYSCALL_HOOKS + depends on ARCH_HAVE_SYSCALL_HOOKS ---help--- Enables additional hooks for entry and exit from system call. Board-specific logic must provide this additional logic.