static void write_target (char *buffer, int address, int count, int asciiz) { char byte; while (count > 0) { byte = *buffer++; mem_put_qi (address++, byte); if (asciiz && (byte == 0)) return; count--; } }
void put_bit (srcdest sd, int val) { int b; if (sd.mem) b = mem_get_qi (sd.u.addr); else b = get_reg (sd.u.reg); if (val) b |= sd.mask; else b &= ~sd.mask; if (sd.mem) mem_put_qi (sd.u.addr, b); else put_reg (sd.u.reg, b); }
int sim_write (SIM_DESC sd, SIM_ADDR mem, const unsigned char *buf, int length) { int i; check_desc (sd); execution_error_clear_last_error (); for (i = 0; i < length; i++) { bfd_vma addr = mem + i; int do_swap = addr_in_swap_list (addr); mem_put_qi (addr ^ (do_swap ? 3 : 0), buf[i]); if (execution_error_get_last_error () != SIM_ERR_NONE) return i; } return length; }
void put_dest (srcdest sd, int v) { if (sd.mem) { switch (sd.bytes) { case 1: mem_put_qi (sd.u.addr, v); break; case 2: mem_put_hi (sd.u.addr, v); break; case 3: mem_put_psi (sd.u.addr, v); break; case 4: mem_put_si (sd.u.addr, v); break; } } else { switch (sd.bytes) { case 1: v &= 0xff; break; case 2: v &= 0xffff; break; case 3: v &= 0xffffff; break; } put_reg (sd.u.reg, v); } }