xref: /aosp_15_r20/external/strace/linux/powerpc64/get_scno.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker /* Return codes: 1 - ok, 0 - ignore, other - error. */
2*cf84ac9aSAndroid Build Coastguard Worker static int
arch_get_scno(struct tcb * tcp)3*cf84ac9aSAndroid Build Coastguard Worker arch_get_scno(struct tcb *tcp)
4*cf84ac9aSAndroid Build Coastguard Worker {
5*cf84ac9aSAndroid Build Coastguard Worker 	tcp->scno = ppc_regs.gpr[0];
6*cf84ac9aSAndroid Build Coastguard Worker 	/*
7*cf84ac9aSAndroid Build Coastguard Worker 	 * Check for 64/32 bit mode.
8*cf84ac9aSAndroid Build Coastguard Worker 	 * Embedded implementations covered by Book E extension of PPC use
9*cf84ac9aSAndroid Build Coastguard Worker 	 * bit 0 (CM) of 32-bit Machine state register (MSR).
10*cf84ac9aSAndroid Build Coastguard Worker 	 * Other implementations use bit 0 (SF) of 64-bit MSR.
11*cf84ac9aSAndroid Build Coastguard Worker 	 */
12*cf84ac9aSAndroid Build Coastguard Worker 	unsigned int currpers = (ppc_regs.msr & 0x8000000080000000) ? 0 : 1;
13*cf84ac9aSAndroid Build Coastguard Worker 	update_personality(tcp, currpers);
14*cf84ac9aSAndroid Build Coastguard Worker 	return 1;
15*cf84ac9aSAndroid Build Coastguard Worker }
16