Skip to contentSkip to conversation

Add tmp register for debug-macro.S, do not select CPU_32v6K for omap2

PATCH New Tony Lindgren 3 participants 10 messages Jan 26, 2010 – Jan 29, 2010

Subsystems (20)
lore
Share & tools
lore

Tony Lindgren

author maintainer
#0 lore raw

cover Add tmp register for debug-macro.S, do not select CPU_32v6K for omap2

Hi,

Here are three patches for review to allow more complicated DEBUG_LL port handling by adding a tmp register for addruart.

The third patch makes it possible to boot mach-omap2 kernels with omap2420 (v6) and omap34xx (v7) compiled in.

These are needed for the following omap specific patch series.

Regards,

Tony

---

Tony Lindgren (3):
ARM: Add tmp register for addruart and loadsp
ARM: Add tmp register for debug-macro.S files
ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 is not selected

 arch/arm/boot/compressed/head.S                    |   20 ++++++++++----------
 arch/arm/kernel/debug.S                            |   12 ++++++------
 arch/arm/mach-aaec2000/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-at91/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-clps711x/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-davinci/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-dove/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-ebsa110/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ep93xx/include/mach/debug-macro.S    |    2 +-
 .../arm/mach-footbridge/include/mach/debug-macro.S |    4 ++--
 arch/arm/mach-gemini/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-h720x/include/mach/debug-macro.S     |    2 +-
 .../arm/mach-integrator/include/mach/debug-macro.S |    2 +-
 arch/arm/mach-iop13xx/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-iop32x/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-iop33x/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-ixp2000/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ixp23xx/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ixp4xx/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-kirkwood/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-ks8695/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-l7200/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-loki/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-mmp/include/mach/debug-macro.S       |    2 +-
 arch/arm/mach-msm/include/mach/debug-macro.S       |    4 ++--
 arch/arm/mach-mv78xx0/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-netx/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-nomadik/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ns9xxx/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-omap1/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-omap2/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-orion5x/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-pnx4008/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-pxa/include/mach/debug-macro.S       |    2 +-
 arch/arm/mach-realview/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-rpc/include/mach/debug-macro.S       |    2 +-
 arch/arm/mach-s3c2410/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-s3c24a0/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-s3c6400/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-s5pc100/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-sa1100/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-shark/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-u300/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-ux500/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-versatile/include/mach/debug-macro.S |    2 +-
 arch/arm/mm/Kconfig                                |    4 ++--
 arch/arm/plat-mxc/include/mach/debug-macro.S       |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/debug-macro.S  |    2 +-
 49 files changed, 66 insertions(+), 66 deletions(-)
Signature · 1 line
Signature
author maintainer
#1 lore raw

PATCH 1/3 ARM: Add tmp register for addruart and loadsp

Otherwise more complicated uart configuration won't be possible. We can use r1 for tmp register for both head.S and debug.S.

NOTE: This patch depends on another patch to add the the \tmp register into all debug-macro.S files. That can be done with:

$ sed -i -e "s/addruart,rx\|addruart, rx/addruart, rx, tmp/" \
	arch/arm/*/include/*/debug-macro.S
---
 arch/arm/boot/compressed/head.S |   20 ++++++++++----------
 arch/arm/kernel/debug.S         |   12 ++++++------
 2 files changed, 16 insertions(+), 16 deletions(-)
arch/arm/boot/compressed/head.S +10 -10
index 4fddc50..99b75aa 100644
@@ -22,13 +22,13 @@
 #if defined(CONFIG_DEBUG_ICEDCC)
 
 #ifdef CONFIG_CPU_V6
-		.macro	loadsp, rb
+		.macro	loadsp, rb, tmp
 		.endm
 		.macro	writeb, ch, rb
 		mcr	p14, 0, \ch, c0, c5, 0
 		.endm
 #elif defined(CONFIG_CPU_V7)
-		.macro	loadsp, rb
+		.macro	loadsp, rb, tmp
 		.endm
 		.macro	writeb, ch, rb
 wait:		mrc	p14, 0, pc, c0, c1, 0
@@ -36,13 +36,13 @@ wait:		mrc	p14, 0, pc, c0, c1, 0
 		mcr	p14, 0, \ch, c0, c5, 0
 		.endm
 #elif defined(CONFIG_CPU_XSCALE)
-		.macro	loadsp, rb
+		.macro	loadsp, rb, tmp
 		.endm
 		.macro	writeb, ch, rb
 		mcr	p14, 0, \ch, c8, c0, 0
 		.endm
 #else
-		.macro	loadsp, rb
+		.macro	loadsp, rb, tmp
 		.endm
 		.macro	writeb, ch, rb
 		mcr	p14, 0, \ch, c1, c0, 0
@@ -58,7 +58,7 @@ wait:		mrc	p14, 0, pc, c0, c1, 0
 		.endm
 
 #if defined(CONFIG_ARCH_SA1100)
-		.macro	loadsp, rb
+		.macro	loadsp, rb, tmp
 		mov	\rb, #0x80000000	@ physical base address
 #ifdef CONFIG_DEBUG_LL_SER3
 		add	\rb, \rb, #0x00050000	@ Ser3
@@ -67,13 +67,13 @@ wait:		mrc	p14, 0, pc, c0, c1, 0
 #endif
 		.endm
 #elif defined(CONFIG_ARCH_S3C2410)
-		.macro loadsp, rb
+		.macro loadsp, rb, tmp
 		mov	\rb, #0x50000000
 		add	\rb, \rb, #0x4000 * CONFIG_S3C_LOWLEVEL_UART_PORT
 		.endm
 #else
-		.macro	loadsp,	rb
-		addruart \rb
+		.macro	loadsp,	rb, tmp
+		addruart \rb, \tmp
 		.endm
 #endif
 #endif
@@ -1025,7 +1025,7 @@ phex:		adr	r3, phexbuf
 		strb	r2, [r3, r1]
 		b	1b
 
-puts:		loadsp	r3
+puts:		loadsp	r3, r1
 1:		ldrb	r2, [r0], #1
 		teq	r2, #0
 		moveq	pc, lr
@@ -1042,7 +1042,7 @@ puts:		loadsp	r3
 putc:
 		mov	r2, r0
 		mov	r0, #0
-		loadsp	r3
+		loadsp	r3, r1
 		b	2b
 
 memdump:	mov	r12, r0
arch/arm/kernel/debug.S +6 -6
index 5c91add..a38b487 100644
@@ -24,7 +24,7 @@
 
 #if defined(CONFIG_CPU_V6)
 
-		.macro	addruart, rx
+		.macro	addruart, rx, tmp
 		.endm
 
 		.macro	senduart, rd, rx
@@ -51,7 +51,7 @@
 
 #elif defined(CONFIG_CPU_V7)
 
-		.macro	addruart, rx
+		.macro	addruart, rx, tmp
 		.endm
 
 		.macro	senduart, rd, rx
@@ -71,7 +71,7 @@ wait:		mrc	p14, 0, pc, c0, c1, 0
 
 #elif defined(CONFIG_CPU_XSCALE)
 
-		.macro	addruart, rx
+		.macro	addruart, rx, tmp
 		.endm
 
 		.macro	senduart, rd, rx
@@ -98,7 +98,7 @@ wait:		mrc	p14, 0, pc, c0, c1, 0
 
 #else
 
-		.macro	addruart, rx
+		.macro	addruart, rx, tmp
 		.endm
 
 		.macro	senduart, rd, rx
@@ -164,7 +164,7 @@ ENDPROC(printhex2)
 		.ltorg
 
 ENTRY(printascii)
-		addruart r3
+		addruart r3, r1
 		b	2f
 1:		waituart r2, r3
 		senduart r1, r3
@@ -180,7 +180,7 @@ ENTRY(printascii)
 ENDPROC(printascii)
 
 ENTRY(printch)
-		addruart r3
+		addruart r3, r1
 		mov	r1, r0
 		mov	r0, #0
 		b	1b
author maintainer
#2 lore raw

PATCH 2/3 ARM: Add tmp register for debug-macro.S files

In reply to Tony Lindgren

Done with:

$ sed -i -e "s/addruart,rx\|addruart, rx/addruart, rx, tmp/" \
        arch/arm/*/include/*/debug-macro.S
