On Thu, 2009-10-08 at 15:24 +0200, Joakim Tjernlund wrote: > DataTLBError currently does: > if ((err & 0x02000000) == 0) > DSI(); > This won't handle a store with no valid translation. > Change this to > if ((err & 0x48000000) != 0) > DSI(); > that is, branch to DSI if either !permission or > !translation. > ---
As I said earlier, I don't think this is necessary, just get rid of the whole bunch of code in DataTLBError :-) Ben. > arch/powerpc/kernel/head_8xx.S | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S > index 52ff8c5..118bb05 100644 > --- a/arch/powerpc/kernel/head_8xx.S > +++ b/arch/powerpc/kernel/head_8xx.S > @@ -472,8 +472,8 @@ DataTLBError: > /* First, make sure this was a store operation. > */ > mfspr r10, SPRN_DSISR > - andis. r11, r10, 0x0200 /* If set, indicates store op */ > - beq 2f > + andis. r11, r10, 0x4800 /* no translation, no permission. */ > + bne 2f /* branch if either is set */ > > /* The EA of a data TLB miss is automatically stored in the MD_EPN > * register. The EA of a data TLB error is automatically stored in _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev