diff options
author | Jason Molenda <jsm@bugshack.cygnus.com> | 1999-07-07 20:19:36 +0000 |
---|---|---|
committer | Jason Molenda <jsm@bugshack.cygnus.com> | 1999-07-07 20:19:36 +0000 |
commit | a87029ef15e59af2cc0b27cb4024b0db313fa88e (patch) | |
tree | a5cc2d6f8ebdbbd957642e72e0e88cc5fe5cd2e1 /gdb/ser-e7kpc.c | |
parent | 528824cc847e5a13831dd41e5aacb34679143c94 (diff) | |
download | gdb-a87029ef15e59af2cc0b27cb4024b0db313fa88e.tar.gz |
import gdb-1999-07-07 post reformat
Diffstat (limited to 'gdb/ser-e7kpc.c')
-rw-r--r-- | gdb/ser-e7kpc.c | 172 |
1 files changed, 95 insertions, 77 deletions
diff --git a/gdb/ser-e7kpc.c b/gdb/ser-e7kpc.c index fae08594c06..5f35baedf0e 100644 --- a/gdb/ser-e7kpc.c +++ b/gdb/ser-e7kpc.c @@ -1,21 +1,22 @@ /* Remote serial interface using Hitachi E7000 PC ISA card in a PC Copyright 1994, 1999 Free Software Foundation, Inc. -This file is part of GDB. + This file is part of GDB. -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 -(at your option) any later version. + 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 + (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. + 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. */ + 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. */ #if defined __GO32__ || defined _WIN32 #include "defs.h" @@ -57,26 +58,26 @@ static int e7000pc_set_tty_state PARAMS ((serial_t scb, serial_ttystate state)); #define OFF_READY 0x300c #define OFF_PON 0x300e -#define IDLE 0x0000 -#define CMD_CI 0x4349 -#define CMD_CO 0x434f -#define CMD_LO 0x4c4f -#define CMD_LS 0x4c53 -#define CMD_SV 0x5356 -#define CMD_SS 0x5353 -#define CMD_OK 0x4f4b -#define CMD_ER 0x4552 -#define CMD_NF 0x4e46 -#define CMD_AB 0x4142 -#define CMD_ED 0x4544 -#define CMD_CE 0x4345 +#define IDLE 0x0000 +#define CMD_CI 0x4349 +#define CMD_CO 0x434f +#define CMD_LO 0x4c4f +#define CMD_LS 0x4c53 +#define CMD_SV 0x5356 +#define CMD_SS 0x5353 +#define CMD_OK 0x4f4b +#define CMD_ER 0x4552 +#define CMD_NF 0x4e46 +#define CMD_AB 0x4142 +#define CMD_ED 0x4544 +#define CMD_CE 0x4345 static unsigned long fa; static unsigned long irqtod; static unsigned long ready; static unsigned long fb; -static unsigned long cpd ; -static unsigned long cdp ; +static unsigned long cpd; +static unsigned long cdp; static unsigned long ready; static unsigned long pon; static unsigned long irqtop; @@ -101,16 +102,31 @@ static unsigned short sb; #define dosmemput(FROM, LEN, TO) memcpy ((void *)(TO), (void *)(FROM), (LEN)) #endif -static struct sw +static struct sw + { + int sw; + int addr; + } +sigs[] = { - int sw; - int addr; -} sigs[] = { - {0x14, 0xd0000}, - {0x15, 0xd4000}, - {0x16, 0xd8000}, - {0x17, 0xdc000}, - 0}; + { + 0x14, 0xd0000 + } + , + { + 0x15, 0xd4000 + } + , + { + 0x16, 0xd8000 + } + , + { + 0x17, 0xdc000 + } + , + 0 +}; #ifdef _MSC_VER /* Get the base of the data segment. This is needed to calculate the offset @@ -126,29 +142,29 @@ get_ds_base (void) unsigned long dsbase; __asm - { - mov dsval,ds - } + { + mov dsval, ds + } dsbase = 0; - GetThreadSelectorEntry (GetCurrentThread(), dsval, &ldt); + GetThreadSelectorEntry (GetCurrentThread (), dsval, &ldt); dsbase = ldt.HighWord.Bits.BaseHi << 24 | ldt.HighWord.Bits.BaseMid << 16 - | ldt.BaseLow; + | ldt.BaseLow; return dsbase; } #else /* !_MSC_VER */ #define get_ds_base() 0 -#endif /* _MSC_VER */ +#endif /* _MSC_VER */ static int e7000pc_init () { int try; unsigned long dsbase; - + dsbase = get_ds_base (); /* Look around in memory for the board's signature */ @@ -161,25 +177,25 @@ e7000pc_init () fb = board_at + OFF_FB; cpd = board_at + OFF_CPD; cdp = board_at + OFF_CDP; - ready =board_at + OFF_READY; - pon = board_at + OFF_PON; + ready = board_at + OFF_READY; + pon = board_at + OFF_PON; irqtop = board_at + OFF_IRQTOP; irqtod = board_at + OFF_IRQTOD; - + val = GET_WORD (ready); - if (val == (0xaaa0 | sigs[try].sw)) + if (val == (0xaaa0 | sigs[try].sw)) { if (GET_WORD (pon) & 0xf) { SET_WORD (fa, 0); SET_WORD (fb, 0); - SET_WORD (irqtop, 1); /* Disable interrupts from e7000 */ + SET_WORD (irqtop, 1); /* Disable interrupts from e7000 */ SET_WORD (ready, 1); - printf_filtered ("\nConnected to the E7000PC at address 0x%x\n", + printf_filtered ("\nConnected to the E7000PC at address 0x%x\n", sigs[try].addr); - return 1; + return 1; } error ("The E7000 PC board is working, but the E7000 is turned off.\n"); return 0; @@ -200,14 +216,14 @@ static int pbuf_index; /* Return next byte from cdp. If no more, then return -1. */ -static int +static int e7000_get (void) { static char pbuf[1000]; char tmp[1000]; int x; - if (pbuf_index < pbuf_size) + if (pbuf_index < pbuf_size) { x = pbuf[pbuf_index++]; } @@ -219,17 +235,17 @@ e7000_get (void) dosmemget (cdp + 8, pbuf_size + 1, tmp); /* Tell the E7000 we've eaten */ - SET_WORD (fb, 0); + SET_WORD (fb, 0); /* Swap it around */ - for (i = 0; i < pbuf_size; i++) + for (i = 0; i < pbuf_size; i++) { - pbuf[i] = tmp[i^1]; + pbuf[i] = tmp[i ^ 1]; } pbuf_index = 0; - x = pbuf[pbuf_index++]; + x = pbuf[pbuf_index++]; } - else - { + else + { x = -1; } return x; @@ -255,16 +271,16 @@ dosasync_read (fd, buf, len, timeout) then = now + timeout; while (i < len) { - int ch = e7000_get(); - + int ch = e7000_get (); + /* While there's room in the buffer, and we've already - read the stuff in, suck it over */ - if (ch != -1) + read the stuff in, suck it over */ + if (ch != -1) { buf[i++] = ch; - while (i < len && pbuf_index < pbuf_size ) + while (i < len && pbuf_index < pbuf_size) { - ch = e7000_get(); + ch = e7000_get (); if (ch == -1) break; buf[i++] = ch; @@ -291,26 +307,26 @@ dosasync_write (fd, buf, len) int len; { int i; - char dummy[1000]; - + char dummy[1000]; + /* Construct copy locally */ - ((short *)dummy)[0] = CMD_CI; - ((short *)dummy)[1] = len; - ((short *)dummy)[2] = 0; - ((short *)dummy)[3] = 0; - for (i = 0; i < len ; i++) + ((short *) dummy)[0] = CMD_CI; + ((short *) dummy)[1] = len; + ((short *) dummy)[2] = 0; + ((short *) dummy)[3] = 0; + for (i = 0; i < len; i++) { dummy[(8 + i) ^ 1] = buf[i]; } /* Wait for the card to get ready */ - while (GET_WORD (fa) & 1) ; + while (GET_WORD (fa) & 1); /* Blast onto the ISA card */ - dosmemput (dummy, 8 + len + 1, cpd); + dosmemput (dummy, 8 + len + 1, cpd); SET_WORD (fa, 1); - SET_WORD (irqtod, 1); /* Interrupt the E7000 */ + SET_WORD (irqtod, 1); /* Interrupt the E7000 */ return len; } @@ -355,18 +371,20 @@ e7000pc_readchar (scb, timeout) { char buf; - top: +top: if (dosasync_read (scb->fd, &buf, 1, timeout)) { - if (buf == 0) goto top; + if (buf == 0) + goto top; return buf; } else return SERIAL_TIMEOUT; } -struct e7000pc_ttystate { +struct e7000pc_ttystate +{ int dummy; }; |