arm64: convert raw syscall invocation to C
authorMark Rutland <mark.rutland@arm.com>
Wed, 11 Jul 2018 13:56:43 +0000 (14:56 +0100)
committerWill Deacon <will.deacon@arm.com>
Thu, 12 Jul 2018 13:43:09 +0000 (14:43 +0100)
commit4141c857fd09dbed480f021b3eece4f46c653161
tree83da3f6fdfa03d51ef5b371a0604fdc64eb2126b
parent27d83e68f307ee55b70fdfdc7a9ba3f25f276189
arm64: convert raw syscall invocation to C

As a first step towards invoking syscalls with a pt_regs argument,
convert the raw syscall invocation logic to C. We end up with a bit more
register shuffling, but the unified invocation logic means we can unify
the tracing paths, too.

Previously, assembly had to open-code calls to ni_sys() when the system
call number was out-of-bounds for the relevant syscall table. This case
is now handled by invoke_syscall(), and the assembly no longer need to
handle this case explicitly. This allows the tracing paths to be
simplified and unified, as we no longer need the __ni_sys_trace path and
the __sys_trace_return label.

This only converts the invocation of the syscall. The rest of the
syscall triage and tracing is left in assembly for now, and will be
converted in subsequent patches.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/Makefile
arch/arm64/kernel/entry.S
arch/arm64/kernel/syscall.c [new file with mode: 0644]
arch/arm64/kernel/traps.c