xref: /openbsd-src/regress/sys/kern/syscall_segment/gadgetsyscall.h (revision 38cbe5262444b4bfbdf37fa3b830ae4f35b687c4)
1*38cbe526Skettenis /*	$OpenBSD: gadgetsyscall.h,v 1.2 2020/10/20 14:40:00 kettenis Exp $	*/
2274d7c50Smortimer 
gadget_getpid()3274d7c50Smortimer pid_t gadget_getpid() {
4274d7c50Smortimer 	pid_t ans = 0;
5*38cbe526Skettenis #if defined(__aarch64__)
6*38cbe526Skettenis 	asm("ldr x8, #0x14; svc 0; dsb nsh; isb; mov %w0, w0" : "=r"(ans) :: "x0", "x8");
7*38cbe526Skettenis #elif defined(__amd64__)
8274d7c50Smortimer 	asm("mov $0x14, %%eax; syscall; mov %%eax, %0;" :"=r"(ans)::"%eax", "%ecx", "%r11");
9274d7c50Smortimer #endif
10274d7c50Smortimer 	return ans;
11274d7c50Smortimer }
12