From 8e7fdf4ac460cbfbb373c951a6c7cdae93446241 Mon Sep 17 00:00:00 2001 From: Brandon Potter Date: Tue, 20 Feb 2018 13:19:39 -0500 Subject: [PATCH] ruby,gpu-compute: bugfix for GPU_VIPER* protocols 12db50c895 changed how directory mapping works, but it seems to have broken the VIPER variants of the GPU protocols. The fix involves declaring the function in the related '.sm' files. Change-Id: I116980d42a4aa648369058b529c9f8d9693eb894 Reviewed-on: https://gem5-review.googlesource.com/8521 Reviewed-by: Anthony Gutierrez Reviewed-by: Jason Lowe-Power Maintainer: Anthony Gutierrez --- src/mem/protocol/GPU_VIPER-TCC.sm | 1 + src/mem/protocol/GPU_VIPER_Region-TCC.sm | 1 + src/mem/protocol/MOESI_AMD_Base-Region-dir.sm | 2 ++ 3 files changed, 4 insertions(+) diff --git a/src/mem/protocol/GPU_VIPER-TCC.sm b/src/mem/protocol/GPU_VIPER-TCC.sm index 45477d8d85..f8da4abf1a 100644 --- a/src/mem/protocol/GPU_VIPER-TCC.sm +++ b/src/mem/protocol/GPU_VIPER-TCC.sm @@ -126,6 +126,7 @@ machine(MachineType:TCC, "TCC Cache") void wakeUpAllBuffers(); void wakeUpBuffers(Addr a); + MachineID mapAddressToMachine(Addr addr, MachineType mtype); // FUNCTION DEFINITIONS Tick clockEdge(); diff --git a/src/mem/protocol/GPU_VIPER_Region-TCC.sm b/src/mem/protocol/GPU_VIPER_Region-TCC.sm index e3243b3e14..04d7b7a6f4 100644 --- a/src/mem/protocol/GPU_VIPER_Region-TCC.sm +++ b/src/mem/protocol/GPU_VIPER_Region-TCC.sm @@ -131,6 +131,7 @@ machine(MachineType:TCC, "TCC Cache") void wakeUpAllBuffers(); void wakeUpBuffers(Addr a); + MachineID mapAddressToMachine(Addr addr, MachineType mtype); // FUNCTION DEFINITIONS diff --git a/src/mem/protocol/MOESI_AMD_Base-Region-dir.sm b/src/mem/protocol/MOESI_AMD_Base-Region-dir.sm index 02b2118927..cc5ceb0b50 100644 --- a/src/mem/protocol/MOESI_AMD_Base-Region-dir.sm +++ b/src/mem/protocol/MOESI_AMD_Base-Region-dir.sm @@ -210,6 +210,8 @@ machine(MachineType:Directory, "AMD_Base-like protocol") void wakeUpBuffers(Addr a); Cycles curCycle(); + MachineID mapAddressToMachine(Addr addr, MachineType mtype); + Entry getDirectoryEntry(Addr addr), return_by_pointer="yes" { Entry dir_entry := static_cast(Entry, "pointer", directory.lookup(addr));