diff mbox

mtd: only use __xipram annotation when XIP_KERNEL is set

Message ID 3582240.H8v1IXn8EB@wuerfel
State New
Headers show

Commit Message

Arnd Bergmann March 5, 2016, 12:24 a.m. UTC
On Friday 04 March 2016 16:10:57 Brian Norris wrote:
>   5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly
> 
>   CC      drivers/mtd/chips/cfi_cmdset_0002.o
> drivers/mtd/chips/cfi_cmdset_0002.c: In function ‘xip_udelay’:
> drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default]
> drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: ‘ICIP’ undeclared (first use in this function)
> drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in
> drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: ‘ICMR’ undeclared (first use in this function)
> drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have ‘void *’ and ‘int’)
> drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default]
> drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have ‘void *’ and ‘int’)
> drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default]
> drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have ‘void *’ and ‘int’)
> 
> Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR...
> 

Right, I also have a workaround for that one, but found later that it
won't work. I think this is the patch that broke it five years ago:

commit 5d284e353eb11ab2e8b1c5671ba06489b0bd1e0c
Author: Eric Miao <eric.y.miao@gmail.com>
Date:   Wed Apr 27 22:48:04 2011 +0800

    ARM: pxa: avoid accessing interrupt registers directly
    
    Signed-off-by: Eric Miao <eric.y.miao@gmail.com>

Comments

Robert Jarzmik March 5, 2016, 8:45 a.m. UTC | #1
Arnd Bergmann <arnd@arndb.de> writes:

> I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL
> are both enabled.
>
> 	Arnd
I wouldn't have ICMR and ICIP exposed to drivers, Eric's original move looks
corect to me.

On the other hand, I'm wondering if xip_irqpending(), xip_currtime() and
xip_cpu_idle() should be declared as functions in mtd-xip.h, and be part of
something like arch/arm/mach-pxa/xip.c ...

Cheers.
Arnd Bergmann March 6, 2016, 7:56 p.m. UTC | #2
On Saturday 05 March 2016, Robert Jarzmik wrote:
> Arnd Bergmann <arnd@arndb.de> writes:
> 
> > I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL
> > are both enabled.
> >
> > 	Arnd
> I wouldn't have ICMR and ICIP exposed to drivers, Eric's original move looks
> corect to me.

Yes, it's a reasonable cleanup that we have done in many places, except
this one introduced a regression for MTD_XIP.

> On the other hand, I'm wondering if xip_irqpending(), xip_currtime() and
> xip_cpu_idle() should be declared as functions in mtd-xip.h, and be part of
> something like arch/arm/mach-pxa/xip.c ...

They have to at least be marked __xipram and must not reference anything
in .text or .rodata, but there might be additional requirements.

	Arnd
diff mbox

Patch

diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h
deleted file mode 100644
index 662288eb6f95..000000000000
--- a/arch/arm/mach-pxa/include/mach/regs-intc.h
+++ /dev/null
@@ -1,30 +0,0 @@ 
-#ifndef __ASM_MACH_REGS_INTC_H
-#define __ASM_MACH_REGS_INTC_H
-
-#include <mach/hardware.h>
-
-/*
- * Interrupt Controller
- */
-
-#define ICIP           __REG(0x40D00000)  /* Interrupt Controller IRQ Pending Register */
-#define ICMR           __REG(0x40D00004)  /* Interrupt Controller Mask Register */
-#define ICLR           __REG(0x40D00008)  /* Interrupt Controller Level Register */
-#define ICFP           __REG(0x40D0000C)  /* Interrupt Controller FIQ Pending Register */
-#define ICPR           __REG(0x40D00010)  /* Interrupt Controller Pending Register */
-#define ICCR           __REG(0x40D00014)  /* Interrupt Controller Control Register */
-#define ICHP           __REG(0x40D00018)  /* Interrupt Controller Highest Priority Register */

and it's possible that nobody ever noticed...

I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL
are both enabled.

	Arnd

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel