Patchwork [U-Boot] i.MX28: Drop __naked function from spl_mem_init

login
register
mail settings
Submitter Marek Vasut
Date March 16, 2012, 1:04 p.m.
Message ID <1331903075-10468-1-git-send-email-marex@denx.de>
Download mbox | patch
Permalink /patch/147201/
State Accepted
Commit 494931a67465a95b66da346ec7bd002fdf40adee
Headers show

Comments

Marek Vasut - March 16, 2012, 1:04 p.m.
Instead of compiling the function and using the result as a constant, simply use
the constant.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Tom Rini <trini@ti.com>
---
 arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)
Tom Rini - March 16, 2012, 5:01 p.m.
On Fri, Mar 16, 2012 at 02:04:35PM +0100, Marek Vasut wrote:

> Instead of compiling the function and using the result as a constant, simply use
> the constant.

Include a link to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52546 so
we know why we're doing this?

Patch

diff --git a/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c
index 43a90ff..911bbef 100644
--- a/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c
+++ b/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c
@@ -173,22 +173,18 @@  void mx28_mem_setup_vddd(void)
 		&power_regs->hw_power_vdddctrl);
 }
 
-void data_abort_memdetect_handler(void) __attribute__((naked));
-void data_abort_memdetect_handler(void)
-{
-	asm volatile("subs pc, r14, #4");
-}
-
 void mx28_mem_get_size(void)
 {
 	struct mx28_digctl_regs *digctl_regs =
 		(struct mx28_digctl_regs *)MXS_DIGCTL_BASE;
 	uint32_t sz, da;
 	uint32_t *vt = (uint32_t *)0x20;
+	/* The following is "subs pc, r14, #4", used as return from DABT. */
+	const uint32_t data_abort_memdetect_handler = 0xe25ef004;
 
 	/* Replace the DABT handler. */
 	da = vt[4];
-	vt[4] = (uint32_t)&data_abort_memdetect_handler;
+	vt[4] = data_abort_memdetect_handler;
 
 	sz = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
 	writel(sz, &digctl_regs->hw_digctl_scratch0);