Ejemplo n.º 1
0
/* 
 * Given a pointer to previous IR, returns a pointer to new-style. Not 
 * reentrant.
 */
struct dpf_ir *dpf_xlate(struct dpf_frozen_ir *ir, int nelems) {
	uint32 val, mask;
	static struct dpf_ir xir;
	int i;

	dpf_init(&xir);

	for(i = 0; i < nelems; i++) {
		if(ir[i].op != DPF_EQI)
			fatal(unexpected op);

		val = ir[i++].imm;
		
		/* check to see if there is an and */
		mask = (ir[i].op == DPF_ANDI) ? ir[i++].imm : 0xffffffff;

		/* load the value */
		switch(ir[i].op) {
		case DPF_BITS8I:
			dpf_meq8(&xir, ir[i].imm, mask, val);
			break;
		case DPF_BITS16I:
			dpf_meq16(&xir, ir[i].imm, mask, val);
			break;
		case DPF_BITS32I:
			dpf_meq32(&xir, ir[i].imm, mask, val);
			break;
		default: fatal(Unexpected op);
		}
	}
	return &xir;
}
Ejemplo n.º 2
0
void dpf_eq32(struct dpf_ir *ir, uint16 offset, uint32 val) 
{ 
  dpf_meq32(ir, offset, IDENTITY_MASK32, val); 
}