linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/6] ARM: mach-omap1: clean up debug-macro.S
Date: Mon, 5 Sep 2011 02:49:28 -0700	[thread overview]
Message-ID: <20110905094928.GC1903@atomide.com> (raw)
In-Reply-To: <1314932353-24813-4-git-send-email-nico@fluxnic.net>

* Nicolas Pitre <nico@fluxnic.net> [110901 19:26]:
> --- a/arch/arm/mach-omap1/include/mach/debug-macro.S
> +++ b/arch/arm/mach-omap1/include/mach/debug-macro.S
> @@ -34,13 +29,13 @@ omap_uart_virt:	.word	0x0
>  		.macro	addruart, rp, rv, tmp
>  
>  		/* Use omap_uart_phys/virt if already configured */
> -9:		mrc	p15, 0, \rp, c1, c0
> -		tst	\rp, #1			@ MMU enabled?
> -		ldreq	\rp, =omap_uart_v2p(omap_uart_phys)	@ MMU disabled
> -		ldrne	\rp, =omap_uart_phys	@ MMU enabled
> -		add	\rv, \rp, #4		@ omap_uart_virt
> -		ldr	\rp, [\rp, #0]
> -		ldr	\rv, [\rv, #0]
> +9:		adr	\rp, 11f		@ get effective addr of 11f
> +		ldr	\rv, [\rp]		@ get absolute addr of 11f
> +		sub	\rv, \rv, \rp		@ offset between the two
> +		ldr	\rp, [\rp, #4]		@ abs addr of omap_uart_phys
> +		sub	\tmp, \rp, \rv		@ make it effective
> +		ldr	\rp, [\tmp, #0]		@ omap_uart_phys
> +		ldr	\rv, [\tmp, #4]		@ omap_uart_virt
>  		cmp	\rp, #0			@ is port configured?
>  		cmpne	\rv, #0
>  		bne	99f			@ already configured

The 11f above will fail for omap1 as we already have 11 defined there
for omap1 uart1. The prepare patch I posted as 2.5/6 fixes that issue.
This will also allow further clean-up to combine omap1 and omap2+
debug-macro.S.

Below is updated version of your patch to use 99f instead of 11f.

Tony


From: Nicolas Pitre <nico@fluxnic.net>
Date: Thu, 1 Sep 2011 22:59:10 -0400
Subject: [PATCH] ARM: mach-omap1: clean up debug-macro.S

This achieves two goals:

1) Get rid of omap_uart_v2p() and omap_uart_p2v() which were the last users
   of PLAT_PHYS_OFFSET.

2) Remove the probing of the M bit in the CP15 control reg and make
   the access to the .data variables completely position independent.

Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>

diff --git a/arch/arm/mach-omap1/include/mach/debug-macro.S b/arch/arm/mach-omap1/include/mach/debug-macro.S
index 77a7202..2b36a28 100644
--- a/arch/arm/mach-omap1/include/mach/debug-macro.S
+++ b/arch/arm/mach-omap1/include/mach/debug-macro.S
@@ -13,13 +13,8 @@
 
 #include <linux/serial_reg.h>
 
-#include <asm/memory.h>
-
 #include <plat/serial.h>
 
-#define omap_uart_v2p(x)	((x) - PAGE_OFFSET + PLAT_PHYS_OFFSET)
-#define omap_uart_p2v(x)	((x) - PLAT_PHYS_OFFSET + PAGE_OFFSET)
-
 		.pushsection .data
 omap_uart_phys:	.word	0x0
 omap_uart_virt:	.word	0x0
@@ -34,13 +29,13 @@ omap_uart_virt:	.word	0x0
 		.macro	addruart, rp, rv, tmp
 
 		/* Use omap_uart_phys/virt if already configured */
-9:		mrc	p15, 0, \rp, c1, c0
-		tst	\rp, #1			@ MMU enabled?
-		ldreq	\rp, =omap_uart_v2p(omap_uart_phys)	@ MMU disabled
-		ldrne	\rp, =omap_uart_phys	@ MMU enabled
-		add	\rv, \rp, #4		@ omap_uart_virt
-		ldr	\rp, [\rp, #0]
-		ldr	\rv, [\rv, #0]
+9:		adr	\rp, 99f		@ get effective addr of 99f
+		ldr	\rv, [\rp]		@ get absolute addr of 99f
+		sub	\rv, \rv, \rp		@ offset between the two
+		ldr	\rp, [\rp, #4]		@ abs addr of omap_uart_phys
+		sub	\tmp, \rp, \rv		@ make it effective
+		ldr	\rp, [\tmp, #0]		@ omap_uart_phys
+		ldr	\rv, [\tmp, #4]		@ omap_uart_virt
 		cmp	\rp, #0			@ is port configured?
 		cmpne	\rv, #0
 		bne	100f			@ already configured
@@ -72,16 +67,17 @@ omap_uart_virt:	.word	0x0
 
 		/* Store both phys and virt address for the uart */
 98:		add	\rp, \rp, #0xff000000	@ phys base
-		mrc	p15, 0, \rv, c1, c0
-		tst	\rv, #1			@ MMU enabled?
-		ldreq	\rv, =omap_uart_v2p(omap_uart_phys)	@ MMU disabled
-		ldrne	\rv, =omap_uart_phys	@ MMU enabled
-		str	\rp, [\rv, #0]
+		str	\rp, [\tmp, #0]		@ omap_uart_phys
 		sub	\rp, \rp, #0xff000000	@ phys base
 		add	\rp, \rp, #0xfe000000	@ virt base
-		add	\rv, \rv, #4		@ omap_uart_lsr
-		str	\rp, [\rv, #0]
+		str	\rp, [\tmp, #4]		@ omap_uart_virt
 		b	9b
+
+		.align
+99:		.word	.
+		.word	omap_uart_phys
+		.ltorg
+
 100:
 		.endm
 

  reply	other threads:[~2011-09-05  9:49 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-02  2:59 [PATCH 0/6] OMAP/Davinci debug UART code cleanup Nicolas Pitre
2011-09-02  2:59 ` [PATCH 1/6] ARM: add an extra temp register to the addruart low level debugging macro Nicolas Pitre
2011-09-02  2:59 ` [PATCH 2/6] ARM: plat-omap: make OMAP_UART_INFO into a relative offset Nicolas Pitre
2011-09-05  9:44   ` Tony Lindgren
2011-09-05 19:24     ` Nicolas Pitre
2011-09-05  9:46   ` [PATCH 2.5/6] ARM: omap: prepare debug-macro.S for offset based calculation of omap_uart_phys and virt Tony Lindgren
2011-09-06 18:30     ` Nicolas Pitre
2011-09-02  2:59 ` [PATCH 3/6] ARM: mach-omap1: clean up debug-macro.S Nicolas Pitre
2011-09-05  9:49   ` Tony Lindgren [this message]
2011-09-05  9:51     ` Tony Lindgren
2011-09-06 18:33     ` Nicolas Pitre
2011-09-02  2:59 ` [PATCH 4/6] ARM: mach-omap2: " Nicolas Pitre
2011-09-05  9:51   ` Tony Lindgren
2011-09-05 15:07   ` [PATCH 4.5/6] ARM: omap: pass phys, virt and lsr from uncompress.h to debug-macro.S Tony Lindgren
2011-09-06 18:45     ` Nicolas Pitre
2011-09-02  2:59 ` [PATCH 5/6] ARM: mach-davinci: make DAVINCI_UART_INFO into a relative offset Nicolas Pitre
2011-09-02  2:59 ` [PATCH 6/6] ARM: mach-davinci: clean up debug-macro.S Nicolas Pitre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110905094928.GC1903@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).