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.
The
include/linux/syscalls.h
file provides architecture independent
forward declarations of all kernel system calls. This is the kernel's internal
interface to system call functions.
The
arch/arm/include/uapi/asm/unistd.h
file provides ARM architecture
specific definitions of system call numbers.
The
arch/arm/kernel/entry-common.S
file provides the ARM architecture specific entry point for system calls.
The
arch/arm/tools/syscall.tbl
file
installs system call numbers and associated function addresses into the ARM hardware's system call table.
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.
The
init
directory
contains kernel intialization code.
The
init/main.c
file provides
start_kernel
, which is the first C function that is
executed by the Linux kernel, and once invoked it never returns. Prior to this, the kernel
only runs via architecture specific assembly code and firmware.
Chapter 16 of Linux Device
Drivers has a great introduction to main.c
and start_kernel
.