diff --git a/kernel/Makefile b/kernel/Makefile
index 6f66eea9c..898d3df50 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -50,6 +50,10 @@ ifdef NO_DEVICES
CFLAGS += -DNO_DEVICES
endif
+ifdef TESTING
+CFLAGS += -DTESTING
+endif
+
ifdef LOGBUF
CFLAGS += -DH2K_LOGBUF
endif
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/kernel/time/timer/timer.ref.c b/kernel/time/timer/timer.ref.c
index 385271a9b..419e3ec19 100644
--- a/kernel/time/timer/timer.ref.c
+++ b/kernel/time/timer/timer.ref.c
@@ -120,9 +120,11 @@ static inline ticks_t H2K_timer_hw_read_count()
};
} ticktmp;
+#ifndef TESTING
if (H2K_gp->arch >= CORE_V61) { // use core timer regs
return H2K_get_timer_reg();
}
+#endif
do {
tmphi = H2K_gp->time.devptr[HW_COUNT_HI];
diff --git a/kernel/time/timer/timer.v60opt.S b/kernel/time/timer/timer.v60opt.S
index 15977c4f5..d12fa41e8 100644
--- a/kernel/time/timer/timer.v60opt.S
+++ b/kernel/time/timer/timer.v60opt.S
@@ -110,9 +110,16 @@ FUNC_START H2K_timer_get_ticks .text.time.timer .falign
if (p0.new) TICKLO = memw(DEVPTR+#HW_COUNT_LO-HW_COUNT_LO)
if (p0.new) jump:nt 1f
}
+#ifndef TESTING
{
TICKS = TIMERHILO
}
+#else
+ {
+ TICKHI = memw(DEVPTR+#HW_COUNT_HI-HW_COUNT_LO)
+ TICKLO = memw(DEVPTR+#HW_COUNT_LO-HW_COUNT_LO)
+ }
+#endif
1:
{
p1 = cmp.gtu(TICKS,LASTTICKS) // nowticks > last_ticks?
@@ -337,9 +344,16 @@ FUNC_START H2K_timer_get_time .text.time.timer
if (p0.new) TICKS_LO = memw(DEVPTR+#HW_COUNT_LO-HW_COUNT_LO)
if (p0.new) jump:nt 1f
}
+#ifndef TESTING
{
TICKS = TIMERHILO
}
+#else
+ {
+ TICKS_HI = memw(DEVPTR+#HW_COUNT_HI-HW_COUNT_LO)
+ TICKS_LO = memw(DEVPTR+#HW_COUNT_LO-HW_COUNT_LO)
+ }
+#endif
1:
{
p1 = cmp.gtu(TICKS,LAST_TICKS) // nowticks > last_ticks?
@@ -620,9 +634,16 @@ FUNC_START H2K_timer_delta_timeout .text.time.timer
p0 = cmp.ltu(CREV, V61)
if (p0.new) jump:nt 2f
}
+#ifndef TESTING
{
TICKS = TIMERHILO
}
+#else
+ {
+ TICKS_HI = memw(DEVPTR+#HW_COUNT_HI-HW_COUNT_LO)
+ TICKS_LO = memw(DEVPTR+#HW_COUNT_LO-HW_COUNT_LO)
+ }
+#endif
#undef MAGIC_HI
2:
{
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/makefile b/makefile
index 33bb5f06f..2b4537f33 100644
--- a/makefile
+++ b/makefile
@@ -191,7 +191,7 @@ ifeq ($(USE_PKW),1)
@echo PKW_VERSIONS $(PKW_VERSIONS)
pkw --which $(CC)
endif
- $(MAKE) $(OPT_JFLAG) -C kernel ARCHV=$(ARCHV) opt_install && \
+ $(MAKE) $(OPT_JFLAG) -C kernel ARCHV=$(ARCHV) TESTING=$(TESTING) opt_install && \
$(MAKE) $(OPT_JFLAG) -C libs ARCHV=$(ARCHV) install IMPL=opt && \
$(MAKE) $(OPT_JFLAG) -C stake ARCHV=$(ARCHV) install
$(MAKE) $(OPT_JFLAG) -C booter ARCHV=$(ARCHV) install
@@ -214,7 +214,7 @@ ifeq ($(USE_PKW),1)
@echo PKW_VERSIONS $(PKW_VERSIONS)
pkw --which $(CC)
endif
- $(MAKE) $(REF_JFLAG) -C kernel ARCHV=$(ARCHV) ref_install && \
+ $(MAKE) $(REF_JFLAG) -C kernel ARCHV=$(ARCHV) TESTING=$(TESTING) ref_install && \
$(MAKE) $(REF_JFLAG) -C libs ARCHV=$(ARCHV) install IMPL=ref && \
$(MAKE) $(REF_JFLAG) -C stake ARCHV=$(ARCHV) install
$(MAKE) $(REF_JFLAG) -C booter ARCHV=$(ARCHV) install
diff --git a/scripts/testlist.v61 b/scripts/testlist.v61
index ff9c1872d..8ccb0f035 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
@@ -59,7 +59,7 @@
# ./kernel/traps/tlb/test FIXME: needs to adapt to different kernel page size/count
./kernel/traps/waitcycles/test
./kernel/traps/info/test
-# ./kernel/time/timer/test_standalone # out for ARCHV > 60 because can't set timer regs
+./kernel/time/timer/test_standalone # out for ARCHV > 60 because can't set timer regs
./kernel/time/timer/test_h2
./kernel/time/timer/test_h2_multi
./kernel/util/atomic/test
@@ -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 9ee93d23a..29115c6cd 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