Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(734)

Side by Side Diff: gdb/frv-tdep.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/frv-linux-tdep.c ('k') | gdb/gcore.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Target-dependent code for the Fujitsu FR-V, for GDB, the GNU Debugger. 1 /* Target-dependent code for the Fujitsu FR-V, for GDB, the GNU Debugger.
2 2
3 Copyright (C) 2002-2005, 2007-2012 Free Software Foundation, Inc. 3 Copyright (C) 2002-2005, 2007-2012 Free Software Foundation, Inc.
4 4
5 This file is part of GDB. 5 This file is part of GDB.
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or 9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 } 129 }
130 } 130 }
131 131
132 /* Allocate a new variant structure, and set up default values for all 132 /* Allocate a new variant structure, and set up default values for all
133 the fields. */ 133 the fields. */
134 static struct gdbarch_tdep * 134 static struct gdbarch_tdep *
135 new_variant (void) 135 new_variant (void)
136 { 136 {
137 struct gdbarch_tdep *var; 137 struct gdbarch_tdep *var;
138 int r; 138 int r;
139 char buf[20];
140 139
141 var = xmalloc (sizeof (*var)); 140 var = xmalloc (sizeof (*var));
142 memset (var, 0, sizeof (*var)); 141 memset (var, 0, sizeof (*var));
143 142
144 var->frv_abi = FRV_ABI_EABI; 143 var->frv_abi = FRV_ABI_EABI;
145 var->num_gprs = 64; 144 var->num_gprs = 64;
146 var->num_fprs = 64; 145 var->num_fprs = 64;
147 var->num_hw_watchpoints = 0; 146 var->num_hw_watchpoints = 0;
148 var->num_hw_breakpoints = 0; 147 var->num_hw_breakpoints = 0;
149 148
(...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 } 1091 }
1093 return orig_pc; 1092 return orig_pc;
1094 } 1093 }
1095 1094
1096 1095
1097 static struct frv_unwind_cache * 1096 static struct frv_unwind_cache *
1098 frv_frame_unwind_cache (struct frame_info *this_frame, 1097 frv_frame_unwind_cache (struct frame_info *this_frame,
1099 void **this_prologue_cache) 1098 void **this_prologue_cache)
1100 { 1099 {
1101 struct gdbarch *gdbarch = get_frame_arch (this_frame); 1100 struct gdbarch *gdbarch = get_frame_arch (this_frame);
1102 CORE_ADDR pc;
1103 ULONGEST this_base;
1104 struct frv_unwind_cache *info; 1101 struct frv_unwind_cache *info;
1105 1102
1106 if ((*this_prologue_cache)) 1103 if ((*this_prologue_cache))
1107 return (*this_prologue_cache); 1104 return (*this_prologue_cache);
1108 1105
1109 info = FRAME_OBSTACK_ZALLOC (struct frv_unwind_cache); 1106 info = FRAME_OBSTACK_ZALLOC (struct frv_unwind_cache);
1110 (*this_prologue_cache) = info; 1107 (*this_prologue_cache) = info;
1111 info->saved_regs = trad_frame_alloc_saved_regs (this_frame); 1108 info->saved_regs = trad_frame_alloc_saved_regs (this_frame);
1112 1109
1113 /* Prologue analysis does the rest... */ 1110 /* Prologue analysis does the rest... */
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 { 1341 {
1345 regcache_cooked_write (regcache, 8, valbuf); 1342 regcache_cooked_write (regcache, 8, valbuf);
1346 regcache_cooked_write (regcache, 9, (bfd_byte *) valbuf + 4); 1343 regcache_cooked_write (regcache, 9, (bfd_byte *) valbuf + 4);
1347 } 1344 }
1348 else 1345 else
1349 internal_error (__FILE__, __LINE__, 1346 internal_error (__FILE__, __LINE__,
1350 _("Don't know how to return a %d-byte value."), len); 1347 _("Don't know how to return a %d-byte value."), len);
1351 } 1348 }
1352 1349
1353 static enum return_value_convention 1350 static enum return_value_convention
1354 frv_return_value (struct gdbarch *gdbarch, struct type *func_type, 1351 frv_return_value (struct gdbarch *gdbarch, struct value *function,
1355 struct type *valtype, struct regcache *regcache, 1352 struct type *valtype, struct regcache *regcache,
1356 gdb_byte *readbuf, const gdb_byte *writebuf) 1353 gdb_byte *readbuf, const gdb_byte *writebuf)
1357 { 1354 {
1358 int struct_return = TYPE_CODE (valtype) == TYPE_CODE_STRUCT 1355 int struct_return = TYPE_CODE (valtype) == TYPE_CODE_STRUCT
1359 || TYPE_CODE (valtype) == TYPE_CODE_UNION 1356 || TYPE_CODE (valtype) == TYPE_CODE_UNION
1360 || TYPE_CODE (valtype) == TYPE_CODE_ARRAY; 1357 || TYPE_CODE (valtype) == TYPE_CODE_ARRAY;
1361 1358
1362 if (writebuf != NULL) 1359 if (writebuf != NULL)
1363 { 1360 {
1364 gdb_assert (!struct_return); 1361 gdb_assert (!struct_return);
1365 frv_store_return_value (valtype, regcache, writebuf); 1362 frv_store_return_value (valtype, regcache, writebuf);
1366 } 1363 }
1367 1364
1368 if (readbuf != NULL) 1365 if (readbuf != NULL)
1369 { 1366 {
1370 gdb_assert (!struct_return); 1367 gdb_assert (!struct_return);
1371 frv_extract_return_value (valtype, regcache, readbuf); 1368 frv_extract_return_value (valtype, regcache, readbuf);
1372 } 1369 }
1373 1370
1374 if (struct_return) 1371 if (struct_return)
1375 return RETURN_VALUE_STRUCT_CONVENTION; 1372 return RETURN_VALUE_STRUCT_CONVENTION;
1376 else 1373 else
1377 return RETURN_VALUE_REGISTER_CONVENTION; 1374 return RETURN_VALUE_REGISTER_CONVENTION;
1378 } 1375 }
1379 1376
1380
1381 /* Hardware watchpoint / breakpoint support for the FR500
1382 and FR400. */
1383
1384 int
1385 frv_check_watch_resources (struct gdbarch *gdbarch, int type, int cnt, int ot)
1386 {
1387 struct gdbarch_tdep *var = gdbarch_tdep (gdbarch);
1388
1389 /* Watchpoints not supported on simulator. */
1390 if (strcmp (target_shortname, "sim") == 0)
1391 return 0;
1392
1393 if (type == bp_hardware_breakpoint)
1394 {
1395 if (var->num_hw_breakpoints == 0)
1396 return 0;
1397 else if (cnt <= var->num_hw_breakpoints)
1398 return 1;
1399 }
1400 else
1401 {
1402 if (var->num_hw_watchpoints == 0)
1403 return 0;
1404 else if (ot)
1405 return -1;
1406 else if (cnt <= var->num_hw_watchpoints)
1407 return 1;
1408 }
1409 return -1;
1410 }
1411
1412
1413 int
1414 frv_stopped_data_address (CORE_ADDR *addr_p)
1415 {
1416 struct frame_info *frame = get_current_frame ();
1417 CORE_ADDR brr, dbar0, dbar1, dbar2, dbar3;
1418
1419 brr = get_frame_register_unsigned (frame, brr_regnum);
1420 dbar0 = get_frame_register_unsigned (frame, dbar0_regnum);
1421 dbar1 = get_frame_register_unsigned (frame, dbar1_regnum);
1422 dbar2 = get_frame_register_unsigned (frame, dbar2_regnum);
1423 dbar3 = get_frame_register_unsigned (frame, dbar3_regnum);
1424
1425 if (brr & (1<<11))
1426 *addr_p = dbar0;
1427 else if (brr & (1<<10))
1428 *addr_p = dbar1;
1429 else if (brr & (1<<9))
1430 *addr_p = dbar2;
1431 else if (brr & (1<<8))
1432 *addr_p = dbar3;
1433 else
1434 return 0;
1435
1436 return 1;
1437 }
1438
1439 int
1440 frv_have_stopped_data_address (void)
1441 {
1442 CORE_ADDR addr = 0;
1443 return frv_stopped_data_address (&addr);
1444 }
1445
1446 static CORE_ADDR 1377 static CORE_ADDR
1447 frv_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame) 1378 frv_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
1448 { 1379 {
1449 return frame_unwind_register_unsigned (next_frame, pc_regnum); 1380 return frame_unwind_register_unsigned (next_frame, pc_regnum);
1450 } 1381 }
1451 1382
1452 /* Given a GDB frame, determine the address of the calling function's 1383 /* Given a GDB frame, determine the address of the calling function's
1453 frame. This will be used to create a new GDB frame struct. */ 1384 frame. This will be used to create a new GDB frame struct. */
1454 1385
1455 static void 1386 static void
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 frv_fetch_objfile_link_map); 1603 frv_fetch_objfile_link_map);
1673 1604
1674 return gdbarch; 1605 return gdbarch;
1675 } 1606 }
1676 1607
1677 void 1608 void
1678 _initialize_frv_tdep (void) 1609 _initialize_frv_tdep (void)
1679 { 1610 {
1680 register_gdbarch_init (bfd_arch_frv, frv_gdbarch_init); 1611 register_gdbarch_init (bfd_arch_frv, frv_gdbarch_init);
1681 } 1612 }
OLDNEW
« no previous file with comments | « gdb/frv-linux-tdep.c ('k') | gdb/gcore.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698