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

📄 d30v-insns

📁 这个是LINUX下的GDB调度工具的源码
💻
📖 第 1 页 / 共 5 页
字号:
# OBSOLETE _IALU2,11001,10,5.*,1.AA,6.RB,_IMM6:IALU2:short:iu:MULXS imm# OBSOLETE "mulxs a<AA>, r<RB>, <imm>"# OBSOLETE 	do_mulxs(_SD, Aa, Rb, imm);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // MVFACC# OBSOLETE # OBSOLETE void::function::do_mvfacc:unsigned32 *ra, unsigned64 ab, unsigned32 src# OBSOLETE 	while (src > 63) src -= 64;# OBSOLETE 	WRITE32_QUEUE (ra, ((signed64)ab) >> src);# OBSOLETE # OBSOLETE _IALU2,11111,00,6.RA,5.*,1.AB,6.RC:IALU2:short:iu:MVFACC# OBSOLETE "mvfacc r<RA>, a<AB>, r<RC>"# OBSOLETE 	do_mvfacc(_SD, Ra, *Ab, Rc);	# OBSOLETE _IALU2,11111,10,6.RA,5.*,1.AB,_IMM6:IALU2:short:iu:MVFACC imm# OBSOLETE "mvfacc r<RA>, a<AB>, <imm>"# OBSOLETE 	do_mvfacc(_SD, Ra, *Ab, imm_6u);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // MVFSYS# OBSOLETE # OBSOLETE _BRA,11110,00,6.RA,6.CR,6.ID:BRA:short:mu:MVFSYS# OBSOLETE "mvfsys r<RA>, cr<CR>"# OBSOLETE 	switch (ID) {# OBSOLETE 	case 0:# OBSOLETE 	  if (CR >= NR_CONTROL_REGISTERS)# OBSOLETE 	    sim_engine_abort (SD, CPU, cia, "FIXME - illegal CR");# OBSOLETE 	  else# OBSOLETE 	    WRITE32_QUEUE (Ra, (CPU)->regs.control[CR]);# OBSOLETE 	  break;# OBSOLETE 	case 1:# OBSOLETE 	  WRITE32_QUEUE (Ra, PSWL);# OBSOLETE 	  break;# OBSOLETE 	case 2:# OBSOLETE 	  WRITE32_QUEUE (Ra, EXTRACTED32(PSWH, 16, 31));# OBSOLETE 	  break;# OBSOLETE 	case 3:# OBSOLETE 	  WRITE32_QUEUE (Ra, PSW_FLAG_VAL(CR));# OBSOLETE 	  break;# OBSOLETE 	default:# OBSOLETE 	  sim_engine_abort (SD, CPU, cia, "FIXME - illegal ID");# OBSOLETE 	}# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // MVTACC# OBSOLETE # OBSOLETE _IALU2,01111,00,5.*,1.AA,6.RB,6.RC:IALU2:short:iu:MVTACC# OBSOLETE "mvtacc a<AA>, r<RB>, r<RC>"# OBSOLETE 	WRITE64_QUEUE (Aa, INSERTED64(RbU, 0, 31) | (RcU));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // MVTSYS# OBSOLETE # OBSOLETE _BRA,01110,00,6.CR,6.RB,6.ID:BRA:short:mu:MVTSYS# OBSOLETE "mvtsys cr<CR>, r<RB>"# OBSOLETE 	switch (ID) {# OBSOLETE 	case 0:			/* control register */# OBSOLETE 	  if (CR >= NR_CONTROL_REGISTERS)# OBSOLETE 	    sim_engine_abort (SD, CPU, cia, "FIXME - illegal CR");# OBSOLETE 	  else# OBSOLETE 	    {# OBSOLETE 	      unsigned32 value = Rb;# OBSOLETE 	      CPU->mvtsys_left_p = 1;# OBSOLETE 	      if (CR == processor_status_word_cr)# OBSOLETE 		{# OBSOLETE 		  unsigned32 ds = PSW & BIT32 (PSW_DS);	/* preserve ds */# OBSOLETE 		  value = ds | (value & PSW_VALID);# OBSOLETE 		}# OBSOLETE 	      else if (CR == backup_processor_status_word_cr# OBSOLETE 		       || CR == debug_backup_processor_status_word_cr)# OBSOLETE 		value &= DPSW_VALID;# OBSOLETE 	      else if (CR == eit_vector_base_cr)# OBSOLETE 		value &= EIT_VALID;# OBSOLETE 	      WRITE32_QUEUE (&(CPU)->regs.control[CR], value);# OBSOLETE 	    }# OBSOLETE 	  break;# OBSOLETE 	case 1:			/* PSWL */# OBSOLETE 	  WRITE32_QUEUE_MASK (&PSW, EXTRACTED32(Rb, 16, 31),# OBSOLETE 			      PSW_VALID & 0x0000ffff);# OBSOLETE 	  break;# OBSOLETE 	case 2:			/* PSWH */# OBSOLETE 	  {# OBSOLETE 	    unsigned32 ds = PSW & BIT32 (PSW_DS);	/* preserve ds */# OBSOLETE 	    WRITE32_QUEUE_MASK (&PSW, (EXTRACTED32(Rb, 16, 31) << 16) | ds,# OBSOLETE 				(PSW_VALID | ds) & 0xffff0000);# OBSOLETE 	  }# OBSOLETE 	  break;# OBSOLETE 	case 3:			/* FLAG */# OBSOLETE 	  PSW_FLAG_SET_QUEUE(CR, Rb & 1);# OBSOLETE 	  break;# OBSOLETE 	default:# OBSOLETE 	  sim_engine_abort (SD, CPU, cia, "FIXME - illegal ID");# OBSOLETE 	}# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // NOP# OBSOLETE # OBSOLETE _BRA,01111,00,6.**,6.**,6.**:BRA:short:iu,mu:NOP# OBSOLETE "nop"# OBSOLETE 	/* NOP */;# OBSOLETE # OBSOLETE # OBSOLETE // NOT# OBSOLETE # OBSOLETE _LOGIC,11001,00,6.RA,6.RB,6.*:LOGIC:short:iu,mu:NOT# OBSOLETE "not r<RA>, r<RB>"# OBSOLETE 	WRITE32_QUEUE (Ra, ~Rb);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // NOTFG# OBSOLETE # OBSOLETE _LOGIC,01001,00,***,3.FA,***,3.FB,***,3.FC:LOGIC:short:iu,mu:NOTFG# OBSOLETE "notfg f<FA>, f<FB>"# OBSOLETE 	PSW_FLAG_SET_QUEUE(FA, !PSW_FLAG_VAL(FB));# OBSOLETE # OBSOLETE # OBSOLETE // OR# OBSOLETE # OBSOLETE _LOGIC,11010,00,6.RA,6.RB,6.RC:LOGIC:short:iu,mu:OR# OBSOLETE "or r<RA>, r<RB>, r<RC>"# OBSOLETE 	WRITE32_QUEUE (Ra, Rb | Rc);# OBSOLETE _LOGIC,11010,10,6.RA,6.RB,_IMM6:LOGIC:short:iu,mu:OR imm# OBSOLETE "or r<RA>, r<RB>, <imm>"# OBSOLETE 	WRITE32_QUEUE (Ra, Rb | imm);# OBSOLETE _LOGIC,11010,10,6.RA,6.RB,_IMM32:LOGIC:long:iu,mu:OR imm long# OBSOLETE "or r<RA>, r<RB>, <imm>"# OBSOLETE 	WRITE32_QUEUE (Ra, Rb | imm);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // ORFG# OBSOLETE # OBSOLETE _LOGIC,01010,00,***,3.FA,***,3.FB,***,3.FC:LOGIC:short:iu,mu:ORFG# OBSOLETE "orfg f<FA>, f<FB>, f<FC>"# OBSOLETE 	PSW_FLAG_SET_QUEUE(FA, PSW_FLAG_VAL(FB) | PSW_FLAG_VAL(FC));# OBSOLETE _LOGIC,01010,10,***,3.FA,***,3.FB,_IMM6:LOGIC:short:iu,mu:ORFG imm# OBSOLETE "orfg f<FA>, f<FB>, <imm>"# OBSOLETE 	PSW_FLAG_SET_QUEUE(FA, PSW_FLAG_VAL(FB) | (imm_6 & 1));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // REIT# OBSOLETE # OBSOLETE _BRA,01000,00,6.**,6.**,6.**:BRA:short:mu:REIT# OBSOLETE "reit"# OBSOLETE 	WRITE32_QUEUE (&PSW, bPSW);# OBSOLETE 	nia = bPC;# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // REPEAT# OBSOLETE # OBSOLETE void::function::do_repeat:unsigned32 count, address_word pcaddr# OBSOLETE 	address_word rpt_s = cia + 8;# OBSOLETE 	address_word rpt_e = cia + pcaddr;# OBSOLETE # OBSOLETE 	if (count == 0)# OBSOLETE 	  sim_engine_abort (SD, CPU, cia, "REPEAT with ra=0 and REPEATI with imm = 0 is forbidden.");# OBSOLETE 	if (count > 1)# OBSOLETE 	  PSW_SET_QUEUE (PSW_RP, 1);# OBSOLETE 	if (rpt_e  < rpt_s + 0x10)# OBSOLETE 	  sim_io_eprintf (sd, "warning: 0x%lx: REPEAT or REPEATI loop is too small\n", (long) cia);# OBSOLETE 	WRITE32_QUEUE (&RPT_C, count - 1);# OBSOLETE 	WRITE32_QUEUE (&RPT_S, rpt_s);# OBSOLETE 	WRITE32_QUEUE (&RPT_E, rpt_e);# OBSOLETE # OBSOLETE _BRA,11000,00,6.RA,6.**,6.RC:BRA:short:mu:REPEAT# OBSOLETE "repeat r<RA>, r<RC>"# OBSOLETE 	do_repeat(_SD, val_Ra, pcaddr);# OBSOLETE _BRA,11000,10,6.RA,_IMM12:BRA:short:mu:REPEAT imm# OBSOLETE "repeat r<RA>, <pcaddr>"# OBSOLETE 	do_repeat(_SD, val_Ra, pcaddr);# OBSOLETE _BRA,11000,10,6.RA,6.**,_IMM32:BRA:long:mu:REPEAT imm long# OBSOLETE "repeat r<RA>, <pcaddr>"# OBSOLETE 	do_repeat(_SD, val_Ra, pcaddr);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // REPEATI# OBSOLETE # OBSOLETE _BRA,11010,00,6.IMM_6,6.**,6.RC:BRA:short:mu:REPEATI# OBSOLETE "repeati <IMM_6>, r<RC>"# OBSOLETE 	do_repeat(_SD, IMM_6, pcaddr);# OBSOLETE _BRA,11010,10,6.IMM_6,_IMM12:BRA:short:mu:REPEATI imm# OBSOLETE "repeati <IMM_6>, <pcaddr>"# OBSOLETE 	do_repeat(_SD, IMM_6, pcaddr);# OBSOLETE _BRA,11010,10,6.IMM_6,6.**,_IMM32:BRA:long:mu:REPEATI imm long# OBSOLETE "repeati <IMM_6>, <pcaddr>"# OBSOLETE 	do_repeat(_SD, IMM_6, pcaddr);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // RTD# OBSOLETE # OBSOLETE _BRA,01010,00,6.*,6.*,6.*:BRA:short:mu:RTD# OBSOLETE "rtd"# OBSOLETE 	WRITE32_QUEUE (&PSW, DPSW);# OBSOLETE 	nia = DPC;# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // ROT# OBSOLETE # OBSOLETE _LOGIC,10100,00,6.RA,6.RB,6.RC:LOGIC:short:iu,mu:ROT# OBSOLETE "rot r<RA>, r<RB>, r<RC>"# OBSOLETE 	WRITE32_QUEUE (Ra, ROT32(Rb, Rc & 0x1f));# OBSOLETE _LOGIC,10100,10,6.RA,6.RB,_IMM6:LOGIC:short:iu,mu:ROT imm# OBSOLETE "rot r<RA>, r<RB>, <imm>"# OBSOLETE 	WRITE32_QUEUE (Ra, ROT32(Rb, imm & 0x1f));# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // ROT2H# OBSOLETE # OBSOLETE void::function::do_rot2h:unsigned32 *ra, unsigned32 rb, signed32 src# OBSOLETE 	unsigned16 high = ROTR16(VH2_4(rb), VH2_4(src) & 0xf);# OBSOLETE 	unsigned16 low  = ROTR16(VL2_4(rb), VL2_4(src) & 0xf);# OBSOLETE 	WRITE32_QUEUE (ra, (high << 16) | low);# OBSOLETE # OBSOLETE _LOGIC,10101,00,6.RA,6.RB,6.RC:LOGIC:short:iu,mu:ROT2H# OBSOLETE "rot2h r<RA>, r<RB>, r<RC>"# OBSOLETE 	do_rot2h(_SD, Ra, Rb, Rc);# OBSOLETE _LOGIC,10101,10,6.RA,6.RB,_IMM6:LOGIC:short:iu,mu:ROT2H imm# OBSOLETE "rot2h r<RA>, r<RB>, <imm>"# OBSOLETE 	do_rot2h(_SD, Ra, Rb, immHL);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // SAT# OBSOLETE # OBSOLETE void::function::do_sat:signed32 *ra, signed32 rb, signed32 src# OBSOLETE 	int bits = LSMASKED32(src, 4, 0); /* 5 */# OBSOLETE 	signed32 sat = LSMASK32(bits, 0) >> 2;# OBSOLETE 	signed32 nsat = ~sat;# OBSOLETE 	signed32 value;# OBSOLETE 	if (bits != src)# OBSOLETE 	  sim_io_eprintf (sd, "warning: 0x%lx:SAT bit overflow\n", (long) cia);# OBSOLETE 	if (bits == 0)# OBSOLETE 	  value = rb;# OBSOLETE 	else if (rb >= sat)# OBSOLETE 	  value = sat;# OBSOLETE 	else if (rb <= nsat)# OBSOLETE 	  value = nsat;# OBSOLETE 	else# OBSOLETE 	  value = rb;# OBSOLETE 	WRITE32_QUEUE (ra, value);# OBSOLETE # OBSOLETE _IALU2,01000,00,6.RA,6.RB,6.RC:IALU2:short:iu:SAT# OBSOLETE "sat r<RA>, r<RB>, r<RC>"# OBSOLETE 	do_sat(_SD, Ra, Rb, Rc);# OBSOLETE _IALU2,01000,10,6.RA,6.RB,_IMM6:IALU2:short:iu:SAT imm# OBSOLETE "sat r<RA>, r<RB>, <imm>"# OBSOLETE 	do_sat(_SD, Ra, Rb, imm_5);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // SAT2H# OBSOLETE # OBSOLETE void::function::do_sath:signed32 *ra, signed32 rb, signed32 src, int high, int updates_f4# OBSOLETE 	int bits = LSMASKED32(src, 4, 0); /* 5 */# OBSOLETE 	signed32 sat = LSMASK32(bits, 0) >> 2;# OBSOLETE 	signed32 nsat = ~sat;# OBSOLETE 	signed32 value;# OBSOLETE 	if (bits != src)# OBSOLETE 	  sim_io_eprintf (sd, "warning: 0x%lx:SAT bit overflow\n", (long) cia);# OBSOLETE 	if (bits == 0)# OBSOLETE 	  value = rb;# OBSOLETE 	else if (rb >= sat)# OBSOLETE 	  value = sat;# OBSOLETE 	else if (rb <= nsat)# OBSOLETE 	  value = nsat;# OBSOLETE 	else# OBSOLETE 	  value = rb;# OBSOLETE 	if (high)# OBSOLETE 	  WRITE32_QUEUE_MASK (ra, value << 16, 0xffff0000);# OBSOLETE 	else# OBSOLETE 	  WRITE32_QUEUE_MASK (ra, value, 0x0000ffff);# OBSOLETE 	if (updates_f4)# OBSOLETE 	  {# OBSOLETE 	    /* if MU instruction was a MVTSYS (lkr), unqueue register writes now */# OBSOLETE 	    if(STATE_CPU (sd, 0)->mvtsys_left_p)# OBSOLETE 	      unqueue_writes (sd, STATE_CPU (sd, 0), cia);# OBSOLETE 	    PSW_FLAG_SET_QUEUE(PSW_S_FLAG, PSW_FLAG_VAL(PSW_S_FLAG) ^ (value & 1));# OBSOLETE 	  }# OBSOLETE # OBSOLETE _IALU2,01001,00,6.RA,6.RB,6.RC:IALU2:short:iu:SAT2H# OBSOLETE "sat2h r<RA>, r<RB>, r<RC>"# OBSOLETE 	do_sath(_SD, Ra, RbH, RcH, 1, 0);# OBSOLETE 	do_sath(_SD, Ra, RbL, RcL, 0, 0);# OBSOLETE _IALU2,01001,10,6.RA,6.RB,_IMM6:IALU2:short:iu:SAT2H imm# OBSOLETE "sat2h r<RA>, r<RB>, <imm>"# OBSOLETE 	do_sath(_SD, Ra, RbH, imm_5, 1, 0);# OBSOLETE 	do_sath(_SD, Ra, RbL, imm_5, 0, 0);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // SATHp# OBSOLETE # OBSOLETE ::%s::p:int p# OBSOLETE 	switch (p)# OBSOLETE 	  {# OBSOLETE 	  case 0: return "l";# OBSOLETE 	  case 1: return "h";# OBSOLETE 	  default: return "?";# OBSOLETE 	  }# OBSOLETE # OBSOLETE _IALU2,1110,p,00,6.RA,6.RB,6.RC:IALU2:short:iu:SATHP# OBSOLETE "sath%s<p> r<RA>, r<RB>, r<RC>"# OBSOLETE 	do_sath(_SD, Ra, Rb, Rc, p, 1);# OBSOLETE _IALU2,1110,p,10,6.RA,6.RB,_IMM6:IALU2:short:iu:SATHP imm# OBSOLETE "sath%s<p> r<RA>, r<RB>, <imm>"# OBSOLETE 	do_sath(_SD, Ra, Rb, imm_5, p, 1);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // SATZ# OBSOLETE # OBSOLETE void::function::do_satz:signed32 *ra, signed32 rb, signed32 src# OBSOLETE 	if (rb < 0)# OBSOLETE 	  WRITE32_QUEUE (ra, 0);# OBSOLETE 	else# OBSOLETE 	  do_sat (_SD, ra, rb, src);# OBSOLETE # OBSOLETE _IALU2,01010,00,6.RA,6.RB,6.RC:IALU2:short:iu:SATZ# OBSOLETE "satz r<RA>, r<RB>, r<RC>"# OBSOLETE 	do_satz(_SD, Ra, Rb, Rc);# OBSOLETE _IALU2,01010,10,6.RA,6.RB,_IMM6:IALU2:short:iu:SATZ imm# OBSOLETE "satz r<RA>, r<RB>, <imm>"# OBSOLETE 	do_satz(_SD, Ra, Rb, imm_5);# OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE # OBSOLETE // SATZ2H# OBSOLETE # OBSOLETE void::function::do_satzh:signed32 *ra, signed16 rb, signed32 src, int high# OBSOLETE 	int bits = LSMASKED32(src, 3, 0); /*4*/# OBSOLETE 	signed16 sat = LSMASK16(bits, 0) >> 2;# OBSOLETE 	signed16 nsat = 0;# OBSOLETE 	signed16 value;# OBSOLETE 	if (bits != src)# OBSOLETE 	  sim_io_eprintf (sd, "warning: 0x%lx:SATZ2H bit overflow\n", (long) cia);# OBSOLETE 	if (bits == 0 && rb > sat)# OBSOLETE 	  value = rb;# OBSOLETE 	else if (rb > sat)# OBSOLETE 	  value = sat;# OBSOLETE 	else if (

⌨️ 快捷键说明

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