On 06.06.18 11:15, Rick Chen wrote:
>> -----Original Message-----
>> From: Alexander Graf [mailto:ag...@suse.de]
>> Sent: Wednesday, June 06, 2018 1:21 AM
>> To: u-boot@lists.denx.de
>> Cc: Rick Jian-Zhi Chen(陳建志)
>> Subject: [PATCH] riscv: Add support for HI20 PE relocations
>>
>> The PE standard allows for HI20/LOW12 relocations. Within the efi_loader 
>> target
>> we always know that our relocation target is 4k aligned, so we don't need to
>> worry about the LOW12 part.
>>
>> This patch adds support for the respective relocations. With this and a few 
>> grub
>> patches I have cooking in parallel I'm able to run grub on RISC-V.
>>
>> Signed-off-by: Alexander Graf <ag...@suse.de>
>> ---
>>  include/pe.h                      |  3 +++
>>  lib/efi_loader/efi_image_loader.c | 14 ++++++++++++++
>>  2 files changed, 17 insertions(+)
>>
>> diff --git a/include/pe.h b/include/pe.h index d73eb142cb..36e1908b7e 100644
>> --- a/include/pe.h
>> +++ b/include/pe.h
>> @@ -201,10 +201,13 @@ typedef struct _IMAGE_RELOCATION
>>  #define IMAGE_REL_BASED_MIPS_JMPADDR            5
>>  #define IMAGE_REL_BASED_ARM_MOV32A              5 /* yes, 5 too */
>>  #define IMAGE_REL_BASED_ARM_MOV32               5 /* yes, 5 too */
>> +#define IMAGE_REL_BASED_RISCV_HI20           5 /* yes, 5 too */
>>  #define IMAGE_REL_BASED_SECTION                 6
>>  #define IMAGE_REL_BASED_REL                     7
>>  #define IMAGE_REL_BASED_ARM_MOV32T              7 /* yes, 7 too */
>>  #define IMAGE_REL_BASED_THUMB_MOV32             7 /* yes, 7 too */
>> +#define IMAGE_REL_BASED_RISCV_LOW12I         7 /* yes, 7 too */
>> +#define IMAGE_REL_BASED_RISCV_LOW12S         8
>>  #define IMAGE_REL_BASED_MIPS_JMPADDR16          9
>>  #define IMAGE_REL_BASED_IA64_IMM64              9 /* yes, 9 too */
>>  #define IMAGE_REL_BASED_DIR64                   10
>> diff --git a/lib/efi_loader/efi_image_loader.c 
>> b/lib/efi_loader/efi_image_loader.c
>> index 3cffe9ef46..6892171ccd 100644
>> --- a/lib/efi_loader/efi_image_loader.c
>> +++ b/lib/efi_loader/efi_image_loader.c
>> @@ -126,6 +126,20 @@ static efi_status_t efi_loader_relocate(const
>> IMAGE_BASE_RELOCATION *rel,
>>                       case IMAGE_REL_BASED_DIR64:
>>                               *x64 += (uint64_t)delta;
>>                               break;
>> +#ifdef __riscv
>> +                     case IMAGE_REL_BASED_RISCV_HI20:
>> +                             *x32 = ((*x32 & 0xfffff000) + (uint32_t)delta) 
>> |
>> +                                     (*x32 & 0x00000fff);
>> +                             break;
>> +                     case IMAGE_REL_BASED_RISCV_LOW12I:
>> +                     case IMAGE_REL_BASED_RISCV_LOW12S:
>> +                             /* We know that we're 4k aligned */
>> +                             if (delta & 0xfff) {
>> +                                     printf("Unsupported reloc offset\n");
>> +                                     return EFI_LOAD_ERROR;
>> +                             }
>> +                             break;
>> +#endif
>>                       default:
>>                               printf("Unknown Relocation off %x type %x\n",
>>                                      offset, type);
>> --
>> 2.12.3
> 
> Hi Alex
> 
> The title of this patch seems to be as" efi_loader: Add support for
> HI20 PE relocations for RISC-V "
> And I am not sure if it shall belong to efi tree.

I'll be happy to take it via the efi tree, yes. It only affects the efi
PE loader.


Alex
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to