Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

uml/x86: use x86 load_unaligned_zeropad()

allows, among other things, to drop !DCACHE_WORD_ACCESS mess in
x86 csum-partial_64.c

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 6692531d 0c9dceb9

+1 -27
-1
arch/um/include/asm/Kbuild
··· 23 23 generic-y += switch_to.h 24 24 generic-y += topology.h 25 25 generic-y += trace_clock.h 26 - generic-y += word-at-a-time.h 27 26 generic-y += kprobes.h 28 27 generic-y += mm_hooks.h 29 28 generic-y += vga.h
-26
arch/x86/lib/csum-partial_64.c
··· 93 93 buff += 8; 94 94 } 95 95 if (len & 7) { 96 - #ifdef CONFIG_DCACHE_WORD_ACCESS 97 96 unsigned int shift = (8 - (len & 7)) * 8; 98 97 unsigned long trail; 99 98 ··· 102 103 "adcq $0,%[res]" 103 104 : [res] "+r" (temp64) 104 105 : [trail] "r" (trail)); 105 - #else 106 - if (len & 4) { 107 - asm("addq %[val],%[res]\n\t" 108 - "adcq $0,%[res]" 109 - : [res] "+r" (temp64) 110 - : [val] "r" ((u64)*(u32 *)buff) 111 - : "memory"); 112 - buff += 4; 113 - } 114 - if (len & 2) { 115 - asm("addq %[val],%[res]\n\t" 116 - "adcq $0,%[res]" 117 - : [res] "+r" (temp64) 118 - : [val] "r" ((u64)*(u16 *)buff) 119 - : "memory"); 120 - buff += 2; 121 - } 122 - if (len & 1) { 123 - asm("addq %[val],%[res]\n\t" 124 - "adcq $0,%[res]" 125 - : [res] "+r" (temp64) 126 - : [val] "r" ((u64)*(u8 *)buff) 127 - : "memory"); 128 - } 129 - #endif 130 106 } 131 107 result = add32_with_carry(temp64 >> 32, temp64 & 0xffffffff); 132 108 if (unlikely(odd)) {
+1
arch/x86/um/Kconfig
··· 8 8 9 9 config UML_X86 10 10 def_bool y 11 + select DCACHE_WORD_ACCESS 11 12 12 13 config 64BIT 13 14 bool "64-bit kernel" if "$(SUBARCH)" = "x86"