lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20100205102030.c8b139a1.sfr@canb.auug.org.au>
Date:	Fri, 5 Feb 2010 10:20:30 +1100
From:	Stephen Rothwell <sfr@...b.auug.org.au>
To:	Tony Lindgren <tony@...mide.com>, <linux-omap@...r.kernel.org>
Cc:	linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
	Russell King <rmk@....linux.org.uk>
Subject: linux-next: manual merge of the omap tree with the arm tree

Hi all,

Today's linux-next merge of the omap tree got a conflict in
arch/arm/mach-omap1/include/mach/debug-macro.S
arch/arm/mach-omap2/include/mach/debug-macro.S between commit
7f62dc4756eaf761570b96250630d48f80397d64 ("ARM: 5910/1: ARM: Add tmp
register for addruart and loadsp") from the arm tree and commit 209f5d2d2c8e385834d138ac593df86504a28ffe ("omap: Make
uncompress code and DEBUG_LL code generic") from the omap tree.

I fixed it up (see below) and can carry the fix as necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@...b.auug.org.au

diff --cc arch/arm/mach-omap1/include/mach/debug-macro.S
index 8c74cab,0187391..0000000
--- a/arch/arm/mach-omap1/include/mach/debug-macro.S
+++ b/arch/arm/mach-omap1/include/mach/debug-macro.S
@@@ -11,7 -11,43 +11,43 @@@
   *
  */
  
+ #include <linux/serial_reg.h>
+ 
+ #include <plat/serial.h>
+ 
+ 		.pushsection .data
+ omap_uart_phys:	.word	0x0
+ omap_uart_virt:	.word	0x0
+ 		.popsection
+ 
+ 		/*
+ 		 * Note that this code won't work if the bootloader passes
+ 		 * a wrong machine ID number in r1. To debug, just hardcode
+ 		 * the desired UART phys and virt addresses temporarily into
+ 		 * the omap_uart_phys and omap_uart_virt above.
+ 		 */
 -		.macro	addruart,rx
 +		.macro	addruart, rx, tmp
+ 
+ 		/* Use omap_uart_phys/virt if already configured */
+ 9:		mrc	p15, 0, \rx, c1, c0
+ 		tst	\rx, #1			@ MMU enabled?
+ 		ldreq	\rx, =omap_uart_phys	@ physical base address
+ 		ldrne	\rx, =omap_uart_virt	@ virtual base
+ 		ldr	\rx, [\rx, #0]
+ 		cmp	\rx, #0			@ is port configured?
+ 		bne	99f			@ already configured
+ 
+ 		/* Check 7XX UART1 scratchpad register for uart to use */
+ 		mrc	p15, 0, \rx, c1, c0
+ 		tst	\rx, #1			@ MMU enabled?
+ 		moveq	\rx, #0xff000000	@ physical base address
+ 		movne	\rx, #0xfe000000	@ virtual base
+ 		orr	\rx, \rx, #0x00fb0000	@ OMAP1UART1
+ 		ldrb	\rx, [\rx, #(UART_SCR << OMAP7XX_PORT_SHIFT)]
+ 		cmp	\rx, #0			@ anything in 7XX scratchpad?
+ 		bne	10f			@ found 7XX uart
+ 
+ 		/* Check 15xx/16xx UART1 scratchpad register for uart to use */
  		mrc	p15, 0, \rx, c1, c0
  		tst	\rx, #1			@ MMU enabled?
  		moveq	\rx, #0xff000000	@ physical base address
diff --cc arch/arm/mach-omap2/include/mach/debug-macro.S
index 86979d7,eb05a22..0000000
--- a/arch/arm/mach-omap2/include/mach/debug-macro.S
+++ b/arch/arm/mach-omap2/include/mach/debug-macro.S
@@@ -11,32 -11,107 +11,107 @@@
   *
  */
  
+ #include <linux/serial_reg.h>
+ 
+ #include <plat/serial.h>
+ 
+ #define UART_OFFSET(addr)	((addr) & 0x00ffffff)
+ 
+ 		.pushsection .data
+ omap_uart_phys:	.word	0
+ omap_uart_virt:	.word	0
+ omap_uart_lsr:	.word	0
+ 		.popsection
+ 
+ 		/*
+ 		 * Note that this code won't work if the bootloader passes
+ 		 * a wrong machine ID number in r1. To debug, just hardcode
+ 		 * the desired UART phys and virt addresses temporarily into
+ 		 * the omap_uart_phys and omap_uart_virt above.
+ 		 */
 -		.macro	addruart,rx
 +		.macro	addruart, rx, tmp
+ 
+ 		/* Use omap_uart_phys/virt if already configured */
+ 10:		mrc	p15, 0, \rx, c1, c0
+ 		tst	\rx, #1			@ MMU enabled?
+ 		ldreq	\rx, =omap_uart_phys	@ physical base address
+ 		ldrne	\rx, =omap_uart_virt	@ virtual base address
+ 		ldr	\rx, [\rx, #0]
+ 		cmp	\rx, #0			@ is port configured?
+ 		bne	99f			@ already configured
+ 
+ 		/* Check UART1 scratchpad register for uart to use */
  		mrc	p15, 0, \rx, c1, c0
  		tst	\rx, #1			@ MMU enabled?
- #ifdef  CONFIG_ARCH_OMAP2
  		moveq	\rx, #0x48000000	@ physical base address
  		movne	\rx, #0xfa000000	@ virtual base
- 		orr	\rx, \rx, #0x0006a000
- #ifdef CONFIG_OMAP_LL_DEBUG_UART2
- 		add	\rx, \rx, #0x00002000	@ UART 2
- #endif
- #ifdef CONFIG_OMAP_LL_DEBUG_UART3
- 		add	\rx, \rx, #0x00004000	@ UART 3
- #endif
- 
- #elif defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
- 		moveq	\rx, #0x48000000	@ physical base address
- 		movne	\rx, #0xfa000000	@ virtual base
- 		orr	\rx, \rx, #0x0006a000
- #ifdef CONFIG_OMAP_LL_DEBUG_UART2
- 		add	\rx, \rx, #0x00002000	@ UART 2
- #endif
- #ifdef CONFIG_OMAP_LL_DEBUG_UART3
- 		add	\rx, \rx, #0x00fb0000	@ UART 3
- 		add	\rx, \rx, #0x00006000
- #endif
- #endif
+ 		orr	\rx, \rx, #0x0006a000	@ uart1 on omap2/3/4
+ 		ldrb	\rx, [\rx, #(UART_SCR << OMAP_PORT_SHIFT)] @ scratchpad
+ 
+ 		/* Select the UART to use based on the UART1 scratchpad value */
+ 		cmp	\rx, #0			@ no port configured?
+ 		beq	21f			@ if none, try to use UART1
+ 		cmp	\rx, #OMAP2UART1	@ OMAP2/3/4UART1
+ 		beq	21f			@ configure OMAP2/3/4UART1
+ 		cmp	\rx, #OMAP2UART2	@ OMAP2/3/4UART2
+ 		beq	22f			@ configure OMAP2/3/4UART2
+ 		cmp	\rx, #OMAP2UART3	@ only on 24xx
+ 		beq	23f			@ configure OMAP2UART3
+ 		cmp	\rx, #OMAP3UART3	@ only on 34xx
+ 		beq	33f			@ configure OMAP3UART3
+ 		cmp	\rx, #OMAP4UART3	@ only on 44xx
+ 		beq	43f			@ configure OMAP4UART3
+ 		cmp	\rx, #OMAP3UART4	@ only on 36xx
+ 		beq	34f			@ configure OMAP3UART4
+ 		cmp	\rx, #OMAP4UART4	@ only on 44xx
+ 		beq	44f			@ configure OMAP4UART4
+ 		cmp	\rx, #ZOOM_UART		@ only on zoom2/3
+ 		beq	95f			@ configure ZOOM_UART
+ 
+ 		/* Configure the UART offset from the phys/virt base */
+ 21:		mov	\rx, #UART_OFFSET(OMAP2_UART1_BASE)	@ omap2/3/4
+ 		b	98f
+ 22:		mov	\rx, #UART_OFFSET(OMAP2_UART2_BASE)	@ omap2/3/4
+ 		b	98f
+ 23:		mov	\rx, #UART_OFFSET(OMAP2_UART3_BASE)
+ 		b	98f
+ 33:		mov	\rx, #UART_OFFSET(OMAP3_UART1_BASE)
+ 		add	\rx, \rx, #0x00fb0000
+ 		add	\rx, \rx, #0x00006000		@ OMAP3_UART3_BASE
+ 		b	98f
+ 34:		mov	\rx, #UART_OFFSET(OMAP3_UART1_BASE)
+ 		add	\rx, \rx, #0x00fb0000
+ 		add	\rx, \rx, #0x00028000		@ OMAP3_UART4_BASE
+ 		b	98f
+ 43:		mov	\rx, #UART_OFFSET(OMAP4_UART3_BASE)
+ 		b	98f
+ 44:		mov	\rx, #UART_OFFSET(OMAP4_UART4_BASE)
+ 		b	98f
+ 95:		mov	\rx, #ZOOM_UART_BASE
+ 		ldr	r1, =omap_uart_phys
+ 		str	\rx, [r1, #0]
+ 		mov	\rx, #ZOOM_UART_VIRT
+ 		ldr	r1, =omap_uart_virt
+ 		str	\rx, [r1, #0]
+ 		mov	\rx, #(UART_LSR << ZOOM_PORT_SHIFT)
+ 		ldr	r1, =omap_uart_lsr
+ 		str	\rx, [r1, #0]
+ 		b	10b
+ 
+ 		/* Store both phys and virt address for the uart */
+ 98:		add	\rx, \rx, #0x48000000	@ phys base
+ 		ldr	r1, =omap_uart_phys
+ 		str	\rx, [r1, #0]
+ 		sub	\rx, \rx, #0x48000000	@ phys base
+ 		add	\rx, \rx, #0xfa000000	@ virt base
+ 		ldr	r1, =omap_uart_virt
+ 		str	\rx, [r1, #0]
+ 		mov	\rx, #(UART_LSR << OMAP_PORT_SHIFT)
+ 		ldr	r1, =omap_uart_lsr
+ 		str	\rx, [r1, #0]
+ 
+ 		b	10b
+ 99:
  		.endm
  
  		.macro	senduart,rd,rx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