---
 arch/arm/mach-aaec2000/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-at91/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-clps711x/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-davinci/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-dove/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-ebsa110/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ep93xx/include/mach/debug-macro.S    |    2 +-
 .../arm/mach-footbridge/include/mach/debug-macro.S |    4 ++--
 arch/arm/mach-gemini/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-h720x/include/mach/debug-macro.S     |    2 +-
 .../arm/mach-integrator/include/mach/debug-macro.S |    2 +-
 arch/arm/mach-iop13xx/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-iop32x/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-iop33x/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-ixp2000/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ixp23xx/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ixp4xx/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-kirkwood/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-ks8695/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-l7200/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-loki/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-mmp/include/mach/debug-macro.S       |    2 +-
 arch/arm/mach-msm/include/mach/debug-macro.S       |    4 ++--
 arch/arm/mach-mv78xx0/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-netx/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-nomadik/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-ns9xxx/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-omap1/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-omap2/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-orion5x/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-pnx4008/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-pxa/include/mach/debug-macro.S       |    2 +-
 arch/arm/mach-realview/include/mach/debug-macro.S  |    2 +-
 arch/arm/mach-rpc/include/mach/debug-macro.S       |    2 +-
 arch/arm/mach-s3c2410/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-s3c24a0/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-s3c6400/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-s5pc100/include/mach/debug-macro.S   |    2 +-
 arch/arm/mach-sa1100/include/mach/debug-macro.S    |    2 +-
 arch/arm/mach-shark/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-u300/include/mach/debug-macro.S      |    2 +-
 arch/arm/mach-ux500/include/mach/debug-macro.S     |    2 +-
 arch/arm/mach-versatile/include/mach/debug-macro.S |    2 +-
 arch/arm/plat-mxc/include/mach/debug-macro.S       |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/debug-macro.S  |    2 +-
 46 files changed, 48 insertions(+), 48 deletions(-)
arch/arm/mach-aaec2000/include/mach/debug-macro.S +1 -1
index 0b6351d..a9cac36 100644
@@ -10,7 +10,7 @@
  */
 
 #include "hardware.h"
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x80000000		@ physical
arch/arm/mach-at91/include/mach/debug-macro.S +1 -1
index 29052ba..9e750a1 100644
@@ -14,7 +14,7 @@
 #include <mach/hardware.h>
 #include <mach/at91_dbgu.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1						@ MMU enabled?
 	ldreq	\rx, =(AT91_BASE_SYS + AT91_DBGU)		@ System peripherals (phys address)
arch/arm/mach-clps711x/include/mach/debug-macro.S +1 -1
index 64baf9f..fedd807 100644
@@ -13,7 +13,7 @@
 
 #include <asm/hardware/clps7111.h>
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #CLPS7111_PHYS_BASE
arch/arm/mach-davinci/include/mach/debug-macro.S +1 -1
index 17ab523..3cd93a8 100644
@@ -19,7 +19,7 @@
 #include <linux/serial_reg.h>
 #define UART_SHIFT	2
 
-		.macro addruart, rx
+		.macro addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x01000000	@ physical base address
arch/arm/mach-dove/include/mach/debug-macro.S +1 -1
index 9b89ec7..1521d13 100644
@@ -8,7 +8,7 @@
 
 #include <mach/bridge-regs.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1					@ MMU enabled?
 	ldreq	\rx, =DOVE_SB_REGS_PHYS_BASE
arch/arm/mach-ebsa110/include/mach/debug-macro.S +1 -1
index 1dde822..ebbd89f 100644
@@ -11,7 +11,7 @@
  *
 **/
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mov	\rx, #0xf0000000
 		orr	\rx, \rx, #0x00000be0
 		.endm
arch/arm/mach-ep93xx/include/mach/debug-macro.S +1 -1
index 802858b..5cd2244 100644
@@ -11,7 +11,7 @@
  */
 #include <mach/ep93xx-regs.h>
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1				@ MMU enabled?
 		ldreq	\rx, =EP93XX_APB_PHYS_BASE	@ Physical base
arch/arm/mach-footbridge/include/mach/debug-macro.S +2 -2
index 4329b81..60dda13 100644
@@ -15,7 +15,7 @@
 
 #ifndef CONFIG_DEBUG_DC21285_PORT
 	/* For NetWinder debugging */
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x7c000000	@ physical
@@ -32,7 +32,7 @@
 		.equ	dc21285_high, ARMCSR_BASE & 0xff000000
 		.equ	dc21285_low,  ARMCSR_BASE & 0x00ffffff
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x42000000
arch/arm/mach-gemini/include/mach/debug-macro.S +1 -1
index d04a6ea..ad47704 100644
@@ -11,7 +11,7 @@
  */
 #include <mach/hardware.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1					@ MMU enabled?
 	ldreq	\rx, =GEMINI_UART_BASE			@ physical
arch/arm/mach-h720x/include/mach/debug-macro.S +1 -1
index 6294a13..a9ee8f0 100644
@@ -14,7 +14,7 @@
 		.equ    io_virt, IO_BASE
 		.equ    io_phys, IO_START
 
-		.macro  addruart,rx
+		.macro  addruart, rx, tmp
 		mrc     p15, 0, \rx, c1, c0
 		tst     \rx, #1  	       @ MMU enabled?
 		moveq   \rx, #io_phys	       @ physical base address
arch/arm/mach-integrator/include/mach/debug-macro.S +1 -1
index d347d65..87a6888 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x16000000	@ physical base address
arch/arm/mach-iop13xx/include/mach/debug-macro.S +1 -1
index 9037d2e..c9d6ba4 100644
@@ -11,7 +11,7 @@
  * published by the Free Software Foundation.
  */
 
-	.macro	addruart, rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1			@ mmu enabled?
 	moveq	\rx, #0xff000000	@ physical
arch/arm/mach-iop32x/include/mach/debug-macro.S +1 -1
index 58b0166..736afe1 100644
@@ -11,7 +11,7 @@
  * published by the Free Software Foundation.
  */
 
-		.macro	addruart, rx
+		.macro	addruart, rx, tmp
 		mov	\rx, #0xfe000000	@ physical as well as virtual
 		orr	\rx, \rx, #0x00800000	@ location of the UART
 		.endm
arch/arm/mach-iop33x/include/mach/debug-macro.S +1 -1
index a60c9ef..addb2da 100644
@@ -11,7 +11,7 @@
  * published by the Free Software Foundation.
  */
 
-		.macro	addruart, rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ mmu enabled?
 		moveq	\rx, #0xff000000	@ physical
arch/arm/mach-ixp2000/include/mach/debug-macro.S +1 -1
index 904ff56..6a82768 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro  addruart,rx
+		.macro  addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0xc0000000	@ Physical base
arch/arm/mach-ixp23xx/include/mach/debug-macro.S +1 -1
index 905db31..a82e375 100644
@@ -12,7 +12,7 @@
  */
 #include <mach/ixp23xx.h>
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1				@ mmu enabled?
 		ldreq	\rx, =IXP23XX_PERIPHERAL_PHYS 	@ physical
arch/arm/mach-ixp4xx/include/mach/debug-macro.S +1 -1
index 7c6a691..893873e 100644
@@ -10,7 +10,7 @@
  * published by the Free Software Foundation.
 */
 
-                .macro  addruart,rx
+                .macro  addruart, rx, tmp
                 mrc     p15, 0, \rx, c1, c0
                 tst     \rx, #1                 @ MMU enabled?
                 moveq   \rx, #0xc8000000
arch/arm/mach-kirkwood/include/mach/debug-macro.S +1 -1
index a4a55c1..d060677 100644
@@ -8,7 +8,7 @@
 
 #include <mach/bridge-regs.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1					@ MMU enabled?
 	ldreq	\rx, =KIRKWOOD_REGS_PHYS_BASE
arch/arm/mach-ks8695/include/mach/debug-macro.S +1 -1
index 3782c35..cf2095d 100644
@@ -14,7 +14,7 @@
 #include <mach/hardware.h>
 #include <mach/regs-uart.h>
 
-	.macro	addruart, rx
+	.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1				@ MMU enabled?
 		ldreq	\rx, =KS8695_UART_PA		@ physical base address
arch/arm/mach-l7200/include/mach/debug-macro.S +1 -1
index 34eed2a..b69ed34 100644
@@ -14,7 +14,7 @@
 		.equ	io_virt, IO_BASE
 		.equ	io_phys, IO_START
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #io_phys		@ physical base address
arch/arm/mach-lh7a40x/include/mach/debug-macro.S +1 -1
index 85141ed..c0dcbbb 100644
@@ -14,7 +14,7 @@
 	@ It is not known if this will be appropriate for every 40x
 	@ board.
 
-		.macro  addruart,rx
+		.macro  addruart, rx, tmp
 		mrc     p15, 0, \rx, c1, c0
 		tst     \rx, #1                 @ MMU enabled?
 		mov     \rx, #0x00000700        @ offset from base
arch/arm/mach-loki/include/mach/debug-macro.S +1 -1
index a8c20bd..3136c91 100644
@@ -8,7 +8,7 @@
 
 #include <mach/loki.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1					@ MMU enabled?
 	ldreq	\rx, =LOKI_REGS_PHYS_BASE
arch/arm/mach-mmp/include/mach/debug-macro.S +1 -1
index a850f87..76deff2 100644
@@ -11,7 +11,7 @@
 
 #include <mach/addr-map.h>
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1				@ MMU enabled?
 		ldreq	\rx, =APB_PHYS_BASE		@ physical
arch/arm/mach-msm/include/mach/debug-macro.S +2 -2
index d48747e..528750f 100644
@@ -20,7 +20,7 @@
 #include <mach/msm_iomap.h>
 
 #ifdef CONFIG_MSM_DEBUG_UART
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	@ see if the MMU is enabled and select appropriate base address
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1
@@ -40,7 +40,7 @@
 	beq	1001b
 	.endm
 #else
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	.endm
 
 	.macro	senduart,rd,rx
arch/arm/mach-mv78xx0/include/mach/debug-macro.S +1 -1
index a06442f..cd81689 100644
@@ -8,7 +8,7 @@
 
 #include <mach/mv78xx0.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1					@ MMU enabled?
 	ldreq	\rx, =MV78XX0_REGS_PHYS_BASE
arch/arm/mach-netx/include/mach/debug-macro.S +1 -1
index 11b9d5b..e96339e 100644
@@ -13,7 +13,7 @@
 
 #include "hardware.h"
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x00100000		@ physical
arch/arm/mach-nomadik/include/mach/debug-macro.S +1 -1
index e876990..4f92acf 100644
@@ -10,7 +10,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x10000000	@ physical base address
arch/arm/mach-ns9xxx/include/mach/debug-macro.S +1 -1
index c9530fb..0859336 100644
@@ -11,7 +11,7 @@
 
 #include <mach/regs-board-a9m9750dev.h>
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1
 		ldreq	\rx, =NS9XXX_CSxSTAT_PHYS(0)
arch/arm/mach-omap1/include/mach/debug-macro.S +1 -1
index aedb746..8c74cab 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0xff000000	@ physical base address
arch/arm/mach-omap2/include/mach/debug-macro.S +1 -1
index e9f255d..86979d7 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 #ifdef  CONFIG_ARCH_OMAP2
arch/arm/mach-orion5x/include/mach/debug-macro.S +1 -1
index c7f808b..91e0e39 100644
@@ -10,7 +10,7 @@
 
 #include <mach/orion5x.h>
 
-	.macro  addruart,rx
+	.macro  addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1					@ MMU enabled?
 	ldreq	\rx, =ORION5X_REGS_PHYS_BASE
arch/arm/mach-pnx4008/include/mach/debug-macro.S +1 -1
index 6d1407f..6ca8bd3 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		mov	\rx, #0x00090000
arch/arm/mach-pxa/include/mach/debug-macro.S +1 -1
index 55d6a17..01cf813 100644
@@ -13,7 +13,7 @@
 
 #include "hardware.h"
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x40000000		@ physical
arch/arm/mach-realview/include/mach/debug-macro.S +1 -1
index 932d8af..8662228 100644
@@ -33,7 +33,7 @@
 #error "Unknown RealView platform"
 #endif
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx,      #0x10000000
arch/arm/mach-rpc/include/mach/debug-macro.S +1 -1
index b2a939f..6fc8d66 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x03000000
arch/arm/mach-s3c2410/include/mach/debug-macro.S +1 -1
index 4c29a89..0eef78b 100644
@@ -19,7 +19,7 @@
 #define S3C2410_UART1_OFF (0x4000)
 #define SHIFT_2440TXF (14-9)
 
-	.macro addruart, rx
+	.macro addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1
 		ldreq	\rx, = S3C24XX_PA_UART
arch/arm/mach-s3c24a0/include/mach/debug-macro.S +1 -1
index f0ef0ab..239476b 100644
@@ -10,7 +10,7 @@
 #include <mach/map.h>
 #include <plat/regs-serial.h>
 
-	.macro addruart, rx
+	.macro addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1
 		ldreq	\rx, = S3C24XX_PA_UART
arch/arm/mach-s3c6400/include/mach/debug-macro.S +1 -1
index b18ac52..5c88875 100644
@@ -21,7 +21,7 @@
 	 * aligned and add in the offset when we load the value here.
 	 */
 
-	.macro addruart, rx
+	.macro addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1
 		ldreq	\rx, = S3C_PA_UART
arch/arm/mach-s5pc100/include/mach/debug-macro.S +1 -1
index 9d142cc..e181f57 100644
@@ -22,7 +22,7 @@
 	 * aligned and add in the offset when we load the value here.
 	 */
 
-	.macro addruart, rx
+	.macro addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1
 		ldreq	\rx, = S3C_PA_UART
arch/arm/mach-sa1100/include/mach/debug-macro.S +1 -1
index 1f0634d..336adcc 100644
@@ -12,7 +12,7 @@
 */
 #include <mach/hardware.h>
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x80000000	@ physical base address
arch/arm/mach-shark/include/mach/debug-macro.S +1 -1
index f97a762..50f071c 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mov	\rx, #0xe0000000
 		orr	\rx, \rx, #0x000003f8
 		.endm
arch/arm/mach-u300/include/mach/debug-macro.S +1 -1
index f3a1cbb..ca4a028 100644
@@ -10,7 +10,7 @@
  */
 #include <mach/hardware.h>
 
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	/* If we move the adress using MMU, use this. */
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1			@ MMU enabled?
arch/arm/mach-ux500/include/mach/debug-macro.S +1 -1
index 8f21b6a..494408b 100644
@@ -8,7 +8,7 @@
  * published by the Free Software Foundation.
  *
  */
-	.macro	addruart,rx
+	.macro	addruart, rx, tmp
 	mrc	p15, 0, \rx, c1, c0
 	tst	\rx, #1			@MMU enabled?
 	moveq	\rx, #0x80000000	@MMU off, Physical address
arch/arm/mach-versatile/include/mach/debug-macro.S +1 -1
index b4ac00e..6fea719 100644
@@ -11,7 +11,7 @@
  *
 */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx,      #0x10000000
arch/arm/plat-mxc/include/mach/debug-macro.S +1 -1
index 15b2b14..5a6ae1b 100644
@@ -52,7 +52,7 @@
 #define UART_PADDR	MXC91231_UART2_BASE_ADDR
 #define UART_VADDR	MXC91231_AIPS1_IO_ADDRESS(MXC91231_UART2_BASE_ADDR)
 #endif
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		ldreq	\rx, =UART_PADDR	@ physical
arch/arm/plat-stmp3xxx/include/mach/debug-macro.S +1 -1
index fb3b969..1b9348b 100644
@@ -16,7 +16,7 @@
  * http://www.gnu.org/copyleft/gpl.html
  */
 
-		.macro	addruart,rx
+		.macro	addruart, rx, tmp
 		mrc	p15, 0, \rx, c1, c0
 		tst	\rx, #1			@ MMU enabled?
 		moveq	\rx, #0x80000000	@ physical base address
author maintainer
#3 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 is not selected

In reply to Tony Lindgren

Otherwise the kernel built with both CPU_V6 and CPU_V7 will not boot on omap2.

---
 arch/arm/mm/Kconfig |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mm/Kconfig +2 -2
index baf6384..4c2e90d 100644
@@ -399,7 +399,7 @@ config CPU_V6
 config CPU_32v6K
 	bool "Support ARM V6K processor extensions" if !SMP
 	depends on CPU_V6
-	default y if SMP && !ARCH_MX3
+	default y if SMP && !(ARCH_MX3 || ARCH_OMAP2)
 	help
 	  Say Y here if your ARMv6 processor supports the 'K' extension.
 	  This enables the kernel to use some instructions not present
@@ -410,7 +410,7 @@ config CPU_32v6K
 # ARMv7
 config CPU_V7
 	bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
-	select CPU_32v6K
+	select CPU_32v6K if !ARCH_OMAP2
 	select CPU_32v7
 	select CPU_ABRT_EV7
 	select CPU_PABRT_V7
#4 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

Quoted 22 lines · Tony Lindgren

Otherwise the kernel built with both CPU_V6 and CPU_V7 will not boot on omap2.

---
 arch/arm/mm/Kconfig |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mm/Kconfig +1 -1
