| 1 | /* Parameters for Intel 960 running NINDY monitor, for GDB, the GNU debugger. |
| 2 | Copyright (C) 1990-1991 Free Software Foundation, Inc. |
| 3 | Contributed by Intel Corporation and Cygnus Support. |
| 4 | |
| 5 | This file is part of GDB. |
| 6 | |
| 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 |
| 9 | the Free Software Foundation; either version 2 of the License, or |
| 10 | (at your option) any later version. |
| 11 | |
| 12 | This program is distributed in the hope that it will be useful, |
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | GNU General Public License for more details. |
| 16 | |
| 17 | You should have received a copy of the GNU General Public License |
| 18 | along with this program; if not, write to the Free Software |
| 19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
| 20 | |
| 21 | /***************************************************************************** |
| 22 | * Definitions to target GDB to an i960 debugged over a serial line. |
| 23 | ******************************************************************************/ |
| 24 | |
| 25 | #include "tm-i960.h" |
| 26 | |
| 27 | /* Override the standard gdb prompt when compiled for this target. */ |
| 28 | |
| 29 | #define DEFAULT_PROMPT "(gdb960) " |
| 30 | |
| 31 | /* Additional command line options accepted by nindy gdb's, for handling |
| 32 | the remote-nindy.c interface. These should really be target-specific |
| 33 | rather than architecture-specific. */ |
| 34 | |
| 35 | extern int nindy_old_protocol; /* nonzero if old NINDY serial protocol */ |
| 36 | extern int nindy_initial_brk; /* Send a BREAK to reset board first */ |
| 37 | extern char *nindy_ttyname; /* Name of serial port to talk to nindy */ |
| 38 | |
| 39 | #define ADDITIONAL_OPTIONS \ |
| 40 | {"O", 0, &nindy_old_protocol, 1}, \ |
| 41 | {"brk", 0, &nindy_initial_brk, 1}, \ |
| 42 | {"r", 1, 0, 1004}, /* 1004 is magic cookie for ADDL_CASES */ |
| 43 | |
| 44 | #define ADDITIONAL_OPTION_CASES \ |
| 45 | case 1004: /* -r option: remote nindy auto-start */ \ |
| 46 | nindy_ttyname = optarg; \ |
| 47 | break; |
| 48 | |
| 49 | #define ADDITIONAL_OPTION_HELP \ |
| 50 | "\ |
| 51 | -O Use old protocol to talk to a Nindy target\n\ |
| 52 | -brk Send a break to a Nindy target to reset it.\n\ |
| 53 | -r SERIAL Open remote Nindy session to SERIAL port.\n\ |
| 54 | " |
| 55 | |
| 56 | /* If specified on the command line, open tty for talking to nindy, |
| 57 | and download the executable file if one was specified. */ |
| 58 | |
| 59 | #define ADDITIONAL_OPTION_HANDLER \ |
| 60 | if (!setjmp (to_top_level) && nindy_ttyname) { \ |
| 61 | nindy_open (nindy_ttyname, !batch); \ |
| 62 | if ( !setjmp(to_top_level) && execarg ) { \ |
| 63 | target_load (execarg, !batch); \ |
| 64 | } \ |
| 65 | } |
| 66 | |
| 67 | /* If configured for i960 target, we take control before main loop |
| 68 | and demand that we configure for a nindy target. */ |
| 69 | |
| 70 | #define BEFORE_MAIN_LOOP_HOOK \ |
| 71 | nindy_before_main_loop(); |
| 72 | |
| 73 | /* Address of end of stack space. |
| 74 | * This probably doesn't matter for nindy, because it's only used |
| 75 | * in manipulation of core files, which we don't support. |
| 76 | */ |
| 77 | |
| 78 | #define STACK_END_ADDR (0xfe000000) |
| 79 | |
| 80 | /* FRAME_CHAIN_VALID returns zero if the given frame is the outermost one |
| 81 | and has no caller. |
| 82 | |
| 83 | On the i960, each various target system type defines FRAME_CHAIN_VALID, |
| 84 | since it differs between NINDY and VxWorks, the two currently supported |
| 85 | targets types. */ |
| 86 | |
| 87 | #define FRAME_CHAIN_VALID(chain, thisframe) \ |
| 88 | nindy_frame_chain_valid (chain, thisframe) |
| 89 | |
| 90 | extern int nindy_frame_chain_valid(); /* See nindy-tdep.c */ |
| 91 | |
| 92 | /* Sequence of bytes for breakpoint instruction */ |
| 93 | |
| 94 | #define BREAKPOINT {0x00, 0x3e, 0x00, 0x66} |
| 95 | |
| 96 | /* Amount ip must be decremented by after a breakpoint. |
| 97 | * This is often the number of bytes in BREAKPOINT but not always. |
| 98 | */ |
| 99 | |
| 100 | #define DECR_PC_AFTER_BREAK 0 |