summaryrefslogtreecommitdiffstats
path: root/newlib/libc/sys/go32/dosmem.S
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2002-12-20 02:29:00 +0000
committerJeff Johnston <jjohnstn@redhat.com>2002-12-20 02:29:00 +0000
commitd693ad844979b8f5596dde99a0cbec070af73683 (patch)
tree1b60e394a1807abc3c92bf9b0cbb88b3fdb157c4 /newlib/libc/sys/go32/dosmem.S
parent3ace1da676318a591ee314b784f37661e52cfb75 (diff)
downloadcygnal-d693ad844979b8f5596dde99a0cbec070af73683.tar.gz
cygnal-d693ad844979b8f5596dde99a0cbec070af73683.tar.bz2
cygnal-d693ad844979b8f5596dde99a0cbec070af73683.zip
2002-12-19 Jeff Johnston <jjohnstn@redhat.com>
* configure.host: Remove references to go32. * libc/sys/go32/*: Removed.
Diffstat (limited to 'newlib/libc/sys/go32/dosmem.S')
-rw-r--r--newlib/libc/sys/go32/dosmem.S120
1 files changed, 0 insertions, 120 deletions
diff --git a/newlib/libc/sys/go32/dosmem.S b/newlib/libc/sys/go32/dosmem.S
deleted file mode 100644
index c1956f767..000000000
--- a/newlib/libc/sys/go32/dosmem.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/* DOSMEM.S */
-/*
-** Copyright (C) 1993 C.W. Sandmann
-**
-** This file may be freely distributed as long as the author's name remains.
-** Extender environment independent way to set up Real area 1Mb access.
-** Procedure takes a single argument %eax which contains the real area offset.
-** After call, access may be made with "%gs:(%eax)"
-*/
- .text
- .align 2
- .globl dosmemsetup
-dosmemsetup: /* no params, expected ASM call only */
- pushl %eax
- movzwl __core_select,%eax
- testl %eax,%eax
- je old_go32 /* Image run with pre-DPMI extender */
- movw %ax,%gs /* Use real area selector */
- popl %eax /* Plus real offset */
- andl $0x0fffffff,%eax /* Clear any linear access bits */
- ret
- .align 2,0x90
-old_go32:
- push %ds
- pop %gs /* Use arena selector */
- popl %eax
- orl $0xe0000000,%eax /* Plus linear access area */
- ret
-
- .align 2
- .globl _dosmemget
-_dosmemget: /* long offset, long len, long *buf */
- push %gs
- movl 8(%esp),%eax /* offset */
- call dosmemsetup
- movl 12(%esp),%ecx /* length */
- movl 16(%esp),%edx /* arena offset */
- pushl %esi
- pushl %edi
- movl %eax,%esi
- movl %edx,%edi
- push %ds
- push %es
- push %ds
- pop %es
- push %gs
- pop %ds
- cld
- rep
- movsb /* move ECX bytes from Real area */
- pop %es
- pop %ds
- popl %edi
- popl %esi
- pop %gs
- ret
-
- .align 2
- .globl _dosmemput
-_dosmemput: /* long *buf, long len, long offset */
- push %gs
- movl 16(%esp),%eax /* offset */
- call dosmemsetup
- movl 12(%esp),%ecx /* length */
- movl 8(%esp),%edx /* arena offset */
- pushl %esi
- pushl %edi
- movl %eax,%edi
- movl %edx,%esi
- push %es
- push %gs
- pop %es
- cld
- rep
- movsb /* move ECX bytes to Real area */
- pop %es
- popl %edi
- popl %esi
- pop %gs
- ret
-
- .align 2 /* 8(bp) 12(bp) 16(bp) 20(bp) 24(bp) */
- .globl _movedata /* src_sel, src_ofs, dest_sel, dest_ofs, len */
-_movedata:
- pushl %ebp
- movl %esp,%ebp
- pushw %ds
- pushw %es
- pushl %esi
- pushl %edi
-
- movl 8(%ebp),%eax
- movw %ax,%ds
- movl 12(%ebp),%esi
-
- movl 16(%ebp),%eax
- movw %ax,%es
- movl 20(%ebp),%edi
-
- movl 24(%ebp),%ecx
- pushl %ecx
- shrl $2,%ecx
- jcxz no_big_move
- rep
- movsl
-no_big_move:
- popl %ecx
- andl $3,%ecx
- jcxz no_little_move
- rep
- movsb
-no_little_move:
-
- popl %edi
- popl %esi
- popw %es
- popw %ds
- leave
- ret
-