Commit 8c05f3b9 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm

Pull ARM updates from Russell King:
 "ARM development updates:

   - more unified assembly conversions for clang

   - drop obsolete -mauto-it assembler option

   - remove arm_memory_present in preference to the generic version

   - remove unused asm/limits.h header

   - vdso linker update

  We tried to make the assembler warn if unified syntax was not used,
  but unfortunately older versions of GCC warn, so the commit had to be
  reverted"

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
  Revert "ARM: 8846/1: warn if divided syntax assembler is used"
  ARM: 8858/1: vdso: use $(LD) instead of $(CC) to link VDSO
  ARM: 8855/1: remove unused <asm/limits.h>
  ARM: 8850/1: use memblocks_present
  ARM: 8854/1: drop -mauto-it
  ARM: 8846/1: warn if divided syntax assembler is used
  ARM: 8853/1: drop WASM to work around LLVM issue
  ARM: 8852/1: uaccess: use unified assembler language syntax
  ARM: 8851/1: add TUSERCOND() macro for conditional postfix
parents ab02888e b752bb40
...@@ -116,8 +116,7 @@ endif ...@@ -116,8 +116,7 @@ endif
AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W) AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
ifeq ($(CONFIG_THUMB2_KERNEL),y) ifeq ($(CONFIG_THUMB2_KERNEL),y)
AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it) CFLAGS_ISA :=-mthumb -Wa,-mimplicit-it=always $(AFLAGS_NOWARN)
CFLAGS_ISA :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
AFLAGS_ISA :=$(CFLAGS_ISA) -Wa$(comma)-mthumb AFLAGS_ISA :=$(CFLAGS_ISA) -Wa$(comma)-mthumb
# Work around buggy relocation from gas if requested: # Work around buggy relocation from gas if requested:
ifeq ($(CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11),y) ifeq ($(CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11),y)
......
...@@ -133,9 +133,11 @@ static inline void modify_domain(unsigned dom, unsigned type) { } ...@@ -133,9 +133,11 @@ static inline void modify_domain(unsigned dom, unsigned type) { }
* instructions (inline assembly) * instructions (inline assembly)
*/ */
#ifdef CONFIG_CPU_USE_DOMAINS #ifdef CONFIG_CPU_USE_DOMAINS
#define TUSER(instr) #instr "t" #define TUSER(instr) TUSERCOND(instr, )
#define TUSERCOND(instr, cond) #instr "t" #cond
#else #else
#define TUSER(instr) #instr #define TUSER(instr) TUSERCOND(instr, )
#define TUSERCOND(instr, cond) #instr #cond
#endif #endif
#else /* __ASSEMBLY__ */ #else /* __ASSEMBLY__ */
......
...@@ -110,10 +110,11 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, ...@@ -110,10 +110,11 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
preempt_disable(); preempt_disable();
__ua_flags = uaccess_save_and_enable(); __ua_flags = uaccess_save_and_enable();
__asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
" .syntax unified\n"
"1: " TUSER(ldr) " %1, [%4]\n" "1: " TUSER(ldr) " %1, [%4]\n"
" teq %1, %2\n" " teq %1, %2\n"
" it eq @ explicit IT needed for the 2b label\n" " it eq @ explicit IT needed for the 2b label\n"
"2: " TUSER(streq) " %3, [%4]\n" "2: " TUSERCOND(str, eq) " %3, [%4]\n"
__futex_atomic_ex_table("%5") __futex_atomic_ex_table("%5")
: "+r" (ret), "=&r" (val) : "+r" (ret), "=&r" (val)
: "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
......
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PIPE_H
#define __ASM_PIPE_H
#ifndef PAGE_SIZE
#include <asm/page.h>
#endif
#define PIPE_BUF PAGE_SIZE
#endif
...@@ -135,8 +135,8 @@ static inline void prefetchw(const void *ptr) ...@@ -135,8 +135,8 @@ static inline void prefetchw(const void *ptr)
__asm__ __volatile__( __asm__ __volatile__(
".arch_extension mp\n" ".arch_extension mp\n"
__ALT_SMP_ASM( __ALT_SMP_ASM(
WASM(pldw) "\t%a0", "pldw\t%a0",
WASM(pld) "\t%a0" "pld\t%a0"
) )
:: "p" (ptr)); :: "p" (ptr));
} }
......
...@@ -112,10 +112,11 @@ static inline void __user *__uaccess_mask_range_ptr(const void __user *ptr, ...@@ -112,10 +112,11 @@ static inline void __user *__uaccess_mask_range_ptr(const void __user *ptr,
unsigned long tmp; unsigned long tmp;
asm volatile( asm volatile(
" .syntax unified\n"
" sub %1, %3, #1\n" " sub %1, %3, #1\n"
" subs %1, %1, %0\n" " subs %1, %1, %0\n"
" addhs %1, %1, #1\n" " addhs %1, %1, #1\n"
" subhss %1, %1, %2\n" " subshs %1, %1, %2\n"
" movlo %0, #0\n" " movlo %0, #0\n"
: "+r" (safe_ptr), "=&r" (tmp) : "+r" (safe_ptr), "=&r" (tmp)
: "r" (size), "r" (current_thread_info()->addr_limit) : "r" (size), "r" (current_thread_info()->addr_limit)
......
...@@ -182,21 +182,6 @@ int pfn_valid(unsigned long pfn) ...@@ -182,21 +182,6 @@ int pfn_valid(unsigned long pfn)
EXPORT_SYMBOL(pfn_valid); EXPORT_SYMBOL(pfn_valid);
#endif #endif
#ifndef CONFIG_SPARSEMEM
static void __init arm_memory_present(void)
{
}
#else
static void __init arm_memory_present(void)
{
struct memblock_region *reg;
for_each_memblock(memory, reg)
memory_present(0, memblock_region_memory_base_pfn(reg),
memblock_region_memory_end_pfn(reg));
}
#endif
static bool arm_memblock_steal_permitted = true; static bool arm_memblock_steal_permitted = true;
phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align) phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
...@@ -293,7 +278,7 @@ void __init bootmem_init(void) ...@@ -293,7 +278,7 @@ void __init bootmem_init(void)
* Sparsemem tries to allocate bootmem in memory_present(), * Sparsemem tries to allocate bootmem in memory_present(),
* so must be done after the fixed reservations * so must be done after the fixed reservations
*/ */
arm_memory_present(); memblocks_present();
/* /*
* sparse_init() needs the bootmem allocator up and running. * sparse_init() needs the bootmem allocator up and running.
......
...@@ -10,12 +10,12 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) ...@@ -10,12 +10,12 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso))
ccflags-y := -fPIC -fno-common -fno-builtin -fno-stack-protector ccflags-y := -fPIC -fno-common -fno-builtin -fno-stack-protector
ccflags-y += -DDISABLE_BRANCH_PROFILING ccflags-y += -DDISABLE_BRANCH_PROFILING
VDSO_LDFLAGS := -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname=linux-vdso.so.1 ldflags-y = -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
VDSO_LDFLAGS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 -z max-page-size=4096 -z common-page-size=4096 \
VDSO_LDFLAGS += -nostdlib -shared -nostdlib -shared \
VDSO_LDFLAGS += $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) $(call ld-option, --hash-style=sysv) \
VDSO_LDFLAGS += $(call cc-ldoption, -Wl$(comma)--build-id) $(call ld-option, --build-id) \
VDSO_LDFLAGS += $(call cc-ldoption, -fuse-ld=bfd) -T
obj-$(CONFIG_VDSO) += vdso.o obj-$(CONFIG_VDSO) += vdso.o
extra-$(CONFIG_VDSO) += vdso.lds extra-$(CONFIG_VDSO) += vdso.lds
...@@ -37,8 +37,8 @@ KCOV_INSTRUMENT := n ...@@ -37,8 +37,8 @@ KCOV_INSTRUMENT := n
$(obj)/vdso.o : $(obj)/vdso.so $(obj)/vdso.o : $(obj)/vdso.so
# Link rule for the .so file # Link rule for the .so file
$(obj)/vdso.so.raw: $(src)/vdso.lds $(obj-vdso) FORCE $(obj)/vdso.so.raw: $(obj)/vdso.lds $(obj-vdso) FORCE
$(call if_changed,vdsold) $(call if_changed,ld)
$(obj)/vdso.so.dbg: $(obj)/vdso.so.raw $(obj)/vdsomunge FORCE $(obj)/vdso.so.dbg: $(obj)/vdso.so.raw $(obj)/vdsomunge FORCE
$(call if_changed,vdsomunge) $(call if_changed,vdsomunge)
...@@ -48,11 +48,6 @@ $(obj)/%.so: OBJCOPYFLAGS := -S ...@@ -48,11 +48,6 @@ $(obj)/%.so: OBJCOPYFLAGS := -S
$(obj)/%.so: $(obj)/%.so.dbg FORCE $(obj)/%.so: $(obj)/%.so.dbg FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
# Actual build commands
quiet_cmd_vdsold = VDSO $@
cmd_vdsold = $(CC) $(c_flags) $(VDSO_LDFLAGS) \
-Wl,-T $(filter %.lds,$^) $(filter %.o,$^) -o $@
quiet_cmd_vdsomunge = MUNGE $@ quiet_cmd_vdsomunge = MUNGE $@
cmd_vdsomunge = $(objtree)/$(obj)/vdsomunge $< $@ cmd_vdsomunge = $(objtree)/$(obj)/vdsomunge $< $@
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment