Skip to content
Snippets Groups Projects
Commit aadd3360 authored by Tom Rini's avatar Tom Rini
Browse files

ARM: keystone2: Split monitor code / command code


When we switch to including all linker lists in SPL it is important
to not include commands as that may lead to link errors due to other
things we have already discarded.  In this case, we split the code for
supporting the monitor out from the code for loading it.

Cc: Vitaly Andrianov <vitalya@ti.com>
Cc: Nishanth Menon <nm@ti.com>
Cc: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: default avatarTom Rini <trini@konsulko.com>
parent 07adb7c2
No related branches found
No related tags found
No related merge requests found
...@@ -8,8 +8,11 @@ ...@@ -8,8 +8,11 @@
obj-y += init.o obj-y += init.o
obj-y += psc.o obj-y += psc.o
obj-y += clock.o obj-y += clock.o
obj-y += mon.o
ifndef CONFIG_SPL_BUILD
obj-y += cmd_clock.o obj-y += cmd_clock.o
obj-y += cmd_mon.o obj-y += cmd_mon.o
endif
obj-y += msmc.o obj-y += msmc.o
obj-y += ddr3.o cmd_ddr3.o obj-y += ddr3.o cmd_ddr3.o
obj-y += keystone.o obj-y += keystone.o
......
...@@ -9,25 +9,9 @@ ...@@ -9,25 +9,9 @@
#include <common.h> #include <common.h>
#include <command.h> #include <command.h>
#include <mach/mon.h>
asm(".arch_extension sec\n\t"); asm(".arch_extension sec\n\t");
static int mon_install(u32 addr, u32 dpsc, u32 freq)
{
int result;
__asm__ __volatile__ (
"stmfd r13!, {lr}\n"
"mov r0, %1\n"
"mov r1, %2\n"
"mov r2, %3\n"
"blx r0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (addr), "r" (dpsc), "r" (freq)
: "cc", "r0", "r1", "r2", "memory");
return result;
}
static int do_mon_install(cmd_tbl_t *cmdtp, int flag, int argc, static int do_mon_install(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[]) char * const argv[])
{ {
...@@ -64,39 +48,6 @@ static void core_spin(void) ...@@ -64,39 +48,6 @@ static void core_spin(void)
} }
} }
int mon_power_on(int core_id, void *ep)
{
int result;
asm volatile (
"stmfd r13!, {lr}\n"
"mov r1, %1\n"
"mov r2, %2\n"
"mov r0, #0\n"
"smc #0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id), "r" (ep)
: "cc", "r0", "r1", "r2", "memory");
return result;
}
int mon_power_off(int core_id)
{
int result;
asm volatile (
"stmfd r13!, {lr}\n"
"mov r1, %1\n"
"mov r0, #1\n"
"smc #1\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id)
: "cc", "r0", "r1", "memory");
return result;
}
int do_mon_power(cmd_tbl_t *cmdtp, int flag, int argc, int do_mon_power(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[]) char * const argv[])
{ {
......
...@@ -7,9 +7,11 @@ ...@@ -7,9 +7,11 @@
* SPDX-License-Identifier: GPL-2.0+ * SPDX-License-Identifier: GPL-2.0+
*/ */
#ifndef _MON_H_ #ifndef _MACH_MON_H_
#define _MON_H_ #define _MACH_MON_H_
int mon_install(u32 addr, u32 dpsc, u32 freq);
int mon_power_on(int core_id, void *ep);
int mon_power_off(int core_id); int mon_power_off(int core_id);
#endif #endif
/*
* K2HK: secure kernel command file
*
* (C) Copyright 2012-2014
* Texas Instruments Incorporated, <www.ti.com>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <command.h>
#include <mach/mon.h>
asm(".arch_extension sec\n\t");
int mon_install(u32 addr, u32 dpsc, u32 freq)
{
int result;
__asm__ __volatile__ (
"stmfd r13!, {lr}\n"
"mov r0, %1\n"
"mov r1, %2\n"
"mov r2, %3\n"
"blx r0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (addr), "r" (dpsc), "r" (freq)
: "cc", "r0", "r1", "r2", "memory");
return result;
}
int mon_power_on(int core_id, void *ep)
{
int result;
asm volatile (
"stmfd r13!, {lr}\n"
"mov r1, %1\n"
"mov r2, %2\n"
"mov r0, #0\n"
"smc #0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id), "r" (ep)
: "cc", "r0", "r1", "r2", "memory");
return result;
}
int mon_power_off(int core_id)
{
int result;
asm volatile (
"stmfd r13!, {lr}\n"
"mov r1, %1\n"
"mov r0, #1\n"
"smc #1\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id)
: "cc", "r0", "r1", "memory");
return result;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment