summaryrefslogtreecommitdiff
path: root/debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-02-21 01:13:28 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-02-21 01:13:28 +0100
commit6b4c9f572b8d018eedcf276040cdfa8f8a15e2b5 (patch)
tree8e2e9f58f95a5dfec062e79f6b85b77a7fc6198d /debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch
parent921df2f336840cff8e25d11f85b44a6b274b9902 (diff)
drop old patch series
Diffstat (limited to 'debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch')
-rw-r--r--debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch139
1 files changed, 0 insertions, 139 deletions
diff --git a/debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch b/debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch
deleted file mode 100644
index 1139e74..0000000
--- a/debian/patches/0004-i386-specialize-copyinmsg-and-copyoutmsg.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From d3f20b06cee70fd5afe8aaff31614756a57e6bb6 Mon Sep 17 00:00:00 2001
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Date: Fri, 19 Dec 2014 01:51:58 +0100
-Subject: [PATCH gnumach 4/4] i386: specialize `copyinmsg' and `copyoutmsg'
-
-Previously, `copyinmsg' was the same function as `copyin'. The former
-is for messages, and the size of messages is a multiple of four.
-Likewise for `copyoutmsg'.
-
-Provide a specialized version of both functions. This shaves off a
-couple of instructions and improves our IPC performance.
-
-* i386/i386/locore.S (copyinmsg): New function.
-(copyoutmsg): New function.
----
- i386/i386/locore.S | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 79 insertions(+), 4 deletions(-)
-
-diff --git a/i386/i386/locore.S b/i386/i386/locore.S
-index 2e04bb8..cfda86f 100644
---- a/i386/i386/locore.S
-+++ b/i386/i386/locore.S
-@@ -1232,13 +1232,12 @@ ENTRY(discover_x86_cpu_type)
- */
-
- /*
-- * Copy from user address space.
-+ * Copy from user address space - generic version.
- * arg0: user address
- * arg1: kernel address
- * arg2: byte count
- */
- ENTRY(copyin)
--Entry(copyinmsg)
- pushl %esi
- pushl %edi /* save registers */
-
-@@ -1275,13 +1274,48 @@ copyin_fail:
- jmp copyin_ret /* pop frame and return */
-
- /*
-- * Copy to user address space.
-+ * Copy from user address space - version for copying messages.
-+ * arg0: user address
-+ * arg1: kernel address
-+ * arg2: byte count - must be a multiple of four
-+ */
-+ENTRY(copyinmsg)
-+ pushl %esi
-+ pushl %edi /* save registers */
-+
-+ movl 8+S_ARG0,%esi /* get user start address */
-+ movl 8+S_ARG1,%edi /* get kernel destination address */
-+ movl 8+S_ARG2,%ecx /* get count */
-+
-+ movl $USER_DS,%eax /* use user data segment for accesses */
-+ mov %ax,%ds
-+
-+ /*cld*/ /* count up: default mode in all GCC code */
-+ shrl $2,%ecx
-+ RECOVER(copyinmsg_fail)
-+ rep
-+ movsl /* move longwords */
-+ xorl %eax,%eax /* return 0 for success */
-+
-+copyinmsg_ret:
-+ mov %ss,%di /* restore DS to kernel segment */
-+ mov %di,%ds
-+
-+ popl %edi /* restore registers */
-+ popl %esi
-+ ret /* and return */
-+
-+copyinmsg_fail:
-+ movl $1,%eax /* return 1 for failure */
-+ jmp copyinmsg_ret /* pop frame and return */
-+
-+/*
-+ * Copy to user address space - generic version.
- * arg0: kernel address
- * arg1: user address
- * arg2: byte count
- */
- ENTRY(copyout)
--Entry(copyoutmsg)
- pushl %esi
- pushl %edi /* save registers */
-
-@@ -1322,6 +1356,47 @@ copyout_fail:
- movl $1,%eax /* return 1 for failure */
- jmp copyout_ret /* pop frame and return */
-
-+/*
-+ * Copy to user address space - version for copying messages.
-+ * arg0: kernel address
-+ * arg1: user address
-+ * arg2: byte count - must be a multiple of four
-+ */
-+ENTRY(copyoutmsg)
-+ pushl %esi
-+ pushl %edi /* save registers */
-+
-+ movl 8+S_ARG0,%esi /* get kernel start address */
-+ movl 8+S_ARG1,%edi /* get user start address */
-+ movl 8+S_ARG2,%ecx /* get count */
-+
-+ movl $USER_DS,%eax /* use user data segment for accesses */
-+ mov %ax,%es
-+
-+#if !defined(MACH_HYP) && !PAE
-+ movl 8+S_ARG2,%edx /* copyout_retry expects count here */
-+ cmpl $3,machine_slot+SUB_TYPE_CPU_TYPE
-+ jbe copyout_retry /* Use slow version on i386 */
-+#endif /* !defined(MACH_HYP) && !PAE */
-+
-+ shrl $2,%ecx /* move by longwords */
-+ RECOVER(copyoutmsg_fail)
-+ rep
-+ movsl
-+ xorl %eax,%eax /* return 0 for success */
-+
-+copyoutmsg_ret:
-+ mov %ss,%di /* restore ES to kernel segment */
-+ mov %di,%es
-+
-+ popl %edi /* restore registers */
-+ popl %esi
-+ ret /* and return */
-+
-+copyoutmsg_fail:
-+ movl $1,%eax /* return 1 for failure */
-+ jmp copyoutmsg_ret /* pop frame and return */
-+
- #if !defined(MACH_HYP) && !PAE
- /*
- * Check whether user address space is writable
---
-2.1.4
-