Merge tag 'xilinx-for-v2021.04-rc3' of https://gitlab.denx.de/u-boot/custodians/u...
[platform/kernel/u-boot.git] / arch / sandbox / lib / interrupts.c
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 <common.h>
9 #include <efi_loader.h>
10 #include <irq_func.h>
11 #include <os.h>
12 #include <asm/global_data.h>
13 #include <asm-generic/signal.h>
14 #include <asm/u-boot-sandbox.h>
15
16 DECLARE_GLOBAL_DATA_PTR;
17
18 int interrupt_init(void)
19 {
20         return 0;
21 }
22
23 void enable_interrupts(void)
24 {
25         return;
26 }
27 int disable_interrupts(void)
28 {
29         return 0;
30 }
31
32 void os_signal_action(int sig, unsigned long pc)
33 {
34         efi_restore_gd();
35
36         switch (sig) {
37         case SIGILL:
38                 printf("\nIllegal instruction\n");
39                 break;
40         case SIGBUS:
41                 printf("\nBus error\n");
42                 break;
43         case SIGSEGV:
44                 printf("\nSegmentation violation\n");
45                 break;
46         default:
47                 break;
48         }
49         printf("pc = 0x%lx, ", pc);
50         printf("pc_reloc = 0x%lx\n\n", pc - gd->reloc_off);
51         efi_print_image_infos((void *)pc);
52
53         if (IS_ENABLED(CONFIG_SANDBOX_CRASH_RESET)) {
54                 printf("resetting ...\n\n");
55                 sandbox_reset();
56         } else {
57                 sandbox_exit();
58         }
59 }