1/*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#include <config.h>
8#include <mode/machine.h>
9#include <api/debug.h>
10
11void idle_thread(void)
12{
13    while (1) {
14        wfi();
15    }
16}
17
18/** DONT_TRANSLATE */
19void NORETURN NO_INLINE VISIBLE halt(void)
20{
21    /* halt is actually, idle thread without the interrupts */
22    MSR("daif", (DAIF_DEBUG | DAIF_SERROR | DAIF_IRQ | DAIF_FIRQ));
23
24#ifdef CONFIG_PRINTING
25    printf("halting...");
26#ifdef CONFIG_DEBUG_BUILD
27    debug_printKernelEntryReason();
28#endif
29#endif
30    idle_thread();
31    UNREACHABLE();
32}
33