1 /*
2 * Copyright (c) 2021 The strace developers.
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7
8 static void
9 arch_decode_prstatus_regset(struct tcb *const tcp,
10 const kernel_ulong_t addr,
11 const kernel_ulong_t size)
12 {
13 struct_prstatus_regset regs;
14 const size_t fetch_size = MIN(sizeof(regs), size);
15
16 if (!size || size & 3) {
17 printaddr(addr);
18 } else if (!umoven_or_printaddr(tcp, addr, fetch_size, ®s)) {
19 tprint_struct_begin();
20 PRINT_FIELD_ARRAY_UPTO(regs, uregs,
21 fetch_size / 4, tcp,
22 print_xint_array_member);
23 if (size > sizeof(regs)) {
24 tprint_struct_next();
25 tprint_more_data_follows();
26 }
27 tprint_struct_end();
28 }
29 }