/** @file
Industry Standard Definitions of RISC-V Processor Specific data defined in
below link for complaiant with SMBIOS Table Specification v3.3.0.
https://github.com/riscv/riscv-smbios
Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA_H_
#define SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA_H_
#include
#include
#pragma pack(1)
typedef enum{
RegisterUnsupported = 0x00,
RegisterLen32 = 0x01,
RegisterLen64 = 0x02,
RegisterLen128 = 0x03
} RISC_V_REGISTER_LENGTH;
#define SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA_REVISION 0x100
#define SMBIOS_RISC_V_PSD_MACHINE_MODE_SUPPORTED (0x01 << 0)
#define SMBIOS_RISC_V_PSD_SUPERVISOR_MODE_SUPPORTED (0x01 << 2)
#define SMBIOS_RISC_V_PSD_USER_MODE_SUPPORTED (0x01 << 3)
#define SMBIOS_RISC_V_PSD_DEBUG_MODE_SUPPORTED (0x01 << 7)
///
/// RISC-V processor specific data for SMBIOS type 44
///
typedef struct {
UINT16 Revision;
UINT8 Length;
RISCV_UINT128 HartId;
UINT8 BootHartId;
RISCV_UINT128 MachineVendorId;
RISCV_UINT128 MachineArchId;
RISCV_UINT128 MachineImplId;
UINT32 InstSetSupported;
UINT8 PrivilegeModeSupported;
RISCV_UINT128 MModeExcepDelegation;
RISCV_UINT128 MModeInterruptDelegation;
UINT8 HartXlen;
UINT8 MachineModeXlen;
UINT8 Reserved;
UINT8 SupervisorModeXlen;
UINT8 UserModeXlen;
} SMBIOS_RISC_V_PROCESSOR_SPECIFIC_DATA;
#pragma pack()
#endif