blob: 3f6583e11f049fa152a1e624f85bf2c6b59b052c [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Simon Glassca96f652011-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 Glassca96f652011-10-03 19:26:37 +00006 */
7
Heinrich Schuchardt28eb5092020-11-12 00:29:56 +01008#include <efi_loader.h>
Simon Glass9b61c7c2019-11-14 12:57:41 -07009#include <irq_func.h>
Heinrich Schuchardt28eb5092020-11-12 00:29:56 +010010#include <os.h>
Simon Glass3ba929a2020-10-30 21:38:53 -060011#include <asm/global_data.h>
Heinrich Schuchardt28eb5092020-11-12 00:29:56 +010012#include <asm-generic/signal.h>
13#include <asm/u-boot-sandbox.h>
14
15DECLARE_GLOBAL_DATA_PTR;
Simon Glassca96f652011-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 Schuchardt28eb5092020-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}