Browse Source
* nlm/aio.h: Protect from multiple inclusions.
* nlm/alpha-io.S: Remove everything we don't need.
* nlm/{alpha-patch.c, alpha-patch.h, alpha-uart.c, alpha-uart.h}:
Remove, no longer needed.
* nlm/alpha.c: Merge in lots of stuff from previous files.
* nlm/alpha.h: Don't #include alpha-patch.h. Make
breakpoint_insn extern.
* Move stuff from alpha-patch.h into here.
* config/alpha/gdbserve.mt (TDEPFILES): Get rid of alpha-uart.o.
gdb-4_18-branch
10 changed files with 425 additions and 1948 deletions
@ -1,3 +1,3 @@ |
|||
# Target: GDBSERVE.NLM running on a little-endian Alpha |
|||
TDEPFILES= alpha.o alpha-io.o alpha-patch.o alpha-uart.o |
|||
TDEPFILES= alpha.o alpha-io.o alpha-patch.o |
|||
CPU_FILE= alpha |
|||
|
|||
@ -1,243 +0,0 @@ |
|||
#include <nwtypes.h> |
|||
#include "alpha-patch.h" |
|||
#include <errno.h> |
|||
#include <stdio.h> |
|||
|
|||
#define CONST const |
|||
|
|||
/* This file provides stubs and equivalent interfaces for all functions that
|
|||
the debugger stub needs, but aren't yet implemented. */ |
|||
|
|||
int |
|||
AIOReadData (int portHandle, char *buffer, LONG length, LONG *numberBytesRead) |
|||
{ |
|||
ULONG c; |
|||
|
|||
while (1) |
|||
{ |
|||
c = com_interrupt (); |
|||
if ((c & ~0377) == COM1) |
|||
break; |
|||
} |
|||
|
|||
*buffer = c; |
|||
*numberBytesRead = 1; |
|||
|
|||
return AIO_SUCCESS; |
|||
} |
|||
|
|||
int |
|||
AIOWriteData (int portHandle, char *buffer, LONG length, |
|||
LONG *numberBytesWritten) |
|||
|
|||
{ |
|||
*numberBytesWritten = length; |
|||
|
|||
while (length-- > 0) |
|||
uart_putchar (COM1, *buffer++); |
|||
|
|||
return AIO_SUCCESS; |
|||
} |
|||
|
|||
int |
|||
AIOAcquirePort (int *hardwareType, int *boardNumber, int *portNumber, |
|||
int *portHandle) |
|||
{ |
|||
return AIO_SUCCESS; |
|||
} |
|||
|
|||
int |
|||
AIOConfigurePort (int portHandle, BYTE bitRate, BYTE dataBits, BYTE stopBits, |
|||
BYTE parityMode, BYTE flowCtrlMode) |
|||
{ |
|||
uart_init_line (1, 9600); |
|||
|
|||
return AIO_SUCCESS; |
|||
} |
|||
|
|||
int |
|||
AIOGetPortConfiguration (int portHandle, AIOPORTCONFIG *pPortConfig, |
|||
AIODVRCONFIG *pDvrConfig) |
|||
{ |
|||
fprintf (stderr, "AIOGetPortConfiguration stubbed out\n"); |
|||
exit (1); |
|||
} |
|||
|
|||
int |
|||
AIOReleasePort (int portHandle) |
|||
{ |
|||
return AIO_SUCCESS; |
|||
} |
|||
|
|||
int |
|||
AIOSetExternalControl (int portHandle, int requestType, int requestValue) |
|||
{ |
|||
return AIO_SUCCESS; |
|||
} |
|||
|
|||
int |
|||
AIOGetExternalStatus (int portHandle, LONG *extStatus, LONG *chgdExtStatus) |
|||
{ |
|||
fprintf (stderr, "AIOGetExternalStatus stubbed out\n"); |
|||
exit (1); |
|||
} |
|||
|
|||
void |
|||
StopBell () |
|||
{ |
|||
} |
|||
|
|||
int |
|||
Breakpoint (int __arg) |
|||
{ |
|||
fprintf (stderr, "Breakpoint() stubbed out\n"); |
|||
exit (1); |
|||
} |
|||
|
|||
/*
|
|||
* strtol : convert a string to long. |
|||
* |
|||
* Andy Wilson, 2-Oct-89. |
|||
*/ |
|||
|
|||
/* FIXME: It'd be nice to configure around these, but the include files are too
|
|||
painful. These macros should at least be more portable than hardwired hex |
|||
constants. */ |
|||
|
|||
#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF */ |
|||
#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF */ |
|||
#define LONG_MIN ((long)(~LONG_MAX)) /* 0x80000000 */ |
|||
|
|||
extern int errno; |
|||
|
|||
long |
|||
strtol(s, ptr, base) |
|||
CONST char *s; char **ptr; int base; |
|||
{ |
|||
extern unsigned long strtoul(); |
|||
int minus=0; |
|||
unsigned long tmp; |
|||
CONST char *start=s, *eptr; |
|||
|
|||
if (s==NULL) |
|||
{ |
|||
errno = ERANGE; |
|||
if (!ptr) |
|||
*ptr = (char *)start; |
|||
return 0L; |
|||
} |
|||
while (isspace(*s)) |
|||
s++; |
|||
if (*s == '-') { |
|||
s++; |
|||
minus = 1; |
|||
} |
|||
else if (*s == '+') |
|||
s++; |
|||
|
|||
/*
|
|||
* let strtoul do the hard work. |
|||
*/ |
|||
tmp = strtoul(s, &eptr, base); |
|||
if (ptr != NULL) |
|||
*ptr = (char *)((eptr==s) ? (char *)start : eptr); |
|||
if (tmp > (minus ? - (unsigned long) LONG_MIN : (unsigned long) LONG_MAX)) |
|||
{ |
|||
errno = ERANGE; |
|||
return (minus ? LONG_MIN : LONG_MAX); |
|||
} |
|||
return (minus ? (long) -tmp : (long) tmp); |
|||
} |
|||
|
|||
/*
|
|||
* strtol : convert a string to long. |
|||
* |
|||
* Andy Wilson, 2-Oct-89. |
|||
*/ |
|||
|
|||
#ifndef ULONG_MAX |
|||
#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF */ |
|||
#endif |
|||
|
|||
extern int errno; |
|||
|
|||
unsigned long |
|||
strtoul(s, ptr, base) |
|||
CONST char *s; char **ptr; int base; |
|||
{ |
|||
unsigned long total = 0; |
|||
unsigned digit; |
|||
CONST char *start=s; |
|||
int did_conversion=0; |
|||
int overflow = 0; |
|||
int negate = 0; |
|||
unsigned long maxdiv, maxrem; |
|||
|
|||
if (s==NULL) |
|||
{ |
|||
errno = ERANGE; |
|||
if (!ptr) |
|||
*ptr = (char *)start; |
|||
return 0L; |
|||
} |
|||
|
|||
while (isspace(*s)) |
|||
s++; |
|||
if (*s == '+') |
|||
s++; |
|||
else if (*s == '-') |
|||
s++, negate = 1; |
|||
if (base==0 || base==16) /* the 'base==16' is for handling 0x */ |
|||
{ |
|||
int tmp; |
|||
|
|||
/*
|
|||
* try to infer base from the string |
|||
*/ |
|||
if (*s != '0') |
|||
tmp = 10; /* doesn't start with 0 - assume decimal */ |
|||
else if (s[1] == 'X' || s[1] == 'x') |
|||
tmp = 16, s += 2; /* starts with 0x or 0X - hence hex */ |
|||
else |
|||
tmp = 8; /* starts with 0 - hence octal */ |
|||
if (base==0) |
|||
base = (int)tmp; |
|||
} |
|||
|
|||
maxdiv = ULONG_MAX / base; |
|||
maxrem = ULONG_MAX % base; |
|||
|
|||
while ((digit = *s) != '\0') |
|||
{ |
|||
if (digit >= '0' && digit < ('0'+base)) |
|||
digit -= '0'; |
|||
else |
|||
if (base > 10) |
|||
{ |
|||
if (digit >= 'a' && digit < ('a'+(base-10))) |
|||
digit = digit - 'a' + 10; |
|||
else if (digit >= 'A' && digit < ('A'+(base-10))) |
|||
digit = digit - 'A' + 10; |
|||
else |
|||
break; |
|||
} |
|||
else |
|||
break; |
|||
did_conversion = 1; |
|||
if (total > maxdiv |
|||
|| (total == maxdiv && digit > maxrem)) |
|||
overflow = 1; |
|||
total = (total * base) + digit; |
|||
s++; |
|||
} |
|||
if (overflow) |
|||
{ |
|||
errno = ERANGE; |
|||
if (ptr != NULL) |
|||
*ptr = (char *)s; |
|||
return (ULONG_MAX); |
|||
} |
|||
if (ptr != NULL) |
|||
*ptr = (char *) ((did_conversion) ? (char *)s : (char *)start); |
|||
return negate ? -total : total; |
|||
} |
|||
@ -1,651 +0,0 @@ |
|||
/* This contains defs for the stubs defined in alpha-patch.c. Many of these
|
|||
defs are ripped off of other files. */ |
|||
|
|||
#include "altdebug.h" /* Get StackFrame structure */ |
|||
|
|||
/* -=-=-= aio.h -=-=-= */ |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* NetWare 386 Developer's Asynchronous I/O (AIO) Runtime library * |
|||
* * |
|||
* This include file defines the constants and prototypes required * |
|||
* to use the AIO application interface. * |
|||
* * |
|||
* (c) Copyright. 1991 Novell, Inc. All rights reserved. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef unsigned long DWORD; |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Predefined hardware types for use with the AIOAcquirePort function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_COMX_TYPE (1) |
|||
#define AIO_ARTIC_TYPE (2) |
|||
#define AIO_WNIM_TYPE (3) |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Function completion code status values. * |
|||
* * |
|||
* Note that all error statuses are negative values. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_SUCCESS (0) |
|||
#define AIO_BAD_HANDLE (-1) |
|||
#define AIO_FAILURE (-2) |
|||
#define AIO_FUNC_NOT_SUPPORTED (-3) |
|||
#define AIO_INVALID_PARAMETER (-5) |
|||
#define AIO_PORT_NOT_AVAILABLE (-6) |
|||
#define AIO_QUALIFIED_SUCCESS (-7) |
|||
#define AIO_NO_MORE_PORTS (-8) |
|||
#define AIO_TYPE_NUMBER_INVALID (-10) |
|||
#define AIO_BOARD_NUMBER_INVALID (-11) |
|||
#define AIO_PORT_NUMBER_INVALID (-12) |
|||
#define AIO_RESOURCE_TAG_INVALID (-13) |
|||
#define AIO_DATA_PRESENT (-14) |
|||
#define AIO_BAD_REQUEST_TYPE (-15) |
|||
#define AIO_PORT_GONE (-20) |
|||
#define AIO_RTAG_INVALID (-21) |
|||
|
|||
|
|||
/* This is only for non-CLIB application */ |
|||
|
|||
#define ASYNCIOSignature 0x4E595341 /* 'NYSA' */ |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOSetExternalControl function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_EXTERNAL_CONTROL (1) |
|||
#define AIO_EXTCTRL_DTR (1) |
|||
#define AIO_EXTCTRL_RTS (2) |
|||
|
|||
|
|||
#define AIO_BREAK_CONTROL (2) |
|||
#define AIO_SET_BREAK_OFF (0) |
|||
#define AIO_SET_BREAK_ON (1) |
|||
|
|||
|
|||
#define AIO_FLOW_CONTROL (3) |
|||
#define AIO_SOFTWARE_FLOW_CONTROL_OFF (0) |
|||
#define AIO_SOFTWARE_FLOW_CONTROL_ON (1) |
|||
#define AIO_HARDWARE_FLOW_CONTROL_OFF (0) |
|||
#define AIO_HARDWARE_FLOW_CONTROL_ON (2) |
|||
|
|||
|
|||
#define AIO_FLOW_CONTROL_CHARACTERS (4) |
|||
|
|||
#define AIO_SET_DEADMAN_TIMER (5) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOGetExternalStatus function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_EXTSTA_RI (0x00000001) |
|||
#define AIO_EXTSTA_DCD (0x00000008) |
|||
#define AIO_EXTSTA_DSR (0x00000010) |
|||
#define AIO_EXTSTA_CTS (0x00000020) |
|||
#define AIO_EXTSTA_BREAK (0x00000080) |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOFlushBuffers function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_FLUSH_WRITE_BUFFER (0x0001) |
|||
#define AIO_FLUSH_READ_BUFFER (0x0002) |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOReadStatus function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_RECEIVE_ACTIVE (0) |
|||
#define AIO_RECEIVE_FULL (1) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOWriteStatus function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_TRANSMIT_IDLE (0) |
|||
#define AIO_TRANSMIT_ACTIVE (1) |
|||
#define AIO_TRANSMIT_XOFFED (2) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOAcquirePort function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
#define AIO_HARDWARE_TYPE_WILDCARD (-1) |
|||
#define AIO_BOARD_NUMBER_WILDCARD (-1) |
|||
#define AIO_PORT_NUMBER_WILDCARD (-1) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOConfigurePort function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
/* BitRate */ |
|||
|
|||
#define AIO_BAUD_50 (0) |
|||
#define AIO_BAUD_75 (1) |
|||
#define AIO_BAUD_110 (2) |
|||
#define AIO_BAUD_134p5 (3) |
|||
#define AIO_BAUD_150 (4) |
|||
#define AIO_BAUD_300 (5) |
|||
#define AIO_BAUD_600 (6) |
|||
#define AIO_BAUD_1200 (7) |
|||
#define AIO_BAUD_1800 (8) |
|||
#define AIO_BAUD_2000 (9) |
|||
#define AIO_BAUD_2400 (10) |
|||
#define AIO_BAUD_3600 (11) |
|||
#define AIO_BAUD_4800 (12) |
|||
#define AIO_BAUD_7200 (13) |
|||
#define AIO_BAUD_9600 (14) |
|||
#define AIO_BAUD_19200 (15) |
|||
#define AIO_BAUD_38400 (16) |
|||
#define AIO_BAUD_57600 (17) |
|||
#define AIO_BAUD_115200 (18) |
|||
|
|||
/* DataBits */ |
|||
|
|||
#define AIO_DATA_BITS_5 (0) |
|||
#define AIO_DATA_BITS_6 (1) |
|||
#define AIO_DATA_BITS_7 (2) |
|||
#define AIO_DATA_BITS_8 (3) |
|||
|
|||
/* StopBits */ |
|||
|
|||
#define AIO_STOP_BITS_1 (0) |
|||
#define AIO_STOP_BITS_1p5 (1) |
|||
#define AIO_STOP_BITS_2 (2) |
|||
|
|||
/* Parity */ |
|||
|
|||
#define AIO_PARITY_NONE (0) |
|||
#define AIO_PARITY_ODD (1) |
|||
#define AIO_PARITY_EVEN (2) |
|||
#define AIO_PARITY_MARK (3) |
|||
#define AIO_PARITY_SPACE (4) |
|||
|
|||
/* FlowControl */ |
|||
|
|||
#define AIO_SOFTWARE_FLOWCONTROL_OFF (0) |
|||
#define AIO_SOFTWARE_FLOWCONTROL_ON (1) |
|||
#define AIO_HARDWARE_FLOWCONTROL_OFF (0) |
|||
#define AIO_HARDWARE_FLOWCONTROL_ON (2) |
|||
|
|||
#define AIO_DROPOUT_VALUE (0xFF) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with AIOPORTCAPABILITIES structure. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of capabilities data */ |
|||
BYTE majorVersion; |
|||
BYTE minorVersion; |
|||
LONG notSupportedMask; |
|||
BYTE minBitRate; /* minimum bit rate index supported */ |
|||
BYTE maxBitRate; /* maximum bit rate index supported */ |
|||
BYTE minDataBits; /* minimum data bits per char index supported */ |
|||
BYTE maxDataBits; /* maximum data bits per char index supported */ |
|||
BYTE minStopBits; /* minimum stop bits per char index supported */ |
|||
BYTE maxStopBits; /* maximum stop bits per char index supported */ |
|||
BYTE minParityMode; /* minimum parity mode index supported */ |
|||
BYTE maxParityMode; /* maximum parity mode index supported */ |
|||
BYTE minFlowCtrlMode; /* minimum flow control mode index supported */ |
|||
BYTE maxFlowCtrlMode; /* maximum flow control mode index supported */ |
|||
LONG miscCapabilities; /* miscellaneous capability flags */ |
|||
LONG minReadBufferSize; /* minimum length of receive buffer */ |
|||
LONG maxReadBufferSize; /* maximum length of receive buffer */ |
|||
LONG minWriteBufferSize; /* minimum length of transmit buffer */ |
|||
LONG maxWriteBufferSize; /* maximum length of transmit buffer */ |
|||
WORD minDeadmanTime; /* minimum deadman time (seconds) */ |
|||
WORD maxDeadmanTime; /* maximum deadman time (seconds) */ |
|||
} AIOPORTCAPABILITIES; |
|||
|
|||
#define AIO_PORT_NS_MINBITRATE (0x80000000) |
|||
#define AIO_PORT_NS_MAXBITRATE (0x40000000) |
|||
#define AIO_PORT_NS_MINDATABITS (0x20000000) |
|||
#define AIO_PORT_NS_MAXDATABITS (0x10000000) |
|||
#define AIO_PORT_NS_MINSTOPBITS (0x08000000) |
|||
#define AIO_PORT_NS_MAXSTOPBITS (0x04000000) |
|||
#define AIO_PORT_NS_MINPARITYMODE (0x02000000) |
|||
#define AIO_PORT_NS_MAXPARITYMODE (0x01000000) |
|||
#define AIO_PORT_NS_MINFLOWCTRLMODE (0x00800000) |
|||
#define AIO_PORT_NS_MAXFLOWCTRLMODE (0x00400000) |
|||
#define AIO_PORT_NS_MISCCAPABILITIES (0x00200000) |
|||
#define AIO_PORT_NS_MINREADBUFFERSIZE (0x00100000) |
|||
#define AIO_PORT_NS_MAXREADBUFFERSIZE (0x00080000) |
|||
#define AIO_PORT_NS_MINWRITEBUFFERSIZE (0x00040000) |
|||
#define AIO_PORT_NS_MAXWRITEBUFFERSIZE (0x00020000) |
|||
#define AIO_PORT_NS_MINDEADMANTIME (0x00010000) |
|||
#define AIO_PORT_NS_MAXDEADMANTIME (0x00008000) |
|||
|
|||
#define AIO_PORT_CAPS_NOT_SUPPORTED (0x00007FFF) |
|||
#define AIO_PORT_CAPS_MAJOR_VERSION (1) |
|||
#define AIO_PORT_CAPS_MINOR_VERSION (0) |
|||
|
|||
#define AIO_CAP_OUTPUT_BREAK (0x00000002) |
|||
#define AIO_CAP_FLOWCTRLCHARS (0x00000004) |
|||
#define AIO_CAP_PROGRAMMABLE (0x00000008) |
|||
#define AIO_CAP_INPUT (0x00000010) |
|||
#define AIO_CAP_OUTPUT (0x00000020) |
|||
|
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of driver capabilities structure */ |
|||
BYTE byteData[2]; |
|||
} AIODVRCAPABILITIES; |
|||
|
|||
#define AIO_NO_STRUCT_DATA_RETURNED (2) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOGetPortsRollCall function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of port info data */ |
|||
BYTE majorVersion; |
|||
BYTE minorVersion; |
|||
LONG notSupportedMask; |
|||
int hardwareType; /* value used with AIOAcquirePort */ |
|||
int boardNumber; /* " */ |
|||
int portNumber; /* " */ |
|||
WORD availability; /* availability of port for acquire */ |
|||
LONG externalStatus; /* current external status value for port */ |
|||
LONG chgdExternalStatus; /* changed external status value for port */ |
|||
} AIOPORTINFO; |
|||
|
|||
#define AIO_INFO_NS_HARDWARETYPE (0x80000000) |
|||
#define AIO_INFO_NS_BOARDNUMBER (0x40000000) |
|||
#define AIO_INFO_NS_PORTNUMBER (0x20000000) |
|||
#define AIO_INFO_NS_AVAILABILITY (0x10000000) |
|||
#define AIO_INFO_NS_EXTERNALSTATUS (0x08000000) |
|||
#define AIO_INFO_NS_CHGDEXTERNALSTATUS (0x04000000) |
|||
|
|||
#define AIO_PORT_INFO_NOT_SUPPORTED (0x03FFFFFF) |
|||
#define AIO_PORT_INFO_MAJOR_VERSION (1) |
|||
#define AIO_PORT_INFO_MINOR_VERSION (0) |
|||
|
|||
#define AIO_AVAILABLE_FOR_ACQUIRE (0) |
|||
#define AIO_ALREADY_ACQUIRED (1) |
|||
#define AIO_UNAVAILABLE (0xFF) |
|||
|
|||
#define AIO_INITIAL (0) |
|||
#define AIO_SUCCESSOR (1) |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOGetPortConfiguration function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of port configuration data */ |
|||
BYTE majorVersion; |
|||
BYTE minorVersion; |
|||
LONG notSupportedMask; |
|||
int hardwareType; /* value used with AIOAcquirePort */ |
|||
int boardNumber; /* " */ |
|||
int portNumber; /* " */ |
|||
BYTE bitRate; /* Bits per second index */ |
|||
BYTE dataBits; /* Bits per character index */ |
|||
BYTE stopBits; /* Stop bits per char index */ |
|||
BYTE parityMode; /* Generated parity index */ |
|||
BYTE flowCtrlMode; /* Flow control mode */ |
|||
BYTE breakMode; /* Break control mode */ |
|||
LONG readSize; /* Receive buffer size */ |
|||
LONG writeSize; /* Transmit buffer size */ |
|||
BYTE transmitXon; |
|||
BYTE transmitXoff; |
|||
BYTE receiveXon; |
|||
BYTE receiveXoff; |
|||
WORD externalControl; /* set with AIO_EXTERNAL_CONTROL */ |
|||
|
|||
} AIOPORTCONFIG; |
|||
|
|||
#define AIO_CONFIG_NS_HARDWARETYPE (0x80000000) |
|||
#define AIO_CONFIG_NS_BOARDNUMBER (0x40000000) |
|||
#define AIO_CONFIG_NS_PORTNUMBER (0x20000000) |
|||
#define AIO_CONFIG_NS_BITRATE (0x10000000) |
|||
#define AIO_CONFIG_NS_DATABITS (0x08000000) |
|||
#define AIO_CONFIG_NS_STOPBITS (0x04000000) |
|||
#define AIO_CONFIG_NS_PARITYMODE (0x02000000) |
|||
#define AIO_CONFIG_NS_FLOWCTRLMODE (0x01000000) |
|||
#define AIO_CONFIG_NS_BREAKMODE (0x00800000) |
|||
#define AIO_CONFIG_NS_READSIZE (0x00400000) |
|||
#define AIO_CONFIG_NS_WRITESIZE (0x00200000) |
|||
#define AIO_CONFIG_NS_TRANSMITXON (0x00100000) |
|||
#define AIO_CONFIG_NS_TRANSMITXOFF (0x00080000) |
|||
#define AIO_CONFIG_NS_RECEIVEXON (0x00040000) |
|||
#define AIO_CONFIG_NS_RECEIVEXOFF (0x00020000) |
|||
#define AIO_CONFIG_NS_EXTERNALCONTROL (0x00010000) |
|||
|
|||
#define AIO_PORT_CONFIG_NOT_SUPPORTED (0x0007FFFF) |
|||
#define AIO_PORT_CONFIG_MAJOR_VERSION (1) |
|||
#define AIO_PORT_CONFIG_MINOR_VERSION (0) |
|||
|
|||
#define AIO_EXTCTRL_DTR_ENABLE (1) |
|||
#define AIO_EXTCTRL_DTR_DISABLE (0) |
|||
#define AIO_EXTCTRL_RTS_ENABLE (2) |
|||
#define AIO_EXTCTRL_RTS_DISABLE (0) |
|||
|
|||
#define AIO_BREAK_MODE_OFF (0) |
|||
#define AIO_BREAK_MODE_ON (1) |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of driver config structure */ |
|||
BYTE byteData[2]; |
|||
} AIODVRCONFIG; |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with the AIOGetStatistics function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of port statistics structure */ |
|||
BYTE majorVersion; |
|||
BYTE minorVersion; |
|||
LONG notSupportedMask; |
|||
LONG receiveBytes; /* total number of bytes received on port */ |
|||
LONG transmitBytes; /* total number of bytes transmitted from port */ |
|||
LONG parityErrors; /* number of receive parity errors */ |
|||
LONG framingErrors; /* number of receive framing errors */ |
|||
LONG overrunSoftware; /* number of software overruns (occurrences) */ |
|||
LONG overrunHardware; /* number of hardware overruns (occurrences) */ |
|||
} AIOPORTSTATISTICS; |
|||
|
|||
#define AIO_STATS_NS_RECEIVEBYTES (0x80000000) |
|||
#define AIO_STATS_NS_TRANSMITBYTES (0x40000000) |
|||
#define AIO_STATS_NS_PARITYERRORS (0x20000000) |
|||
#define AIO_STATS_NS_FRAMINGERRORS (0x10000000) |
|||
#define AIO_STATS_NS_OVERRUNSOFTWARE (0x08000000) |
|||
#define AIO_STATS_NS_OVERRUNHARDWARE (0x04000000) |
|||
|
|||
#define AIO_PORT_STATS_NOT_SUPPORTED (0x03FFFFFF) |
|||
#define AIO_PORT_STATS_MAJOR_VERSION (1) |
|||
#define AIO_PORT_STATS_MINOR_VERSION (0) |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of driver statistics structure */ |
|||
BYTE byteData[2]; |
|||
} AIODVRSTATISTICS; |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with AIOGetDriverList function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
int hardwareType; |
|||
int ports; |
|||
char name[128]; |
|||
} AIODRIVERLISTENTRY; |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; |
|||
AIODRIVERLISTENTRY driver[1]; |
|||
} AIODRIVERLIST; |
|||
|
|||
#define AIO_DRIVER_LIST_GET_FIRST (-1) |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with AIOGetBoardList function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
int boardNumber; |
|||
int ports; |
|||
char name[128]; |
|||
} AIOBOARDLISTENTRY; |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; |
|||
AIOBOARDLISTENTRY board[1]; |
|||
} AIOBOARDLIST; |
|||
|
|||
#define AIO_BOARD_LIST_GET_FIRST (-1) |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with AIOSetControlData function. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
WORD returnLength; /* byte length of control data structure */ |
|||
BYTE byteData[2]; |
|||
} AIOCONTROLDATA; |
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definitions for use with AIOGetFirstPortInfo and AIOGetNextPortInfo * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
typedef struct |
|||
{ |
|||
int typeMask; |
|||
int boardMask; |
|||
int portMask; |
|||
int reserved[6]; |
|||
} AIOPORTSEARCH; |
|||
|
|||
/* reserved index values */ |
|||
|
|||
#define SEARCH_TYPE_INDEX 0 |
|||
#define SEARCH_BOARD_INDEX 1 |
|||
#define SEARCH_PORT_INDEX 2 |
|||
|
|||
|
|||
/*----------------------------------------------------------------------------*
|
|||
* * |
|||
* Definition of AIO functions. * |
|||
* * |
|||
*----------------------------------------------------------------------------*/ |
|||
|
|||
extern int AIOAcquirePort ( int *hardwareType, |
|||
int *boardNumber, |
|||
int *portNumber, |
|||
int *portHandle |
|||
); |
|||
|
|||
extern int AIOAcquirePortWithRTag ( int *hardwareType, |
|||
int *boardNumber, |
|||
int *portNumber, |
|||
int *portHandle, |
|||
LONG RTag |
|||
); |
|||
|
|||
extern int AIOConfigurePort ( int portHandle, |
|||
BYTE bitRate, |
|||
BYTE dataBits, |
|||
BYTE stopBits, |
|||
BYTE parityMode, |
|||
BYTE flowCtrlMode |
|||
); |
|||
|
|||
extern int AIOFlushBuffers ( int portHandle, |
|||
WORD flushFlag |
|||
); |
|||
|
|||
extern int AIOGetBoardList( int hardwareType, |
|||
int boardIndex, |
|||
AIOBOARDLIST *pBoardList ); |
|||
|
|||
extern int AIOGetDriverList ( int lastHardwareType, |
|||
AIODRIVERLIST *pDriverList |
|||
); |
|||
|
|||
extern int AIOGetExternalStatus ( int portHandle, |
|||
LONG *extStatus, |
|||
LONG *chgdExtStatus |
|||
); |
|||
|
|||
extern int AIOGetFirstPortInfo ( int hardwareType, |
|||
int boardNumber, |
|||
int portNumber, |
|||
AIOPORTSEARCH *portSearchP, |
|||
AIOPORTINFO *portInfoP, |
|||
AIOPORTCAPABILITIES *capabilitiesP, |
|||
AIODVRCAPABILITIES *dvrCapabilitiesP, |
|||
char *NLMModuleNameP ); |
|||
|
|||
extern int AIOGetNextPortInfo ( AIOPORTSEARCH *portSearchP, |
|||
AIOPORTINFO *portInfoP, |
|||
AIOPORTCAPABILITIES *capabilitiesP, |
|||
AIODVRCAPABILITIES *dvrCapabilitiesP, |
|||
char *NLMModuleNameP ); |
|||
|
|||
extern int AIOGetPortCapability ( int portHandle, |
|||
AIOPORTCAPABILITIES *pCapabilities, |
|||
AIODVRCAPABILITIES *pDvrCapabilities |
|||
); |
|||
|
|||
extern int AIOGetPortConfiguration ( int portHandle, |
|||
AIOPORTCONFIG *pPortConfig, |
|||
AIODVRCONFIG *pDvrConfig |
|||
); |
|||
|
|||
extern int AIOGetPortStatus ( int portHandle, |
|||
LONG *writeCount, |
|||
WORD *writeState, |
|||
LONG *readCount, |
|||
WORD *readState, |
|||
LONG *extStatus, |
|||
LONG *chgdExtStatus |
|||
); |
|||
|
|||
extern int AIOGetReadBufferSize ( int portHandle, |
|||
LONG *readSize |
|||
); |
|||
|
|||
extern int AIOGetPortStatistics ( int portHandle, |
|||
AIOPORTSTATISTICS *pPortStatistics, |
|||
AIODVRSTATISTICS *pDvrStatistics |
|||
); |
|||
|
|||
extern int AIOGetFirstPortStatistics( int hardwareType, |
|||
int boardNumber, |
|||
int portNumber, |
|||
AIOPORTSEARCH *portSearchP, |
|||
AIOPORTSTATISTICS *pPortStatistics, |
|||
AIODVRSTATISTICS *pDvrStatistics |
|||
); |
|||
|
|||
extern int AIOGetNextPortStatistics ( AIOPORTSEARCH *portSearchP, |
|||
AIOPORTSTATISTICS *pPortStatistics, |
|||
AIODVRSTATISTICS *pDvrStatistics |
|||
); |
|||
|
|||
extern int AIOGetWriteBufferSize ( int portHandle, |
|||
LONG *writeSize |
|||
); |
|||
|
|||
extern int AIOReadData ( int portHandle, |
|||
char *buffer, |
|||
LONG length, |
|||
LONG *numberBytesRead |
|||
); |
|||
|
|||
extern int AIOReadStatus ( int portHandle, |
|||
LONG *count, |
|||
WORD *state |
|||
); |
|||
|
|||
extern int AIOReleasePort ( int portHandle ); |
|||
|
|||
extern int AIOSetControlData ( int portHandle, |
|||
int requestType, |
|||
AIOCONTROLDATA *requestStructValue |
|||
); |
|||
|
|||
extern int AIOSetExternalControl ( int portHandle, |
|||
int requestType, |
|||
int requestValue |
|||
); |
|||
|
|||
extern int AIOSetFlowControl ( int portHandle, |
|||
int flowCtrlMode |
|||
); |
|||
|
|||
extern int AIOSetFlowControlCharacters( int portHandle, |
|||
BYTE transmitXon, |
|||
BYTE transmitXoff, |
|||
BYTE receiveXon, |
|||
BYTE receiveXoff |
|||
); |
|||
|
|||
extern int AIOSetReadBufferSize ( int portHandle, |
|||
LONG bufferSize |
|||
); |
|||
|
|||
extern int AIOSetWriteBufferSize ( int portHandle, |
|||
LONG bufferSize |
|||
); |
|||
|
|||
extern int AIOWriteData ( int portHandle, |
|||
char *buffer, |
|||
LONG length, |
|||
LONG *numberBytesWritten |
|||
); |
|||
|
|||
extern int AIOWriteStatus ( int portHandle, |
|||
LONG *count, |
|||
WORD *state |
|||
); |
|||
|
|||
/* -=-=-= Random stuff -=-=-=-= */ |
|||
|
|||
#define isspace(C) (C == '\n' || C == '\r' || C == ' ' || C == '\t') |
|||
int Breakpoint (int __arg); |
|||
|
|||
#define ULONG unsigned long |
|||
|
|||
#define COM1 0x8000 |
|||
#define COM2 0x9000 |
|||
@ -1,179 +0,0 @@ |
|||
/*
|
|||
* Copyright (C) 1993, 1994 by |
|||
* Digital Equipment Corporation, Maynard, Massachusetts. |
|||
* All rights reserved. |
|||
* |
|||
* This software is furnished under a license and may be used and copied |
|||
* only in accordance of the terms of such license and with the |
|||
* inclusion of the above copyright notice. This software or any other |
|||
* copies thereof may not be provided or otherwise made available to any |
|||
* other person. No title to and ownership of the software is hereby |
|||
* transferred. |
|||
* |
|||
* The information in this software is subject to change without notice |
|||
* and should not be construed as a commitment by Digital Equipment |
|||
* Corporation. |
|||
* |
|||
* Digital assumes no responsibility for the use or reliability of its |
|||
* software on equipment which is not supplied by Digital. |
|||
* |
|||
*/ |
|||
|
|||
|
|||
|
|||
/*$Id$*/ |
|||
|
|||
#include "nwtypes.h" |
|||
#include "alpha-uart.h" |
|||
/*#include "alphansi.h"*/ |
|||
#include "alpha-patch.h" |
|||
#include <stdio.h> |
|||
|
|||
ULONG com_interrupt() |
|||
{ |
|||
if (inVti(com1Lsr) & 1) |
|||
return COM1 | inVti (com1Rbr); |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
void |
|||
putcLpt(int c) |
|||
{ |
|||
int i, s; |
|||
while(!((s = inVti(lptSr)) & 0x80)) |
|||
; |
|||
|
|||
for(i=0;i<lptDly;++i) |
|||
; |
|||
|
|||
outVti(lptDr, c); |
|||
for(i=0;i<lptDly;++i) |
|||
; |
|||
|
|||
outVti(lptCr, lptnInit|lptSTB|lptAFD); |
|||
for(i=0;i<lptDly;++i) |
|||
; |
|||
|
|||
outVti(lptCr, lptnInit|lptAFD); |
|||
for(i=0;i<lptDly;++i) |
|||
; |
|||
|
|||
s = inVti(lptSr); |
|||
} |
|||
|
|||
|
|||
|
|||
void |
|||
uart_putchar(int port, char c) |
|||
{ |
|||
int lsr, thr; |
|||
switch(port) |
|||
{ |
|||
case COM1: |
|||
lsr = com1Lsr; |
|||
thr = com1Thr; |
|||
break; |
|||
case COM2: |
|||
lsr = com2Lsr; |
|||
thr = com2Thr; |
|||
break; |
|||
#if 0 |
|||
case LPT: |
|||
putcLpt(c); |
|||
return; |
|||
case VGA: |
|||
vga_putc(c); |
|||
return; |
|||
#endif |
|||
default: |
|||
return; |
|||
} |
|||
|
|||
while ((inVti(lsr) & 0x20) == 0); |
|||
outVti(thr,c); |
|||
if (c == '\n') uart_putchar(port, '\r'); |
|||
} |
|||
|
|||
|
|||
|
|||
int uart_init_line(int line, int baud) |
|||
{ |
|||
int i; |
|||
int baudconst; |
|||
|
|||
switch (baud) |
|||
{ |
|||
case 57600: baudconst = 2; break; |
|||
case 38400: baudconst = 3; break; |
|||
case 19200: baudconst = 6; break; |
|||
case 9600: baudconst = 12; break; |
|||
case 4800: baudconst = 24; break; |
|||
case 2400: baudconst = 48; break; |
|||
case 1200: baudconst = 96; break; |
|||
case 300: baudconst = 384; break; |
|||
case 150: baudconst = 768; break; |
|||
default: baudconst = 12; break; |
|||
} |
|||
|
|||
if (line == 1) |
|||
{ |
|||
outVti(com1Lcr, 0x87); |
|||
outVti(com1Dlm, 0); |
|||
outVti(com1Dll, baudconst); |
|||
outVti(com1Lcr, 0x07); |
|||
outVti(com1Mcr, 0x0F); |
|||
com1_disable_int(); |
|||
} |
|||
|
|||
else if (line == 2) |
|||
{ |
|||
outVti(com2Lcr, 0x87); |
|||
outVti(com2Dlm, 0); |
|||
outVti(com2Dll, baudconst); |
|||
outVti(com2Lcr, 0x07); |
|||
outVti(com2Mcr, 0x0F); |
|||
} |
|||
fprintf (stderr, "com1Ier = 0x%x\n", inVti(com1Ier)); |
|||
fprintf (stderr, "com1Lcr = 0x%x\n", inVti(com1Lcr)); |
|||
fprintf (stderr, "com1Dlm = 0x%x\n", inVti(com1Dlm)); |
|||
fprintf (stderr, "com1Dll = 0x%x\n", inVti(com1Dll)); |
|||
fprintf (stderr, "com1Lcr = 0x%x\n", inVti(com1Lcr)); |
|||
fprintf (stderr, "com1Mcr = 0x%x\n", inVti(com1Mcr)); |
|||
} |
|||
|
|||
|
|||
|
|||
int |
|||
uart_init() |
|||
{ |
|||
uart_init_line(1, 19200); |
|||
} |
|||
|
|||
|
|||
|
|||
com1_enable_int() |
|||
{ |
|||
outVti(com1Ier, 0x01); |
|||
} |
|||
|
|||
|
|||
|
|||
com1_disable_int() |
|||
{ |
|||
outVti(com1Ier, 0x0); |
|||
} |
|||
|
|||
|
|||
|
|||
com2_enable_int() |
|||
{ |
|||
outVti(com2Ier, 0x01); |
|||
} |
|||
|
|||
|
|||
|
|||
com2_disable_int() |
|||
{ |
|||
outVti(com2Ier, 0x0); |
|||
} |
|||
@ -1,59 +0,0 @@ |
|||
/*
|
|||
* Copyright (C) 1993, 1994 by |
|||
* Digital Equipment Corporation, Maynard, Massachusetts. |
|||
* All rights reserved. |
|||
* |
|||
* This software is furnished under a license and may be used and copied |
|||
* only in accordance of the terms of such license and with the |
|||
* inclusion of the above copyright notice. This software or any other |
|||
* copies thereof may not be provided or otherwise made available to any |
|||
* other person. No title to and ownership of the software is hereby |
|||
* transferred. |
|||
* |
|||
* The information in this software is subject to change without notice |
|||
* and should not be construed as a commitment by Digital Equipment |
|||
* Corporation. |
|||
* |
|||
* Digital assumes no responsibility for the use or reliability of its |
|||
* software on equipment which is not supplied by Digital. |
|||
* |
|||
*/ |
|||
|
|||
|
|||
#define com1Rbr 0x3f8 /* Receiver Buffer - Read */ |
|||
#define com1Thr 0x3f8 /* Transmitter Holding - Write */ |
|||
#define com1Ier 0x3f9 /* Interrupt Enable */ |
|||
#define com1Iir 0x3fa /* Interrupt Identification */ |
|||
#define com1Lcr 0x3fb /* Line Control */ |
|||
#define com1Mcr 0x3fc /* Modem Control */ |
|||
#define com1Lsr 0x3fd /* Line Status */ |
|||
#define com1Msr 0x3fe /* Modem Status */ |
|||
#define com1Scr 0x3ff /* Scratch */ |
|||
#define com1Dll 0x3f8 /* Divisor Latch - lsb */ |
|||
#define com1Dlm 0x3f9 /* Divisor Latch - msb */ |
|||
|
|||
#define com2Rbr 0x2f8 /* Receiver Buffer - Read */ |
|||
#define com2Thr 0x2f8 /* Transmitter Holding - Write */ |
|||
#define com2Ier 0x2f9 /* Interrupt Enable */ |
|||
#define com2Iir 0x2fa /* Interrupt Identification */ |
|||
#define com2Lcr 0x2fb /* Line Control */ |
|||
#define com2Mcr 0x2fc /* Modem Control */ |
|||
#define com2Lsr 0x2fd /* Line Status */ |
|||
#define com2Msr 0x2fe /* Modem Status */ |
|||
#define com2Scr 0x2ff /* Scratch */ |
|||
#define com2Dll 0x2f8 /* Divisor Latch - lsb */ |
|||
#define com2Dlm 0x2f9 /* Divisor Latch - msb */ |
|||
|
|||
#define lptDr 0x3bc |
|||
#define lptSr 0x3bd |
|||
#define lptCr 0x3be |
|||
|
|||
#define lptSTB 0x01 |
|||
#define lptAFD 0x02 |
|||
#define lptnInit 0x04 |
|||
#define lptSlct 0x08 |
|||
#define lptIrq 0x10 |
|||
#define lptDir 0x20 |
|||
|
|||
#define lptDly 100000 |
|||
|
|||
Loading…
Reference in new issue