1.1 diff -r d6358bf2f5c2 -r 58318104858b src/memory.c 1.2 --- a/src/memory.c Tue Dec 28 18:59:15 2010 +0000 1.3 +++ b/src/memory.c Tue Dec 28 19:10:36 2010 +0000 1.4 @@ -67,7 +67,7 @@ 1.5 return MEM_KERNEL; 1.6 1.7 // Check page is write enabled 1.8 - if ((pagebits & 0x04) == 0) 1.9 + if (writing && ((pagebits & 0x04) == 0)) 1.10 return MEM_PAGE_NO_WE; 1.11 1.12 // Page access allowed. 1.13 @@ -112,14 +112,14 @@ 1.14 case MEM_KERNEL: \ 1.15 case MEM_PAGE_NO_WE: \ 1.16 /* kernel access or page not write enabled */ \ 1.17 - /* TODO: which regs need setting? */ \ 1.18 + /* FIXME: which regs need setting? */ \ 1.19 fault = true; \ 1.20 break; \ 1.21 } \ 1.22 \ 1.23 if (fault) { \ 1.24 if (bits >= 16) \ 1.25 - state.bsr0 = 0x7F00; \ 1.26 + state.bsr0 = 0x7C00; \ 1.27 else \ 1.28 state.bsr0 = (address & 1) ? 0x7D00 : 0x7E00; \ 1.29 state.bsr0 |= (address >> 16); \ 1.30 @@ -162,14 +162,14 @@ 1.31 case MEM_KERNEL: \ 1.32 case MEM_PAGE_NO_WE: \ 1.33 /* kernel access or page not write enabled */ \ 1.34 - /* TODO: which regs need setting? */ \ 1.35 + /* FIXME: which regs need setting? */ \ 1.36 fault = true; \ 1.37 break; \ 1.38 } \ 1.39 \ 1.40 if (fault) { \ 1.41 if (bits >= 16) \ 1.42 - state.bsr0 = 0x7F00; \ 1.43 + state.bsr0 = 0x7C00; \ 1.44 else \ 1.45 state.bsr0 = (address & 1) ? 0x7D00 : 0x7E00; \ 1.46 state.bsr0 |= (address >> 16); \