diff options
| -rw-r--r-- | debian/patches/0001-kern-improve-assert.patch | 35 | ||||
| -rw-r--r-- | debian/patches/0002-i386-specialize-copyinmsg-and-copyoutmsg.patch | 147 | ||||
| -rw-r--r-- | debian/patches/0003-linux-fix-compiler-warning.patch | 29 | ||||
| -rw-r--r-- | debian/patches/series | 3 |
4 files changed, 0 insertions, 214 deletions
diff --git a/debian/patches/0001-kern-improve-assert.patch b/debian/patches/0001-kern-improve-assert.patch deleted file mode 100644 index 6ac9d9b..0000000 --- a/debian/patches/0001-kern-improve-assert.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 435c679a45948f31fb6cb5bd8b9b6b7d2d055cc3 Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Fri, 19 Dec 2014 01:49:09 +0100 -Subject: [PATCH gnumach 1/3] kern: improve assert - -Use the ternary operator to implement `assert' like it is done in the -glibc. The glibcs changelog does not mention the rationale behind -this change, but it does improve our IPC performance. - -* kern/assert.h (assert): Define macro using the ternary operator. ---- - kern/assert.h | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/kern/assert.h b/kern/assert.h -index b074fbb..bd2a8be 100644 ---- a/kern/assert.h -+++ b/kern/assert.h -@@ -39,10 +39,9 @@ - extern void Assert(const char *exp, const char *filename, int line) __attribute__ ((noreturn)); - - #define assert(ex) \ --MACRO_BEGIN \ -- if (!(ex)) \ -- Assert(#ex, __FILE__, __LINE__); \ --MACRO_END -+ ((ex) \ -+ ? (void) (0) \ -+ : Assert (#ex, __FILE__, __LINE__)) - - #define assert_static(x) assert(x) - --- -2.1.3 - diff --git a/debian/patches/0002-i386-specialize-copyinmsg-and-copyoutmsg.patch b/debian/patches/0002-i386-specialize-copyinmsg-and-copyoutmsg.patch deleted file mode 100644 index 7603910..0000000 --- a/debian/patches/0002-i386-specialize-copyinmsg-and-copyoutmsg.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 5e1d8cea366518faffc10bce12e073634b019469 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 2/3] 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. -(copyout): Do not needlessly copy length to %eax first. -(copyoutmsg): New function. ---- - i386/i386/locore.S | 78 +++++++++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 71 insertions(+), 7 deletions(-) - -diff --git a/i386/i386/locore.S b/i386/i386/locore.S -index 15715f6..ab17879 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,43 @@ 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(copyin_fail) -+ rep -+ movsl /* move longwords */ -+ xorl %eax,%eax /* return 0 for success */ -+ -+ mov %ss,%di /* restore DS to kernel segment */ -+ mov %di,%ds -+ -+ popl %edi /* restore registers */ -+ popl %esi -+ ret /* 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 */ - -@@ -1297,14 +1326,13 @@ Entry(copyoutmsg) - jbe copyout_retry /* Use slow version on i386 */ - #endif /* !defined(MACH_HYP) && !PAE */ - -- movl %edx,%eax /* use count */ - /*cld*/ /* count up: always this way in GCC code */ -- movl %eax,%ecx /* move by longwords first */ -+ movl %edx,%ecx /* move by longwords first */ - shrl $2,%ecx - RECOVER(copyout_fail) - rep - movsl -- movl %eax,%ecx /* now move remaining bytes */ -+ movl %edx,%ecx /* now move remaining bytes */ - andl $3,%ecx - RECOVER(copyout_fail) - rep -@@ -1323,6 +1351,42 @@ 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(copyout_fail) -+ rep -+ movsl -+ xorl %eax,%eax /* return 0 for success */ -+ -+ mov %ss,%di /* restore ES to kernel segment */ -+ mov %di,%es -+ -+ popl %edi /* restore registers */ -+ popl %esi -+ ret /* and return */ -+ - #if !defined(MACH_HYP) && !PAE - /* - * Check whether user address space is writable --- -2.1.3 - diff --git a/debian/patches/0003-linux-fix-compiler-warning.patch b/debian/patches/0003-linux-fix-compiler-warning.patch deleted file mode 100644 index 644b172..0000000 --- a/debian/patches/0003-linux-fix-compiler-warning.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 1febf984272cadf96e9e1c22d60fbcb5527e52c0 Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Fri, 19 Dec 2014 02:02:44 +0100 -Subject: [PATCH gnumach 3/3] linux: fix compiler warning - -If the loop above completes at least one iteration, `i' will be larger -than zero. - -* linux/dev/glue/block.c (rdwr_full): Add assertion to appease the -compiler. ---- - linux/dev/glue/block.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux/dev/glue/block.c b/linux/dev/glue/block.c -index 79a3646..da4ef38 100644 ---- a/linux/dev/glue/block.c -+++ b/linux/dev/glue/block.c -@@ -624,6 +624,7 @@ rdwr_full (int rw, kdev_t dev, loff_t *off, char **buf, int *resid, int bshift) - } - if (! err) - { -+ assert (i > 0); - ll_rw_block (rw, i, bhp, 0); - wait_on_buffer (bhp[i - 1]); - } --- -2.1.3 - diff --git a/debian/patches/series b/debian/patches/series index 8b3baf7..52021c2 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -6,6 +6,3 @@ Add-some-padding-to-make-objects-fit-a-single-cache-.patch vm_cache_policy.patch -0001-kern-improve-assert.patch -0002-i386-specialize-copyinmsg-and-copyoutmsg.patch -0003-linux-fix-compiler-warning.patch |
