These are some of the files essential to system calls on the ARM architecture. System calls are very dependent on architecture, both in how they are invoked as well as what calls are available to be made.
include/linux/syscalls.h - Architecture independent forward declaration of all kernel system calls. This is the kernel's internal interface to system call functions.
arch/arm/include/uapi/asm/unistd.h - Architecture dependent definition of system call numbers.
arch/arm/kernel/calls.S - Assembly language definition
of the system call table size (see CALL(x)
macro in /arch/arm/kernel/entry_common.S)
The following files don't actually pertain to system calls, but to system boot- one of the few other ways that the kernel can execute.
init/ - Kernel intialization code
init/main.c - This file sounds important, huh? The
function start_kernel(void)
is the first C function that is
executed by the Linux kernel, and it never returns. Prior to this, the kernel
only exists as architecture dependent assembly code and firmware.
Chapter 16 of Linux Device
Drivers has a great introduction to main.c and start_kernel
.