1 // Copyright 2016 The Fuchsia Authors
2 // Copyright (c) 2012 Google, Inc.
3 //
4 // Use of this source code is governed by a MIT-style
5 // license that can be found in the LICENSE file or at
6 // https://opensource.org/licenses/MIT
7 
8 #include <debug.h>
9 #include <err.h>
10 #include <kernel/thread.h>
11 #include <lib/console.h>
12 #include <platform.h>
13 #include <platform/debug.h>
14 #include <stdio.h>
15 #include <zircon/compiler.h>
16 
17 /*
18  * default implementations of these routines, if the platform code
19  * chooses not to implement.
20  */
platform_halt(platform_halt_action suggested_action,platform_halt_reason reason)21 __WEAK void platform_halt(platform_halt_action suggested_action,
22                           platform_halt_reason reason) {
23 
24     thread_print_current_backtrace();
25 
26 #if ENABLE_PANIC_SHELL
27     if (reason == HALT_REASON_SW_PANIC) {
28         dprintf(ALWAYS, "CRASH: starting debug shell... (reason = %d)\n", reason);
29         arch_disable_ints();
30         panic_shell_start();
31     }
32 #endif // ENABLE_PANIC_SHELL
33 
34     dprintf(ALWAYS, "HALT: spinning forever... (reason = %d)\n", reason);
35     arch_disable_ints();
36     for (;;) {
37     }
38 }
39 
platform_halt_cpu()40 __WEAK void platform_halt_cpu() {
41 }
42 
platform_halt_secondary_cpus()43 __WEAK void platform_halt_secondary_cpus() {
44     PANIC_UNIMPLEMENTED;
45 }
46