xref: /aosp_15_r20/external/strace/linux/x86_64/set_scno.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker #ifndef HAVE_GETREGS_OLD
2*cf84ac9aSAndroid Build Coastguard Worker # define arch_set_scno i386_set_scno
3*cf84ac9aSAndroid Build Coastguard Worker # include "i386/set_scno.c"
4*cf84ac9aSAndroid Build Coastguard Worker # undef arch_set_scno
5*cf84ac9aSAndroid Build Coastguard Worker #endif /* !HAVE_GETREGS_OLD */
6*cf84ac9aSAndroid Build Coastguard Worker 
7*cf84ac9aSAndroid Build Coastguard Worker static int
arch_set_scno(struct tcb * tcp,kernel_ulong_t scno)8*cf84ac9aSAndroid Build Coastguard Worker arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
9*cf84ac9aSAndroid Build Coastguard Worker {
10*cf84ac9aSAndroid Build Coastguard Worker #ifdef HAVE_GETREGS_OLD
11*cf84ac9aSAndroid Build Coastguard Worker 	return upoke(tcp, 8 * ORIG_RAX, scno);
12*cf84ac9aSAndroid Build Coastguard Worker #else
13*cf84ac9aSAndroid Build Coastguard Worker 	if (x86_io.iov_len == sizeof(i386_regs))
14*cf84ac9aSAndroid Build Coastguard Worker 		return i386_set_scno(tcp, scno);
15*cf84ac9aSAndroid Build Coastguard Worker 
16*cf84ac9aSAndroid Build Coastguard Worker 	x86_64_regs.orig_rax = scno;
17*cf84ac9aSAndroid Build Coastguard Worker 	return set_regs(tcp->pid);
18*cf84ac9aSAndroid Build Coastguard Worker #endif
19*cf84ac9aSAndroid Build Coastguard Worker }
20