blob: 02d9f9a58affb8143f72d8261ff2c7fdad719a43 [file]
/*
* Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "../../arch_fault.h"
#include <assert.h>
#include <sel4/sel4.h>
#include <stddef.h>
#include <stdint.h>
#include <inttypes.h>
void show_unknown_syscall_fault(seL4_CPtr thread_id, const char *name)
{
assert(name != NULL);
uintptr_t x0 = seL4_GetMR(0);
uintptr_t x1 = seL4_GetMR(1);
uintptr_t x2 = seL4_GetMR(2);
uintptr_t x3 = seL4_GetMR(3);
uintptr_t x4 = seL4_GetMR(4);
uintptr_t x5 = seL4_GetMR(5);
uintptr_t x6 = seL4_GetMR(6);
uintptr_t x7 = seL4_GetMR(7);
uintptr_t pc = seL4_GetMR(8);
uintptr_t sp = seL4_GetMR(9);
uintptr_t lr = seL4_GetMR(10);
uintptr_t spsr = seL4_GetMR(11);
int syscall = seL4_GetMR(12);
SHOW("unknown syscall (%d) from %s (ID 0x%"PRIxPTR"), pc = %p\n"
" x0 = %p\n"
" x1 = %p\n"
" x2 = %p\n"
" x3 = %p\n"
" x4 = %p\n"
" x5 = %p\n"
" x6 = %p\n"
" x7 = %p\n"
" sp = %p\n"
" lr = %p\n"
" spsr = %p\n",
syscall, name, thread_id, (void *)pc, (void *)x0, (void *)x1, (void *)x2,
(void *)x3, (void *)x4, (void *)x5, (void *)x6, (void *)x7, (void *)sp,
(void *)lr, (void *)spsr);
}