# Copyright 2020 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Test that the dcache can be flushed. standard_testfile if { [prepare_for_testing "failed to prepare" ${testfile}] } { return -1 } if ![runto func] { return -1 } gdb_test "up" ".* main .*" gdb_test "p var1" " = 4" gdb_test "p var2" " = 3" # By reading var1 and var2 we should have at least one line in the # dcache. gdb_test "info dcache" \ [multi_line \ "Dcache $decimal lines of $decimal bytes each." \ "Contains data for process $decimal" \ "Line 0: address $hex \[$decimal hits\].*" \ "Cache state: $decimal active lines, $decimal hits" ] \ "check dcache before flushing" # Flush the dcache. gdb_test "maint flush dcache" "The dcache was flushed\." # Check the dcache is now empty. gdb_test "info dcache" \ [multi_line "Dcache $decimal lines of $decimal bytes each." \ "No data cache available." ] \ "check dcache after flushing" # Read the stack variables again, refilling the dcache. with_test_prefix "refilling" { gdb_test "p var1" " = 4" gdb_test "p var2" " = 3" } # And check we have some content back in the dcache. gdb_test "info dcache" \ [multi_line \ "Dcache $decimal lines of $decimal bytes each." \ "Contains data for process $decimal" \ "Line 0: address $hex \[$decimal hits\].*" \ "Cache state: $decimal active lines, $decimal hits" ] \ "check dcache before refilling"