> -----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. Rick _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot