linux-mips
[Top] [All Lists]

Re: [PATCH] MIPS: make CAC_ADDR and UNCAC_ADDR account for PHYS_OFFSET

To: Florian Fainelli <florian@openwrt.org>
Subject: Re: [PATCH] MIPS: make CAC_ADDR and UNCAC_ADDR account for PHYS_OFFSET
From: peter fuerst <post@pfrst.de>
Date: Tue, 9 Mar 2010 22:03:27 +0100 (CET)
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org
In-reply-to: <201003091546.01281.florian@openwrt.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org

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@openwrt.org>
  > To: linux-mips@linux-mips.org
  > Cc: ralf@linux-mips.org
  > Subject: [PATCH] MIPS: make CAC_ADDR and UNCAC_ADDR account for
  >     PHYS_OFFSET
  > 
  > On AR7, ...
  > 
  > Signed-off-by: Regards, Florian Fainelli <florian@openwrt.org>
  > ---
  > 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



<Prev in Thread] Current Thread [Next in Thread>