mbox series

[v6,00/11] Add RISC-V support

Message ID 20190212103108.56963-1-agraf@suse.de
Headers show
Series Add RISC-V support | expand

Message

Alexander Graf Feb. 12, 2019, 10:30 a.m. UTC
As part of the plan for total world domination, we would like to make sure
that booting on RISC-V is in a sane state before anyone goes and does quick
hacks "just because".

For that reason, U-Boot supports UEFI booting on RISC-V for a while now.
This patch set is the second part of the puzzle, with grub learning how to
deal with a UEFI enabled RISC-V target.

The third bit (still missing) is to actually make a working Linux UEFI port.
But that will come, I'm sure :).

Looking forward to review feedback and testing,

v1 -> v2:

  - adapt to new grub_open_file() API
  - adapt to new grub_create_loader_cmdline() API

v2 -> v3:

  - fix riscv32 target

v3 -> v4:

  - Rebase onto current git master
  - Change copyright from 2013 to 2018
  - Coding style fixes
  - Add spec reference
  - Resurrect time reading code

v4 -> v5:

  - Mark grub_arch_sync_dma_caches args as unused
  - Whitespace fix
  - Add spec link to mkimagexx.c
  - Remove curly braces
  - Use GRUB_EFI_LINUX_FDT_EXTRA_SPACE
  - Fix whitespace
  - s/failure/fail
  - Remove blank line at EOF
  - Add blank lines before and after license tag
  - New patch: RISC-V: Add libgcc helpers for clz

v5 -> v6:

  - Remove most linux loading logic

Alexander Graf (11):
  efi: Rename armxx to arch
  PE: Add RISC-V definitions
  elf.h: Add RISC-V definitions
  RISC-V: Add setjmp implementation
  RISC-V: Add early startup code
  RISC-V: Add Linux load logic
  RISC-V: Add awareness for RISC-V reloations
  RISC-V: Add auxiliary files
  RISC-V: Add libgcc helpers for clz
  RISC-V: Add to build system
  fdt: Treat device tree file type like ACPI

 configure.ac                       |  28 ++-
 gentpl.py                          |  11 +-
 grub-core/Makefile.am              |  12 ++
 grub-core/Makefile.core.def        |  29 ++++
 grub-core/commands/efi/shim_lock.c |   1 +
 grub-core/commands/file.c          |  14 +-
 grub-core/kern/compiler-rt.c       |  48 +++++-
 grub-core/kern/dl.c                |   6 +-
 grub-core/kern/efi/mm.c            |   2 +-
 grub-core/kern/emu/cache.c         |   6 +
 grub-core/kern/emu/cache_s.S       |   1 +
 grub-core/kern/emu/lite.c          |   2 +
 grub-core/kern/riscv/cache.c       |  63 +++++++
 grub-core/kern/riscv/cache_flush.S |  44 +++++
 grub-core/kern/riscv/dl.c          | 340 +++++++++++++++++++++++++++++++++++++
 grub-core/kern/riscv/efi/init.c    |  76 +++++++++
 grub-core/kern/riscv/efi/startup.S |  48 ++++++
 grub-core/lib/efi/halt.c           |   3 +-
 grub-core/lib/riscv/setjmp.S       |  84 +++++++++
 grub-core/lib/setjmp.S             |   2 +
 grub-core/loader/arm64/linux.c     |  10 +-
 grub-core/loader/arm64/xen_boot.c  |   6 +-
 grub-core/loader/riscv/linux.c     |  59 +++++++
 include/grub/arm/linux.h           |   2 +-
 include/grub/arm64/linux.h         |   2 +-
 include/grub/compiler-rt.h         |  19 ++-
 include/grub/dl.h                  |   6 +-
 include/grub/efi/api.h             |   3 +-
 include/grub/efi/efi.h             |   6 +-
 include/grub/efi/pe32.h            |   5 +
 include/grub/elf.h                 |  58 +++++++
 include/grub/file.h                |   4 +-
 include/grub/misc.h                |   3 +-
 include/grub/riscv32/efi/memory.h  |   6 +
 include/grub/riscv32/linux.h       |  41 +++++
 include/grub/riscv32/setjmp.h      |  27 +++
 include/grub/riscv32/time.h        |  28 +++
 include/grub/riscv32/types.h       |  34 ++++
 include/grub/riscv64/efi/memory.h  |   6 +
 include/grub/riscv64/linux.h       |  43 +++++
 include/grub/riscv64/setjmp.h      |  27 +++
 include/grub/riscv64/time.h        |  28 +++
 include/grub/riscv64/types.h       |  34 ++++
 include/grub/util/install.h        |   2 +
 util/grub-install-common.c         |   2 +
 util/grub-install.c                |  28 +++
 util/grub-mkimagexx.c              | 259 ++++++++++++++++++++++++++++
 util/grub-mknetdir.c               |   4 +-
 util/grub-mkrescue.c               |  16 +-
 util/grub-module-verifier.c        |  56 ++++++
 util/mkimage.c                     |  32 ++++
 51 files changed, 1637 insertions(+), 39 deletions(-)
 create mode 100644 grub-core/kern/riscv/cache.c
 create mode 100644 grub-core/kern/riscv/cache_flush.S
 create mode 100644 grub-core/kern/riscv/dl.c
 create mode 100644 grub-core/kern/riscv/efi/init.c
 create mode 100644 grub-core/kern/riscv/efi/startup.S
 create mode 100644 grub-core/lib/riscv/setjmp.S
 create mode 100644 grub-core/loader/riscv/linux.c
 create mode 100644 include/grub/riscv32/efi/memory.h
 create mode 100644 include/grub/riscv32/linux.h
 create mode 100644 include/grub/riscv32/setjmp.h
 create mode 100644 include/grub/riscv32/time.h
 create mode 100644 include/grub/riscv32/types.h
 create mode 100644 include/grub/riscv64/efi/memory.h
 create mode 100644 include/grub/riscv64/linux.h
 create mode 100644 include/grub/riscv64/setjmp.h
 create mode 100644 include/grub/riscv64/time.h
 create mode 100644 include/grub/riscv64/types.h

