16 Bprint(bioout, "instruction_address_not_aligned [addr %.8lux]\n", addr);
24 iprof[(addr-textbase)/PROFGRAN]++;
28 return va[0]<<24 | va[1]<<16 | va[2]<<8 | va[3];
38 for(i = 0; i < 4; i++)
39 val = val<<8 | getmem_b(addr++);
49 val = val<<8 | getmem_b(addr+1);
60 Bprint(bioout, "mem_address_not_aligned [load addr %.8lux]\n", addr);
69 return va[0]<<24 | va[1]<<16 | va[2]<<8 | va[3];;
78 Bprint(bioout, "mem_address_not_aligned [load addr %.8lux]\n", addr);
87 return va[0]<<8 | va[1];
104 putmem_w(ulong addr, ulong data)
109 Bprint(bioout, "mem_address_not_aligned [store addr %.8lux]\n", addr);
114 va += addr&(BY2PG-1);
124 putmem_b(ulong addr, uchar data)
129 va += addr&(BY2PG-1);
136 putmem_h(ulong addr, short data)
141 Bprint(bioout, "mem_address_not_aligned [store addr %.8lux]\n", addr);
146 va += addr&(BY2PG-1);
154 memio(char *mb, ulong mem, int size, int dir)
168 *mb++ = getmem_b(mem++);
173 Bprint(bioout, "memio: user/kernel copy too long for mipsim\n");
183 for(i = 0; i < size; i++)
184 putmem_b(mem++, *mb++);
197 es = &memory.seg[Nseg];
198 for(s = memory.seg; s < es; s++) {
199 if(addr >= s->base && addr < s->end) {
201 off = (addr-s->base)/BY2PG;
211 if(seek(text, s->fileoff+(off*BY2PG), 0) < 0)
212 fatal(1, "vaddr text seek");
213 if(read(text, *p, BY2PG) < 0)
214 fatal(1, "vaddr text read");
218 foff = s->fileoff+(off*BY2PG);
219 if(seek(text, foff, 0) < 0)
220 fatal(1, "vaddr text seek");
221 n = read(text, *p, BY2PG);
223 fatal(1, "vaddr text read");
224 if(foff + n > s->fileend) {
225 l = BY2PG - (s->fileend-foff);
226 a = *p+(s->fileend-foff);
237 Bprint(bioout, "data_access_MMU_miss [addr 0x%.8lux]\n", addr);
239 return 0; /*to stop compiler whining*/