/*
 * code to keep track of registers
 */

#include "defs.h"
#include "fns.h"

/*
 * print the registers
 */
void
printregs(int c)
{
	Regdesc *rp;
	int i;
	ADDR u;

	if(correg == nil){
		dprint("registers not mapped\n");
		return;
	}

	for (i = 1, rp = mach->reglist; rp->name; rp++, i++) {
		if ((rp->flags & RFLT)) {
			if (c != 'R')
				continue;
			if (rp->format == '8' || rp->format == '3')
				continue;
		}
		rget(correg, rp->name, &u);
		if(rp->format == 'Y')
			dprint("%-8s %-20#llux", rp->name, (uvlong)u);
		else
			dprint("%-8s %-12#lux", rp->name, (ulong)u);
		if ((i % 3) == 0) {
			dprint("\n");
			i = 0;
		}
	}
	if (i != 1)
		dprint("\n");
	dprint ("%s\n", mach->exc(cormap, correg));
	printpc();
}