diff options
author | Kung Hsu <kung@cygnus> | 1995-03-01 01:39:12 +0000 |
---|---|---|
committer | Kung Hsu <kung@cygnus> | 1995-03-01 01:39:12 +0000 |
commit | abed6bc2e16f4253cfe464db18a2aefcda871a80 (patch) | |
tree | 8b23e1266e1ff0e42db7a9150a94ce0efd4ab5f9 /gdb | |
parent | cb58e516f932657c5eca5ed830f5d83e57904e97 (diff) | |
download | fsf-binutils-gdb-abed6bc2e16f4253cfe464db18a2aefcda871a80.zip fsf-binutils-gdb-abed6bc2e16f4253cfe464db18a2aefcda871a80.tar.gz fsf-binutils-gdb-abed6bc2e16f4253cfe464db18a2aefcda871a80.tar.bz2 |
* arc-tdep.c (_initialize_arc_tdep): set tm_print_insn according to
processor.
* remote-arc.c (arc_wait): when a processor stops, stop other two
processors too.
* remote-arc.c (switch_command): switch tm_print_insn.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/arc-tdep.c | 2 | ||||
-rw-r--r-- | gdb/remote-arc.c | 66 |
3 files changed, 50 insertions, 24 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a1a44a6..33bcbe3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ Tue Feb 28 14:38:39 1995 Kung Hsu <kung@mexican.cygnus.com> + * arc-tdep.c (_initialize_arc_tdep): set tm_print_insn according to + processor. + * remote-arc.c (arc_wait): when a processor stops, stop other two + processors too. + * remote-arc.c (switch_command): switch tm_print_insn. + * vx-share/ptrace.h: merge in WRS new ptrace requests. * defs.h: fix a syntax error. diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c index 385a4ca..14b9fcb 100644 --- a/gdb/arc-tdep.c +++ b/gdb/arc-tdep.c @@ -358,5 +358,5 @@ get_longjmp_target(pc) void _initialize_arc_tdep () { - tm_print_insn = print_insn_arc; + tm_print_insn = arc_get_disassembler (bfd_mach_arc_host); } diff --git a/gdb/remote-arc.c b/gdb/remote-arc.c index 98e7a57..90ddf3c 100644 --- a/gdb/remote-arc.c +++ b/gdb/remote-arc.c @@ -101,7 +101,7 @@ interrupt_query PARAMS ((void)); extern struct target_ops arc_ops; /* Forward decl */ -static int aux_reg_map[3][30] = AUX_REG_MAP; +static int aux_reg_map[3][31] = AUX_REG_MAP; /* This was 5 seconds, which is a long time to sit and wait. Unless this is going though some terminal server or multiplexer or @@ -450,6 +450,8 @@ arc_wait (pid, status) { unsigned char buf[PBUFSIZ]; int thread_num = -1; + unsigned char cmd; + int proc; status->kind = TARGET_WAITKIND_EXITED; status->value.integer = 0; @@ -465,8 +467,33 @@ arc_wait (pid, status) break; status->kind = TARGET_WAITKIND_STOPPED; } - arc_xfer_reg (curr_processor, 1, 1, 0, &status_reg); + if ((curr_processor != HOST_PROCESSOR) && + !(cntl_reg & cntl_reg_halt_bit[HOST_PROCESSOR])) + { + cmd = cntl_reg | cntl_reg_halt_bit[HOST_PROCESSOR]; + arc_xfer_cntlreg (0, &cmd); + while (1) + { + unsigned char *p; + + ofunc = (void (*)()) signal (SIGINT, arc_interrupt); + arc_xfer_cntlreg (1, &cntl_reg); + signal (SIGINT, ofunc); + if (cntl_reg & cntl_reg_halt_bit[HOST_PROCESSOR]) + break; + } + } + + for (proc = AUDIO_PROCESSOR ; proc <= GRAPHIC_PROCESSOR; proc++) + { + if ((cntl_reg & cntl_reg_halt_bit[proc])) + continue; + cmd = cntl_reg | cntl_reg_halt_bit[proc]; + arc_xfer_cntlreg (0, &cmd); + } + + arc_xfer_reg (curr_processor, 1, 1, 0, &status_reg); return inferior_pid; } @@ -919,9 +946,8 @@ switch_command (args, fromtty) char *args; int fromtty; { - unsigned char cmd; - int proc; struct target_waitstatus status; + int proc; if (strncmp (args, "audio", 3) == 0) proc = 0; @@ -930,28 +956,22 @@ switch_command (args, fromtty) else if (strncmp (args, "host", 4) == 0) proc = 2; - if (cntl_reg & cntl_reg_halt_bit[proc]) + curr_processor = proc; + + switch (proc) { - curr_processor = proc; - return; + case 0: + tm_print_insn = arc_get_disassembler (bfd_mach_arc_audio); + break; + case 1: + tm_print_insn = arc_get_disassembler (bfd_mach_arc_graphics); + break; + case 2: + tm_print_insn = arc_get_disassembler (bfd_mach_arc_host); + break; } - if ((proc != HOST_PROCESSOR) && - !(cntl_reg & cntl_reg_halt_bit[HOST_PROCESSOR])) - { - cmd = cntl_reg | cntl_reg_halt_bit[HOST_PROCESSOR]; - arc_xfer_cntlreg (0, &cmd); - curr_processor = HOST_PROCESSOR; - arc_wait (inferior_pid, &status); - } - if (!(cntl_reg & cntl_reg_halt_bit[proc])) - { - cmd = cntl_reg | cntl_reg_halt_bit[proc]; - arc_xfer_cntlreg (0, &cmd); - curr_processor = proc; - arc_wait (inferior_pid, &status); - arc_fetch_registers (-1); - } + return; } |