Skip to content

Commit 3b06b1a

Browse files
committed
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
2 parents 130568d + dbd2667 commit 3b06b1a

File tree

7 files changed

+57
-20
lines changed

7 files changed

+57
-20
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
3+
*/
4+
5+
#include <asm/xor.h>
6+
#include <asm/checksum.h>
7+
#include <asm/trap_block.h>
8+
#include <asm/uaccess.h>
9+
#include <asm/atomic.h>
10+
#include <asm/ftrace.h>
11+
#include <asm/cacheflush.h>
12+
#include <asm/oplib.h>
13+
#include <linux/atomic.h>
14+
15+
void *__memscan_zero(void *, size_t);
16+
void *__memscan_generic(void *, int, size_t);
17+
void *__bzero(void *, size_t);
18+
void VISenter(void); /* Dummy prototype to supress warning */
19+
#undef memcpy
20+
#undef memset
21+
void *memcpy(void *dest, const void *src, size_t n);
22+
void *memset(void *s, int c, size_t n);
23+
typedef int TItype __attribute__((mode(TI)));
24+
TItype __multi3(TItype a, TItype b);

arch/sparc/lib/atomic_64.S

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,23 @@ ENTRY(atomic_fetch_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
6262
ENDPROC(atomic_fetch_##op); \
6363
EXPORT_SYMBOL(atomic_fetch_##op);
6464

65-
#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op) ATOMIC_FETCH_OP(op)
65+
ATOMIC_OP(add)
66+
ATOMIC_OP_RETURN(add)
67+
ATOMIC_FETCH_OP(add)
6668

67-
ATOMIC_OPS(add)
68-
ATOMIC_OPS(sub)
69+
ATOMIC_OP(sub)
70+
ATOMIC_OP_RETURN(sub)
71+
ATOMIC_FETCH_OP(sub)
6972

70-
#undef ATOMIC_OPS
71-
#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_FETCH_OP(op)
73+
ATOMIC_OP(and)
74+
ATOMIC_FETCH_OP(and)
7275

73-
ATOMIC_OPS(and)
74-
ATOMIC_OPS(or)
75-
ATOMIC_OPS(xor)
76+
ATOMIC_OP(or)
77+
ATOMIC_FETCH_OP(or)
78+
79+
ATOMIC_OP(xor)
80+
ATOMIC_FETCH_OP(xor)
7681

77-
#undef ATOMIC_OPS
7882
#undef ATOMIC_FETCH_OP
7983
#undef ATOMIC_OP_RETURN
8084
#undef ATOMIC_OP
@@ -124,19 +128,23 @@ ENTRY(atomic64_fetch_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
124128
ENDPROC(atomic64_fetch_##op); \
125129
EXPORT_SYMBOL(atomic64_fetch_##op);
126130

127-
#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op)
131+
ATOMIC64_OP(add)
132+
ATOMIC64_OP_RETURN(add)
133+
ATOMIC64_FETCH_OP(add)
134+
135+
ATOMIC64_OP(sub)
136+
ATOMIC64_OP_RETURN(sub)
137+
ATOMIC64_FETCH_OP(sub)
128138

129-
ATOMIC64_OPS(add)
130-
ATOMIC64_OPS(sub)
139+
ATOMIC64_OP(and)
140+
ATOMIC64_FETCH_OP(and)
131141

132-
#undef ATOMIC64_OPS
133-
#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op)
142+
ATOMIC64_OP(or)
143+
ATOMIC64_FETCH_OP(or)
134144

135-
ATOMIC64_OPS(and)
136-
ATOMIC64_OPS(or)
137-
ATOMIC64_OPS(xor)
145+
ATOMIC64_OP(xor)
146+
ATOMIC64_FETCH_OP(xor)
138147

139-
#undef ATOMIC64_OPS
140148
#undef ATOMIC64_FETCH_OP
141149
#undef ATOMIC64_OP_RETURN
142150
#undef ATOMIC64_OP

arch/sparc/lib/checksum_64.S

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ csum_partial_fix_alignment:
3838

3939
.align 32
4040
.globl csum_partial
41+
.type csum_partial,#function
4142
EXPORT_SYMBOL(csum_partial)
4243
csum_partial: /* %o0=buff, %o1=len, %o2=sum */
4344
prefetch [%o0 + 0x000], #n_reads

arch/sparc/lib/csum_copy.S

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
add %o5, %o4, %o4
6666

6767
.globl FUNC_NAME
68+
.type FUNC_NAME,#function
6869
EXPORT_SYMBOL(FUNC_NAME)
6970
FUNC_NAME: /* %o0=src, %o1=dst, %o2=len, %o3=sum */
7071
LOAD(prefetch, %o0 + 0x000, #n_reads)

arch/sparc/lib/memscan_64.S

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
.text
1515
.align 32
1616
.globl __memscan_zero, __memscan_generic
17+
.type __memscan_zero,#function
18+
.type __memscan_generic,#function
1719
.globl memscan
1820
EXPORT_SYMBOL(__memscan_zero)
1921
EXPORT_SYMBOL(__memscan_generic)

arch/sparc/lib/memset.S

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
__bzero_begin:
6464

6565
.globl __bzero
66+
.type __bzero,#function
6667
.globl memset
6768
EXPORT_SYMBOL(__bzero)
6869
EXPORT_SYMBOL(memset)

arch/sparc/mm/gup.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ static int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
7878
return 0;
7979

8080
refs = 0;
81-
head = pmd_page(pmd);
82-
page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
81+
page = pmd_page(pmd) + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
82+
head = compound_head(page);
8383
do {
8484
VM_BUG_ON(compound_head(page) != head);
8585
pages[*nr] = page;

0 commit comments

Comments
 (0)