-- 
2.12.3


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Comments

Andreas Schwab March 6, 2019, 4:53 p.m. UTC | #1
On Feb 12 2019, Alexander Graf <agraf@suse.de> wrote:

> As part of the plan for total world domination, we would like to make sure

> that booting on RISC-V is in a sane state before anyone goes and does quick

> hacks "just because".

>

> For that reason, U-Boot supports UEFI booting on RISC-V for a while now.

> This patch set is the second part of the puzzle, with grub learning how to

> deal with a UEFI enabled RISC-V target.

>

> The third bit (still missing) is to actually make a working Linux UEFI port.

> But that will come, I'm sure :).

>

> Looking forward to review feedback and testing,


Successfully tested on the HiFive Unleashed.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
Daniel Kiper March 7, 2019, 7:22 p.m. UTC | #2
On Wed, Mar 06, 2019 at 05:53:58PM +0100, Andreas Schwab wrote:
> On Feb 12 2019, Alexander Graf <agraf@suse.de> wrote:

>

> > As part of the plan for total world domination, we would like to make sure

> > that booting on RISC-V is in a sane state before anyone goes and does quick

> > hacks "just because".

> >

> > For that reason, U-Boot supports UEFI booting on RISC-V for a while now.

> > This patch set is the second part of the puzzle, with grub learning how to

> > deal with a UEFI enabled RISC-V target.

> >

> > The third bit (still missing) is to actually make a working Linux UEFI port.

> > But that will come, I'm sure :).

> >

> > Looking forward to review feedback and testing,

>

> Successfully tested on the HiFive Unleashed.


Great! Thank you for testing GRUB on RISC-V.

Daniel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel