diff options
author | Yao Qi <yao@codesourcery.com> | 2010-12-23 15:10:24 +0000 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2010-12-23 15:10:24 +0000 |
commit | 2a20745c6f5dcf86417ebaabbfdb4b1c56e2c9c4 (patch) | |
tree | 208a10643ae7ec86182f31c5ec940a21bc3a3d1a /gdb/testsuite/gdb.arch/arm-disp-step.S | |
parent | 621c6d5b11309e6f9759fde43ee85961cc45e0da (diff) | |
download | fsf-binutils-gdb-2a20745c6f5dcf86417ebaabbfdb4b1c56e2c9c4.zip fsf-binutils-gdb-2a20745c6f5dcf86417ebaabbfdb4b1c56e2c9c4.tar.gz fsf-binutils-gdb-2a20745c6f5dcf86417ebaabbfdb4b1c56e2c9c4.tar.bz2 |
2010-12-23 Yao Qi <yao@codesourcery.com>
* gdb.arch/arm-disp-step.exp: New.
* gdb.arch/arm-disp-step.S: New.
Diffstat (limited to 'gdb/testsuite/gdb.arch/arm-disp-step.S')
-rw-r--r-- | gdb/testsuite/gdb.arch/arm-disp-step.S | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/arm-disp-step.S b/gdb/testsuite/gdb.arch/arm-disp-step.S new file mode 100644 index 0000000..d748718 --- /dev/null +++ b/gdb/testsuite/gdb.arch/arm-disp-step.S @@ -0,0 +1,120 @@ +/* Copyright 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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/>. */ + + .syntax unified + .text + .type main,%function +#if defined (__thumb__) || defined (__thumb2__) + .code 16 + .thumb_func +#endif + .globl main +main: + push {r7, lr} + add sp, sp, #4 + mov r7, sp + + + /* Test call and return */ + .global test_call +test_call: + bl test_call_subr + .global test_ret_end +test_ret_end: + nop @ Location test_ret_end + + /* Test branch */ + bl test_branch + + /* Test ldr from pc */ + bl test_ldr_pc + + /* Test ldm/stm only in ARM mode */ +#if !defined (__thumb__) && !defined (__thumb2__) + bl test_ldm_stm_pc +#endif + + /* Return */ + mov sp, r7 + sub sp, sp, #4 + movs r0, #0 + pop {r7, pc} + .size main, .-main + + .global test_call_subr +#if defined (__thumb__) || defined (__thumb2__) + .code 16 + .thumb_func +#endif + .type test_call_subr, %function +test_call_subr: + nop + .global test_call_end +test_call_end: + nop @ Location test_call_end + .global test_ret +test_ret: + bx lr + .size test_call_subr, .-test_call_subr + + + .global test_branch +#if defined (__thumb__) || defined (__thumb2__) + .code 16 + .thumb_func +#endif + .type test_branch, %function +test_branch: + b L_branch + .global +L_branch: + bx lr + .size test_branch, .-test_branch + + .global test_ldr_pc +#if defined (__thumb__) || defined (__thumb2__) + .code 16 + .thumb_func +#endif + .type test_ldr_pc, %function +test_ldr_pc: + ldr r1, [pc, #0] + + .global +test_ldr_pc_ret: + bx lr + .size test_ldr_pc, .-test_ldr_pc + +#if !defined (__thumb__) && !defined (__thumb2__) + .global test_ldm_stm_pc + .type test_ldm_stm_pc, %function +test_ldm_stm_pc: + stmdb sp!, {lr, pc} + ldmia sp!, {r0, r1} + ldr r0, .L1 + stmdb sp!, {r0} + .global +test_ldm_pc: + ldmia sp!, {pc} + .global +test_ldm_stm_pc_ret: + bx lr + .align 2 +.L1: + .word test_ldm_stm_pc_ret + .size test_ldm_stm_pc, .-test_ldm_stm_pc +#endif |