@@ -38,11 +38,13 @@ internal sealed class AMD10CPU : AMDCPU {
3838 private const ushort FAMILY_15H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1603 ;
3939 private const ushort FAMILY_15H_MODEL_10_MISC_CONTROL_DEVICE_ID = 0x1403 ;
4040 private const ushort FAMILY_15H_MODEL_30_MISC_CONTROL_DEVICE_ID = 0x141D ;
41+ private const ushort FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID = 0x1573 ;
4142 private const ushort FAMILY_16H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1533 ;
4243 private const ushort FAMILY_16H_MODEL_30_MISC_CONTROL_DEVICE_ID = 0x1583 ;
4344
4445 private const uint REPORTED_TEMPERATURE_CONTROL_REGISTER = 0xA4 ;
4546 private const uint CLOCK_POWER_TIMING_CONTROL_0_REGISTER = 0xD4 ;
47+ private const uint F15H_M60H_REPORTED_TEMP_CTRL_OFFSET = 0xD8200CA4 ;
4648
4749 private readonly uint miscellaneousControlAddress ;
4850 private readonly ushort miscellaneousControlDeviceId ;
@@ -79,6 +81,8 @@ public AMD10CPU(int processorIndex, CPUID[][] cpuid, ISettings settings)
7981 FAMILY_15H_MODEL_10_MISC_CONTROL_DEVICE_ID ; break ;
8082 case 0x30 : miscellaneousControlDeviceId =
8183 FAMILY_15H_MODEL_30_MISC_CONTROL_DEVICE_ID ; break ;
84+ case 0x60 : miscellaneousControlDeviceId =
85+ FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID ; break ;
8286 default : miscellaneousControlDeviceId = 0 ; break ;
8387 } break ;
8488 case 0x16 :
@@ -303,6 +307,15 @@ public override void Update() {
303307 if ( temperatureStream == null ) {
304308 if ( miscellaneousControlAddress != Ring0 . InvalidPciAddress ) {
305309 uint value ;
310+ if ( miscellaneousControlAddress == FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID ) {
311+ value = F15H_M60H_REPORTED_TEMP_CTRL_OFFSET ;
312+ Ring0 . WritePciConfig ( Ring0 . GetPciAddress ( 0 , 0 , 0 ) , 0xB8 , value ) ;
313+ Ring0 . ReadPciConfig ( Ring0 . GetPciAddress ( 0 , 0 , 0 ) , 0xBC , out value ) ;
314+ coreTemperature . Value = ( ( value >> 21 ) & 0x7FF ) * 0.125f +
315+ coreTemperature . Parameters [ 0 ] . Value ;
316+ ActivateSensor ( coreTemperature ) ;
317+ return ;
318+ }
306319 if ( Ring0 . ReadPciConfig ( miscellaneousControlAddress ,
307320 REPORTED_TEMPERATURE_CONTROL_REGISTER , out value ) ) {
308321 if ( family == 0x15 && ( value & 0x30000 ) == 0x30000 ) {
0 commit comments