exec_target.c 572 B

12345678910111213141516171819202122232425262728
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Part of fork context switch microbenchmark.
  4. *
  5. * Copyright 2018, Anton Blanchard, IBM Corp.
  6. */
  7. #define _GNU_SOURCE
  8. #include <sys/syscall.h>
  9. void _start(void)
  10. {
  11. asm volatile (
  12. "li %%r0, %[sys_exit];"
  13. "li %%r3, 0;"
  14. "sc;"
  15. :
  16. : [sys_exit] "i" (SYS_exit)
  17. /*
  18. * "sc" will clobber r0, r3-r13, cr0, ctr, xer and memory.
  19. * Even though sys_exit never returns, handle clobber
  20. * registers.
  21. */
  22. : "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
  23. "r11", "r12", "r13", "cr0", "ctr", "xer", "memory"
  24. );
  25. }