blob: 256f6300ed32bab97d46a8db691c7a137099d6a7 [file] [log] [blame]
Tom Rini108ee582016-03-16 09:10:08 -04001/*
2 * K2HK: secure kernel command file
3 *
4 * (C) Copyright 2012-2014
5 * Texas Instruments Incorporated, <www.ti.com>
6 *
7 * SPDX-License-Identifier: GPL-2.0+
8 */
9
10#include <common.h>
11#include <command.h>
12#include <mach/mon.h>
13asm(".arch_extension sec\n\t");
14
15int mon_install(u32 addr, u32 dpsc, u32 freq)
16{
17 int result;
18
19 __asm__ __volatile__ (
20 "stmfd r13!, {lr}\n"
21 "mov r0, %1\n"
22 "mov r1, %2\n"
23 "mov r2, %3\n"
24 "blx r0\n"
25 "ldmfd r13!, {lr}\n"
26 : "=&r" (result)
27 : "r" (addr), "r" (dpsc), "r" (freq)
28 : "cc", "r0", "r1", "r2", "memory");
29 return result;
30}
31
32int mon_power_on(int core_id, void *ep)
33{
34 int result;
35
36 asm volatile (
37 "stmfd r13!, {lr}\n"
38 "mov r1, %1\n"
39 "mov r2, %2\n"
40 "mov r0, #0\n"
41 "smc #0\n"
42 "ldmfd r13!, {lr}\n"
43 : "=&r" (result)
44 : "r" (core_id), "r" (ep)
45 : "cc", "r0", "r1", "r2", "memory");
46 return result;
47}
48
49int mon_power_off(int core_id)
50{
51 int result;
52
53 asm volatile (
54 "stmfd r13!, {lr}\n"
55 "mov r1, %1\n"
56 "mov r0, #1\n"
57 "smc #1\n"
58 "ldmfd r13!, {lr}\n"
59 : "=&r" (result)
60 : "r" (core_id)
61 : "cc", "r0", "r1", "memory");
62 return result;
63}