From 0bf431aa78034da575d9960adbd5b58deab96126 Mon Sep 17 00:00:00 2001 From: Zeev Belinsky Date: Sun, 10 May 2026 00:52:55 -0700 Subject: [PATCH] tests: fix APCR and vmtraps regression tests --- kernel/power/apcr/simple_test/Makefile | 30 ++++++++++++---------- kernel/power/apcr/simple_test/Makefile.inc | 7 +++-- kernel/power/apcr/simple_test/test.c | 28 ++++++++++++-------- kernel/power/apcr/test_multi/Makefile | 12 ++++----- libs/h2/vmtraps/test/test_pcycles/test.c | 5 +++- scripts/testlist.v61 | 26 +++++++++---------- scripts/testlist.v81 | 9 +++---- 7 files changed, 63 insertions(+), 54 deletions(-) diff --git a/kernel/power/apcr/simple_test/Makefile b/kernel/power/apcr/simple_test/Makefile index ba7a78e83..992402f68 100644 --- a/kernel/power/apcr/simple_test/Makefile +++ b/kernel/power/apcr/simple_test/Makefile @@ -1,40 +1,42 @@ EXEC = test.elf +OBJS += test.o -H2DIR=${UPDIR}../../../.. - -include ${H2DIR}/scripts/Makefile.inc.test -include $(H2DIR)/scripts/Makefile.inc.tools +include Makefile.inc ifeq ($(INSTALLPATH),) export INSTALLPATH := $(H2DIR)/install endif -ifeq ($(KERNELPATH),) -export KERNELPATH := $(H2DIR)/kernel -endif - H2K_KERNEL_PGSIZE := 2 H2K_ALLOC_HEAP_SIZE := 0x1000 BOOTVM_PROG := .test.elf +ifeq ($(TARGET), rtl) CRT0_S := $(INSTALLPATH)/src/min_crt0.S CRT0_O := min_crt0.o +NOSTARTFILES := -nostartfiles +EXTRA_CFLAGS += -DRTL +else +EXTRA_CFLAGS += -DDEBUG +endif - -CFLAGS = $(OPTIMIZE) -mv$(TOOLARCH) -DARCHV=$(ARCHV) -Wall -Werror -g -I$(INSTALLPATH)/include -I$(KERNELPATH)/include $(EXTRA_CFLAGS) -LDFLAGS = -nostartfiles -L$(INSTALLPATH)/lib -moslib=h2 -Qunused-arguments +CFLAGS := $(OPTIMIZE) -mv$(TOOLARCH) -DARCHV=$(ARCHV) -Wall -Werror -g -I$(INSTALLPATH)/include -I$(KERNELPATH)/include -Wno-builtin-requires-header $(EXTRA_CFLAGS) +BOOTVM_LDFLAGS = $(NOSTARTFILES) -L$(INSTALLPATH)/lib -moslib=h2 -Qunused-arguments all: $(BOOTVM_PROG) -include $(H2DIR)/scripts/Makefile.inc.config -include $(H2DIR)/scripts/Makefile.inc.opensource include $(H2DIR)/scripts/Makefile.inc.bootvm CLEANUP += *.elf $(BOOTVM_CLEAN) hello stats.* *.o pmu_statsfile.txt +$(BOOTVM_IMAGE): LDFLAGS = $(BOOTVM_LDFLAGS) +$(BOOTVM_PROG_TMP): LDFLAGS = $(BOOTVM_LDFLAGS) +$(BOOTVM_PROG): LDFLAGS = $(BOOTVM_LDFLAGS) + $(BOOTVM_IMAGE): test.o $(CRT0_O) $(BOOTVM_IMAGE_DEPS) - ${CC} $(LDFLAGS) $(CFLAGS) $(BOOTVM_IMAGE_CFLAGS) -Wl,--defsym=HEAP_SIZE=0x10000 -Wl,--defsym=STACK_SIZE=0x1000 -o $@ test.o $(CRT0_O) $(BOOTVM_ENTRY_O) + ${CC} $(LDFLAGS) $(CFLAGS) $(BOOTVM_IMAGE_CFLAGS) -Wl,--defsym=HEAP_SIZE=0x10000 -Wl,--defsym=STACK_SIZE=0x1000 -Wl,--defsym=__h2_thread_stop_hook__=0xfffffff0 -o $@ test.o $(CRT0_O) $(BOOTVM_ENTRY_O) 2>&1 | perl -pe 's/.*Symbol.*__h2_.*_hook__.*is defined in both linker script and input file.*//'; + # This bit of stupidity is needed to suppress warnings about changing the # recipe for test.elf diff --git a/kernel/power/apcr/simple_test/Makefile.inc b/kernel/power/apcr/simple_test/Makefile.inc index 9345612b4..1491fc7a8 100644 --- a/kernel/power/apcr/simple_test/Makefile.inc +++ b/kernel/power/apcr/simple_test/Makefile.inc @@ -1,7 +1,6 @@ # Not an H2 regression test (for now?) # # Need to define how to get back to the main H2 dir -# H2DIR=${UPDIR}../../../.. - -# # Everything else defined here -# include ${H2DIR}/scripts/Makefile.inc.test +H2DIR=${UPDIR}../../../.. +# Everything else defined here +include ${H2DIR}/scripts/Makefile.inc.test diff --git a/kernel/power/apcr/simple_test/test.c b/kernel/power/apcr/simple_test/test.c index 3d6da2b63..734a663fa 100644 --- a/kernel/power/apcr/simple_test/test.c +++ b/kernel/power/apcr/simple_test/test.c @@ -4,38 +4,46 @@ */ #include -/* #include */ -/* #include */ -/* #include */ +#include +#include -#ifndef DEBUG +#ifdef RTL #define ITERS 1 #ifndef INTERRUPT_NUM #define INTERRUPT_NUM 3 #endif #else #define ITERS 2 -#ifndef INTERRUPT_NUM -#define INTERRUPT_NUM 5 +#define HAVE_TIMER #endif + +#ifdef HAVE_TIMER +#define SLEEP (1000*1000*5) #endif -#define PASSFAIL_VA 0x01000000 +#define PASSFAIL_VA (H2K_GUEST_START + 0x01000000) -int main() +int main() { int i; unsigned int *sigil = (void *)(PASSFAIL_VA); for (i = 0; i < ITERS; i++) { +#ifdef HAVE_TIMER + h2_nanosleep(SLEEP); +#else h2_intwait(INTERRUPT_NUM); - -#ifdef DEBUG +#endif +#ifndef RTL *sigil = i + 1; #endif } *sigil = 0xe0f0beef; h2_dccleana(sigil); +#ifndef RTL + printf("TEST PASSED\n"); + exit(0); +#endif h2_thread_stop_trap(0); return 0; } diff --git a/kernel/power/apcr/test_multi/Makefile b/kernel/power/apcr/test_multi/Makefile index 960519a36..eaede4883 100644 --- a/kernel/power/apcr/test_multi/Makefile +++ b/kernel/power/apcr/test_multi/Makefile @@ -1,6 +1,6 @@ EXEC = test.elf OBJS += test.o -#OBJS += $(BOOTVM_ENTRY_O) + include Makefile.inc @@ -8,10 +8,6 @@ ifeq ($(INSTALLPATH),) export INSTALLPATH := $(H2DIR)/install endif -# ifeq ($(KERNELPATH),) -# export KERNELPATH := $(H2DIR)/kernel -# endif - H2K_KERNEL_PGSIZE := 2 BOOTVM_PROG := .test.elf @@ -26,8 +22,7 @@ EXTRA_CFLAGS += -DDEBUG endif CFLAGS := $(OPTIMIZE) -mv$(TOOLARCH) -DARCHV=$(ARCHV) -Wall -Werror -g -I$(INSTALLPATH)/include -I$(KERNELPATH)/include -Wno-builtin-requires-header $(EXTRA_CFLAGS) -LDFLAGS = $(NOSTARTFILES) -L$(INSTALLPATH)/lib -moslib=h2 -Qunused-arguments - +BOOTVM_LDFLAGS = $(NOSTARTFILES) -L$(INSTALLPATH)/lib -moslib=h2 -Qunused-arguments all: $(BOOTVM_PROG) @@ -35,6 +30,9 @@ include $(H2DIR)/scripts/Makefile.inc.bootvm CLEANUP += *.elf $(BOOTVM_CLEAN) hello stats.* *.o pmu_statsfile.txt +$(BOOTVM_IMAGE): LDFLAGS = $(BOOTVM_LDFLAGS) +$(BOOTVM_PROG_TMP): LDFLAGS = $(BOOTVM_LDFLAGS) +$(BOOTVM_PROG): LDFLAGS = $(BOOTVM_LDFLAGS) $(BOOTVM_IMAGE): test.o $(CRT0_O) $(BOOTVM_IMAGE_DEPS) ${CC} $(LDFLAGS) $(CFLAGS) $(BOOTVM_IMAGE_CFLAGS) -Wl,--defsym=HEAP_SIZE=0x10000 -Wl,--defsym=STACK_SIZE=0x1000 -Wl,--defsym=__h2_thread_stop_hook__=0xfffffff0 -o $@ test.o $(CRT0_O) $(BOOTVM_ENTRY_O) 2>&1 | perl -pe 's/.*Symbol.*__h2_.*_hook__.*is defined in both linker script and input file.*//'; diff --git a/libs/h2/vmtraps/test/test_pcycles/test.c b/libs/h2/vmtraps/test/test_pcycles/test.c index 94f468adf..16f8a9b05 100644 --- a/libs/h2/vmtraps/test/test_pcycles/test.c +++ b/libs/h2/vmtraps/test/test_pcycles/test.c @@ -28,7 +28,10 @@ #elif ARCHV == 5 #define PCYCLES_PER_TCYCLE 3 #define OVERHEAD 1536 -#elif ARCHV == 60 +#elif ARCHV >= 68 +#define PCYCLES_PER_TCYCLE 3 +#define OVERHEAD 1536 +#elif ARCHV >= 60 #define PCYCLES_PER_TCYCLE 2 #define OVERHEAD 1536 #else diff --git a/scripts/testlist.v61 b/scripts/testlist.v61 index 3a04dca22..c8b36bded 100644 --- a/scripts/testlist.v61 +++ b/scripts/testlist.v61 @@ -30,9 +30,9 @@ ./kernel/mem/tlbmisc/test ./kernel/mem/tlbmiss/test #./kernel/mem/varadix/test FIXME: needs to adapt to different kernel page size/count -#./kernel/power/apcr/test_multi FIXME: needs changes to work with new ${EXEC}_tmp make target +./kernel/power/apcr/test_multi ./kernel/power/hvx/test -#./kernel/power/apcr/simple_test +./kernel/power/apcr/simple_test ./kernel/sched/check_sanity/test/tests/H2K_check_sanity/scenarios ./kernel/sched/dosched/test/test ./kernel/futex/futex/test/tests/badaccess @@ -82,17 +82,17 @@ ./kernel/vm/vmmap/test ./kernel/vm/vmcache/test -#./libs/h2/alloc/test -#./libs/h2/allsignal/test/simple -#./libs/h2/allsignal/test/trapfails -#./libs/h2/anysignal/test/simple -#./libs/h2/anysignal/test/trapfails -#./libs/h2/error/test/simple -#./libs/h2/sem/test/simple -#./libs/h2/sleep/test -#./libs/h2/vmtraps/test/test_ie -#./libs/h2/vmtraps/test/test_pcycles -#./libs/h2/vmtraps/test/test_return +./libs/h2_compat/alloc/test +./libs/h2_compat/allsignal/test/simple +./libs/h2_compat/allsignal/test/trapfails +./libs/h2_compat/anysignal/test/simple +./libs/h2_compat/anysignal/test/trapfails +./libs/h2_compat/error/test/simple +./libs/h2_compat/sem/test/simple +./libs/h2_compat/sleep/test +./libs/h2/vmtraps/test/test_ie +./libs/h2/vmtraps/test/test_pcycles +./libs/h2/vmtraps/test/test_return ./libs/h2/vmtraps/test/test_yield ./perf/setie diff --git a/scripts/testlist.v81 b/scripts/testlist.v81 index 63f4ea5ca..844788fd7 100644 --- a/scripts/testlist.v81 +++ b/scripts/testlist.v81 @@ -30,16 +30,16 @@ ./kernel/mem/tlbmisc/test ./kernel/mem/tlbmiss/test # ./kernel/mem/varadix/test FIXME: needs to adapt to different kernel page size/count -# ./kernel/power/apcr/test_multi FIXME: needs changes to work with new ${EXEC}_tmp make target +./kernel/power/apcr/test_multi ./kernel/power/hvx/test -#./kernel/power/apcr/simple_test +./kernel/power/apcr/simple_test ./kernel/sched/check_sanity/test/tests/H2K_check_sanity/scenarios ./kernel/sched/dosched/test/test ./kernel/futex/futex/test/tests/badaccess ./kernel/futex/futex/test/tests/find_match ./kernel/futex/futex/test/tests/multi_va ./kernel/futex/futex/test/tests/multi_wake -#./kernel/futex/futex/test/tests/pi # FIXME: timing-dependent fails +./kernel/futex/futex/test/tests/pi ./kernel/futex/futex/test/tests/simple_lock_unlock ./kernel/sched/lowprio/test ./kernel/sched/resched/test @@ -90,9 +90,8 @@ ./libs/h2_compat/error/test/simple ./libs/h2_compat/sem/test/simple ./libs/h2_compat/sleep/test - ./libs/h2/vmtraps/test/test_ie -#./libs/h2/vmtraps/test/test_pcycles +./libs/h2/vmtraps/test/test_pcycles ./libs/h2/vmtraps/test/test_return ./libs/h2/vmtraps/test/test_yield