aboutsummaryrefslogtreecommitdiff
path: root/gdb/ser-e7kpc.c
diff options
context:
space:
mode:
authorDawn Perchik <dawn@cygnus>1996-09-17 10:16:30 +0000
committerDawn Perchik <dawn@cygnus>1996-09-17 10:16:30 +0000
commit5b59224e9137e8651626f74d14134b1c5bef5ba2 (patch)
tree6b83aa134b5b661f974d7546e65c39ad68372ce9 /gdb/ser-e7kpc.c
parent3733d1095f6d398f467781d27f12a25895e10908 (diff)
downloadfsf-binutils-gdb-5b59224e9137e8651626f74d14134b1c5bef5ba2.zip
fsf-binutils-gdb-5b59224e9137e8651626f74d14134b1c5bef5ba2.tar.gz
fsf-binutils-gdb-5b59224e9137e8651626f74d14134b1c5bef5ba2.tar.bz2
* ser-e7kpc.c: Added wingdb support for target e7000pc.
Diffstat (limited to 'gdb/ser-e7kpc.c')
-rw-r--r--gdb/ser-e7kpc.c44
1 files changed, 40 insertions, 4 deletions
diff --git a/gdb/ser-e7kpc.c b/gdb/ser-e7kpc.c
index 9faf7dd..abe855b 100644
--- a/gdb/ser-e7kpc.c
+++ b/gdb/ser-e7kpc.c
@@ -18,11 +18,21 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#ifdef __GO32__
+#if defined(__GO32__) || defined(__WIN32__)
+#if defined(__WIN32__)
+//#define KERNEL
+//#define STRICT
+//#include <windows.h>
+/* we define the 32-bit calls which thunk to 16-bit dll calls
+ */
+#include "win-e7kpc.h"
+/* msvc uses strnicmp instead */
+#define strncasecmp strnicmp
+#else
+#include <sys/dos.h>
#include "defs.h"
+#endif
#include "serial.h"
-#include <sys/dos.h>
-
static int e7000pc_open PARAMS ((serial_t scb, const char *name));
@@ -78,6 +88,23 @@ static unsigned long pon;
static unsigned long irqtop;
static unsigned long board_at;
+#ifdef __WIN32__
+// These routines are normally part of the go32 dos extender.
+// We redefine them here to be calls into their Windoze equivs.
+static void dosmemget(int offset, int length, void *buffer);
+static void dosmemput(const void *buffer, int length, int offset);
+
+void dosmemget(int offset, int length, void *buffer)
+{
+ win_mem_get(buffer, length, offset);
+}
+void dosmemput(const void *buffer, int length, int offset)
+{
+ win_mem_put (buffer, length, offset);
+}
+
+#endif
+
#define SET_BYTE(x,y) { char _buf = y;dosmemput(&_buf,1, x);}
#define SET_WORD(x,y) { short _buf = y;dosmemput(&_buf,2, x);}
#define GET_BYTE(x) ( dosmemget(x,1,&bb), bb)
@@ -276,7 +303,13 @@ e7000pc_open (scb, name)
errno = ENOENT;
return -1;
}
-
+#ifdef __WIN32__
+ if (win_load_e7kpc () != 0)
+ {
+ errno = ENOENT;
+ return -1;
+ }
+#endif
scb->fd = e7000pc_init ();
if (!scb->fd)
@@ -384,6 +417,9 @@ static void
e7000pc_close (scb)
serial_t scb;
{
+#ifdef __WIN32__
+ win_unload_e7kpc ();
+#endif
}
static struct serial_ops e7000pc_ops =