SmbiosProcessorSpecificData.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /** @file
  2. Industry Standard Definitions of RISC-V Processor Specific data defined in
  3. below link for compliant with SMBIOS Table Specification v3.3.0.
  4. https://github.com/riscv/riscv-smbios
  5. Copyright (c) 2019-2022, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
  6. SPDX-License-Identifier: BSD-2-Clause-Patent
  7. **/
  8. #ifndef SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA_H_
  9. #define SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA_H_
  10. #include <IndustryStandard/SmBios.h>
  11. #include <RiscVImpl.h>
  12. #pragma pack(1)
  13. typedef enum {
  14. RegisterUnsupported = 0x00,
  15. RegisterLen32 = 0x01,
  16. RegisterLen64 = 0x02,
  17. RegisterLen128 = 0x03
  18. } RISC_V_REGISTER_LENGTH;
  19. #define SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA_REVISION 0x100
  20. #define SMBIOS_RISC_V_PSD_MACHINE_MODE_SUPPORTED (0x01 << 0)
  21. #define SMBIOS_RISC_V_PSD_SUPERVISOR_MODE_SUPPORTED (0x01 << 2)
  22. #define SMBIOS_RISC_V_PSD_USER_MODE_SUPPORTED (0x01 << 3)
  23. #define SMBIOS_RISC_V_PSD_DEBUG_MODE_SUPPORTED (0x01 << 7)
  24. ///
  25. /// RISC-V processor specific data for SMBIOS type 44
  26. ///
  27. typedef struct {
  28. UINT16 Revision;
  29. UINT8 Length;
  30. RISCV_UINT128 HartId;
  31. UINT8 BootHartId;
  32. RISCV_UINT128 MachineVendorId;
  33. RISCV_UINT128 MachineArchId;
  34. RISCV_UINT128 MachineImplId;
  35. UINT32 InstSetSupported;
  36. UINT8 PrivilegeModeSupported;
  37. RISCV_UINT128 MModeExcepDelegation;
  38. RISCV_UINT128 MModeInterruptDelegation;
  39. UINT8 HartXlen;
  40. UINT8 MachineModeXlen;
  41. UINT8 Reserved;
  42. UINT8 SupervisorModeXlen;
  43. UINT8 UserModeXlen;
  44. } SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA;
  45. #pragma pack()
  46. #endif