Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86
* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86: (78 commits) x86: fix RTC lockdep warning: potential hardirq recursion x86: cpa, micro-optimization x86: cpa, clean up code flow x86: cpa, eliminate CPA_ enum x86: cpa, cleanups x86: implement gbpages support in change_page_attr() x86: support gbpages in pagetable dump x86: add gbpages support to lookup_address x86: add pgtable accessor functions for gbpages x86: add PUD_PAGE_SIZE x86: add feature macros for the gbpages cpuid bit x86: switch direct mapping setup over to set_pte x86: fix page-present check in cpa_flush_range x86: remove cpa warning x86: remove now unused clear_kernel_mapping x86: switch pci-gart over to using set_memory_np() instead of clear_kernel_mapping() x86: cpa selftest, skip non present entries x86: CPA fix pagetable split x86: rename LARGE_PAGE_SIZE to PMD_PAGE_SIZE x86: cpa, fix lookup_address ...
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/asm.h>
|
||||
#include <asm/i387.h>
|
||||
|
||||
|
||||
@@ -50,10 +51,7 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
|
||||
"3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 4\n"
|
||||
" .long 1b, 3b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(1b,3b)
|
||||
: : "r" (from) );
|
||||
|
||||
|
||||
@@ -81,10 +79,7 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
|
||||
"3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 4\n"
|
||||
" .long 1b, 3b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(1b,3b)
|
||||
: : "r" (from), "r" (to) : "memory");
|
||||
from+=64;
|
||||
to+=64;
|
||||
@@ -181,10 +176,7 @@ static void fast_copy_page(void *to, void *from)
|
||||
"3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 4\n"
|
||||
" .long 1b, 3b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(1b,3b)
|
||||
: : "r" (from) );
|
||||
|
||||
for(i=0; i<(4096-320)/64; i++)
|
||||
@@ -211,10 +203,7 @@ static void fast_copy_page(void *to, void *from)
|
||||
"3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 4\n"
|
||||
" .long 1b, 3b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(1b,3b)
|
||||
: : "r" (from), "r" (to) : "memory");
|
||||
from+=64;
|
||||
to+=64;
|
||||
@@ -311,10 +300,7 @@ static void fast_copy_page(void *to, void *from)
|
||||
"3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 4\n"
|
||||
" .long 1b, 3b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(1b,3b)
|
||||
: : "r" (from) );
|
||||
|
||||
for(i=0; i<4096/64; i++)
|
||||
@@ -341,10 +327,7 @@ static void fast_copy_page(void *to, void *from)
|
||||
"3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 4\n"
|
||||
" .long 1b, 3b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(1b,3b)
|
||||
: : "r" (from), "r" (to) : "memory");
|
||||
from+=64;
|
||||
to+=64;
|
||||
|
@@ -48,10 +48,7 @@ do { \
|
||||
"3: movl %5,%0\n" \
|
||||
" jmp 2b\n" \
|
||||
".previous\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
" .align 4\n" \
|
||||
" .long 0b,3b\n" \
|
||||
".previous" \
|
||||
_ASM_EXTABLE(0b,3b) \
|
||||
: "=d"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \
|
||||
"=&D" (__d2) \
|
||||
: "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \
|
||||
@@ -132,11 +129,8 @@ do { \
|
||||
"3: lea 0(%2,%0,4),%0\n" \
|
||||
" jmp 2b\n" \
|
||||
".previous\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
" .align 4\n" \
|
||||
" .long 0b,3b\n" \
|
||||
" .long 1b,2b\n" \
|
||||
".previous" \
|
||||
_ASM_EXTABLE(0b,3b) \
|
||||
_ASM_EXTABLE(1b,2b) \
|
||||
: "=&c"(size), "=&D" (__d0) \
|
||||
: "r"(size & 3), "0"(size / 4), "1"(addr), "a"(0)); \
|
||||
} while (0)
|
||||
|
@@ -31,10 +31,7 @@ do { \
|
||||
"3: movq %5,%0\n" \
|
||||
" jmp 2b\n" \
|
||||
".previous\n" \
|
||||
".section __ex_table,\"a\"\n" \
|
||||
" .align 8\n" \
|
||||
" .quad 0b,3b\n" \
|
||||
".previous" \
|
||||
_ASM_EXTABLE(0b,3b) \
|
||||
: "=r"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \
|
||||
"=&D" (__d2) \
|
||||
: "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \
|
||||
@@ -87,11 +84,8 @@ unsigned long __clear_user(void __user *addr, unsigned long size)
|
||||
"3: lea 0(%[size1],%[size8],8),%[size8]\n"
|
||||
" jmp 2b\n"
|
||||
".previous\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
" .align 8\n"
|
||||
" .quad 0b,3b\n"
|
||||
" .quad 1b,2b\n"
|
||||
".previous"
|
||||
_ASM_EXTABLE(0b,3b)
|
||||
_ASM_EXTABLE(1b,2b)
|
||||
: [size8] "=c"(size), [dst] "=&D" (__d0)
|
||||
: [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
|
||||
[zero] "r" (0UL), [eight] "r" (8UL));
|
||||
|
Reference in New Issue
Block a user