DESTDIR ?= $(ROOT)/dist/
CC = gcc
-ALL_ENVIRONMENTS := pv64 pv32pae hvm64 hvm32pae
+ALL_ENVIRONMENTS := pv64 pv32pae hvm64 hvm32pae hvm32
PV_ENVIRONMENTS := $(filter pv%,$(ALL_ENVIRONMENTS))
HVM_ENVIRONMENTS := $(filter hvm%,$(ALL_ENVIRONMENTS))
pv32pae_arch := x86_32
hvm64_arch := x86_64
hvm32pae_arch := x86_32
+hvm32_arch := x86_32
COMMON_FLAGS := -pipe -I$(ROOT)/include -MMD -MP
head-pv32pae := $(ROOT)/arch/x86/boot/head_pv32pae.o
head-hvm64 := $(ROOT)/arch/x86/boot/head_hvm64.o
head-hvm32pae := $(ROOT)/arch/x86/boot/head_hvm32pae.o
+head-hvm32 := $(ROOT)/arch/x86/boot/head_hvm32.o
defcfg-pv := $(ROOT)/config/default-pv.cfg.in
defcfg-hvm := $(ROOT)/config/default-hvm.cfg.in
defcfg-pv32pae := $(defcfg-pv)
defcfg-hvm64 := $(defcfg-hvm)
defcfg-hvm32pae := $(defcfg-hvm)
+defcfg-hvm32 := $(defcfg-hvm)
obj-perarch :=
obj-perenv :=
:-----------|:------|:------|:---------
`pv32pae` | PV | 32bit | PAE
`pv64` | PV | 64bit | Long mode
+`hvm32` | HVM | 32bit | None
`hvm32pae` | HVM | 32bit | PAE
`hvm64` | HVM | 64bit | Long mode
-@todo Possibly implement `hvm32`, `hvm32pg`, `hvm32pse` and `hvm16`.
+@todo Possibly implement `hvm32pg`, `hvm32pse` and `hvm16`.
@section getting-started Getting Started
#undef CONFIG_ENV_hvm32pae
+#elif defined(CONFIG_ENV_hvm32)
+
+#define CONFIG_HVM
+#define CONFIG_PAGING_LEVELS 0
+#define ENVIRONMENT_DESCRIPTION "HVM 32bit (No paging)"
+
+#undef CONFIG_ENV_hvm32
+
#else
# error Bad environment
#endif
}
}
+#ifdef CONFIG_PAGING
static void test_NULL_unmapped(void)
{
extern unsigned long label_test_NULL_unmapped[];
xtf_exlog_stop();
}
+#endif
static bool local_unhandled_exception_hook(struct cpu_regs *regs)
{
test_extable();
test_exlog();
test_exec_user();
+#ifdef CONFIG_PAGING
test_NULL_unmapped();
+#endif
test_unhandled_exception_hook();
xtf_success();