
DBNZ instruction was moved from BRANCH class to a separate one - DBNZ. Thus, it must be processed separately in arc_insn_get_branch_target to correctly determine an offset for a possible branch. The testsuite for DBNZ instruction verifies these cases: 1. Check that dbnz does not branch and falls through if its source register is 0 after decrementing. GDB must successfully break on the following instruction after stepping over. 2. Check that dbnz branches to the target correctly if its source register is not 0 after decrementing - GDB must successfully break on the target instruction if a forward branch is performed after stepping over. 3. The same as point 2 but for a backward branching case. Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
47 lines
1.2 KiB
ArmAsm
47 lines
1.2 KiB
ArmAsm
; This testcase is part of GDB, the GNU debugger.
|
|
|
|
; Copyright 2024 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/>.
|
|
|
|
.section .text
|
|
.align 4
|
|
.global main
|
|
.type main, @function
|
|
|
|
main:
|
|
mov r0,1
|
|
dbnz1:
|
|
; r0 == 0 after decrementing. dbnz doesn't do branch.
|
|
dbnz r0,@end
|
|
|
|
mov r0,5
|
|
dbnz2:
|
|
; r0 == 3 after decrementing and delay slot. dbnz does branch.
|
|
dbnz.d r0,@dbnz3
|
|
sub r0,r0,1
|
|
|
|
dbnz4:
|
|
; r0 == 1 after decrementing. dbnz does branch.
|
|
dbnz r0,@end
|
|
|
|
dbnz3:
|
|
; r0 == 2 after decrementing. dbnz does branch.
|
|
dbnz r0,@dbnz4
|
|
|
|
end:
|
|
mov r0,0
|
|
j [blink]
|
|
|
|
.section .note.GNU-stack,"",@progbits
|