⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpc.c

📁 Coldfire MCF5282 DBug bootloader
💻 C
📖 第 1 页 / 共 5 页
字号:

/********************************************************************/
static void
func20b (unsigned int opword)
{
	/*
	 * Ex: lhau  rD,d(rA), where EA = (rA) + (d)
	 */
	int d, rA;

	insn_rD_d_rA(opword, &d, &rA);
	append_ea_rA_d(dstr, d, rA);
}

/********************************************************************/
static void
func20c (unsigned int opword)
{
	/*
	 * Ex: lbzx  rD,rA,rB, where EA = (rA|0)+rB
	 */
	int rA, rB;

	insn_rD_rA_rB(opword, &rA, &rB);
	append_ea_rA_0_rB(dstr, rA, rB);
}

/********************************************************************/
static void
func20d (unsigned int opword)
{
	/*
	 * Ex: lbzx  rD,rA,rB, where EA = (rA) + (rB)
	 */
	int rA, rB;

	insn_rD_rA_rB(opword, &rA, &rB);
	append_ea_rA_rB(dstr, rA, rB);
}

/********************************************************************/
static void
insn_frD_d_rA (unsigned int opword, int *d, int *rA)
{
	/*
	 * Ex: lfd  frD,d(rA)
	 */
	char valstr[10];
	int disp;

	disp = opword & 0x0000FFFF;
	if (disp & 0x00008000)
	{
		disp = disp | 0xFFFF0000;
	}
	sprintf(valstr,"%d",disp);
	*d = disp;

	append_register(dstr,opword,REG_FLOAT,6);
	append_string(dstr,COMMA);
	append_string(dstr,valstr);
	append_string(dstr,"(");
	*rA = append_register(dstr,opword,REG_INT,11);
	append_string(dstr,")");
}

/********************************************************************/
static void
insn_frD_rA_rB (unsigned int opword, int *rA, int *rB)
{
	/*
	 * Ex: lfdux  frD,rA,rB
	 */
	append_register(dstr,opword,REG_FLOAT,6);
	append_string(dstr,COMMA);
	*rA = append_register(dstr,opword,REG_INT,11);
	append_string(dstr,COMMA);
	*rB = append_register(dstr,opword,REG_INT,16);
}

/********************************************************************/
static void
func21a (unsigned int opword)
{
	/*
	 * Ex: lfd  frD,d(rA), where EA = (rA|0) + d
	 */
	int d, rA;

	insn_frD_d_rA(opword, &d, &rA);
	append_ea_rA_0_d(dstr, d, rA);
}

/********************************************************************/
static void
func21b (unsigned int opword)
{
	/*
	 * Ex: lfd  frD,d(rA), where EA = (rA) + d
	 */
	int d, rA;

	insn_frD_d_rA(opword, &d, &rA);
	append_ea_rA_d(dstr, d, rA);
}

/********************************************************************/
static void
func21c (unsigned int opword)
{
	/*
	 * Ex: lfdx  frD,rA,rB where EA = (rA|0) + rB
	 */
	int rA, rB;

	insn_frD_rA_rB(opword, &rA, &rB);
	append_ea_rA_0_rB(dstr, rA, rB);
}

/********************************************************************/
static void
func21d (unsigned int opword)
{
	/*
	 * Ex: lfdux  frD,rA),rB where EA = (rA) + (rB)
	 */
	int rA, rB;

	insn_frD_rA_rB(opword, &rA, &rB);
	append_ea_rA_rB(dstr, rA, rB);
}

/********************************************************************/
static void
func23 (unsigned int opword)
{
	int nb;
	char nbstr[10];

	nb = ((opword & 0x0000F800) >> 11);
	if (nb == 0)
	{
		nb = 32;
	}
	sprintf(nbstr,"%d",nb);
	append_register(dstr,opword,REG_INT,6);
	append_string(dstr,COMMA);
	append_register(dstr,opword,REG_INT,11);
	append_string(dstr,COMMA);
	append_string(dstr,nbstr);
}

/********************************************************************/
static void
func24 (unsigned int opword)
{
	append_Xbit_number(dstr,opword,3,6);
	append_string(dstr,COMMA);
	append_Xbit_number(dstr,opword,3,11);
}

/********************************************************************/
static void
func25 (unsigned int opword)
{
	append_Xbit_number(dstr,opword,3,6);
}

/********************************************************************/
static void
func26 (unsigned int opword)
{
	append_register(dstr,opword,REG_INT,6);
}

/********************************************************************/
static void
func27 (unsigned int opword)
{
	append_register(dstr,opword,REG_FLOAT,6);
}

/********************************************************************/
static void
func28 (unsigned int opword)
{
	unsigned int opw1, opw2;

	/* the SPR field is split, knock it out and put it together */
	/* as a single 10-bit field.								*/
	opw1 = (opword & 0x001F0000) >> 16;
	opw2 = (opword & 0x0000F800) >> 6;
	opw1 = opw1 | opw2;

	if (((opword & 0x000007FE) >> 1) == 339)	/* mfspr */
	{
		append_register(dstr,opword,REG_INT,6);
		append_string(dstr,COMMA);
	}
	switch (opw1)
	{
#if (defined(MPC602) || defined(MPC603) || defined(MPC604))
		case 1:
			append_string(dstr,"XER");
			break;
		case 8:
			append_string(dstr,"LR");
			break;
		case 9:
			append_string(dstr,"CTR");
			break;
		case 18:
			append_string(dstr,"DSISR");
			break;
		case 19:
			append_string(dstr,"DAR");
			break;
		case 22:
			append_string(dstr,"DEC");
			break;
		case 25:
			append_string(dstr,"SDR1");
			break;
		case 26:
			append_string(dstr,"SRR0");
			break;
		case 27:
			append_string(dstr,"SRR1");
			break;
		case 268:
		case 284:
			append_string(dstr,"TBL");
			break;
		case 269:
		case 285:
			append_string(dstr,"TBU");
			break;
		case 272:
			append_string(dstr,"SPRG0");
			break;
		case 273:
			append_string(dstr,"SPRG1");
			break;
		case 274:
			append_string(dstr,"SPRG2");
			break;
		case 275:
			append_string(dstr,"SPRG3");
			break;
		case 282:
			append_string(dstr,"EAR");
			break;
		case 287:
			append_string(dstr,"PVR");
			break;
		case 528:
			append_string(dstr,"IBAT0U");
			break;
		case 529:
			append_string(dstr,"IBAT0L");
			break;
		case 530:
			append_string(dstr,"IBAT1U");
			break;
		case 531:
			append_string(dstr,"IBAT1L");
			break;
		case 532:
			append_string(dstr,"IBAT2U");
			break;
		case 533:
			append_string(dstr,"IBAT2L");
			break;
		case 534:
			append_string(dstr,"IBAT3U");
			break;
		case 535:
			append_string(dstr,"IBAT3L");
			break;
		case 536:
			append_string(dstr,"DBAT0U");
			break;
		case 537:
			append_string(dstr,"DBAT0L");
			break;
		case 538:
			append_string(dstr,"DBAT1U");
			break;
		case 539:
			append_string(dstr,"DBAT1L");
			break;
		case 540:
			append_string(dstr,"DBAT2U");
			break;
		case 541:
			append_string(dstr,"DBAT2L");
			break;
		case 542:
			append_string(dstr,"DBAT3U");
			break;
		case 543:
			append_string(dstr,"DBAT3L");
			break;
#endif

#if (defined(MPC602))
		case 976:
			append_string(dstr,"DMISS");
			break;
		case 977:
			append_string(dstr,"DCMP");
			break;
		case 978:
			append_string(dstr,"HASH1");
			break;
		case 979:
			append_string(dstr,"HASH2");
			break;
		case 980:
			append_string(dstr,"IMISS");
			break;
		case 981:
			append_string(dstr,"ICMP");
			break;
		case 982:
			append_string(dstr,"RPA");
			break;
		case 984:
			append_string(dstr,"TCR");
			break;
		case 986:
			append_string(dstr,"IBR");
			break;
		case 987:
			append_string(dstr,"ESASRR");
			break;
		case 990:
			append_string(dstr,"SEBR");
			break;
		case 991:
			append_string(dstr,"SER");
			break;
		case 1008:
			append_string(dstr,"HID0");
			break;
		case 1009:
			append_string(dstr,"HID1");
			break;
		case 1010:
			append_string(dstr,"IABR");
			break;
		case 1021:
			append_string(dstr,"SP");
			break;
		case 1022:
			append_string(dstr,"LT");
			break;
#endif

#if (defined(MPC603))
		case 976:
			append_string(dstr,"DMISS");
			break;
		case 977:
			append_string(dstr,"DCMP");
			break;
		case 978:
			append_string(dstr,"HASH1");
			break;
		case 979:
			append_string(dstr,"HASH2");
			break;
		case 980:
			append_string(dstr,"IMISS");
			break;
		case 981:
			append_string(dstr,"ICMP");
			break;
		case 982:
			append_string(dstr,"RPA");
			break;
		case 1008:
			append_string(dstr,"HID0");
			break;
		case 1009:
			append_string(dstr,"HID1");
			break;
		case 1010:
			append_string(dstr,"IABR");
			break;
#endif

#if (defined(MPC821) || defined(MPC823) || defined(MPC850) || defined(MPC860))
		case 1:
			append_string(dstr,"XER");
			break;
		case 8:
			append_string(dstr,"LR");
			break;
		case 9:
			append_string(dstr,"CTR");
			break;
		case 18:
			append_string(dstr,"DSISR");
			break;
		case 19:
			append_string(dstr,"DAR");
			break;
		case 22:
			append_string(dstr,"DEC");
			break;
		case 26:
			append_string(dstr,"SRR0");
			break;
		case 27:
			append_string(dstr,"SRR1");
			break;
		case 80:
			append_string(dstr,"EIE");
			break;
		case 81:
			append_string(dstr,"EID");
			break;
		case 82:
			append_string(dstr,"NRI");
			break;
		case 144:
			append_string(dstr,"CMPA");
			break;
		case 145:
			append_string(dstr,"CMPB");
			break;
		case 146:
			append_string(dstr,"CMPC");
			break;
		case 147:
			append_string(dstr,"CMPD");
			break;
		case 148:
			append_string(dstr,"ICR");
			break;
		case 149:
			append_string(dstr,"DER");
			break;
		case 150:
			append_string(dstr,"COUNTA");
			break;
		case 151:
			append_string(dstr,"COUNTB");
			break;
		case 152:
			append_string(dstr,"CMPE");
			break;
		case 153:
			append_string(dstr,"CMPF");
			break;
		case 154:
			append_string(dstr,"CMPG");
			break;
		case 155:
			append_string(dstr,"CMPH");
			break;
		case 156:
			append_string(dstr,"LCTRL1");
			break;
		case 157:
			append_string(dstr,"LCTRL2");
			break;
		case 158:
			append_string(dstr,"ICTRL");
			break;
		case 159:
			append_string(dstr,"BAR");
			break;
		case 272:
			append_string(dstr,"SPRG0");
			break;
		case 273:
			append_string(dstr,"SPRG1");
			break;
		case 274:
			append_string(dstr,"SPRG2");
			break;
		case 275:
			append_string(dstr,"SPRG3");
			break;
		case 268:
		case 284:
			append_string(dstr,"TBL");
			break;
		case 269:
		case 285:
			append_string(dstr,"TBU");
			break;
		case 287:
			append_string(dstr,"PVR");
			break;
		case 560:
			append_string(dstr,"IC_CST");
			break;
		case 561:
			append_string(dstr,"IC_ADR");
			break;
		case 562:
			append_string(dstr,"IC_DAT");
			break;
		case 568:
			append_string(dstr,"DC_CST");
			break;
		case 569:
			append_string(dstr,"DC_ADR");
			break;
		case 570:
			append_string(dstr,"DC_DAT");
			break;
		case 630:
			append_string(dstr,"DPDR");
			break;
		case 631:
			append_string(dstr,"DPIR");
			break;
		case 638:
			append_string(dstr,"IMMR");
			break;
		case 784:
			append_string(dstr,"MI_CTR");
			break;
		case 786:
			append_string(dstr,"MI_AP");
			break;
		case 787:
			append_string(dstr,"MI_EPN");
			break;
		case 789:
			append_string(dstr,"MI_TWC");
			break;
		case 790:
			append_string(dstr,"MI_RPN");
			break;
		case 792:
			append_string(dstr,"MD_CTR");
			break;
		case 793:
			append_string(dstr,"M_CASID");
			break;
		case 794:
			append_string(dstr,"MD_AP");
			break;
		case 795:
			append_string(dstr,"MD_EPN");
			break;
		case 796:
			append_string(dstr,"M_TWB");
			break;
		case 797:
			append_string(dstr,"MD_TWC");
			break;
		case 798:
			append_string(dstr,"MD_RPN");
			break;
		case 799:
			append_string(dstr,"M_TW");
			break;
		case 816:
			append_string(dstr,"MI_DBCAM");
			break;
		case 817:
			append_string(dstr,"MI_DBRAM0");
			break;
		case 818:
			append_string(dstr,"MI_DBRAM1");
			break;
		case 824:
			append_string(dstr,"MD_DBCAM");
			break;
		case 825:
			append_string(dstr,"MD_DBRAM0");
			break;
		case 826:
			append_string(dstr,"MD_DBRAM1");
			break;
#endif			
			
#if (defined(MPC555) || defined(MPC556) || defined(MPC565) || defined(MPC566))
		case 1:
			append_string(dstr,"XER");
			break;
		case 8:
			append_string(dstr,"LR");
			break;
		case 9:
			append_string(dstr,"CTR");
			break;
		case 18:
			append_string(dstr,"DSISR");
			break;
		case 19:
			append_string(dstr,"DAR");
			break;
		case 22:
			append_string(dstr,"DEC");
			break;
		case 26:
			append_string(dstr,"SRR0");
			break;
		case 27:
			append_string(dstr,"SRR1");
			break;
		case 80:
			append_string(dstr,"EIE");
			break;
		case 81:
			append_string(dstr,"EID");
			break;
		case 82:
			append_string(dstr,"NRI");
			break;
		case 144:
			append_string(dstr,"CMPA");
			break;
		case 145:
			append_string(dstr,"CMPB");
			break;
		case 146:
			append_string(dstr,"CMPC");
			break;
		case 147:
			append_string(dstr,"CMPD");
			break;
		case 148:
			append_string(dstr,"ECR");
			break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -