Add tmp register for debug-macro.S, do not select CPU_32v6K for omap2
Subsystems (20)
Tony Lindgren
maintainercover 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
Tony Lindgren
maintainerPATCH 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
@@ -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
@@ -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
Tony Lindgren
maintainerPATCH 2/3 ARM: Add tmp register for debug-macro.S files
In reply to Tony LindgrenDone 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
Tony Lindgren
maintainerPATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 is not selected
In reply to Tony LindgrenOtherwise 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
@@ -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
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_V6andCPU_V7will not boot on omap2.Signed-off-by Tony Lindgren <[email protected]>--- arch/arm/mm/Kconfig | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)arch/arm/mm/Kconfig +1
-1@@ -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
Tony Lindgren
maintainerPATCH 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_V6andCPU_V7will not boot on omap2.Signed-off-by Tony Lindgren <[email protected]>--- arch/arm/mm/Kconfig | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)arch/arm/mm/Kconfig +1
-1@@ -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 presentarch/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_OMAP2I 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_32v6Kconfig entry, do any ofARCH_MX3orARCH_OMAP2support 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_32v6KARCH_OMAP3 v7, no hardware SMP supportARCH_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
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_V6andCPU_V7will not boot on omap2.Signed-off-by Tony Lindgren <[email protected]>--- arch/arm/mm/Kconfig | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)arch/arm/mm/Kconfig +1
-1@@ -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 presentarch/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_OMAP2I 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_V6Hmm, 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
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
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
PATCH 3/3 ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected
In reply to Tony LindgrenQuoted 33 lines · Tony Lindgren
Quoted 32 lines · Catalin Marinas
Quoted 22 lines · Tony Lindgren
Otherwise the kernel built with both
CPU_V6andCPU_V7will not boot on omap2.Signed-off-by Tony Lindgren <[email protected]>--- arch/arm/mm/Kconfig | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)arch/arm/mm/Kconfig +1
-1@@ -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 presentarch/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_OMAP2I 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_V6Hmm, 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