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
|