forked from luck/tmp_suning_uos_patched
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
Pull sparc fixes from David Miller: - Fix symbol version generation for assembler on sparc, from Nagarathnam Muthusamy. - Fix compound page handling in gup_huge_pmd(), from Nitin Gupta. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sparc64: Fix gup_huge_pmd Adding the type of exported symbols sed regex in Makefile.build requires line break between exported symbols Adding asm-prototypes.h for genksyms to generate crc
This commit is contained in:
commit
3b06b1a744
24
arch/sparc/include/asm/asm-prototypes.h
Normal file
24
arch/sparc/include/asm/asm-prototypes.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <asm/xor.h>
|
||||
#include <asm/checksum.h>
|
||||
#include <asm/trap_block.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/ftrace.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/oplib.h>
|
||||
#include <linux/atomic.h>
|
||||
|
||||
void *__memscan_zero(void *, size_t);
|
||||
void *__memscan_generic(void *, int, size_t);
|
||||
void *__bzero(void *, size_t);
|
||||
void VISenter(void); /* Dummy prototype to supress warning */
|
||||
#undef memcpy
|
||||
#undef memset
|
||||
void *memcpy(void *dest, const void *src, size_t n);
|
||||
void *memset(void *s, int c, size_t n);
|
||||
typedef int TItype __attribute__((mode(TI)));
|
||||
TItype __multi3(TItype a, TItype b);
|
|
@ -62,19 +62,23 @@ ENTRY(atomic_fetch_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
|
|||
ENDPROC(atomic_fetch_##op); \
|
||||
EXPORT_SYMBOL(atomic_fetch_##op);
|
||||
|
||||
#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op) ATOMIC_FETCH_OP(op)
|
||||
ATOMIC_OP(add)
|
||||
ATOMIC_OP_RETURN(add)
|
||||
ATOMIC_FETCH_OP(add)
|
||||
|
||||
ATOMIC_OPS(add)
|
||||
ATOMIC_OPS(sub)
|
||||
ATOMIC_OP(sub)
|
||||
ATOMIC_OP_RETURN(sub)
|
||||
ATOMIC_FETCH_OP(sub)
|
||||
|
||||
#undef ATOMIC_OPS
|
||||
#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_FETCH_OP(op)
|
||||
ATOMIC_OP(and)
|
||||
ATOMIC_FETCH_OP(and)
|
||||
|
||||
ATOMIC_OPS(and)
|
||||
ATOMIC_OPS(or)
|
||||
ATOMIC_OPS(xor)
|
||||
ATOMIC_OP(or)
|
||||
ATOMIC_FETCH_OP(or)
|
||||
|
||||
ATOMIC_OP(xor)
|
||||
ATOMIC_FETCH_OP(xor)
|
||||
|
||||
#undef ATOMIC_OPS
|
||||
#undef ATOMIC_FETCH_OP
|
||||
#undef ATOMIC_OP_RETURN
|
||||
#undef ATOMIC_OP
|
||||
|
@ -124,19 +128,23 @@ ENTRY(atomic64_fetch_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
|
|||
ENDPROC(atomic64_fetch_##op); \
|
||||
EXPORT_SYMBOL(atomic64_fetch_##op);
|
||||
|
||||
#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op)
|
||||
ATOMIC64_OP(add)
|
||||
ATOMIC64_OP_RETURN(add)
|
||||
ATOMIC64_FETCH_OP(add)
|
||||
|
||||
ATOMIC64_OPS(add)
|
||||
ATOMIC64_OPS(sub)
|
||||
ATOMIC64_OP(sub)
|
||||
ATOMIC64_OP_RETURN(sub)
|
||||
ATOMIC64_FETCH_OP(sub)
|
||||
|
||||
#undef ATOMIC64_OPS
|
||||
#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op)
|
||||
ATOMIC64_OP(and)
|
||||
ATOMIC64_FETCH_OP(and)
|
||||
|
||||
ATOMIC64_OPS(and)
|
||||
ATOMIC64_OPS(or)
|
||||
ATOMIC64_OPS(xor)
|
||||
ATOMIC64_OP(or)
|
||||
ATOMIC64_FETCH_OP(or)
|
||||
|
||||
ATOMIC64_OP(xor)
|
||||
ATOMIC64_FETCH_OP(xor)
|
||||
|
||||
#undef ATOMIC64_OPS
|
||||
#undef ATOMIC64_FETCH_OP
|
||||
#undef ATOMIC64_OP_RETURN
|
||||
#undef ATOMIC64_OP
|
||||
|
|
|
@ -38,6 +38,7 @@ csum_partial_fix_alignment:
|
|||
|
||||
.align 32
|
||||
.globl csum_partial
|
||||
.type csum_partial,#function
|
||||
EXPORT_SYMBOL(csum_partial)
|
||||
csum_partial: /* %o0=buff, %o1=len, %o2=sum */
|
||||
prefetch [%o0 + 0x000], #n_reads
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
add %o5, %o4, %o4
|
||||
|
||||
.globl FUNC_NAME
|
||||
.type FUNC_NAME,#function
|
||||
EXPORT_SYMBOL(FUNC_NAME)
|
||||
FUNC_NAME: /* %o0=src, %o1=dst, %o2=len, %o3=sum */
|
||||
LOAD(prefetch, %o0 + 0x000, #n_reads)
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
.text
|
||||
.align 32
|
||||
.globl __memscan_zero, __memscan_generic
|
||||
.type __memscan_zero,#function
|
||||
.type __memscan_generic,#function
|
||||
.globl memscan
|
||||
EXPORT_SYMBOL(__memscan_zero)
|
||||
EXPORT_SYMBOL(__memscan_generic)
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
__bzero_begin:
|
||||
|
||||
.globl __bzero
|
||||
.type __bzero,#function
|
||||
.globl memset
|
||||
EXPORT_SYMBOL(__bzero)
|
||||
EXPORT_SYMBOL(memset)
|
||||
|
|
|
@ -78,8 +78,8 @@ static int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
|
|||
return 0;
|
||||
|
||||
refs = 0;
|
||||
head = pmd_page(pmd);
|
||||
page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
|
||||
page = pmd_page(pmd) + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
|
||||
head = compound_head(page);
|
||||
do {
|
||||
VM_BUG_ON(compound_head(page) != head);
|
||||
pages[*nr] = page;
|
||||
|
|
Loading…
Reference in New Issue
Block a user