This branch "RISC-V-V2" is used to contribute RISC-V architecture on EDK2. Compare to the old branch "RISC-V", this branch "RISC-V-V2" is created based on the most recent edk2/master @37eef910. This is easier for reviewers to have clear ideas of edk2 code changes for RISC-V EDK2 implementation. Because of the code changes made on old branch "RISC-V" is stale and not compliant with the latest RISC-V spec, this new branch has the fresh changes for RISC-V EDK2 implementation.
The main changes of these series of patches are, - Add RiscVPkg which conform with RISC-V Privilege Spec v1.10. - Incorporate and leverage RISC-V OpenSBI to provide EDK2 port OpenSBI library. - Provide RISC-V platform implementation specific drivers to EDK2 RISC-V platform package. - Provide generic RISC-V SMBIOS DXE drive to create SMBIOS type 4, 7 and 44 records, in which the SMBIOS type 44 record is introduced in SMBIOS spec 3.3.0. Abner Chang (22): [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg: RISC-V processor package. [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg/Include: Add header files of RISC-V CPU package [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg: RISC-V sections in DEC file. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/Include: RISC-V definitions. [edk2-staging/RISC-V-V2 PATCH v1]: MdeModulePkg/CapsuleRuntimeDxe: Add RISC-V arch. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/BaseCacheMaintenanceLib: RISC-V cache maintenance implementation. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/BaseIoLibIntrinsic: RISC-V I/O intrinsic functions. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/BasePeCoff: Add RISC-V PE/Coff related code. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/BaseCpuLib: RISC-V Base CPU library implementation. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/BaseSynchronizationLib: RISC-V cache related code. [edk2-staging/RISC-V-V2 PATCH v1]: BaseTools: BaseTools changes for RISC-V platform. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/BaseLib: BaseLib for RISC-V RV64 Processor. [edk2-staging/RISC-V-V2 PATCH v1]: MdePkg/Include: Update SmBios header file. [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg/opesbi: Add opensbi-HOWTO.txt [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg/RealTimeClockRuntimeDxe: Add RISC-V RTC Runtime Driver [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg/CpuDxe: Add RISC-V CPU DXE driver. [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg/SmbiosDxe: RISC-V platform generic SMBIOS DXE driver [edk2-staging/RISC-V-V2 PATCH v1]: RiscVPkg/Library: Add/Update/Remove Library instances for RISC-V platform [edk2-staging/RISC-V-V2 PATCH v1]: MdeModulePkg/DxeIplPeim:RISC-V platform DXEIPL. [edk2-staging/RISC-V-V2 PATCH v1]: MdeModulePkg/Logo [edk2-staging/RISC-V-V2 PATCH v1]: NetworkPkg [edk2-staging/RISC-V-V2 PATCH v1]: BaseTools/Scripts BaseTools/Conf/build_rule.template | 23 +- BaseTools/Conf/tools_def.template | 108 +- BaseTools/Scripts/GccBaseRiscV.lds | 71 ++ BaseTools/Source/C/Common/BasePeCoff.c | 19 +- BaseTools/Source/C/Common/PeCoffLoaderEx.c | 96 ++ BaseTools/Source/C/GenFv/GenFvInternalLib.c | 281 ++++- BaseTools/Source/C/GenFw/Elf32Convert.c | 6 +- BaseTools/Source/C/GenFw/Elf64Convert.c | 273 ++++- BaseTools/Source/C/GenFw/elf_common.h | 63 ++ .../Source/C/Include/IndustryStandard/PeImage.h | 10 + BaseTools/Source/Python/Common/DataType.py | 1075 ++++++++++---------- MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 13 +- MdeModulePkg/Core/DxeIplPeim/RiscV64/DxeLoadFunc.c | 76 ++ MdeModulePkg/Logo/Logo.inf | 2 +- .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf | 9 +- MdePkg/Include/IndustryStandard/PeImage.h | 14 +- MdePkg/Include/IndustryStandard/SmBios.h | 74 +- MdePkg/Include/Library/BaseLib.h | 67 ++ MdePkg/Include/Protocol/DebugSupport.h | 55 + MdePkg/Include/Protocol/PxeBaseCode.h | 8 + MdePkg/Include/RiscV64/ProcessorBind.h | 336 ++++++ MdePkg/Include/Uefi/UefiBaseType.h | 25 + MdePkg/Include/Uefi/UefiSpec.h | 11 + .../BaseCacheMaintenanceLib.inf | 4 + .../Library/BaseCacheMaintenanceLib/RiscVCache.c | 242 +++++ MdePkg/Library/BaseCpuLib/BaseCpuLib.inf | 4 + MdePkg/Library/BaseCpuLib/RiscV/Cpu.s | 25 + .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf | 8 +- MdePkg/Library/BaseIoLibIntrinsic/IoLibRiscV.c | 697 +++++++++++++ MdePkg/Library/BaseLib/BaseLib.inf | 18 +- MdePkg/Library/BaseLib/RiscV64/CpuBreakpoint.c | 33 + MdePkg/Library/BaseLib/RiscV64/CpuPause.c | 35 + MdePkg/Library/BaseLib/RiscV64/DisableInterrupts.c | 33 + MdePkg/Library/BaseLib/RiscV64/EnableInterrupts.c | 33 + MdePkg/Library/BaseLib/RiscV64/FlushCache.S | 28 + MdePkg/Library/BaseLib/RiscV64/GetInterruptState.c | 43 + .../Library/BaseLib/RiscV64/InternalSwitchStack.c | 61 ++ MdePkg/Library/BaseLib/RiscV64/LongJump.c | 38 + .../Library/BaseLib/RiscV64/RiscVCpuBreakpoint.S | 20 + MdePkg/Library/BaseLib/RiscV64/RiscVCpuPause.S | 20 + MdePkg/Library/BaseLib/RiscV64/RiscVInterrupt.S | 33 + .../Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S | 61 ++ MdePkg/Library/BaseLib/RiscV64/Unaligned.c | 270 +++++ MdePkg/Library/BaseLib/RiscV64/riscv_asm.h | 194 ++++ MdePkg/Library/BaseLib/RiscV64/riscv_encoding.h | 574 +++++++++++ MdePkg/Library/BaseLib/RiscV64/sbi_const.h | 53 + MdePkg/Library/BasePeCoffLib/BasePeCoff.c | 3 +- MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf | 5 + MdePkg/Library/BasePeCoffLib/BasePeCoffLib.uni | 4 +- .../Library/BasePeCoffLib/BasePeCoffLibInternals.h | 1 + .../Library/BasePeCoffLib/RiscV/PeCoffLoaderEx.c | 149 +++ .../BaseSynchronizationLib.inf | 6 + .../RiscV64/Synchronization.c | 189 ++++ .../RiscV64/SynchronizationAsm.s | 84 ++ MdePkg/MdePkg.dec | 9 + NetworkPkg/Network.dsc.inc | 2 +- RiscVPkg/Include/Library/RealTimeClockLib.h | 136 +++ RiscVPkg/Include/Library/RiscVCpuLib.h | 74 ++ RiscVPkg/Include/Library/RiscVPlatformDxeIpl.h | 47 + .../Library/RiscVPlatformTempMemoryInitLib.h | 23 + RiscVPkg/Include/ProcessorSpecificDataHob.h | 99 ++ RiscVPkg/Include/RiscV.h | 168 +++ RiscVPkg/Include/SmbiosProcessorSpecificData.h | 64 ++ RiscVPkg/Include/sbi/SbiFirmwareContext.h | 44 + RiscVPkg/Include/sbi/sbi.h | 103 ++ RiscVPkg/Include/sbi/sbi_bits.h | 23 + RiscVPkg/Include/sbi/sbi_types.h | 24 + .../PeiServicesTablePointerLibOpenSbi.inf | 45 + .../PeiServicesTablePointerLibOpenSbi.uni | Bin 0 -> 2462 bytes .../PeiServicesTablePointerOpenSbi.c | 127 +++ RiscVPkg/Library/RiscVCpuLib/Cpu.s | 121 +++ RiscVPkg/Library/RiscVCpuLib/RiscVCpuLib.inf | 46 + .../RiscVDxeIplHandoffLib/RiscVDxeIplHandoffLib.c | 47 + .../RiscVDxeIplHandoffLib.inf | 39 + .../RiscVDxeIplHandoffOpenSbiLib.c | 108 ++ .../RiscVDxeIplHandoffOpenSbiLib.inf | 39 + .../RiscVExceptionLib/CpuExceptionHandler.s | 94 ++ .../CpuExceptionHandlerDxeLib.inf | 47 + .../RiscVExceptionLib/CpuExceptionHandlerLib.c | 187 ++++ .../RiscVExceptionLib/CpuExceptionHandlerLib.uni | Bin 0 -> 1516 bytes .../Library/RiscVOpensbiLib/RiscVOpensbiLib.inf | 65 ++ .../RiscVPlatformTempMemoryInitLibNull.inf | 42 + .../Riscv64/TempMemInit.s | 31 + .../Library/RiscVTimerLib/BaseRiscVTimerLib.inf | 40 + RiscVPkg/Library/RiscVTimerLib/RiscVTimerLib.c | 201 ++++ RiscVPkg/Library/RiscVTimerLib/RiscVTimerLib.h | 26 + RiscVPkg/RiscVPkg.dec | 57 ++ RiscVPkg/RiscVPkg.uni | Bin 0 -> 1718 bytes RiscVPkg/RiscVPkgExtra.uni | Bin 0 -> 1374 bytes RiscVPkg/Universal/CpuDxe/CpuDxe.c | 324 ++++++ RiscVPkg/Universal/CpuDxe/CpuDxe.h | 212 ++++ RiscVPkg/Universal/CpuDxe/CpuDxe.inf | 66 ++ RiscVPkg/Universal/CpuDxe/CpuDxe.uni | Bin 0 -> 1564 bytes RiscVPkg/Universal/CpuDxe/CpuDxeExtra.uni | Bin 0 -> 1392 bytes RiscVPkg/Universal/CpuDxe/CpuMp.h | 648 ++++++++++++ .../RealTimeClockRuntimeDxe/RealTimeClock.c | 157 +++ .../RealTimeClockRuntimeDxe.inf | 44 + RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.c | 343 +++++++ RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.h | 38 + RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.inf | 63 ++ RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.uni | Bin 0 -> 1542 bytes .../Universal/SmbiosDxe/RiscVSmbiosDxeExtra.uni | Bin 0 -> 1438 bytes RiscVPkg/opensbi/opensbi-HOWTO.txt | 17 + 103 files changed, 9195 insertions(+), 578 deletions(-) create mode 100644 BaseTools/Scripts/GccBaseRiscV.lds create mode 100644 MdeModulePkg/Core/DxeIplPeim/RiscV64/DxeLoadFunc.c create mode 100644 MdePkg/Include/RiscV64/ProcessorBind.h create mode 100644 MdePkg/Library/BaseCacheMaintenanceLib/RiscVCache.c create mode 100644 MdePkg/Library/BaseCpuLib/RiscV/Cpu.s create mode 100644 MdePkg/Library/BaseIoLibIntrinsic/IoLibRiscV.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/CpuBreakpoint.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/CpuPause.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/DisableInterrupts.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/EnableInterrupts.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/FlushCache.S create mode 100644 MdePkg/Library/BaseLib/RiscV64/GetInterruptState.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/InternalSwitchStack.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/LongJump.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/RiscVCpuBreakpoint.S create mode 100644 MdePkg/Library/BaseLib/RiscV64/RiscVCpuPause.S create mode 100644 MdePkg/Library/BaseLib/RiscV64/RiscVInterrupt.S create mode 100644 MdePkg/Library/BaseLib/RiscV64/RiscVSetJumpLongJump.S create mode 100644 MdePkg/Library/BaseLib/RiscV64/Unaligned.c create mode 100644 MdePkg/Library/BaseLib/RiscV64/riscv_asm.h create mode 100644 MdePkg/Library/BaseLib/RiscV64/riscv_encoding.h create mode 100644 MdePkg/Library/BaseLib/RiscV64/sbi_const.h create mode 100644 MdePkg/Library/BasePeCoffLib/RiscV/PeCoffLoaderEx.c create mode 100644 MdePkg/Library/BaseSynchronizationLib/RiscV64/Synchronization.c create mode 100644 MdePkg/Library/BaseSynchronizationLib/RiscV64/SynchronizationAsm.s create mode 100644 RiscVPkg/Include/Library/RealTimeClockLib.h create mode 100644 RiscVPkg/Include/Library/RiscVCpuLib.h create mode 100644 RiscVPkg/Include/Library/RiscVPlatformDxeIpl.h create mode 100644 RiscVPkg/Include/Library/RiscVPlatformTempMemoryInitLib.h create mode 100644 RiscVPkg/Include/ProcessorSpecificDataHob.h create mode 100644 RiscVPkg/Include/RiscV.h create mode 100644 RiscVPkg/Include/SmbiosProcessorSpecificData.h create mode 100644 RiscVPkg/Include/sbi/SbiFirmwareContext.h create mode 100644 RiscVPkg/Include/sbi/sbi.h create mode 100644 RiscVPkg/Include/sbi/sbi_bits.h create mode 100644 RiscVPkg/Include/sbi/sbi_types.h create mode 100644 RiscVPkg/Library/PeiServicesTablePointerLibOpenSbi/PeiServicesTablePointerLibOpenSbi.inf create mode 100644 RiscVPkg/Library/PeiServicesTablePointerLibOpenSbi/PeiServicesTablePointerLibOpenSbi.uni create mode 100644 RiscVPkg/Library/PeiServicesTablePointerLibOpenSbi/PeiServicesTablePointerOpenSbi.c create mode 100644 RiscVPkg/Library/RiscVCpuLib/Cpu.s create mode 100644 RiscVPkg/Library/RiscVCpuLib/RiscVCpuLib.inf create mode 100644 RiscVPkg/Library/RiscVDxeIplHandoffLib/RiscVDxeIplHandoffLib.c create mode 100644 RiscVPkg/Library/RiscVDxeIplHandoffLib/RiscVDxeIplHandoffLib.inf create mode 100644 RiscVPkg/Library/RiscVDxeIplHandoffOpenSbiLib/RiscVDxeIplHandoffOpenSbiLib.c create mode 100644 RiscVPkg/Library/RiscVDxeIplHandoffOpenSbiLib/RiscVDxeIplHandoffOpenSbiLib.inf create mode 100644 RiscVPkg/Library/RiscVExceptionLib/CpuExceptionHandler.s create mode 100644 RiscVPkg/Library/RiscVExceptionLib/CpuExceptionHandlerDxeLib.inf create mode 100644 RiscVPkg/Library/RiscVExceptionLib/CpuExceptionHandlerLib.c create mode 100644 RiscVPkg/Library/RiscVExceptionLib/CpuExceptionHandlerLib.uni create mode 100644 RiscVPkg/Library/RiscVOpensbiLib/RiscVOpensbiLib.inf create mode 100644 RiscVPkg/Library/RiscVPlatformTempMemoryInitLibNull/RiscVPlatformTempMemoryInitLibNull.inf create mode 100644 RiscVPkg/Library/RiscVPlatformTempMemoryInitLibNull/Riscv64/TempMemInit.s create mode 100644 RiscVPkg/Library/RiscVTimerLib/BaseRiscVTimerLib.inf create mode 100644 RiscVPkg/Library/RiscVTimerLib/RiscVTimerLib.c create mode 100644 RiscVPkg/Library/RiscVTimerLib/RiscVTimerLib.h create mode 100644 RiscVPkg/RiscVPkg.dec create mode 100644 RiscVPkg/RiscVPkg.uni create mode 100644 RiscVPkg/RiscVPkgExtra.uni create mode 100644 RiscVPkg/Universal/CpuDxe/CpuDxe.c create mode 100644 RiscVPkg/Universal/CpuDxe/CpuDxe.h create mode 100644 RiscVPkg/Universal/CpuDxe/CpuDxe.inf create mode 100644 RiscVPkg/Universal/CpuDxe/CpuDxe.uni create mode 100644 RiscVPkg/Universal/CpuDxe/CpuDxeExtra.uni create mode 100644 RiscVPkg/Universal/CpuDxe/CpuMp.h create mode 100644 RiscVPkg/Universal/RealTimeClockRuntimeDxe/RealTimeClock.c create mode 100644 RiscVPkg/Universal/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf create mode 100644 RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.c create mode 100644 RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.h create mode 100644 RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.inf create mode 100644 RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.uni create mode 100644 RiscVPkg/Universal/SmbiosDxe/RiscVSmbiosDxeExtra.uni create mode 100644 RiscVPkg/opensbi/opensbi-HOWTO.txt -- 2.7.4 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#46777): https://edk2.groups.io/g/devel/message/46777 Mute This Topic: https://groups.io/mt/33137118/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-