Пример #1
0
int
Reg(int argc,char *argv[])
{
    ulong   reg;
    int     opt, i, forscript;
    char    *varname, buf[32];

    forscript = 0;
    varname = (char *)0;
    while((opt=getopt(argc,argv,"sv:")) != -1) {
        switch(opt) {
        case 's':
            forscript = 1;
            break;
        case 'v':
            varname = optarg;
            break;
        default:
            return(CMD_PARAM_ERROR);
        }
    }

    if(argc == optind) {
        if(forscript) {
            for(i=0; i<REGTOT; i++) {
                printf("reg %s 0x%lx\n",regnames[i],regtbl[i]);
            }
        } else {
            showregs();
        }
        return(CMD_SUCCESS);
    } else if(argc == optind + 1) {
        if(getreg(argv[optind],&reg) != -1) {
            sprintf(buf,"0x%lx",reg);
            if(varname) {
                setenv(varname,buf);
            } else {
                printf("%s = %s\n",argv[optind],buf);
            }
        }
    } else if(argc == optind + 2) {
        putreg(argv[1],strtol(argv[optind+1],(char **)0,0));
    } else {
        return(CMD_PARAM_ERROR);
    }
    return(CMD_SUCCESS);
}
Пример #2
0
static int command_usb(int argc, char **argv)
{
	if (argc > 1) {
		if (!strcasecmp("on", argv[1]))
			usb_init();
		else if (!strcasecmp("off", argv[1]))
			usb_release();
		else if (!strcasecmp("a", argv[1]))
			select_phy(USB_SEL_PHY0);
		else if (!strcasecmp("b", argv[1]))
			select_phy(USB_SEL_PHY1);
	}

	showregs();
	ccprintf("PHY %c\n", (which_phy == USB_SEL_PHY0 ? 'A' : 'B'));

	return EC_SUCCESS;
}
Пример #3
0
/* exception():
 * This function is called by from vectors_sh3.S when an exception occured.
 * The global variable ExceptionType is also set in vectors_sh3.S.
 * Resume after handling an exception is prepared in vectors_sh3.S but not
 * used so far. Right now exception handling always ends with a restart of
 * uMon.
 */
void
exception(void)
{
	extern	void	coldstart();
	int		vnum;
	char		*vname;
	ulong		pc;

	vnum = (int)(ExceptionType & 0xff);
	getreg("PC",&pc);

	printf("EXCEPTION: #%d ",vnum);
	
	/* Choose text for console output depending on the exception offset. */
	switch(vnum) {
		case 1:	
			vname = "(General exception)";
			break;
		case 2:
			vname = "(TLB miss)";
			break;
		case 3:
			vname = "(Interrupt)";
			break;
		default:
			vname = "(Unknown)";
			break;
	}
	printf("%s @ 0x%lx\n",vname,pc);

	ExceptionAddr = pc;
	showregs();
	intsoff();

	if (pollConsole("coldstart?")) {
		warmstart(APP_EXIT);
	}
	else {
		coldstart();
	}	
}
Пример #4
0
static int command_usb(int argc, char **argv)
{
	int val;

	if (argc > 1) {
		if (!strcasecmp("a", argv[1]))
			usb_select_phy(USB_SEL_PHY0);
		else if (!strcasecmp("b", argv[1]))
			usb_select_phy(USB_SEL_PHY1);
		else if (parse_bool(argv[1], &val)) {
			if (val)
				usb_init();
			else
				usb_release();
		} else
			return EC_ERROR_PARAM1;
	}

	showregs();
	ccprintf("PHY %c\n", (which_phy == USB_SEL_PHY0 ? 'A' : 'B'));

	return EC_SUCCESS;
}
Пример #5
0
int
Strace(int argc,char *argv[])
{
    char	*symfile, fname[64];
    TFILE	*tfp;
    ulong	*framepointer, pc, fp, offset;
    int		tfd, opt, maxdepth, pass, verbose, bullseye;

    tfd = fp = 0;
    maxdepth = 20;
    verbose = 0;
    pc = ExceptionAddr;
    while ((opt=getopt(argc,argv,"d:F:P:rs:v")) != -1) {
        switch(opt) {
        case 'd':
            maxdepth = atoi(optarg);
            break;
        case 'F':
            fp = strtoul(optarg,0,0);
            break;
        case 'P':
            pc = strtoul(optarg,0,0);
            break;
        case 'r':
            showregs();
            break;
        case 'v':
            verbose = 1;
            break;
        default:
            return(0);
        }
    }

    if (!fp)
        getreg("A6", (ulong *)&framepointer);
    else
        framepointer = (ulong *)fp;

    /* Start by detecting the presence of a symbol table file... */
    symfile = getenv("SYMFILE");
    if (!symfile)
        symfile = SYMFILE;

    tfp = tfsstat(symfile);
    if (tfp)  {
        tfd = tfsopen(symfile,TFS_RDONLY,0);
        if (tfd < 0)
            tfp = (TFILE *)0;
    }

    /* Show current position: */
    printf("   0x%08lx",pc);
    if (tfp) {
        AddrToSym(tfd,pc,fname,&offset);
        printf(": %s()",fname);
        if (offset)
            printf(" + 0x%lx",offset);
    }
    putchar('\n');

    /* Now step through the stack frame... */
    bullseye = pass = 0;
    while(maxdepth) {
        /* ADD_CODE_HERE */
    }

    if (!maxdepth)
        printf("Max depth termination\n");

    if (tfp) {
        tfsclose(tfd,0);
    }
    return(0);
}