mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
common: hash: Manually relocate struct hash_algo
This patch adds manual relocation for struct hash_algo if CONFIG_NEEDS_MANUAL_RELOC is enabled. Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com> Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
62e3fb027b
commit
10088fb037
1 changed files with 29 additions and 0 deletions
|
@ -30,6 +30,12 @@
|
|||
#include <u-boot/sha256.h>
|
||||
#include <u-boot/md5.h>
|
||||
|
||||
#if !defined(USE_HOSTCC) && defined(CONFIG_NEEDS_MANUAL_RELOC)
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
#endif
|
||||
|
||||
static void reloc_update(void);
|
||||
|
||||
#if defined(CONFIG_SHA1) && !defined(CONFIG_SHA_PROG_HW_ACCEL)
|
||||
static int hash_init_sha1(struct hash_algo *algo, void **ctxp)
|
||||
{
|
||||
|
@ -215,10 +221,31 @@ static struct hash_algo hash_algo[] = {
|
|||
#define multi_hash() 0
|
||||
#endif
|
||||
|
||||
static void reloc_update(void)
|
||||
{
|
||||
#if !defined(USE_HOSTCC) && defined(CONFIG_NEEDS_MANUAL_RELOC)
|
||||
int i;
|
||||
static bool done;
|
||||
|
||||
if (!done) {
|
||||
done = true;
|
||||
for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
|
||||
hash_algo[i].name += gd->reloc_off;
|
||||
hash_algo[i].hash_func_ws += gd->reloc_off;
|
||||
hash_algo[i].hash_init += gd->reloc_off;
|
||||
hash_algo[i].hash_update += gd->reloc_off;
|
||||
hash_algo[i].hash_finish += gd->reloc_off;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int hash_lookup_algo(const char *algo_name, struct hash_algo **algop)
|
||||
{
|
||||
int i;
|
||||
|
||||
reloc_update();
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
|
||||
if (!strcmp(algo_name, hash_algo[i].name)) {
|
||||
*algop = &hash_algo[i];
|
||||
|
@ -235,6 +262,8 @@ int hash_progressive_lookup_algo(const char *algo_name,
|
|||
{
|
||||
int i;
|
||||
|
||||
reloc_update();
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
|
||||
if (!strcmp(algo_name, hash_algo[i].name)) {
|
||||
if (hash_algo[i].hash_init) {
|
||||
|
|
Loading…
Reference in a new issue