* ser-go32.c: Make it use serial port name.

* go32-xdep.c:  Put in def for strlwr, needed by dir.o in go32 libc.
This commit is contained in:
Stu Grossman 1993-04-08 04:12:56 +00:00
parent 0742a6fded
commit b83bf6b370
3 changed files with 61 additions and 24 deletions

View File

@ -1,5 +1,8 @@
Wed Apr 7 18:43:09 1993 Stu Grossman (grossman@cygnus.com)
* ser-go32.c: Make it use serial port name.
* go32-xdep.c: Put in def for strlwr, needed by dir.o in go32 libc.
* infcmd.c (read_pc): Make sure that we read PC_REGNUM when not
in a system call!

View File

@ -32,6 +32,10 @@ sigsetmask()
{
}
strlwr()
void
strlwr(str)
char *str;
{
for (; *str; str++)
*str = tolower(*str);
}

View File

@ -49,7 +49,26 @@ static int iov;
#define com_lsr iov+5
#define com_msr iov+6
static int fd;
static int
strncasecmp(str1, str2, len)
char *str1, *str2;
register int len;
{
unsigned char c1, c2;
for (; len != 0; --len)
{
c1 = *str1++;
c2 = *str2++;
if (toupper(c1) != toupper(c2))
return toupper(c1) - toupper(c2);
if (c1 == '\0')
return 0;
}
return 0;
}
static char *
aptr(p)
@ -65,39 +84,37 @@ getivec(int which)
if (peek(0, which*4) != OFFSET)
return 0;
a = (ASYNC_STRUCT *)(0xe0000000 + peek(0, which*4+2)*16 + peek(0, which*4));
if (a->signature != SIGNATURE)
return 0;
if (a->version != VERSION)
return 0;
return a;
}
static int
dos_async_init()
dos_async_init(port)
int port;
{
int i;
ASYNC_STRUCT *a1;
ASYNC_STRUCT *a2;
a1 = getivec(12);
a2 = getivec(11);
async = 0;
if (a1)
async = a1;
if (a2)
async = a2;
if (a1 && a2)
switch (port)
{
if (a1 < a2)
async = a1;
else
async = a2;
case 1:
async = getivec (12);
break;
case 2:
async = getivec (11);
break;
default:
return 0;
}
if (async == 0)
if (!async)
{
error("GDB can not connect to asynctsr program, check that it is installed\n\
and that serial I/O is not being redirected (perhaps by NFS)\n\n\
@ -114,10 +131,7 @@ C> gdb \n");
outportb(com_mcr, 0x0b);
async->getp = async->putp = async->buffer_start;
if (iov > 0x300)
return 1;
else
return 2;
return 1;
}
static void
@ -203,7 +217,23 @@ go32_open (scb, name)
serial_t scb;
const char *name;
{
scb->fd = dos_async_init();
int port;
if (strncasecmp (name, "com", 3) != 0)
{
errno = ENOENT;
return 1;
}
port = name[3] - '0';
if ((port != 1) && (port != 2))
{
errno = ENOENT;
return 1;
}
scb->fd = dos_async_init(port);
if (!scb->fd)
return 1;