/* * Copyright 2014, General Dynamics C4 Systems * * This software may be distributed and modified according to the terms of * the GNU General Public License version 2. Note that NO WARRANTY is provided. * See "LICENSE_GPLv2.txt" for details. * * @TAG(GD_GPL) */ #include #ifdef CONFIG_DEBUG_BUILD #ifndef __API_DEBUG_H #define __API_DEBUG_H #include #include #include #ifdef CONFIG_PRINTING static inline void debug_printKernelEntryReason(void) { switch (ksKernelEntry.path) { case Entry_Interrupt: printf("Interrupt, irq %lu\n", (unsigned long) ksKernelEntry.word); break; case Entry_UnknownSyscall: printf("Unknown syscall, word: %lu", (unsigned long) ksKernelEntry.word); break; case Entry_VMFault: printf("VM Fault, fault type: %lu\n", (unsigned long) ksKernelEntry.word); break; case Entry_UserLevelFault: printf("User level fault, number: %lu", (unsigned long) ksKernelEntry.word); break; #ifdef CONFIG_HARDWARE_DEBUG_API case Entry_DebugFault: printf("Debug fault. Fault Vaddr: 0x%lx", (unsigned long) ksKernelEntry.word); break; #endif case Entry_Syscall: printf("Syscall, number: %ld, %s\n", (long) ksKernelEntry.syscall_no, syscall_names[ksKernelEntry.syscall_no]); if (ksKernelEntry.syscall_no == SysSend || ksKernelEntry.syscall_no == SysNBSend || ksKernelEntry.syscall_no == SysCall) { printf("Cap type: %lu, Invocation tag: %lu\n", (unsigned long) ksKernelEntry.cap_type, (unsigned long) ksKernelEntry.invocation_tag); } } } #endif /* CONFIG_PRINTING */ #endif /* __API_DEBUG_H */ #endif /* CONFIG_DEBUG_BUILD */