2018-06-06 17:18 GMT+08:00 Alexander Graf <ag...@suse.de>: > > > 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. > >
Hi Alex Thanks a lot. :) Rick > Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot