Hi Florian, thats funny! On Tue, 9 Mar 2010, Florian Fainelli wrote: > Date: Tue, 9 Mar 2010 15:46:01 +0100 > From: Florian Fainelli <florian@xxxxxxxxxxx> > To: linux-mips@xxxxxxxxxxxxxx > Cc: ralf@xxxxxxxxxxxxxx > Subject: [PATCH] MIPS: make CAC_ADDR and UNCAC_ADDR account for > PHYS_OFFSET > > On AR7, ... > > Signed-off-by: Regards, Florian Fainelli <florian@xxxxxxxxxxx> > --- > diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h > index ac32572..7b11df5 100644 > --- a/arch/mips/include/asm/page.h > +++ b/arch/mips/include/asm/page.h > @@ -188,8 +188,10 @@ typedef struct { unsigned long pgprot; } pgprot_t; > #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ > VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) > > -#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE) > -#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET) > +#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE + \ > + PHYS_OFFSET) > +#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET + \ > + PHYS_OFFSET) > > #include <asm-generic/memory_model.h> > #include <asm-generic/getorder.h> > I assume, you don't want "+" PHYS_OFFSET in both defines. Two years and a month ago almost the same patch (which used to work on the machine that needed it :) was submitted: --- a/linux-2.6.24/include/asm-mips/page.h Fri Jan 25 12:23:51 2008 +++ b/linux-2.6.24/include/asm-mips/page.h Wed Feb 6 23:26:31 2008 @@ -184,8 +184,8 @@ #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) -#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE) -#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET) +#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + PHYS_OFFSET + UNCAC_BASE) +#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET - PHYS_OFFSET) #include <asm-generic/memory_model.h> #include <asm-generic/page.h> But correct versions of these macros seem to be essential for very "exotic" systems only ;-) kind regards peter