diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/dcache-flush.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/dcache-flush.exp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/dcache-flush.exp b/gdb/testsuite/gdb.base/dcache-flush.exp new file mode 100644 index 0000000..6c7d2f4 --- /dev/null +++ b/gdb/testsuite/gdb.base/dcache-flush.exp @@ -0,0 +1,64 @@ +# 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 <http://www.gnu.org/licenses/>. + +# 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" |