Commit | Line | Data |
---|---|---|
618f726f | 1 | /* Copyright (C) 1995-2016 Free Software Foundation, Inc. |
bd9e6534 YQ |
2 | |
3 | This file is part of GDB. | |
4 | ||
5 | This program is free software; you can redistribute it and/or modify | |
6 | it under the terms of the GNU General Public License as published by | |
7 | the Free Software Foundation; either version 3 of the License, or | |
8 | (at your option) any later version. | |
9 | ||
10 | This program is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | GNU General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU General Public License | |
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
17 | ||
d9311bfa AT |
18 | /* Correct in either endianness. */ |
19 | #define arm_abi_breakpoint 0xef9f0001UL | |
20 | ||
21 | /* For new EABI binaries. We recognize it regardless of which ABI | |
22 | is used for gdbserver, so single threaded debugging should work | |
23 | OK, but for multi-threaded debugging we only insert the current | |
24 | ABI's breakpoint instruction. For now at least. */ | |
25 | #define arm_eabi_breakpoint 0xe7f001f0UL | |
26 | ||
35adc03f | 27 | #if (defined __ARM_EABI__ || defined __aarch64__) |
d9311bfa | 28 | static const unsigned long arm_breakpoint = arm_eabi_breakpoint; |
35adc03f YQ |
29 | #else |
30 | static const unsigned long arm_breakpoint = arm_abi_breakpoint; | |
d9311bfa AT |
31 | #endif |
32 | ||
33 | #define arm_breakpoint_len 4 | |
34 | static const unsigned short thumb_breakpoint = 0xde01; | |
35 | #define thumb_breakpoint_len 2 | |
36 | static const unsigned short thumb2_breakpoint[] = { 0xf7f0, 0xa000 }; | |
37 | #define thumb2_breakpoint_len 4 | |
38 | ||
bd9e6534 YQ |
39 | extern struct regs_info regs_info_aarch32; |
40 | ||
41 | void arm_fill_gregset (struct regcache *regcache, void *buf); | |
42 | void arm_store_gregset (struct regcache *regcache, const void *buf); | |
43 | void arm_fill_vfpregset_num (struct regcache *regcache, void *buf, int num); | |
44 | void arm_store_vfpregset_num (struct regcache *regcache, const void *buf, | |
45 | int num); | |
46 | ||
17b1509a YQ |
47 | int arm_breakpoint_kind_from_pc (CORE_ADDR *pcptr); |
48 | const gdb_byte *arm_sw_breakpoint_from_kind (int kind , int *size); | |
49 | int arm_breakpoint_kind_from_current_state (CORE_ADDR *pcptr); | |
50 | int arm_breakpoint_at (CORE_ADDR where); | |
51 | ||
bd9e6534 YQ |
52 | void initialize_low_arch_aarch32 (void); |
53 | ||
54 | void init_registers_arm_with_neon (void); | |
d9311bfa AT |
55 | int arm_is_thumb_mode (void); |
56 | ||
bd9e6534 | 57 | extern const struct target_desc *tdesc_arm_with_neon; |