1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * efi_selftest_miniapp_return 4 * 5 * Copyright (c) 2019 Heinrich Schuchardt 6 * 7 * This EFI application triggers an exception. 8 */ 9 10 #include <efi_api.h> 11 #include <host_arch.h> 12 13 /* 14 * Entry point of the EFI application. 15 * 16 * @handle handle of the loaded image 17 * @systable system table 18 * Return: status code 19 */ efi_main(efi_handle_t handle,struct efi_system_table * systable)20efi_status_t EFIAPI efi_main(efi_handle_t handle, 21 struct efi_system_table *systable) 22 { 23 struct efi_simple_text_output_protocol *con_out = systable->con_out; 24 25 con_out->output_string(con_out, 26 u"EFI application triggers exception.\n"); 27 28 #if defined(CONFIG_ARM) 29 /* 30 * 0xe7f...f. is undefined in ARM mode 31 * 0xde.. is undefined in Thumb mode 32 */ 33 asm volatile (".word 0xe7f7defb\n"); 34 #elif defined(CONFIG_RISCV) 35 asm volatile (".word 0xffffffff\n"); 36 #elif defined(CONFIG_X86) 37 asm volatile (".word 0xffff\n"); 38 #elif defined(CONFIG_SANDBOX) 39 #if (HOST_ARCH == HOST_ARCH_ARM || HOST_ARCH == HOST_ARCH_AARCH64) 40 asm volatile (".word 0xe7f7defb\n"); 41 #elif (HOST_ARCH == HOST_ARCH_RISCV32 || HOST_ARCH == HOST_ARCH_RISCV64) 42 asm volatile (".word 0xffffffff\n"); 43 #elif (HOST_ARCH == HOST_ARCH_X86 || HOST_ARCH == HOST_ARCH_X86_64) 44 asm volatile (".word 0xffff\n"); 45 #endif 46 #endif 47 con_out->output_string(con_out, u"Exception not triggered.\n"); 48 return EFI_ABORTED; 49 } 50