index baf6384..4c2e90d 100644
@@ -399,7 +399,7 @@ config CPU_V6
 config CPU_32v6K
        bool "Support ARM V6K processor extensions" if !SMP
        depends on CPU_V6
-       default y if SMP && !ARCH_MX3
+       default y if SMP && !(ARCH_MX3 || ARCH_OMAP2)
        help
          Say Y here if your ARMv6 processor supports the 'K' extension.
          This enables the kernel to use some instructions not present

arch/arm/mm/Kconfig config CPU_32v6K · line 413

Quoted 5 lines
arch/arm/mm/Kconfig +1 -1
@@ -410,7 +410,7 @@ config CPU_32v6K
 # ARMv7
 config CPU_V7
        bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
-       select CPU_32v6K
+       select CPU_32v6K if !ARCH_OMAP2

I suspect that would be an issue for all ARMv6 platforms without the MP extensions (v6K). Could we do something like:

	select CPU_32v6K if SMP || !CPU_V6

As for the CPU_32v6K config entry, do any of ARCH_MX3 or ARCH_OMAP2 support SMP? We could remove them.

Signature · 1 line
Catalin
author maintainer
#5 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

Quoted 32 lines · Catalin Marinas
Quoted 22 lines · Tony Lindgren

Otherwise the kernel built with both CPU_V6 and CPU_V7 will not boot on omap2.

---
 arch/arm/mm/Kconfig |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mm/Kconfig +1 -1
index baf6384..4c2e90d 100644
@@ -399,7 +399,7 @@ config CPU_V6
 config CPU_32v6K
        bool "Support ARM V6K processor extensions" if !SMP
        depends on CPU_V6
-       default y if SMP && !ARCH_MX3
+       default y if SMP && !(ARCH_MX3 || ARCH_OMAP2)
        help
          Say Y here if your ARMv6 processor supports the 'K' extension.
          This enables the kernel to use some instructions not present

arch/arm/mm/Kconfig config CPU_32v6K · line 413

Quoted 5 lines
arch/arm/mm/Kconfig +1 -1
@@ -410,7 +410,7 @@ config CPU_32v6K
 # ARMv7
 config CPU_V7
        bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
-       select CPU_32v6K
+       select CPU_32v6K if !ARCH_OMAP2

I suspect that would be an issue for all ARMv6 platforms without the MP extensions (v6K). Could we do something like:

Quoted 1 line
	select CPU_32v6K if SMP || !CPU_V6

Hmm, but then we can't compile in SMP for single core systems and keep it bootable on single core v6?

Quoted 2 lines

As for the CPU_32v6K config entry, do any of ARCH_MX3 or ARCH_OMAP2 support SMP? We could remove them.

There's no hardware SMP support for omap2 or 3. But I may take a look at trying to compile in also unoptimized omap4 support with some dummy SMP support for omap2 and omap3 :)

The bloated kernel I'm after would have:

ARCH_OMAP2 v6, no hardware SMP support, can't use CPU_32v6K
ARCH_OMAP3 v7, no hardware SMP support
ARCH_OMAP4 v7, hardware SMP support, so need SMP selected

In this case it should be OK to have SMP set and CPU_32v6K not set. Sure the kernel would not be bootable if there was some real v6 with hardware SMP support, but in this case there is no such hardware.

Why is this needed? It avoids many unnecessary compiles to test the common code. It's also handy for distro install kernels.

Regards,

Tony

#6 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

Quoted 33 lines · Tony Lindgren
Quoted 32 lines · Catalin Marinas
Quoted 22 lines · Tony Lindgren

Otherwise the kernel built with both CPU_V6 and CPU_V7 will not boot on omap2.

---
 arch/arm/mm/Kconfig |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mm/Kconfig +1 -1
index baf6384..4c2e90d 100644
@@ -399,7 +399,7 @@ config CPU_V6
 config CPU_32v6K
        bool "Support ARM V6K processor extensions" if !SMP
        depends on CPU_V6
-       default y if SMP && !ARCH_MX3
+       default y if SMP && !(ARCH_MX3 || ARCH_OMAP2)
        help
          Say Y here if your ARMv6 processor supports the 'K' extension.
          This enables the kernel to use some instructions not present

arch/arm/mm/Kconfig config CPU_32v6K · line 413

Quoted 5 lines
arch/arm/mm/Kconfig +1 -1
@@ -410,7 +410,7 @@ config CPU_32v6K
 # ARMv7
 config CPU_V7
        bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
