| // SPDX-License-Identifier: GPL-2.0+ | |
| /* | |
| * Part of fork context switch microbenchmark. | |
| * | |
| * Copyright 2018, Anton Blanchard, IBM Corp. | |
| */ | |
| #define _GNU_SOURCE | |
| #include <sys/syscall.h> | |
| void _start(void) | |
| { | |
| asm volatile ( | |
| "li %%r0, %[sys_exit];" | |
| "li %%r3, 0;" | |
| "sc;" | |
| : | |
| : [sys_exit] "i" (SYS_exit) | |
| /* | |
| * "sc" will clobber r0, r3-r13, cr0, ctr, xer and memory. | |
| * Even though sys_exit never returns, handle clobber | |
| * registers. | |
| */ | |
| : "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", | |
| "r11", "r12", "r13", "cr0", "ctr", "xer", "memory" | |
| ); | |
| } |