📄 spu-info.exp
字号:
# Copyright 2007, 2008 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/>.## This file is part of the gdb testsuite.## Contributed by Markus Deuling <deuling@de.ibm.com>.# Tests for 'info spu' commands.set prms_id 0set bug_id 0if { ![istarget "spu-*-elf"] } then { verbose "Skipping SPU-only testcase" return}set testfile "spu-info"set srcfile ${testfile}.cset binfile ${objdir}/${subdir}/${testfile}set sources ${srcdir}/${subdir}/${srcfile}if { [gdb_compile $sources ${binfile} executable { debug }] != "" } { return -1}gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}# Continue to MARKERproc c_to { marker } { global srcfile set line [gdb_get_line_number $marker] gdb_test "break $line" \ "Breakpoint.*at.*file.*$srcfile.*line $line.*" \ "break $line" gdb_test "continue" \ "Continuing.*Breakpoint.*at.*$srcfile.*$line.*" \ "continue to $line"}if ![runto_main] then { fail "Can't run to main" return 0}# Check the help.gdb_test "info spu" \ ".*info spu.* must be followed by the name of an SPU facility.*" \ "info spu"gdb_test "help info spu" \ "Various SPU specific commands.*List of info spu subcommands.*" \ "help info spu"gdb_test "help info spu dma" \ "Display MFC DMA status." \ "help info spu dma"gdb_test "help info spu event" \ "Display SPU event facility status." \ "help info spu event"gdb_test "help info spu mailbox" \ "Display SPU mailbox facility status." \ "help info spu mailbox"gdb_test "help info spu proxydma" \ "Display MFC Proxy-DMA status." \ "help info spu proxydma"gdb_test "help info spu signal" \ "Display SPU signal notification facility status." \ "help info spu signal"# architecture should be spu:256K.gdb_test "show architecture" \ "The target architecture is set automatically.*currently spu:256K.*" \ "architecture = spu256K"# 'info spu event'.gdb_test "info spu event" \ "Event Status.*Event Mask.*" \ "info spu event"# 'info spu signal'.gdb_test "info spu signal" \ "Signal 1 not pending.*\(Type.*\).*Signal 2 not pending.*\(Type.*\).*" \ "info spu signal"# 'info spu mailbox'.gdb_test "info spu mailbox" \ "SPU Outbound Mailbox.*SPU Outbound Interrupt Mailbox.*" \ "info spu mailbox"# 'info spu dma'.gdb_test "info spu dma" \ "Tag-Group Status.*Tag-Group Mask.*Stall-and-Notify .*Atomic Cmd Status.*Opcode.*Tag.*TId.*RId.*EA.*LSA.*Size.*LstAddr.*LstSize.*E.*" \ "info spu dma"# 'info spu proxydma'.gdb_test "info spu proxydma" \ "Tag-Group Status.*Tag-Group Mask.*Opcode.*Tag.*TId.*RId.*EA.*LSA.*Size.*LstAddr.*LstSize.*E.*" \ "info spu proxydma"# Event tests.c_to "Marker Event"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000000.*" \ "empty event status"# MFC_MULTI_SRC_SYNC_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00001000.*" \ "event mask 0x1000"# MFC_PRIV_ATTN_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000800.*" \ "event mask 0x0800"# MFC_LLR_LOST_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000400.*" \ "event mask 0x0400"# MFC_SIGNAL_NOTIFY_1_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000200.*" \ "event mask 0x0200"# MFC_SIGNAL_NOTIFY_2_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000100.*" \ "event mask 0x0100"# MFC_OUT_MBOX_AVAILABLE_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000080.*" \ "event mask 0x0080"# MFC_OUT_INTR_MBOX_AVAILABLE_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000040.*" \ "event mask 0x0040"# MFC_DECREMENTER_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000020.*" \ "event mask 0x0020"# MFC_IN_MBOX_AVAILABLE_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000010.*" \ "event mask 0x0010"# MFC_COMMAND_QUEUE_AVAILABLE_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000008.*" \ "event mask 0x0008"# MFC_LIST_STALL_NOTIFY_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000002.*" \ "event mask 0x0002"# MFC_TAG_STATUS_UPDATE_EVENT.gdb_test "next" "" "next"gdb_test "info spu event" \ "Event Status 0x00000000.*Event Mask 0x00000001.*" \ "event mask 0x0001"# DMA tests.# 'info spu dma' should be empty.c_to "Marker DMA"gdb_test "info spu dma" \ "Tag-Group Status.*0x00000000.*Tag-Group Mask.*0x00000000.*Stall-and-Notify.*0x00000000.*Atomic Cmd Status.*0x00000000.*Opcode.*Tag.*TId.*RId.*EA.*LSA.*Size.*LstAddr.*LstSize.*E.*0.*0.*0.*0.*0x00000 0x00000.*" \ "info spu dma (empty)"# 'info spu dma' should be filled with some data.c_to "Marker DMAWait"gdb_test "next" "" "next"gdb_test "info spu dma" \ "Tag-Group Status.*0x00000000.*Tag-Group Mask.*0x00000020.*Stall-and-Notify.*0x00000000.*Atomic Cmd Status.*0x00000000.*Opcode.*Tag.*TId.*RId.*EA.*LSA.*Size.*LstAddr.*LstSize.*E.*getl.*putllc.*get.*mfcsync.*get.*0.*0.*0.*0.*0x00000 0x00000.*" \ "info spu dma (non-empty)"gdb_test "finish" "" "finish"# Mailbox Test# 'info spu mailbox' should be empty.c_to "Marker Mbox"gdb_test "info spu mailbox" \ "SPU Outbound Mailbox.*0xc0000000.*SPU Outbound Interrupt Mailbox.*0xc0000000.*" \ "info spu mailbox"# 'info spu mailbox' should now contain data.c_to "Marker MboxEnd"gdb_test "info spu mailbox" \ "SPU Outbound Mailbox.*0x12345678.*SPU Outbound Interrupt Mailbox.*0x12345678.*" \ "info spu mailbox"# Signal Test# 'info spu signal'.c_to "Marker Signal"gdb_test "info spu signal" \ "Signal 1 not pending.*\(Type.*\).*Signal 2 not pending.*\(Type.*\).*" \ "info spu signal"# 'info spu signal' with signal1 pending.c_to "Marker Signal1"gdb_test "info spu signal" \ "Signal 1 control word 0x801c0800.*Signal 2 not pending.*\(Type.*\).*" \ "info spu signal"# 'info spu signal' with signal1 and signal2 pending.c_to "Marker Signal2"gdb_test "info spu signal" \ "Signal 1 control word 0x801c0800.*Signal 2 control word 0x801c0800.*" \ "info spu signal"# Read signal1. Only signal2 is pending.c_to "Marker SignalRead"gdb_test "info spu signal" \ "Signal 1 not pending.*Signal 2 control word 0x801c0800.*" \ "info spu signal"gdb_exitreturn 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -