]>
git.ipfire.org Git - thirdparty/glibc.git/blob - sysdeps/unix/sysv/linux/riscv/register-dump.h
2 Copyright (C) 2000-2022 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
24 hexvalue (unsigned long int value
, char *buf
, size_t len
)
26 char *cp
= _itoa_word (value
, buf
+ len
, 16, 0);
31 #define REGDUMP_NREGS 32
32 #define REGDUMP_PER_LINE (80 / (__WORDSIZE / 4 + 4))
35 register_dump (int fd
, ucontext_t
*ctx
)
38 char regvalue
[__WORDSIZE
/ 4 + 1];
39 char str
[82 * ((REGDUMP_NREGS
+ REGDUMP_PER_LINE
- 1) / REGDUMP_PER_LINE
)];
41 static const char names
[REGDUMP_NREGS
][4] = {
42 "pc", "ra", "sp", "gp", "tp", "t0", "t1", "t2",
43 "s0", "s1", "a0", "a1", "a2", "a3", "a4", "a5",
44 "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7",
45 "s8", "s9", "sA", "sB", "t3", "t4", "t5", "t6"
49 for (i
= 0; i
< REGDUMP_NREGS
; i
++)
51 strcat (str
, names
[i
]);
53 hexvalue (ctx
->uc_mcontext
.__gregs
[i
], regvalue
, __WORDSIZE
/ 4);
54 strcat (str
, regvalue
);
56 if ((i
+ 1) % REGDUMP_PER_LINE
== 0)
60 write (fd
, str
, strlen (str
));
63 #define REGISTER_DUMP register_dump (fd, ctx)