Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d660f9a2 authored by Santosh Shilimkar's avatar Santosh Shilimkar Committed by Tony Lindgren
Browse files

omap4: Fix build break by moving omap_smc1 into a separate .S



This patch moves omap_smc1 function to a seperate omap44xx-smc.S file
and sets compile flags as -Wa,-march=armv7-a.

This fix was suggested by Tony Lindgren <tony@atomide.com>

Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
[tony@atomide.com: otherwise multi-omap build with V6 and V7 breaks]
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 6f69a181
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
# SMP support ONLY available for OMAP4
obj-$(CONFIG_SMP)			+= omap-smp.o omap-headsmp.o
obj-$(CONFIG_LOCAL_TIMERS)		+= timer-mpu.o
obj-$(CONFIG_ARCH_OMAP4)		+= omap44xx-smc.o

AFLAGS_omap44xx-smc.o			:=-Wa,-march=armv7-a

# Functions loaded to SRAM
obj-$(CONFIG_ARCH_OMAP2420)		+= sram242x.o
+1 −25
Original line number Diff line number Diff line
@@ -50,33 +50,9 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {
};

#ifdef CONFIG_CACHE_L2X0
noinline void omap_smc1(u32 fn, u32 arg)
{
	register u32 r12 asm("r12") = fn;
	register u32 r0 asm("r0") = arg;

	/* This is common routine cache secure monitor API used to
	 * modify the PL310 secure registers.
	 * r0 contains the value to be modified and "r12" contains
	 * the monitor API number. It uses few CPU registers
	 * internally and hence they need be backed up including
	 * link register "lr".
	 * Explicitly save r11 and r12 the compiler generated code
	 * won't save it.
	 */
	asm volatile(
		"stmfd r13!, {r11,r12}\n"
		"dsb\n"
		"smc\n"
		"ldmfd r13!, {r11,r12}\n"
		: "+r" (r0), "+r" (r12)
		:
		: "r4", "r5", "r10", "lr", "cc");
}
EXPORT_SYMBOL(omap_smc1);

static int __init omap_l2_cache_init(void)
{
	extern void omap_smc1(u32 fn, u32 arg);
	void __iomem *l2cache_base;

	/* To avoid code running on other OMAPs in
+32 −0
Original line number Diff line number Diff line
/*
 * OMAP44xx secure APIs file.
 *
 * Copyright (C) 2010 Texas Instruments, Inc.
 * Written by Santosh Shilimkar <santosh.shilimkar@ti.com>
 *
 *
 * This program is free software,you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include <linux/linkage.h>

/*
 * This is common routine to manage secure monitor API
 * used to modify the PL310 secure registers.
 * 'r0' contains the value to be modified and 'r12' contains
 * the monitor API number. It uses few CPU registers
 * internally and hence they need be backed up including
 * link register "lr".
 * Function signature : void omap_smc1(u32 fn, u32 arg)
 */

ENTRY(omap_smc1)
	stmfd   sp!, {r2-r12, lr}
	mov	r12, r0
	mov 	r0, r1
	dsb
	smc
	ldmfd   sp!, {r2-r12, pc}
END(omap_smc1)