summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorRich Salz <rsalz@akamai.com>2014-08-09 08:02:20 -0400
committerRich Salz <rsalz@akamai.com>2014-08-09 08:02:20 -0400
commitf642ebc1e2dca34bc2b3c46796c131e1f5077bee (patch)
treea8f54bb26068ebd4bf5a1ef4684ab98758cebc4f /crypto
parent693b71fa719598a487165918cbbc0f7f62816c83 (diff)
Undo unapproved commit that removed DJGPP and WATT32
Diffstat (limited to 'crypto')
-rw-r--r--crypto/bio/b_sock.c12
-rw-r--r--crypto/bio/bss_dgram.c6
-rw-r--r--crypto/bio/bss_log.c8
-rw-r--r--crypto/bio/bss_sock.c6
-rw-r--r--crypto/des/read_pwd.c2
-rw-r--r--crypto/md4/md4.c2
-rw-r--r--crypto/md5/md5.c2
-rw-r--r--crypto/o_dir.c2
-rw-r--r--crypto/perlasm/x86asm.pl2
-rw-r--r--crypto/ripemd/rmd160.c2
-rw-r--r--crypto/ui/ui_openssl.c2
-rw-r--r--crypto/x86cpuid.pl37
12 files changed, 72 insertions, 11 deletions
diff --git a/crypto/bio/b_sock.c b/crypto/bio/b_sock.c
index 4544ab209c..a026b3e0b0 100644
--- a/crypto/bio/b_sock.c
+++ b/crypto/bio/b_sock.c
@@ -494,6 +494,12 @@ int BIO_sock_init(void)
}
}
#endif /* OPENSSL_SYS_WINDOWS */
+#ifdef WATT32
+ extern int _watt_do_exit;
+ _watt_do_exit = 0; /* don't make sock_init() call exit() */
+ if (sock_init())
+ return (-1);
+#endif
#if defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK)
WORD wVerReq;
@@ -543,6 +549,9 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
{
int i;
+#ifdef __DJGPP__
+ i=ioctlsocket(fd,type,(char *)arg);
+#else
# if defined(OPENSSL_SYS_VMS)
/* 2011-02-18 SMS.
* VMS ioctl() can't tolerate a 64-bit "void *arg", but we
@@ -565,8 +574,9 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
# else /* defined(OPENSSL_SYS_VMS) */
# define ARG arg
# endif /* defined(OPENSSL_SYS_VMS) [else] */
- i=ioctlsocket(fd,type,ARG);
+ i=ioctlsocket(fd,type,ARG);
+#endif /* __DJGPP__ */
if (i < 0)
SYSerr(SYS_F_IOCTLSOCKET,get_last_socket_error());
return(i);
diff --git a/crypto/bio/bss_dgram.c b/crypto/bio/bss_dgram.c
index 25d5195bc2..9c0950191b 100644
--- a/crypto/bio/bss_dgram.c
+++ b/crypto/bio/bss_dgram.c
@@ -95,6 +95,12 @@
((a)->s6_addr32[2] == htonl(0x0000ffff)))
#endif
+#ifdef WATT32
+#define sock_write SockWrite /* Watt-32 uses same names */
+#define sock_read SockRead
+#define sock_puts SockPuts
+#endif
+
static int dgram_write(BIO *h, const char *buf, int num);
static int dgram_read(BIO *h, char *buf, int size);
static int dgram_puts(BIO *h, const char *str);
diff --git a/crypto/bio/bss_log.c b/crypto/bio/bss_log.c
index 7b6eb73152..2227b2b52d 100644
--- a/crypto/bio/bss_log.c
+++ b/crypto/bio/bss_log.c
@@ -88,7 +88,7 @@
# include <sys/syslog.h>
#elif defined(OPENSSL_SYS_NETWARE)
# define NO_SYSLOG
-#elif !defined(MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && !defined(NO_SYSLOG)
+#elif (!defined(MSDOS) || defined(WATT32)) && !defined(OPENSSL_SYS_VXWORKS) && !defined(NO_SYSLOG)
# include <syslog.h>
#endif
@@ -373,11 +373,15 @@ static void xcloselog(BIO* bp)
{
}
-#else /* Unix */
+#else /* Unix/Watt32 */
static void xopenlog(BIO* bp, char* name, int level)
{
+#ifdef WATT32 /* djgpp/DOS */
+ openlog(name, LOG_PID|LOG_CONS|LOG_NDELAY, level);
+#else
openlog(name, LOG_PID|LOG_CONS, level);
+#endif
}
static void xsyslog(BIO *bp, int priority, const char *string)
diff --git a/crypto/bio/bss_sock.c b/crypto/bio/bss_sock.c
index 4e1b3d5fa1..3df31938c1 100644
--- a/crypto/bio/bss_sock.c
+++ b/crypto/bio/bss_sock.c
@@ -65,6 +65,12 @@
#include <openssl/bio.h>
+#ifdef WATT32
+#define sock_write SockWrite /* Watt-32 uses same names */
+#define sock_read SockRead
+#define sock_puts SockPuts
+#endif
+
static int sock_write(BIO *h, const char *buf, int num);
static int sock_read(BIO *h, char *buf, int size);
static int sock_puts(BIO *h, const char *str);
diff --git a/crypto/des/read_pwd.c b/crypto/des/read_pwd.c
index 9042afe173..ce5fa00a37 100644
--- a/crypto/des/read_pwd.c
+++ b/crypto/des/read_pwd.c
@@ -266,7 +266,7 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
long status;
unsigned short channel = 0;
#else
-#if !defined(OPENSSL_SYS_MSDOS)
+#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__)
TTY_STRUCT tty_orig,tty_new;
#endif
#endif
diff --git a/crypto/md4/md4.c b/crypto/md4/md4.c
index f8a47fb50c..141415ad4d 100644
--- a/crypto/md4/md4.c
+++ b/crypto/md4/md4.c
@@ -64,7 +64,7 @@
void do_fp(FILE *f);
void pt(unsigned char *md);
-#if !defined(_OSD_POSIX)
+#if !defined(_OSD_POSIX) && !defined(__DJGPP__)
int read(int, void *, unsigned int);
#endif
diff --git a/crypto/md5/md5.c b/crypto/md5/md5.c
index d171256520..563733abc5 100644
--- a/crypto/md5/md5.c
+++ b/crypto/md5/md5.c
@@ -64,7 +64,7 @@
void do_fp(FILE *f);
void pt(unsigned char *md);
-#if !defined(_OSD_POSIX)
+#if !defined(_OSD_POSIX) && !defined(__DJGPP__)
int read(int, void *, unsigned int);
#endif
diff --git a/crypto/o_dir.c b/crypto/o_dir.c
index ded369f23c..42891ea459 100644
--- a/crypto/o_dir.c
+++ b/crypto/o_dir.c
@@ -70,7 +70,7 @@
#include "o_dir.h"
#define LPDIR_H
-#if defined OPENSSL_SYS_UNIX
+#if defined OPENSSL_SYS_UNIX || defined DJGPP
#include "LPdir_unix.c"
#elif defined OPENSSL_SYS_VMS
#include "LPdir_vms.c"
diff --git a/crypto/perlasm/x86asm.pl b/crypto/perlasm/x86asm.pl
index 6cf80546d2..cae156ae63 100644
--- a/crypto/perlasm/x86asm.pl
+++ b/crypto/perlasm/x86asm.pl
@@ -277,7 +277,7 @@ sub ::asm_init
{ print STDERR <<"EOF";
Pick one target type from
elf - Linux, FreeBSD, Solaris x86, etc.
- a.out - elder OpenBSD, etc.
+ a.out - DJGPP, elder OpenBSD, etc.
coff - GAS/COFF such as Win32 targets
win32n - Windows 95/Windows NT NASM format
nw-nasm - NetWare NASM format
diff --git a/crypto/ripemd/rmd160.c b/crypto/ripemd/rmd160.c
index 0fcd99fe16..b0ec574498 100644
--- a/crypto/ripemd/rmd160.c
+++ b/crypto/ripemd/rmd160.c
@@ -64,7 +64,7 @@
void do_fp(FILE *f);
void pt(unsigned char *md);
-#if !defined(_OSD_POSIX)
+#if !defined(_OSD_POSIX) && !defined(__DJGPP__)
int read(int, void *, unsigned int);
#endif
diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c
index 1b09b916bb..a38c7581e6 100644
--- a/crypto/ui/ui_openssl.c
+++ b/crypto/ui/ui_openssl.c
@@ -296,7 +296,7 @@ static long tty_orig[3], tty_new[3]; /* XXX Is there any guarantee that this w
static long status;
static unsigned short channel = 0;
#else
-#if !defined(OPENSSL_SYS_MSDOS)
+#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__)
static TTY_STRUCT tty_orig,tty_new;
#endif
#endif
diff --git a/crypto/x86cpuid.pl b/crypto/x86cpuid.pl
index dca37e7cd2..86772329bc 100644
--- a/crypto/x86cpuid.pl
+++ b/crypto/x86cpuid.pl
@@ -168,7 +168,7 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
&ret ();
&function_end_B("OPENSSL_rdtsc");
-# This works in Ring 0 only [read MS-DOS+privileged DPMI host],
+# This works in Ring 0 only [read DJGPP+MS-DOS+privileged DPMI host],
# but it's safe to call it on any [supported] 32-bit platform...
# Just check for [non-]zero return value...
&function_begin_B("OPENSSL_instrument_halt","EXTRN\t_OPENSSL_ia32cap_P:DWORD");
@@ -202,6 +202,41 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
&ret ();
&function_end_B("OPENSSL_instrument_halt");
+# Essentially there is only one use for this function. Under DJGPP:
+#
+# #include <go32.h>
+# ...
+# i=OPENSSL_far_spin(_dos_ds,0x46c);
+# ...
+# to obtain the number of spins till closest timer interrupt.
+
+&function_begin_B("OPENSSL_far_spin");
+ &pushf ();
+ &pop ("eax");
+ &bt ("eax",9);
+ &jnc (&label("nospin")); # interrupts are disabled
+
+ &mov ("eax",&DWP(4,"esp"));
+ &mov ("ecx",&DWP(8,"esp"));
+ &data_word (0x90d88e1e); # push %ds, mov %eax,%ds
+ &xor ("eax","eax");
+ &mov ("edx",&DWP(0,"ecx"));
+ &jmp (&label("spin"));
+
+ &align (16);
+&set_label("spin");
+ &inc ("eax");
+ &cmp ("edx",&DWP(0,"ecx"));
+ &je (&label("spin"));
+
+ &data_word (0x1f909090); # pop %ds
+ &ret ();
+
+&set_label("nospin");
+ &xor ("eax","eax");
+ &xor ("edx","edx");
+ &ret ();
+&function_end_B("OPENSSL_far_spin");
&function_begin_B("OPENSSL_wipe_cpu","EXTRN\t_OPENSSL_ia32cap_P:DWORD");
&xor ("eax","eax");