-       select CPU_32v6K
+       select CPU_32v6K if !ARCH_OMAP2

I suspect that would be an issue for all ARMv6 platforms without the MP extensions (v6K). Could we do something like:

Quoted 4 lines
Quoted 1 line
      select CPU_32v6K if SMP || !CPU_V6

Hmm, but then we can't compile in SMP for single core systems and keep it bootable on single core v6?

Not with the current kernel since it hardcodes the shareability bit in the page tables and the LDREX/STREX operations don't work as expected on uniprocessor hardware.

I agree that it would be nice to be able to have an SMP kernel booting on both UP and MP but there are some #ifdef CONFIG_SMP in the kernel which would need to be sorted out.

Signature · 1 line
Catalin
#7 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

Quoted 6 lines · Catalin Marinas
Quoted 2 lines

Hmm, but then we can't compile in SMP for single core systems and keep it bootable on single core v6?

Not with the current kernel since it hardcodes the shareability bit in the page tables and the LDREX/STREX operations don't work as expected on uniprocessor hardware.

My understanding of LDREX/STREX is that it's allowed to be quite different on uniprocessors (and CPU-local activity on SMP), but if it's used properly it still works ok.

Can you say a bit more about assumptions made by the kernel using LDREX/STREX that fail on uniprocessor hardware?

Is it just the shareability bit in page tables having the wrong value?

Thanks,
-- Jamie

#8 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

Quoted 8 lines · Jamie Lokier
Quoted 6 lines · Catalin Marinas
Quoted 2 lines

Hmm, but then we can't compile in SMP for single core systems and keep it bootable on single core v6?

Not with the current kernel since it hardcodes the shareability bit in the page tables and the LDREX/STREX operations don't work as expected on uniprocessor hardware.

Quoted 8 lines

My understanding of LDREX/STREX is that it's allowed to be quite different on uniprocessors (and CPU-local activity on SMP), but if it's used properly it still works ok.

Can you say a bit more about assumptions made by the kernel using LDREX/STREX that fail on uniprocessor hardware?

Is it just the shareability bit in page tables having the wrong value?

The kernel doesn't make any assumptions. It's the CPU that behaved differently when the page was marked as shareable in a UP system. I tried in the past and it looked like STREX was expecting some kind of global exclusive monitor and it was always failing.

Anyway, it is possible that I don't recall correctly and it may have been just an ARM11MPCore but with the SMP/nAMP mode disabled but the STREX had already implemented with other expectations.

It's worth giving it a try though.

Signature · 1 line
Catalin
#9 lore raw

PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

In reply to Tony Lindgren
Quoted 33 lines · Tony Lindgren
Quoted 32 lines · Catalin Marinas
Quoted 22 lines · Tony Lindgren

Otherwise the kernel built with both CPU_V6 and CPU_V7 will not boot on omap2.

---
 arch/arm/mm/Kconfig |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mm/Kconfig +1 -1
index baf6384..4c2e90d 100644
@@ -399,7 +399,7 @@ config CPU_V6
 config CPU_32v6K
        bool "Support ARM V6K processor extensions" if !SMP
        depends on CPU_V6
-       default y if SMP && !ARCH_MX3
+       default y if SMP && !(ARCH_MX3 || ARCH_OMAP2)
        help
          Say Y here if your ARMv6 processor supports the 'K' extension.
          This enables the kernel to use some instructions not present

arch/arm/mm/Kconfig config CPU_32v6K · line 413

Quoted 5 lines
arch/arm/mm/Kconfig +1 -1
@@ -410,7 +410,7 @@ config CPU_32v6K
 # ARMv7
 config CPU_V7
        bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
-       select CPU_32v6K
+       select CPU_32v6K if !ARCH_OMAP2

I suspect that would be an issue for all ARMv6 platforms without the MP extensions (v6K). Could we do something like:

Quoted 4 lines
Quoted 1 line
      select CPU_32v6K if SMP || !CPU_V6

Hmm, but then we can't compile in SMP for single core systems and keep it bootable on single core v6?

Assuming that there is no issue with LDREX/STREX and the page shareability attribute (or that we sort it out), there is also the TLS register. The HAS_TLS_REG option gets enabled if SMP but I think that's a v6K extension.

Signature · 1 line
Catalin