blob: af98716db19629fce234118702a9dd52d121f97a [file]
/*
* Copyright 2019, 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>
void show_unknown_syscall_fault(seL4_CPtr thread_id, const char *name)
{
assert(name != NULL);
uintptr_t pc = seL4_GetMR(0);
uintptr_t sp = seL4_GetMR(1);
uintptr_t lr = seL4_GetMR(2);
uintptr_t a0 = seL4_GetMR(3);
uintptr_t a1 = seL4_GetMR(4);
uintptr_t a2 = seL4_GetMR(5);
uintptr_t a3 = seL4_GetMR(6);
uintptr_t a4 = seL4_GetMR(7);
uintptr_t a5 = seL4_GetMR(8);
uintptr_t a6 = seL4_GetMR(9);
int syscall = seL4_GetMR(10);
SHOW("unknown syscall (%d) from %s (ID 0x%x), pc = %p\n"
" a0 = %p\n"
" a1 = %p\n"
" a2 = %p\n"
" a3 = %p\n"
" a4 = %p\n"
" a5 = %p\n"
" a6 = %p\n"
" sp = %p\n"
" lr = %p\n",
syscall, name, thread_id, (void *)pc, (void *)a0, (void *)a1, (void *)a2,
(void *)a3, (void *)a4, (void *)a5, (void *)a6, (void *)sp,
(void *)lr);
}