1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (c) 2011 The Chromium OS Authors.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include <efi_loader.h>
9#include <irq_func.h>
10#include <os.h>
11#include <asm/global_data.h>
12#include <asm-generic/signal.h>
13#include <asm/u-boot-sandbox.h>
14
15DECLARE_GLOBAL_DATA_PTR;
16
17int interrupt_init(void)
18{
19	return 0;
20}
21
22void enable_interrupts(void)
23{
24	return;
25}
26int disable_interrupts(void)
27{
28	return 0;
29}
30
31void os_signal_action(int sig, unsigned long pc)
32{
33	efi_restore_gd();
34
35	switch (sig) {
36	case SIGILL:
37		printf("\nIllegal instruction\n");
38		break;
39	case SIGBUS:
40		printf("\nBus error\n");
41		break;
42	case SIGSEGV:
43		printf("\nSegmentation violation\n");
44		break;
45	default:
46		break;
47	}
48	printf("pc = 0x%lx, ", pc);
49	printf("pc_reloc = 0x%lx\n\n", pc - gd->reloc_off);
50	efi_print_image_infos((void *)pc);
51
52	if (IS_ENABLED(CONFIG_SANDBOX_CRASH_RESET)) {
53		printf("resetting ...\n\n");
54		sandbox_reset();
55	} else {
56		sandbox_exit();
57	}
58}
59