summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Tests/Kernel/crash.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/Tests/Kernel/crash.cpp b/Tests/Kernel/crash.cpp
index 5e8ce5b2c5..71eecc07aa 100644
--- a/Tests/Kernel/crash.cpp
+++ b/Tests/Kernel/crash.cpp
@@ -8,7 +8,9 @@
#include <AK/Assertions.h>
#include <AK/Function.h>
#include <AK/String.h>
-#include <Kernel/Arch/x86/IO.h>
+#if ARCH(I386) || ARCH(X86_64)
+# include <Kernel/Arch/x86/IO.h>
+#endif
#include <LibCore/ArgsParser.h>
#include <LibCore/Object.h>
#include <LibTest/CrashTest.h>
@@ -45,7 +47,9 @@ int main(int argc, char** argv)
bool do_legitimate_syscall = false;
bool do_execute_non_executable_memory = false;
bool do_trigger_user_mode_instruction_prevention = false;
+#if ARCH(I386) || ARCH(X86_64)
bool do_use_io_instruction = false;
+#endif
bool do_pledge_violation = false;
bool do_failing_assertion = false;
bool do_deref_null_refptr = false;
@@ -70,7 +74,9 @@ int main(int argc, char** argv)
args_parser.add_option(do_legitimate_syscall, "Make a syscall from legitimate memory (but outside msyscall)", nullptr, 'y');
args_parser.add_option(do_execute_non_executable_memory, "Attempt to execute non-executable memory (not mapped with PROT_EXEC)", nullptr, 'X');
args_parser.add_option(do_trigger_user_mode_instruction_prevention, "Attempt to trigger an x86 User Mode Instruction Prevention fault. WARNING: This test runs only when invoked manually, see #10042.", nullptr, 'U');
+#if ARCH(I386) || ARCH(X86_64)
args_parser.add_option(do_use_io_instruction, "Use an x86 I/O instruction in userspace", nullptr, 'I');
+#endif
args_parser.add_option(do_pledge_violation, "Violate pledge()'d promises", nullptr, 'p');
args_parser.add_option(do_failing_assertion, "Perform a failing assertion", nullptr, 'n');
args_parser.add_option(do_deref_null_refptr, "Dereference a null RefPtr", nullptr, 'R');
@@ -266,6 +272,7 @@ int main(int argc, char** argv)
}).run(run_type);
}
+#if ARCH(I386) || ARCH(X86_64)
if (do_use_io_instruction || do_all_crash_types) {
any_failures |= !Crash("Attempt to use an I/O instruction", [] {
u8 keyboard_status = IO::in8(0x64);
@@ -273,6 +280,7 @@ int main(int argc, char** argv)
return Crash::Failure::DidNotCrash;
}).run(run_type);
}
+#endif
if (do_pledge_violation || do_all_crash_types) {
any_failures |= !Crash("Violate pledge()'d promises", [] {