blob: 9c2c60b8c6854ec790cb6d089a685e6ee7780334 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Simon Glassb8605a12011-10-03 19:26:37 +00002/*
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.
Simon Glassb8605a12011-10-03 19:26:37 +00006 */
7
8#include <common.h>
Heinrich Schuchardtb46f30a2020-11-12 00:29:56 +01009#include <efi_loader.h>
Simon Glassc30b7ad2019-11-14 12:57:41 -070010#include <irq_func.h>
Heinrich Schuchardtb46f30a2020-11-12 00:29:56 +010011#include <os.h>
12#include <asm-generic/signal.h>
13#include <asm/u-boot-sandbox.h>
14
15DECLARE_GLOBAL_DATA_PTR;
Simon Glassb8605a12011-10-03 19:26:37 +000016
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}
Heinrich Schuchardtb46f30a2020-11-12 00:29:56 +010030
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}