projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'fixes-for-v2020.04' of https://gitlab.denx.de/u-boot/custodians/u-boot...
[oweals/u-boot.git]
/
arch
/
arm
/
mach-keystone
/
mon.c
diff --git
a/arch/arm/mach-keystone/mon.c
b/arch/arm/mach-keystone/mon.c
index 81009848d033afd0def2aa06305f6b73f1acb7bf..b7de9ba099de3922919b9dce12370e64e100e99b 100644
(file)
--- a/
arch/arm/mach-keystone/mon.c
+++ b/
arch/arm/mach-keystone/mon.c
@@
-1,19
+1,19
@@
+// SPDX-License-Identifier: GPL-2.0+
/*
/*
- * K2
HK: secure kernel command
file
+ * K2
x: Secure commands
file
*
*
- * (C) Copyright 2012-2014
- * Texas Instruments Incorporated, <www.ti.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
+ * Copyright (C) 2012-2019 Texas Instruments Incorporated - http://www.ti.com/
*/
*/
+#include <hang.h>
+#include <asm/unaligned.h>
#include <common.h>
#include <command.h>
#include <mach/mon.h>
#include <spl.h>
asm(".arch_extension sec\n\t");
#include <common.h>
#include <command.h>
#include <mach/mon.h>
#include <spl.h>
asm(".arch_extension sec\n\t");
-int mon_install(u32 addr, u32 dpsc, u32 freq)
+int mon_install(u32 addr, u32 dpsc, u32 freq
, u32 bm_addr
)
{
int result;
{
int result;
@@
-22,11
+22,13
@@
int mon_install(u32 addr, u32 dpsc, u32 freq)
"mov r0, %1\n"
"mov r1, %2\n"
"mov r2, %3\n"
"mov r0, %1\n"
"mov r1, %2\n"
"mov r2, %3\n"
+ "mov r3, %4\n"
"blx r0\n"
"blx r0\n"
+ "mov %0, r0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
"ldmfd r13!, {lr}\n"
: "=&r" (result)
- : "r" (addr), "r" (dpsc), "r" (freq)
- : "cc", "r0", "r1", "r2", "memory");
+ : "r" (addr), "r" (dpsc), "r" (freq)
, "r" (bm_addr)
+ : "cc", "r0", "r1", "r2", "
r3", "
memory");
return result;
}
return result;
}
@@
-40,6
+42,7
@@
int mon_power_on(int core_id, void *ep)
"mov r2, %2\n"
"mov r0, #0\n"
"smc #0\n"
"mov r2, %2\n"
"mov r0, #0\n"
"smc #0\n"
+ "mov %0, r0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id), "r" (ep)
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id), "r" (ep)
@@
-56,6
+59,7
@@
int mon_power_off(int core_id)
"mov r1, %1\n"
"mov r0, #1\n"
"smc #1\n"
"mov r1, %1\n"
"mov r0, #1\n"
"smc #1\n"
+ "mov %0, r0\n"
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id)
"ldmfd r13!, {lr}\n"
: "=&r" (result)
: "r" (core_id)
@@
-89,6
+93,7
@@
static int k2_hs_bm_auth(int cmd, void *arg1)
"mov r0, %1\n"
"mov r1, %2\n"
"smc #2\n"
"mov r0, %1\n"
"mov r1, %2\n"
"smc #2\n"
+ "mov %0, r0\n"
"ldmfd r13!, {r4-r12, lr}\n"
: "=&r" (result)
: "r" (cmd), "r" (arg1)
"ldmfd r13!, {r4-r12, lr}\n"
: "=&r" (result)
: "r" (cmd), "r" (arg1)
@@
-114,12
+119,12
@@
void board_fit_image_post_process(void **p_image, size_t *p_size)
}
/*
}
/*
- * Overwrite the image headers after authentication
- * and decryption. Update size to reflect removal
- * of header.
- */
+ * Overwrite the image headers after authentication
+ * and decryption. Update size to reflect removal
+ * of header and restore original file size.
+ */
+ *p_size = get_unaligned_le32(image + (*p_size - 4));
memcpy(image, image + KS2_HS_SEC_HEADER_LEN, *p_size);
memcpy(image, image + KS2_HS_SEC_HEADER_LEN, *p_size);
- *p_size -= KS2_HS_SEC_HEADER_LEN;
/*
* Output notification of successful authentication to re-assure the
/*
* Output notification of successful authentication to re-assure the