📄 ruaxrpc.c
字号:
goto runit; } } if (argc==4) { if (strcmp(argv[1],"-xkill")==0) { RMuint32 arg; pB->xrpcid=XRPC_ID_XKILL; RMasciiToUInt32(argv[2],&arg); pB->param0=arg; RMasciiToUInt32(argv[3],&arg); pB->param1=arg; goto runit; } if (strcmp(argv[1],"-ustart")==0) { RMuint32 arg; pB->xrpcid=XRPC_ID_XSTART; RMasciiToUInt32(argv[2],&arg); pB->param0=arg+UCODE_ONES; RMasciiToUInt32(argv[3],&arg); pB->param1=arg; goto runit; } if (strcmp(argv[1],"-ukill")==0) { RMuint32 arg; pB->xrpcid=XRPC_ID_XKILL; RMasciiToUInt32(argv[2],&arg); pB->param0=arg+UCODE_ONES; RMasciiToUInt32(argv[3],&arg); pB->param1=arg; goto runit; } } else if (argc==5) { if (strcmp(argv[1],"-xunload")==0) { RMuint32 arg; RMuint32 size; if((size=gbus_write_file( (RMuint8 *)(pB+1), argv[4]))<0) goto wayout; pB->xrpcid=XRPC_ID_XUNLOAD; RMasciiToUInt32(argv[2],&arg); pB->param1=arg; RMasciiToUInt32(argv[3],&arg); pB->param0=arg; pB->headerandblocksize=sizeof(struct xrpc_block_header)+size; goto runit; } } else if (argc==7) { if (strcmp(argv[1],"-xstart")==0) { RMuint32 arg; pB->xrpcid=XRPC_ID_XSTART; RMasciiToUInt32(argv[2],&arg); pB->param0=arg; RMasciiToUInt32(argv[3],&arg); pB->param1=arg; RMasciiToUInt32(argv[4],&arg); pB->param2=arg; RMasciiToUInt32(argv[5],&arg); pB->param3=arg; RMasciiToUInt32(argv[6],&arg); pB->param4=arg; goto runit; } if (strcmp(argv[1],"-e")==0) { RMuint32 arg; pB->xrpcid=XRPC_ID_SETENHANCEDMODE; RMasciiToUInt32(argv[2],&arg); pB->param0=arg; /* it is ignored (xos<=Me0) 2007jan16 e.m. */ RMasciiToUInt32(argv[3],&arg); pB->param1=arg; RMasciiToUInt32(argv[4],&arg); pB->param2=arg; RMasciiToUInt32(argv[5],&arg); pB->param3=arg; RMasciiToUInt32(argv[6],&arg); pB->param4=arg; goto runit; } } else { if (strcmp(argv[1],"-v")==0) { pB->xrpcid=XRPC_ID_SHA1XOS; if ((RMSUCCEEDED(rc=RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0)))) { printf("xos SHA-1 = %08lx%08lx%08lx%08lx%08lx\n", pB->param4, pB->param3, pB->param2, pB->param1, pB->param0); } else fprintf(stderr,"xrpc failed\n"); goto wayout; } if (strcmp(argv[1],"-V")==0) { pB->xrpcid=XRPC_ID_VERSION; if ((RMSUCCEEDED(rc=RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0)))) { printf("xos Version = %08lx (xos%c%lx)\n", pB->param0, (RMascii)(pB->param0>>24), pB->param0&0xFFFFFF); } else fprintf(stderr,"xrpc failed\n"); goto wayout; } if (strcmp(argv[1],"-s")==0) { pB->xrpcid=XRPC_ID_GETSERIAL; if ((RMSUCCEEDED(rc=RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0)))) { printf("serial# = %08lx%08lx%08lx%08lx\n", pB->param3, pB->param2, pB->param1, pB->param0); } else fprintf(stderr,"xrpc failed\n"); goto wayout; } if (strcmp(argv[1],"-d")==0) { RMuint32 last; pB->xrpcid=XRPC_ID_GETPROTECTION; /* in this dump, the first match is to be understood as the good match. Also: http://mordred/web/bugzilla/show_bug.cgi?id=55 */ printf("\n"); #undef DO#define DO(i,j) \ do { \ RMuint32 cur; \ \ pB->param1=REG_BASE_dram_controller_ ##i+dc_mem_access_ ##j; \ RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0); \ cur=(pB->param0&(ac_D1w-1))<<12; \ if (cur==0) { \ printf("(%d) [0x%08lx,... [ is",j,last); \ printprot(pB->param0); \ } \ else { \ cur+=MEM_BASE_dram_controller_ ##i; \ printf("(%d) [0x%08lx,0x%08lx[ (%9lu bytes) is",j,last,cur,cur-last); \ printprot(pB->param0); \ last=cur; \ } \ } while (0) printf("DRAM0 data\n"); last=MEM_BASE_dram_controller_0; DO(0,0); DO(0,1); DO(0,2); DO(0,3); DO(0,4); DO(0,5); printf("DRAM1 data\n"); last=MEM_BASE_dram_controller_1; DO(1,0); DO(1,1); DO(1,2); DO(1,3); DO(1,4); DO(1,5); #undef DO#define DO(i,j) \ do { \ RMuint32 cur; \ \ pB->param1=REG_BASE_ ##i+dc_mem_access_ ##j; \ RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0); \ cur=pB->param0&(ac_D1w-1); \ if (cur==0) { \ printf("(%d) [0x%08lx,... [ is",j,last); \ printprot(pB->param0); \ } \ else { \ cur+=PMEM_BASE_ ##i; \ printf("(%d) [0x%08lx,0x%08lx[ (%9lu bytes) is",j,last,cur,cur-last); \ printprot(pB->param0); \ last=cur; \ } \ } while (0)#undef DO2#define DO2(x) \ do { \ printf(#x " data\n"); \ last=PMEM_BASE_ ##x; \ DO(x,0); \ DO(x,1); \ DO(x,2); \ DO(x,3); \ } while (0) DO2(mpeg_engine_0); DO2(mpeg_engine_1); DO2(audio_engine_0); DO2(audio_engine_1); DO2(demux_engine); DO2(xpu_block); printf("\n");#undef DO#define DO(i,j) \ do { \ RMuint32 cur; \ \ pB->param1=REG_BASE_ ##i+dc_reg_access_ ##j; \ RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0); \ cur=pB->param0&(ac_D1w-1); \ if (cur==0) { \ printf("(%d) [0x%08lx,... [ is",j,last); \ printprot(pB->param0); \ } \ else { \ cur+=REG_BASE_ ##i; \ printf("(%d) [0x%08lx,0x%08lx[ is",j,last,cur); \ printprot(pB->param0); \ last=cur; \ } \ } while (0)#undef DO2#define DO2(x) \ do { \ printf(#x " regs\n"); \ last=REG_BASE_ ##x; \ DO(x,0); \ DO(x,1); \ DO(x,2); \ } while (0) DO2(dram_controller_0); DO2(dram_controller_1);#undef DO2#define DO2(x) \ do { \ printf(#x " regs\n"); \ last=REG_BASE_ ##x; \ DO(x,0); \ DO(x,1); \ } while (0) DO2(mpeg_engine_0); DO2(mpeg_engine_1); DO2(audio_engine_0); DO2(audio_engine_1); DO2(demux_engine);#undef DO2#define DO2(x) \ do { \ printf(#x " regs\n"); \ last=REG_BASE_ ##x; \ DO(x,0); \ DO(x,1); \ DO(x,2); \ DO(x,3); \ DO(x,4); \ } while (0) DO2(display_block); DO2(xpu_block); printf("\n"); goto wayout; } if (strcmp(argv[1],"-r")==0) {#if (EM86XX_MODE == EM86XX_MODEID_STANDALONE) printf("reboot...\n"); pB->xrpcid=XRPC_ID_REBOOT; goto runit;#else printf("withhost mode : cannot reboot while em8xxx.o is loaded\n" " unload em8xxx.o first, and use xrpc -r instead of ruaxrpc -r\n");#endif } if (strcmp(argv[1],"-bc")==0) { printf("Bonding Comment\n"); pB->xrpcid=XRPC_ID_BONDINGCOMMENT; pB->param0=0; pB->param1=0; pB->param2=0; pB->param3=0; pB->param4=0; pB->headerandblocksize=sizeof(struct xrpc_block_header); goto runit; } if (strcmp(argv[1],"-c")==0) { printf("cache dump... (use xboot/gen/cacha,v scripts)\n"); pB->xrpcid=XRPC_ID_CACHEDUMP; goto runit; } if (strcmp(argv[1],"-P")==0) { printf("pbusopen...\n"); memcpy(base_addr,xrpc_xload_pbusopen,sizeof(xrpc_xload_pbusopen)); goto runit; } if (strcmp(argv[1],"-F")==0) { printf("formatall...\n"); memcpy(base_addr,xrpc_xload_formatall,sizeof(xrpc_xload_formatall)); goto runit; } } } fprintf(stderr,"inconsistent command line\n"); goto wayout; runit: if ((RMSUCCEEDED(rc=RUASetProperty(pR, XPUBlock, RMXPUBlockPropertyID_DoXrpc, &p0, sizeof(RMuint32), 0)))) { printf("xrpc succeeded\n"); } else { fprintf(stderr, "xrpc failed (%d) --- if a xtask is using a cipher or if you reboot\n" " --- xrpc will fail with RM_BUSY\n", rc); } printf("output = %08lx%08lx%08lx%08lx%08lx\n", pB->param4, pB->param3, pB->param2, pB->param1, pB->param0); wayout: RUAUnMap(pR,base_addr,XRPC_ALLOC_SIZE-16); RUAUnLock(pR,p0,XRPC_ALLOC_SIZE-16); RUAFree(pR,p); wayout2: {} }#endif RUADestroyInstance(pR); return (rc==RM_OK)?0:-1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -