Skip to content

Commit 0be2886

Browse files
committed
Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
Pull ARM updates from Russell King: - An improvement from Ard Biesheuvel, who noted that the identity map setup was taking a long time due to flush_cache_louis(). - Update a comment about dma_ops from Wolfram Sang. - Remove use of "-p" with ld, where this flag has been a no-op since 2004. - Remove the printing of the virtual memory layout, which is no longer useful since we hide pointers. - Correct SCU help text. - Remove legacy TWD registration method. - Add pgprot_device() implementation for mapping PCI sysfs resource files. - Initialise PFN limits earlier for kmemleak. - Fix argument count to match macro definition (affects clang builds) - Use unified assembler language almost everywhere for clang, and other clang improvements (from Stefan Agner, Nathan Chancellor). - Support security extension for noMMU and other noMMU cleanups (from Vladimir Murzin). - Remove unnecessary SMP bringup code (which was incorrectly copy'n' pasted from the ARM platform implementations) and remove it from the arch code to discourge further copys of it appearing. - Add Cortex A9 erratum preventing kexec working on some SoCs. - AMBA bus identification updates from Mike Leach. - More use of raw spinlocks to avoid -RT kernel issues (from Yang Shi and Sebastian Andrzej Siewior). - MCPM hyp/svc mode mismatch fixes from Marek Szyprowski. * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (32 commits) ARM: 8849/1: NOMMU: Fix encodings for PMSAv8's PRBAR4/PRLAR4 ARM: 8848/1: virt: Align GIC version check with arm64 counterpart ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used ARM: 8845/1: use unified assembler in c files ARM: 8844/1: use unified assembler in assembly files ARM: 8843/1: use unified assembler in headers ARM: 8841/1: use unified assembler in macros ARM: 8840/1: use a raw_spinlock_t in unwind ARM: 8839/1: kprobe: make patch_lock a raw_spinlock_t ARM: 8837/1: coresight: etmv4: Update ID register table to add UCI support ARM: 8836/1: drivers: amba: Update component matching to use the CoreSight UCI values. ARM: 8838/1: drivers: amba: Updates to component identification for driver matching. ARM: 8833/1: Ensure that NEON code always compiles with Clang ARM: avoid Cortex-A9 livelock on tight dmb loops ARM: smp: remove arch-provided "pen_release" ARM: actions: remove boot_lock and pen_release ARM: oxnas: remove CPU hotplug implementation ARM: qcom: remove unnecessary boot_lock ARM: 8832/1: NOMMU: Limit visibility for CONFIG_FLASH_{MEM_BASE,SIZE} ARM: 8831/1: NOMMU: pmsa-v8: remove unneeded semicolon ...
2 parents e8a71a3 + 4c2741a commit 0be2886

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+440
-609
lines changed

Documentation/arm/kernel_mode_neon.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ TL;DR summary
66
* Use only NEON instructions, or VFP instructions that don't rely on support
77
code
88
* Isolate your NEON code in a separate compilation unit, and compile it with
9-
'-mfpu=neon -mfloat-abi=softfp'
9+
'-march=armv7-a -mfpu=neon -mfloat-abi=softfp'
1010
* Put kernel_neon_begin() and kernel_neon_end() calls around the calls into your
1111
NEON code
1212
* Don't sleep in your NEON code, and be aware that it will be executed with
@@ -87,7 +87,7 @@ instructions appearing in unexpected places if no special care is taken.
8787
Therefore, the recommended and only supported way of using NEON/VFP in the
8888
kernel is by adhering to the following rules:
8989
* isolate the NEON code in a separate compilation unit and compile it with
90-
'-mfpu=neon -mfloat-abi=softfp';
90+
'-march=armv7-a -mfpu=neon -mfloat-abi=softfp';
9191
* issue the calls to kernel_neon_begin(), kernel_neon_end() as well as the calls
9292
into the unit containing the NEON code from a compilation unit which is *not*
9393
built with the GCC flag '-mfpu=neon' set.

arch/arm/Kconfig

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,7 +1310,7 @@ config SCHED_SMT
13101310
config HAVE_ARM_SCU
13111311
bool
13121312
help
1313-
This option enables support for the ARM system coherency unit
1313+
This option enables support for the ARM snoop control unit
13141314

13151315
config HAVE_ARM_ARCH_TIMER
13161316
bool "Architected timer support"
@@ -1322,7 +1322,6 @@ config HAVE_ARM_ARCH_TIMER
13221322

13231323
config HAVE_ARM_TWD
13241324
bool
1325-
select TIMER_OF if OF
13261325
help
13271326
This options enables support for the ARM timer and watchdog unit
13281327

arch/arm/Kconfig-nommu

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ config DRAM_SIZE
2020

2121
config FLASH_MEM_BASE
2222
hex 'FLASH Base Address' if SET_MEM_PARAM
23+
depends on CPU_ARM740T || CPU_ARM946E || CPU_ARM940T
2324
default 0x00400000
2425

2526
config FLASH_SIZE
2627
hex 'FLASH Size' if SET_MEM_PARAM
28+
depends on CPU_ARM740T || CPU_ARM946E || CPU_ARM940T
2729
default 0x00400000
2830

2931
config PROCESSOR_ID

arch/arm/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#
1111
# Copyright (C) 1995-2001 by Russell King
1212

13-
LDFLAGS_vmlinux :=-p --no-undefined -X --pic-veneer
13+
LDFLAGS_vmlinux := --no-undefined -X --pic-veneer
1414
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
1515
LDFLAGS_vmlinux += --be8
1616
KBUILD_LDFLAGS_MODULE += --be8

arch/arm/boot/bootp/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
GCOV_PROFILE := n
1010

11-
LDFLAGS_bootp :=-p --no-undefined -X \
11+
LDFLAGS_bootp := --no-undefined -X \
1212
--defsym initrd_phys=$(INITRD_PHYS) \
1313
--defsym params_phys=$(PARAMS_PHYS) -T
1414
AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\"

arch/arm/boot/bootp/init.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ _start: add lr, pc, #-0x8 @ lr = current load addr
4444
*/
4545
movne r10, #0 @ terminator
4646
movne r4, #2 @ Size of this entry (2 words)
47-
stmneia r9, {r4, r5, r10} @ Size, ATAG_CORE, terminator
47+
stmiane r9, {r4, r5, r10} @ Size, ATAG_CORE, terminator
4848

4949
/*
5050
* find the end of the tag list, and then add an INITRD tag on the end.

arch/arm/boot/compressed/Makefile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,6 @@ endif
132132
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
133133
LDFLAGS_vmlinux += --be8
134134
endif
135-
# ?
136-
LDFLAGS_vmlinux += -p
137135
# Report unresolved symbol references
138136
LDFLAGS_vmlinux += --no-undefined
139137
# Delete all temporary local symbols

arch/arm/boot/compressed/ll_char_wr.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Lrow4bpplp:
7575
tst r1, #7 @ avoid using r7 directly after
7676
str r7, [r0, -r5]!
7777
subne r1, r1, #1
78-
ldrneb r7, [r6, r1]
78+
ldrbne r7, [r6, r1]
7979
bne Lrow4bpplp
8080
ldmfd sp!, {r4 - r7, pc}
8181

@@ -103,7 +103,7 @@ Lrow8bpplp:
103103
sub r0, r0, r5 @ avoid ip
104104
stmia r0, {r4, ip}
105105
subne r1, r1, #1
106-
ldrneb r7, [r6, r1]
106+
ldrbne r7, [r6, r1]
107107
bne Lrow8bpplp
108108
ldmfd sp!, {r4 - r7, pc}
109109

arch/arm/common/mcpm_entry.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ static int __init nocache_trampoline(unsigned long _arg)
381381
unsigned int cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
382382
phys_reset_t phys_reset;
383383

384-
mcpm_set_entry_vector(cpu, cluster, cpu_resume);
384+
mcpm_set_entry_vector(cpu, cluster, cpu_resume_no_hyp);
385385
setup_mm_for_reboot();
386386

387387
__mcpm_cpu_going_down(cpu, cluster);

arch/arm/include/asm/assembler.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,9 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
376376
.macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER()
377377
9999:
378378
.if \inc == 1
379-
\instr\cond\()b\()\t\().w \reg, [\ptr, #\off]
379+
\instr\()b\t\cond\().w \reg, [\ptr, #\off]
380380
.elseif \inc == 4
381-
\instr\cond\()\t\().w \reg, [\ptr, #\off]
381+
\instr\t\cond\().w \reg, [\ptr, #\off]
382382
.else
383383
.error "Unsupported inc macro argument"
384384
.endif
@@ -417,9 +417,9 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
417417
.rept \rept
418418
9999:
419419
.if \inc == 1
420-
\instr\cond\()b\()\t \reg, [\ptr], #\inc
420+
\instr\()b\t\cond \reg, [\ptr], #\inc
421421
.elseif \inc == 4
422-
\instr\cond\()\t \reg, [\ptr], #\inc
422+
\instr\t\cond \reg, [\ptr], #\inc
423423
.else
424424
.error "Unsupported inc macro argument"
425425
.endif
@@ -460,7 +460,7 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
460460
.macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req
461461
#ifndef CONFIG_CPU_USE_DOMAINS
462462
adds \tmp, \addr, #\size - 1
463-
sbcccs \tmp, \tmp, \limit
463+
sbcscc \tmp, \tmp, \limit
464464
bcs \bad
465465
#ifdef CONFIG_CPU_SPECTRE
466466
movcs \addr, #0
@@ -474,7 +474,7 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
474474
sub \tmp, \limit, #1
475475
subs \tmp, \tmp, \addr @ tmp = limit - 1 - addr
476476
addhs \tmp, \tmp, #1 @ if (tmp >= 0) {
477-
subhss \tmp, \tmp, \size @ tmp = limit - (addr + size) }
477+
subshs \tmp, \tmp, \size @ tmp = limit - (addr + size) }
478478
movlo \addr, #0 @ if (tmp < 0) addr = NULL
479479
csdb
480480
#endif

arch/arm/include/asm/barrier.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#define sev() __asm__ __volatile__ ("sev" : : : "memory")
1212
#define wfe() __asm__ __volatile__ ("wfe" : : : "memory")
1313
#define wfi() __asm__ __volatile__ ("wfi" : : : "memory")
14+
#else
15+
#define wfe() do { } while (0)
1416
#endif
1517

1618
#if __LINUX_ARM_ARCH__ >= 7

arch/arm/include/asm/hardware/entry-macro-iomd.S

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,25 @@
1616
ldr \tmp, =irq_prio_h
1717
teq \irqstat, #0
1818
#ifdef IOMD_BASE
19-
ldreqb \irqstat, [\base, #IOMD_DMAREQ] @ get dma
19+
ldrbeq \irqstat, [\base, #IOMD_DMAREQ] @ get dma
2020
addeq \tmp, \tmp, #256 @ irq_prio_h table size
2121
teqeq \irqstat, #0
2222
bne 2406f
2323
#endif
24-
ldreqb \irqstat, [\base, #IOMD_IRQREQA] @ get low priority
24+
ldrbeq \irqstat, [\base, #IOMD_IRQREQA] @ get low priority
2525
addeq \tmp, \tmp, #256 @ irq_prio_d table size
2626
teqeq \irqstat, #0
2727
#ifdef IOMD_IRQREQC
28-
ldreqb \irqstat, [\base, #IOMD_IRQREQC]
28+
ldrbeq \irqstat, [\base, #IOMD_IRQREQC]
2929
addeq \tmp, \tmp, #256 @ irq_prio_l table size
3030
teqeq \irqstat, #0
3131
#endif
3232
#ifdef IOMD_IRQREQD
33-
ldreqb \irqstat, [\base, #IOMD_IRQREQD]
33+
ldrbeq \irqstat, [\base, #IOMD_IRQREQD]
3434
addeq \tmp, \tmp, #256 @ irq_prio_lc table size
3535
teqeq \irqstat, #0
3636
#endif
37-
2406: ldrneb \irqnr, [\tmp, \irqstat] @ get IRQ number
37+
2406: ldrbne \irqnr, [\tmp, \irqstat] @ get IRQ number
3838
.endm
3939

4040
/*

arch/arm/include/asm/pgtable.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ extern pgprot_t pgprot_s2_device;
125125
#define pgprot_stronglyordered(prot) \
126126
__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED)
127127

128+
#define pgprot_device(prot) \
129+
__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_DEV_SHARED | L_PTE_SHARED | L_PTE_DIRTY | L_PTE_XN)
130+
128131
#ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE
129132
#define pgprot_dmacoherent(prot) \
130133
__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE | L_PTE_XN)

arch/arm/include/asm/processor.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,11 @@ extern void release_thread(struct task_struct *);
8989
unsigned long get_wchan(struct task_struct *p);
9090

9191
#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
92-
#define cpu_relax() smp_mb()
92+
#define cpu_relax() \
93+
do { \
94+
smp_mb(); \
95+
__asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"); \
96+
} while (0)
9397
#else
9498
#define cpu_relax() barrier()
9599
#endif

arch/arm/include/asm/smp.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ struct secondary_data {
6767
void *stack;
6868
};
6969
extern struct secondary_data secondary_data;
70-
extern volatile int pen_release;
7170
extern void secondary_startup(void);
7271
extern void secondary_startup_arm(void);
7372

arch/arm/include/asm/smp_twd.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,4 @@
1919
#define TWD_TIMER_CONTROL_PERIODIC (1 << 1)
2020
#define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2)
2121

22-
#include <linux/ioport.h>
23-
24-
struct twd_local_timer {
25-
struct resource res[2];
26-
};
27-
28-
#define DEFINE_TWD_LOCAL_TIMER(name,base,irq) \
29-
struct twd_local_timer name __initdata = { \
30-
.res = { \
31-
DEFINE_RES_MEM(base, 0x10), \
32-
DEFINE_RES_IRQ(irq), \
33-
}, \
34-
};
35-
36-
int twd_local_timer_register(struct twd_local_timer *);
37-
3822
#endif

arch/arm/include/asm/spinlock.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,12 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
210210

211211
prefetchw(&rw->lock);
212212
__asm__ __volatile__(
213+
" .syntax unified\n"
213214
"1: ldrex %0, [%2]\n"
214215
" adds %0, %0, #1\n"
215216
" strexpl %1, %0, [%2]\n"
216217
WFE("mi")
217-
" rsbpls %0, %1, #0\n"
218+
" rsbspl %0, %1, #0\n"
218219
" bmi 1b"
219220
: "=&r" (tmp), "=&r" (tmp2)
220221
: "r" (&rw->lock)

arch/arm/include/asm/suspend.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ struct sleep_save_sp {
1010
};
1111

1212
extern void cpu_resume(void);
13+
extern void cpu_resume_no_hyp(void);
1314
extern void cpu_resume_arm(void);
1415
extern int cpu_suspend(unsigned long, int (*)(unsigned long));
1516

arch/arm/include/asm/uaccess.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ static inline void set_fs(mm_segment_t fs)
8585
#define __range_ok(addr, size) ({ \
8686
unsigned long flag, roksum; \
8787
__chk_user_ptr(addr); \
88-
__asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \
88+
__asm__(".syntax unified\n" \
89+
"adds %1, %2, %3; sbcscc %1, %1, %0; movcc %0, #0" \
8990
: "=&r" (flag), "=&r" (roksum) \
9091
: "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \
9192
: "cc"); \

arch/arm/include/asm/v7m.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
* (0 -> msp; 1 -> psp). Bits [1:0] are fixed to 0b01.
5050
*/
5151
#define EXC_RET_STACK_MASK 0x00000004
52-
#define EXC_RET_THREADMODE_PROCESSSTACK 0xfffffffd
52+
#define EXC_RET_THREADMODE_PROCESSSTACK (3 << 2)
5353

5454
/* Cache related definitions */
5555

arch/arm/include/asm/vfpmacros.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@
2929
ldr \tmp, =elf_hwcap @ may not have MVFR regs
3030
ldr \tmp, [\tmp, #0]
3131
tst \tmp, #HWCAP_VFPD32
32-
ldcnel p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
32+
ldclne p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
3333
addeq \base, \base, #32*4 @ step over unused register space
3434
#else
3535
VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0
3636
and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field
3737
cmp \tmp, #2 @ 32 x 64bit registers?
38-
ldceql p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
38+
ldcleq p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
3939
addne \base, \base, #32*4 @ step over unused register space
4040
#endif
4141
#endif
@@ -53,13 +53,13 @@
5353
ldr \tmp, =elf_hwcap @ may not have MVFR regs
5454
ldr \tmp, [\tmp, #0]
5555
tst \tmp, #HWCAP_VFPD32
56-
stcnel p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
56+
stclne p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
5757
addeq \base, \base, #32*4 @ step over unused register space
5858
#else
5959
VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0
6060
and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field
6161
cmp \tmp, #2 @ 32 x 64bit registers?
62-
stceql p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
62+
stcleq p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
6363
addne \base, \base, #32*4 @ step over unused register space
6464
#endif
6565
#endif

arch/arm/include/debug/tegra.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@
173173

174174
.macro senduart, rd, rx
175175
cmp \rx, #0
176-
strneb \rd, [\rx, #UART_TX << UART_SHIFT]
176+
strbne \rd, [\rx, #UART_TX << UART_SHIFT]
177177
1001:
178178
.endm
179179

arch/arm/kernel/debug.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ hexbuf_rel: .long hexbuf_addr - .
8686
ENTRY(printascii)
8787
addruart_current r3, r1, r2
8888
1: teq r0, #0
89-
ldrneb r1, [r0], #1
89+
ldrbne r1, [r0], #1
9090
teqne r1, #0
9191
reteq lr
9292
2: teq r1, #'\n'

arch/arm/kernel/entry-armv.S

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ call_fpe:
636636
@ Test if we need to give access to iWMMXt coprocessors
637637
ldr r5, [r10, #TI_FLAGS]
638638
rsbs r7, r8, #(1 << 8) @ CP 0 or 1 only
639-
movcss r7, r5, lsr #(TIF_USING_IWMMXT + 1)
639+
movscs r7, r5, lsr #(TIF_USING_IWMMXT + 1)
640640
bcs iwmmxt_task_enable
641641
#endif
642642
ARM( add pc, pc, r8, lsr #6 )
@@ -872,7 +872,7 @@ __kuser_cmpxchg64: @ 0xffff0f60
872872
smp_dmb arm
873873
1: ldrexd r0, r1, [r2] @ load current val
874874
eors r3, r0, r4 @ compare with oldval (1)
875-
eoreqs r3, r1, r5 @ compare with oldval (2)
875+
eorseq r3, r1, r5 @ compare with oldval (2)
876876
strexdeq r3, r6, r7, [r2] @ store newval if eq
877877
teqeq r3, #1 @ success?
878878
beq 1b @ if no then retry
@@ -896,8 +896,8 @@ __kuser_cmpxchg64: @ 0xffff0f60
896896
ldmia r1, {r6, lr} @ load new val
897897
1: ldmia r2, {r0, r1} @ load current val
898898
eors r3, r0, r4 @ compare with oldval (1)
899-
eoreqs r3, r1, r5 @ compare with oldval (2)
900-
2: stmeqia r2, {r6, lr} @ store newval if eq
899+
eorseq r3, r1, r5 @ compare with oldval (2)
900+
2: stmiaeq r2, {r6, lr} @ store newval if eq
901901
rsbs r0, r3, #0 @ set return val and C flag
902902
ldmfd sp!, {r4, r5, r6, pc}
903903

@@ -911,7 +911,7 @@ kuser_cmpxchg64_fixup:
911911
mov r7, #0xffff0fff
912912
sub r7, r7, #(0xffff0fff - (0xffff0f60 + (1b - __kuser_cmpxchg64)))
913913
subs r8, r4, r7
914-
rsbcss r8, r8, #(2b - 1b)
914+
rsbscs r8, r8, #(2b - 1b)
915915
strcs r7, [sp, #S_PC]
916916
#if __LINUX_ARM_ARCH__ < 6
917917
bcc kuser_cmpxchg32_fixup
@@ -969,7 +969,7 @@ kuser_cmpxchg32_fixup:
969969
mov r7, #0xffff0fff
970970
sub r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg)))
971971
subs r8, r4, r7
972-
rsbcss r8, r8, #(2b - 1b)
972+
rsbscs r8, r8, #(2b - 1b)
973973
strcs r7, [sp, #S_PC]
974974
ret lr
975975
.previous

arch/arm/kernel/entry-common.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ sys_syscall:
373373
movhs scno, #0
374374
csdb
375375
#endif
376-
stmloia sp, {r5, r6} @ shuffle args
376+
stmialo sp, {r5, r6} @ shuffle args
377377
movlo r0, r1
378378
movlo r1, r2
379379
movlo r2, r3

0 commit comments

Comments
 (0)