Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b06b1a7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents 130568d5 dbd2667a
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
/*
 * 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);
+26 −18
Original line number Diff line number Diff line
@@ -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_OP(sub)
ATOMIC64_OP_RETURN(sub)
ATOMIC64_FETCH_OP(sub)

ATOMIC64_OPS(add)
ATOMIC64_OPS(sub)
ATOMIC64_OP(and)
ATOMIC64_FETCH_OP(and)

#undef ATOMIC64_OPS
#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op)
ATOMIC64_OP(or)
ATOMIC64_FETCH_OP(or)

ATOMIC64_OPS(and)
ATOMIC64_OPS(or)
ATOMIC64_OPS(xor)
ATOMIC64_OP(xor)
ATOMIC64_FETCH_OP(xor)

#undef ATOMIC64_OPS
#undef ATOMIC64_FETCH_OP
#undef ATOMIC64_OP_RETURN
#undef ATOMIC64_OP
+1 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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)
+2 −0
Original line number Diff line number Diff line
@@ -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)
Loading