Re: R5000SC issues and fix

Adrian Chadd <[email protected]> Fri, 5 Dec 2025 07:34:39 -0800
Newsgroups gmane.os.netbsd.ports.mips.devel
Message-ID <CAJ-Vmom9O+bBdSz5ig5H68rYmyh8OSDNdLGGQJhF0XtgZt0-aQ@mail.gmail.com>
On Fri, 5 Dec 2025 at 01:58, Izumi Tsutsui <[email protected]> wrote:
>
> > Simply reverting the math change done fixes it, ie:
> >
> > ===
> > diff --git a/sys/arch/mips/include/cache_r5k.h
> > b/sys/arch/mips/include/cache_r5k.h
> > index a59fa18fdc02..6bdf9bd688c2 100644
> > --- a/sys/arch/mips/include/cache_r5k.h
> > +++ b/sys/arch/mips/include/cache_r5k.h
> > @@ -68,6 +68,11 @@ void r5k_sdcache_wb_range(register_t, vsize_t);
> >  #define        R5K_SC_PAGESIZE         (R5K_SC_LINESIZE * 128)
> >  #define        R5K_SC_PAGEMASK         (R5K_SC_PAGESIZE - 1)
> >
> > +#if 0
> >  #define        mips_r5k_round_page(x)  (((x) + (register_t)R5K_SC_PAGEMASK) \
> >                                     & (register_t)R5K_SC_PAGEMASK)
> >  #define        mips_r5k_trunc_page(x)  ((x) & (register_t)R5K_SC_PAGEMASK)
> > +#else
> > +#define        mips_r5k_round_page(x)  round_line(x, PAGE_SIZE)
> > +#define        mips_r5k_trunc_page(x)  trunc_line(x, PAGE_SIZE)
> > +#endif
> > ===
>
> Ah, sorry, my serious botch. It should be:
>
> >>  #define        mips_r5k_round_page(x)  (((x) + (register_t)R5K_SC_PAGEMASK) \
> >>                                     & (register_t)~R5K_SC_PAGEMASK)
> >>  #define        mips_r5k_trunc_page(x)  ((x) & (register_t)~R5K_SC_PAGEMASK)

I'll test with this today and report back!

Thanks everyone!


-adrian