17 Bprint(bioout, "instruction_address_not_aligned [addr %.8lux]\n", addr);
25 px = (addr-textbase)/PROFGRAN;
31 return va[0]<<24 | va[1]<<16 | va[2]<<8 | va[3];
41 for(i = 0; i < 4; i++)
42 val = val<<8 | getmem_b(addr++);
52 val = val<<8 | getmem_b(addr+1);
61 Bprint(bioout, "mem_address_not_aligned [load addr %.8lux]\n", addr);
65 return ((uvlong)getmem_w(addr) << 32) | getmem_w(addr+4);
74 Bprint(bioout, "mem_address_not_aligned [load addr %.8lux]\n", addr);
83 return va[0]<<24 | va[1]<<16 | va[2]<<8 | va[3];
92 Bprint(bioout, "mem_address_not_aligned [load addr %.8lux]\n", addr);
101 return va[0]<<8 | va[1];
113 va += addr&(BY2PG-1);
118 putmem_v(ulong addr, uvlong data)
120 if(addr&3) { /* 7? */
121 Bprint(bioout, "mem_address_not_aligned [store addr %.8lux]\n", addr);
125 putmem_w(addr, data>>32); /* two stages, to catch brkchk */
126 putmem_w(addr+4, data);
130 putmem_w(ulong addr, ulong data)
135 Bprint(bioout, "mem_address_not_aligned [store addr %.8lux]\n", addr);
140 va += addr&(BY2PG-1);
151 putmem_b(ulong addr, uchar data)
156 va += addr&(BY2PG-1);
163 putmem_h(ulong addr, short data)
168 Bprint(bioout, "mem_address_not_aligned [store addr %.8lux]\n", addr);
173 va += addr&(BY2PG-1);
181 memio(char *mb, ulong mem, int size, int dir)
187 Bprint(bioout, "memio: invalid size: %d\n", size);
199 *mb++ = getmem_b(mem++);
204 Bprint(bioout, "memio: user/kernel copy too long for qi\n");
214 for(i = 0; i < size; i++)
215 putmem_b(mem++, *mb++);
228 es = &memory.seg[Nseg];
229 for(s = memory.seg; s < es; s++) {
230 if(addr >= s->base && addr < s->end) {
232 off = (addr-s->base)/BY2PG;
242 if(seek(text, s->fileoff+(off*BY2PG), 0) < 0)
243 fatal(1, "vaddr text seek");
244 if(read(text, *p, BY2PG) < 0)
245 fatal(1, "vaddr text read");
249 foff = s->fileoff+(off*BY2PG);
250 if(seek(text, foff, 0) < 0)
251 fatal(1, "vaddr text seek");
252 n = read(text, *p, BY2PG);
254 fatal(1, "vaddr text read");
255 if(foff + n > s->fileend) {
256 l = BY2PG - (s->fileend-foff);
257 a = *p+(s->fileend-foff);
268 Bprint(bioout, "data_access_MMU_miss [addr 0x%.8lux]\n", addr);
270 return 0; /*to stop compiler whining*/