summaryrefslogtreecommitdiff
path: root/libc/sysdeps/unix/sysv/linux/ia64/register-dump.h
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/unix/sysv/linux/ia64/register-dump.h')
-rw-r--r--libc/sysdeps/unix/sysv/linux/ia64/register-dump.h182
1 files changed, 0 insertions, 182 deletions
diff --git a/libc/sysdeps/unix/sysv/linux/ia64/register-dump.h b/libc/sysdeps/unix/sysv/linux/ia64/register-dump.h
deleted file mode 100644
index 513db974f..000000000
--- a/libc/sysdeps/unix/sysv/linux/ia64/register-dump.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Dump registers.
- Copyright (C) 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <string.h>
-#include <sys/uio.h>
-#include <stdio-common/_itoa.h>
-
-/* We will print the register dump in this format:
-
- GP: XXXXXXXXXXXXXXXX R2: XXXXXXXXXXXXXXXX R3: XXXXXXXXXXXXXXXX
- R8: XXXXXXXXXXXXXXXX R9: XXXXXXXXXXXXXXXX R10: XXXXXXXXXXXXXXXX
- R11: XXXXXXXXXXXXXXXX SP: XXXXXXXXXXXXXXXX TP: XXXXXXXXXXXXXXXX
- R14: XXXXXXXXXXXXXXXX R15: XXXXXXXXXXXXXXXX R16: XXXXXXXXXXXXXXXX
- R17: XXXXXXXXXXXXXXXX R18: XXXXXXXXXXXXXXXX R19: XXXXXXXXXXXXXXXX
- R20: XXXXXXXXXXXXXXXX R21: XXXXXXXXXXXXXXXX R22: XXXXXXXXXXXXXXXX
- R23: XXXXXXXXXXXXXXXX R24: XXXXXXXXXXXXXXXX R25: XXXXXXXXXXXXXXXX
- R26: XXXXXXXXXXXXXXXX R27: XXXXXXXXXXXXXXXX R28: XXXXXXXXXXXXXXXX
- R29: XXXXXXXXXXXXXXXX R30: XXXXXXXXXXXXXXXX R31: XXXXXXXXXXXXXXXX
-
- RP: XXXXXXXXXXXXXXXX B6: XXXXXXXXXXXXXXXX B7: XXXXXXXXXXXXXXXX
-
- IP: XXXXXXXXXXXXXXXX RSC: XXXXXXXXXXXXXXXX PR: XXXXXXXXXXXXXXXX
- PFS: XXXXXXXXXXXXXXXX UNAT: XXXXXXXXXXXXXXXX CFM: XXXXXXXXXXXXXXXX
- CCV: XXXXXXXXXXXXXXXX FPSR: XXXXXXXXXXXXXXXX
-
- F32: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F33: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- F34: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F35: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-...
- F124: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F125: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- F126: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F127: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- */
-
-static void
-hexvalue (unsigned long int value, char *buf, size_t len)
-{
- char *cp = _itoa_word (value, buf + len, 16, 0);
- while (cp > buf)
- *--cp = '0';
-}
-
-static void
-regvalue (unsigned long int *value, char letter, int regno, char *buf)
-{
- int n = regno >= 100 ? 3 : regno >= 10 ? 2 : 1;
- buf[0] = ' ';
- buf[1] = letter;
- _itoa_word (regno, buf + 2 + n, 10, 0);
- buf[2 + n] = ':';
- for (++n; n <= 4; ++n)
- buf[2 + n] = ' ';
- hexvalue (value[0], buf + 7, 16);
- if (letter == 'F')
- {
- hexvalue (value[1], buf + 7 + 16, 16);
- buf[7 + 32] = '\n';
- }
- else
- buf[7 + 16] = '\n';
-}
-
-static void
-register_dump (int fd, struct sigcontext *ctx)
-{
- char gpregs[32 - 5][8 + 16];
- char fpregs[128 - 32][8 + 32];
- char bpregs[3][8 + 16];
- char spregs[8][16];
- struct iovec iov[146];
- size_t nr = 0;
- int i;
-
-#define ADD_STRING(str) \
- do \
- { \
- iov[nr].iov_base = (char *) str; \
- iov[nr].iov_len = strlen (str); \
- ++nr; \
- } \
- while (0)
-#define ADD_MEM(str, len) \
- do \
- { \
- iov[nr].iov_base = str; \
- iov[nr].iov_len = len; \
- ++nr; \
- } \
- while (0)
-
- /* Generate strings of register contents. */
- for (i = 1; i < 4; ++i)
- {
- regvalue (&ctx->sc_gr[i], 'R', i, gpregs[i - 1]);
- if (ctx->sc_nat & (1L << i))
- memcpy (gpregs[i - 1] + 7, "NaT ", 16);
- }
- for (i = 8; i < 32; ++i)
- {
- regvalue (&ctx->sc_gr[i], 'R', i, gpregs[i - 5]);
- if (ctx->sc_nat & (1L << i))
- memcpy (gpregs[i - 1] + 7, "NaT ", 16);
- }
- memcpy (gpregs[0] + 1, "GP:", 3);
- memcpy (gpregs[7] + 1, "SP: ", 4);
- memcpy (gpregs[8] + 1, "TP: ", 4);
-
- regvalue (&ctx->sc_br[0], 'B', 0, bpregs[0]);
- regvalue (&ctx->sc_br[6], 'B', 6, bpregs[1]);
- regvalue (&ctx->sc_br[7], 'B', 7, bpregs[2]);
- memcpy (bpregs[0] + 1, "RP:", 3);
-
- if (ctx->sc_flags & IA64_SC_FLAG_FPH_VALID)
- for (i = 32; i < 128; ++i)
- regvalue (&ctx->sc_fr[i].u.bits[0], 'F', i, fpregs[i - 32]);
-
- hexvalue (ctx->sc_ip, spregs[0], sizeof (spregs[0]));
- hexvalue (ctx->sc_ar_rsc, spregs[1], sizeof (spregs[1]));
- hexvalue (ctx->sc_pr, spregs[2], sizeof (spregs[2]));
- hexvalue (ctx->sc_ar_pfs, spregs[3], sizeof (spregs[3]));
- hexvalue (ctx->sc_ar_unat, spregs[4], sizeof (spregs[4]));
- hexvalue (ctx->sc_cfm, spregs[5], sizeof (spregs[5]));
- hexvalue (ctx->sc_ar_ccv, spregs[6], sizeof (spregs[6]));
- hexvalue (ctx->sc_ar_fpsr, spregs[7], sizeof (spregs[7]));
-
- /* Generate the output. */
- ADD_STRING ("Register dump:\n\n");
-
- for (i = 0; i < 32 - 5; ++i)
- ADD_MEM (gpregs[i], sizeof (gpregs[0]) - 1 + ((i % 3) == 2));
- ADD_STRING ("\n");
-
- for (i = 0; i < 3; ++i)
- ADD_MEM (bpregs[i], sizeof (bpregs[0]) - 1);
-
- ADD_STRING ("\n\n IP: ");
- ADD_MEM (spregs[0], sizeof (spregs[0]));
- ADD_STRING (" RSC: ");
- ADD_MEM (spregs[1], sizeof (spregs[0]));
- ADD_STRING (" PR: ");
- ADD_MEM (spregs[2], sizeof (spregs[0]));
- ADD_STRING ("\n PFS: ");
- ADD_MEM (spregs[3], sizeof (spregs[0]));
- ADD_STRING (" UNAT: ");
- ADD_MEM (spregs[4], sizeof (spregs[0]));
- ADD_STRING (" CFM: ");
- ADD_MEM (spregs[5], sizeof (spregs[0]));
- ADD_STRING ("\n CCV: ");
- ADD_MEM (spregs[6], sizeof (spregs[0]));
- ADD_STRING (" FPSR: ");
- ADD_MEM (spregs[7], sizeof (spregs[0]));
- ADD_STRING ("\n");
-
- if (ctx->sc_flags & IA64_SC_FLAG_FPH_VALID)
- {
- ADD_STRING ("\n");
-
- for (i = 0; i < 128 - 32; ++i)
- ADD_MEM (fpregs[i], sizeof (fpregs[0]) - 1 + (i & 1));
- }
-
- /* Write the stuff out. */
- writev (fd, iov, nr);
-}
-
-
-#define REGISTER_DUMP register_dump (fd, ctx)