Changeset 105670 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/CpuTimerDxeRiscV64
- Timestamp:
- Aug 14, 2024 1:16:30 PM (6 months ago)
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-159268 /vendor/edk2/current 103735-103757,103769-103776,129194-164365
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/CpuTimerDxeRiscV64/CpuTimerDxeRiscV64.inf
r101291 r105670 42 42 43 43 [Pcd] 44 gEfiMdePkgTokenSpaceGuid.PcdRiscVFeatureOverride ## CONSUMES 44 45 gUefiCpuPkgTokenSpaceGuid.PcdCpuCoreCrystalClockFrequency ## CONSUMES 45 46 -
trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/CpuTimerDxeRiscV64/Timer.c
r101291 r105670 44 44 STATIC UINT64 mTimerPeriod = 0; 45 45 STATIC UINT64 mLastPeriodStart = 0; 46 47 // 48 // Sstc support 49 // 50 STATIC BOOLEAN mSstcEnabled = FALSE; 51 52 /** 53 Program the timer. 54 55 Program either using stimecmp (when Sstc extension is enabled) or using SBI 56 TIME call. 57 58 @param NextValue Core tick value the timer should expire. 59 **/ 60 STATIC 61 VOID 62 RiscVProgramTimer ( 63 UINT64 NextValue 64 ) 65 { 66 if (mSstcEnabled) { 67 RiscVSetSupervisorTimeCompareRegister (NextValue); 68 } else { 69 SbiSetTimer (NextValue); 70 } 71 } 72 73 /** 74 Check whether Sstc is enabled in PCD. 75 76 **/ 77 STATIC 78 BOOLEAN 79 RiscVIsSstcEnabled ( 80 VOID 81 ) 82 { 83 return ((PcdGet64 (PcdRiscVFeatureOverride) & RISCV_CPU_FEATURE_SSTC_BITMASK) != 0); 84 } 46 85 47 86 /** … … 95 134 1000000u 96 135 ); // convert to tick 97 SbiSetTimer (PeriodStart);136 RiscVProgramTimer (PeriodStart); 98 137 RiscVEnableTimerInterrupt (); // enable SMode timer int 99 138 gBS->RestoreTPL (OriginalTPL); … … 198 237 1000000u 199 238 ); // convert to tick 200 SbiSetTimer (PeriodStart); 201 239 RiscVProgramTimer (PeriodStart); 202 240 mCpu->EnableInterrupt (mCpu); 203 241 RiscVEnableTimerInterrupt (); // enable SMode timer int … … 283 321 mTimerNotifyFunction = NULL; 284 322 323 if (RiscVIsSstcEnabled ()) { 324 mSstcEnabled = TRUE; 325 DEBUG ((DEBUG_INFO, "TimerDriverInitialize: Timer interrupt is via Sstc extension\n")); 326 } 327 285 328 // 286 329 // Make sure the Timer Architectural Protocol is not already installed in the system -
trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/CpuTimerDxeRiscV64/Timer.h
r101291 r105670 26 26 // 27 27 #define DEFAULT_TIMER_TICK_DURATION 100000 28 29 #define RISCV_CPU_FEATURE_SSTC_BITMASK BIT1 28 30 29 31 extern VOID
Note:
See TracChangeset
for help on using the changeset viewer.