diff options
author | Doug Evans <dje@google.com> | 1998-09-15 22:16:08 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 1998-09-15 22:16:08 +0000 |
commit | ff8c385ab368ea27a54a5f5fb614b4580452cd02 (patch) | |
tree | 7a433c3195625d4e6f1402866f3468cc07a161a6 /sim/m32r/devices.c | |
parent | 5df02296c9e681eced38f4954c70409fd5e243a5 (diff) | |
download | gdb-ff8c385ab368ea27a54a5f5fb614b4580452cd02.zip gdb-ff8c385ab368ea27a54a5f5fb614b4580452cd02.tar.gz gdb-ff8c385ab368ea27a54a5f5fb614b4580452cd02.tar.bz2 |
* m32r-sim.h (GET_H_SM): New macro.
(UART params): Update to msa2000.
* devices.c (device_io_read_buffer): Update to msa2000.
* m32r.c (m32rb_h_cr_get,m32rb_h_cr_set): Handle bbpc,bbpsw.
(m32rb_h_psw_get,m32rb_h_psw_set): New functions.
* arch.c,arch.h,cpu.c,cpu.h,sem-switch.c,sem.c: Regenerate.
* m32rx.c (m32rx_h_cr_get,m32rx_h_cr_set): Handle bbpc,bbpsw.
(m32rx_h_psw_get,m32rx_h_psw_set): New functions.
* cpux.c,cpux.h,readx.c,semx.c: Regenerate.
PR 15938.
Diffstat (limited to 'sim/m32r/devices.c')
-rw-r--r-- | sim/m32r/devices.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/sim/m32r/devices.c b/sim/m32r/devices.c new file mode 100644 index 0000000..0f4ee2d --- /dev/null +++ b/sim/m32r/devices.c @@ -0,0 +1,108 @@ +/* m32r device support + Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Contributed by Cygnus Solutions. + +This file is part of GDB, the GNU debugger. + +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 2, 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, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "sim-main.h" + +#ifdef HAVE_DV_SOCKSER +#include "dv-sockser.h" +#endif + +/* Handling the MSPR register is done by creating a device in the core + mapping that winds up here. */ + +device m32r_devices; + +int +device_io_read_buffer (device *me, void *source, int space, + address_word addr, unsigned nr_bytes, + SIM_CPU *cpu, sim_cia cia) +{ + SIM_DESC sd = CPU_STATE (cpu); + + if (STATE_ENVIRONMENT (sd) != OPERATING_ENVIRONMENT) + return nr_bytes; + +#ifdef HAVE_DV_SOCKSER + if (addr == UART_INCHAR_ADDR) + { + int c = dv_sockser_read (sd); + if (c == -1) + return 0; + *(char *) source = c; + return 1; + } + if (addr == UART_STATUS_ADDR) + { + int status = dv_sockser_status (sd); + unsigned char *p = source; + p[0] = 0; + p[1] = (((status & DV_SOCKSER_INPUT_EMPTY) +#ifdef UART_INPUT_READY0 + ? UART_INPUT_READY : 0) +#else + ? 0 : UART_INPUT_READY) +#endif + + ((status & DV_SOCKSER_OUTPUT_EMPTY) ? UART_OUTPUT_READY : 0)); + return 2; + } +#endif + + return nr_bytes; +} + +int +device_io_write_buffer (device *me, const void *source, int space, + address_word addr, unsigned nr_bytes, + SIM_CPU *cpu, sim_cia cia) +{ + SIM_DESC sd = CPU_STATE (cpu); + +#if WITH_SCACHE + /* MSPR support is deprecated but is kept in for upward compatibility + with existing overlay support. */ + if (addr == MSPR_ADDR) + { + if ((*(const char *) source & MSPR_PURGE) != 0) + scache_flush (sd); + return nr_bytes; + } + if (addr == MCCR_ADDR) + { + if ((*(const char *) source & MCCR_CP) != 0) + scache_flush (sd); + return nr_bytes; + } +#endif + + if (STATE_ENVIRONMENT (sd) != OPERATING_ENVIRONMENT) + return nr_bytes; + +#if HAVE_DV_SOCKSER + if (addr == UART_OUTCHAR_ADDR) + { + int rc = dv_sockser_write (sd, *(char *) source); + return rc == 1; + } +#endif + + return nr_bytes; +} + +void device_error () {} |