/* This file is part of the program GDB, the GNU debugger.
- Copyright (C) 1998, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1998-2020 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
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 of the License, or
+ the Free Software Foundation; either version 3 of the License, 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.
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
};
-/* Access dv-sockser state */
-extern char* sockser_addr;
-#define USE_SOCKSER_P (sockser_addr != NULL)
-
-
#define NR_SERIAL_DEVS 3
#define SIO_STAT_RRDY 0x0010
do_polling_event (struct hw *me,
void *data)
{
+ SIM_DESC sd = hw_system (me);
struct mn103ser *serial = hw_data(me);
long serial_reg = (long) data;
char c;
- int count;
+ int count, status;
- if(USE_SOCKSER_P)
+ status = dv_sockser_status (sd);
+ if (!(status & DV_SOCKSER_DISCONNECTED))
{
int rd;
- rd = dv_sockser_read (hw_system (me));
+ rd = dv_sockser_read (sd);
if(rd != -1)
{
c = (char) rd;
if ( (serial->device[serial_reg].status & SIO_STAT_RRDY) == 0 )
{
+ SIM_DESC sd = hw_system (me);
+ int status;
+
/* FIFO is empty */
/* Kill current poll event */
if ( NULL != serial->device[serial_reg].event )
serial->device[serial_reg].event = NULL;
}
- if(USE_SOCKSER_P)
+ status = dv_sockser_status (sd);
+ if (!(status & DV_SOCKSER_DISCONNECTED))
{
int rd;
- rd = dv_sockser_read (hw_system (me));
+ rd = dv_sockser_read (sd);
if(rd != -1)
{
c = (char) rd;
{
if ( nr_bytes == 1 )
{
+ SIM_DESC sd = hw_system (me);
+ int status;
+
serial->device[serial_reg].txb = *(unsigned8 *)source;
- if(USE_SOCKSER_P)
+ status = dv_sockser_status (sd);
+ if (!(status & DV_SOCKSER_DISCONNECTED))
{
- dv_sockser_write(hw_system (me), * (char*) source);
+ dv_sockser_write(sd, * (char*) source);
}
else
{
- sim_io_write_stdout(hw_system (me), (char *)source, 1);
- sim_io_flush_stdout(hw_system (me));
+ sim_io_write_stdout(sd, (char *)source, 1);
+ sim_io_flush_stdout(sd);
}
hw_port_event (me, serial_reg+SERIAL0_SEND, 1);