- /* pages 40 - 60 */
- switch (regno)
- {
-#ifdef GDB_TARGET_IS_SPARC64
- case CCR_REGNUM :
- printf_unfiltered("\t");
- dump_ccreg ("xcc", val >> 4);
- printf_unfiltered(", ");
- dump_ccreg ("icc", val & 15);
- break;
- case FPRS_REGNUM :
- printf ("\tfef:%d, du:%d, dl:%d",
- BITS (2, 1), BITS (1, 1), BITS (0, 1));
- break;
- case FSR_REGNUM :
- {
- static char *fcc[4] = { "=", "<", ">", "?" };
- static char *rd[4] = { "N", "0", "+", "-" };
- /* Long, yes, but I'd rather leave it as is and use a wide screen. */
- printf ("\t0:%s, 1:%s, 2:%s, 3:%s, rd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, aexc:%d, cexc:%d",
- fcc[BITS (10, 3)], fcc[BITS (32, 3)],
- fcc[BITS (34, 3)], fcc[BITS (36, 3)],
- rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7),
- BITS (14, 7), BITS (13, 1), BITS (5, 31), BITS (0, 31));
- break;
- }
- case ASI_REGNUM :
- {
- char *asi = decode_asi (val);
- if (asi != NULL)
- printf ("\t%s", asi);
- break;
- }
- case VER_REGNUM :
- printf ("\tmanuf:%d, impl:%d, mask:%d, maxtl:%d, maxwin:%d",
- BITS (48, 0xffff), BITS (32, 0xffff),
- BITS (24, 0xff), BITS (8, 0xff), BITS (0, 31));
- break;
- case PSTATE_REGNUM :
- {
- static char *mm[4] = { "tso", "pso", "rso", "?" };
- printf ("\tcle:%d, tle:%d, mm:%s, red:%d, pef:%d, am:%d, priv:%d, ie:%d, ag:%d",
- BITS (9, 1), BITS (8, 1), mm[BITS (6, 3)], BITS (5, 1),
- BITS (4, 1), BITS (3, 1), BITS (2, 1), BITS (1, 1),
- BITS (0, 1));
- break;
- }
- case TSTATE_REGNUM :
- /* FIXME: print all 4? */
- break;
- case TT_REGNUM :
- /* FIXME: print all 4? */
- break;
- case TPC_REGNUM :
- /* FIXME: print all 4? */
- break;
- case TNPC_REGNUM :
- /* FIXME: print all 4? */
- break;
- case WSTATE_REGNUM :
- printf ("\tother:%d, normal:%d", BITS (3, 7), BITS (0, 7));
- break;
- case CWP_REGNUM :
- printf ("\t%d", BITS (0, 31));
- break;
- case CANSAVE_REGNUM :
- printf ("\t%-2d before spill", BITS (0, 31));
- break;
- case CANRESTORE_REGNUM :
- printf ("\t%-2d before fill", BITS (0, 31));
- break;
- case CLEANWIN_REGNUM :
- printf ("\t%-2d before clean", BITS (0, 31));
- break;
- case OTHERWIN_REGNUM :
- printf ("\t%d", BITS (0, 31));
- break;
-#else
- case PS_REGNUM:
- printf ("\ticc:%c%c%c%c, pil:%d, s:%d, ps:%d, et:%d, cwp:%d",
- BITS (23, 1) ? 'N' : '-', BITS (22, 1) ? 'Z' : '-',
- BITS (21, 1) ? 'V' : '-', BITS (20, 1) ? 'C' : '-',
- BITS (8, 15), BITS (7, 1), BITS (6, 1), BITS (5, 1),
- BITS (0, 31));
- break;
- case FPS_REGNUM:
- {
- static char *fcc[4] = { "=", "<", ">", "?" };
- static char *rd[4] = { "N", "0", "+", "-" };
- /* Long, yes, but I'd rather leave it as is and use a wide screen. */
- printf ("\trd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, "
- "fcc:%s, aexc:%d, cexc:%d",
- rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7),
- BITS (14, 7), BITS (13, 1), fcc[BITS (10, 3)], BITS (5, 31),
- BITS (0, 31));
- break;
- }