* [PATCH 0/2] Hexagon fixes @ 2019-12-09 22:29 Nick Desaulniers 2019-12-09 22:29 ` [PATCH 1/2] hexagon: define ioremap_uc Nick Desaulniers 2019-12-09 22:29 ` [PATCH 2/2] hexagon: parenthesize registers in asm predicates Nick Desaulniers 0 siblings, 2 replies; 6+ messages in thread From: Nick Desaulniers @ 2019-12-09 22:29 UTC (permalink / raw) To: bcain Cc: Nick Desaulniers, lee.jones, andriy.shevchenko, ztuowen, mika.westerberg, mcgrof, gregkh, alexios.zavras, allison, will, rfontana, tglx, peterz, boqun.feng, mingo, akpm, geert, linux-hexagon, clang-built-linux, linux-kernel Fixes 2 warnings when trying to build hexagon with Clang: $ ARCH=hexagon CROSS_COMPILE=hexagon-linux-gnu- make -j71 \ CC=clang AS=clang LD=ld.lld AR=llvm-ar Fixes -Winline-asm and -Wimplicit-function-definition. Nick Desaulniers (2): hexagon: define ioremap_uc hexagon: parenthesize registers in asm predicates arch/hexagon/include/asm/atomic.h | 8 ++++---- arch/hexagon/include/asm/bitops.h | 8 ++++---- arch/hexagon/include/asm/cmpxchg.h | 2 +- arch/hexagon/include/asm/futex.h | 6 +++--- arch/hexagon/include/asm/io.h | 1 + arch/hexagon/include/asm/spinlock.h | 20 ++++++++++---------- arch/hexagon/kernel/vm_entry.S | 2 +- 7 files changed, 24 insertions(+), 23 deletions(-) -- 2.24.0.393.g34dc348eaf-goog ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] hexagon: define ioremap_uc 2019-12-09 22:29 [PATCH 0/2] Hexagon fixes Nick Desaulniers @ 2019-12-09 22:29 ` Nick Desaulniers 2019-12-10 1:05 ` Brian Cain 2019-12-10 8:09 ` Geert Uytterhoeven 2019-12-09 22:29 ` [PATCH 2/2] hexagon: parenthesize registers in asm predicates Nick Desaulniers 1 sibling, 2 replies; 6+ messages in thread From: Nick Desaulniers @ 2019-12-09 22:29 UTC (permalink / raw) To: bcain Cc: Nick Desaulniers, lee.jones, andriy.shevchenko, ztuowen, mika.westerberg, mcgrof, gregkh, alexios.zavras, allison, will, rfontana, tglx, peterz, boqun.feng, mingo, akpm, geert, linux-hexagon, clang-built-linux, linux-kernel, Nathan Chancellor Similar to commit 38e45d81d14e ("sparc64: implement ioremap_uc") define ioremap_uc for hexagon to avoid errors from -Wimplicit-function-definition. Fixes: e537654b7039 ("lib: devres: add a helper function for ioremap_uc") Link: https://github.com/ClangBuiltLinux/linux/issues/797 Suggested-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> --- arch/hexagon/include/asm/io.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h index 539e3efcf39c..b0dbc3473172 100644 --- a/arch/hexagon/include/asm/io.h +++ b/arch/hexagon/include/asm/io.h @@ -173,6 +173,7 @@ static inline void writel(u32 data, volatile void __iomem *addr) void __iomem *ioremap(unsigned long phys_addr, unsigned long size); #define ioremap_nocache ioremap +#define ioremap_uc(X, Y) ioremap((X), (Y)) #define __raw_writel writel -- 2.24.0.393.g34dc348eaf-goog ^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH 1/2] hexagon: define ioremap_uc 2019-12-09 22:29 ` [PATCH 1/2] hexagon: define ioremap_uc Nick Desaulniers @ 2019-12-10 1:05 ` Brian Cain 2019-12-10 8:09 ` Geert Uytterhoeven 1 sibling, 0 replies; 6+ messages in thread From: Brian Cain @ 2019-12-10 1:05 UTC (permalink / raw) To: 'Nick Desaulniers' Cc: lee.jones, andriy.shevchenko, ztuowen, mika.westerberg, mcgrof, gregkh, alexios.zavras, allison, will, rfontana, tglx, peterz, boqun.feng, mingo, akpm, geert, linux-hexagon, clang-built-linux, linux-kernel, 'Nathan Chancellor' > -----Original Message----- > From: linux-hexagon-owner@vger.kernel.org <linux-hexagon- > owner@vger.kernel.org> On Behalf Of Nick Desaulniers > Sent: Monday, December 9, 2019 4:30 PM > To: bcain@codeaurora.org > Cc: Nick Desaulniers <ndesaulniers@google.com>; lee.jones@linaro.org; > andriy.shevchenko@linux.intel.com; ztuowen@gmail.com; > mika.westerberg@linux.intel.com; mcgrof@kernel.org; > gregkh@linuxfoundation.org; alexios.zavras@intel.com; > allison@lohutok.net; will@kernel.org; rfontana@redhat.com; > tglx@linutronix.de; peterz@infradead.org; boqun.feng@gmail.com; > mingo@redhat.com; akpm@linux-foundation.org; geert@linux-m68k.org; > linux-hexagon@vger.kernel.org; clang-built-linux@googlegroups.com; linux- > kernel@vger.kernel.org; Nathan Chancellor <natechancellor@gmail.com> > Subject: [PATCH 1/2] hexagon: define ioremap_uc > > Similar to > commit 38e45d81d14e ("sparc64: implement ioremap_uc") define > ioremap_uc for hexagon to avoid errors from -Wimplicit-function-definition. > > Fixes: e537654b7039 ("lib: devres: add a helper function for ioremap_uc") > Link: https://github.com/ClangBuiltLinux/linux/issues/797 > Suggested-by: Nathan Chancellor <natechancellor@gmail.com> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > --- > arch/hexagon/include/asm/io.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/hexagon/include/asm/io.h > b/arch/hexagon/include/asm/io.h index 539e3efcf39c..b0dbc3473172 > 100644 > --- a/arch/hexagon/include/asm/io.h > +++ b/arch/hexagon/include/asm/io.h > @@ -173,6 +173,7 @@ static inline void writel(u32 data, volatile void > __iomem *addr) > > void __iomem *ioremap(unsigned long phys_addr, unsigned long size); > #define ioremap_nocache ioremap > +#define ioremap_uc(X, Y) ioremap((X), (Y)) > > > #define __raw_writel writel > -- > 2.24.0.393.g34dc348eaf-goog Acked-by: Brian Cain <bcain@codeaurora.org> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] hexagon: define ioremap_uc 2019-12-09 22:29 ` [PATCH 1/2] hexagon: define ioremap_uc Nick Desaulniers 2019-12-10 1:05 ` Brian Cain @ 2019-12-10 8:09 ` Geert Uytterhoeven 1 sibling, 0 replies; 6+ messages in thread From: Geert Uytterhoeven @ 2019-12-10 8:09 UTC (permalink / raw) To: Nick Desaulniers Cc: bcain, Lee Jones, Andy Shevchenko, ztuowen, Mika Westerberg, Luis R. Rodriguez, Greg KH, alexios.zavras, Allison Randal, Will Deacon, rfontana, Thomas Gleixner, Peter Zijlstra, Boqun Feng, Ingo Molnar, Andrew Morton, open list:QUALCOMM HEXAGON..., clang-built-linux, Linux Kernel Mailing List, Nathan Chancellor <natechanc> On Mon, Dec 9, 2019 at 11:30 PM Nick Desaulniers <ndesaulniers@google.com> wrote: > Similar to > commit 38e45d81d14e ("sparc64: implement ioremap_uc") > define ioremap_uc for hexagon to avoid errors from > -Wimplicit-function-definition. > > Fixes: e537654b7039 ("lib: devres: add a helper function for ioremap_uc") > Link: https://github.com/ClangBuiltLinux/linux/issues/797 > Suggested-by: Nathan Chancellor <natechancellor@gmail.com> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > --- > arch/hexagon/include/asm/io.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h > index 539e3efcf39c..b0dbc3473172 100644 > --- a/arch/hexagon/include/asm/io.h > +++ b/arch/hexagon/include/asm/io.h > @@ -173,6 +173,7 @@ static inline void writel(u32 data, volatile void __iomem *addr) > > void __iomem *ioremap(unsigned long phys_addr, unsigned long size); > #define ioremap_nocache ioremap > +#define ioremap_uc(X, Y) ioremap((X), (Y)) Do we really need this? There is only one user of ioremap_uc(), which Christoph is trying hard to get rid of, and the new devres helper that triggers all of this :-( https://lore.kernel.org/dri-devel/20191112105507.GA7122@lst.de/ Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] hexagon: parenthesize registers in asm predicates 2019-12-09 22:29 [PATCH 0/2] Hexagon fixes Nick Desaulniers 2019-12-09 22:29 ` [PATCH 1/2] hexagon: define ioremap_uc Nick Desaulniers @ 2019-12-09 22:29 ` Nick Desaulniers 2019-12-10 1:05 ` Brian Cain 1 sibling, 1 reply; 6+ messages in thread From: Nick Desaulniers @ 2019-12-09 22:29 UTC (permalink / raw) To: bcain Cc: Nick Desaulniers, lee.jones, andriy.shevchenko, ztuowen, mika.westerberg, mcgrof, gregkh, alexios.zavras, allison, will, rfontana, tglx, peterz, boqun.feng, mingo, akpm, geert, linux-hexagon, clang-built-linux, linux-kernel, Sid Manning Hexagon requires that register predicates in assembly be parenthesized. Link: https://github.com/ClangBuiltLinux/linux/issues/754 Suggested-by: Sid Manning <sidneym@codeaurora.org> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> --- arch/hexagon/include/asm/atomic.h | 8 ++++---- arch/hexagon/include/asm/bitops.h | 8 ++++---- arch/hexagon/include/asm/cmpxchg.h | 2 +- arch/hexagon/include/asm/futex.h | 6 +++--- arch/hexagon/include/asm/spinlock.h | 20 ++++++++++---------- arch/hexagon/kernel/vm_entry.S | 2 +- 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/arch/hexagon/include/asm/atomic.h b/arch/hexagon/include/asm/atomic.h index 12cd9231c4b8..0231d69c8bf2 100644 --- a/arch/hexagon/include/asm/atomic.h +++ b/arch/hexagon/include/asm/atomic.h @@ -91,7 +91,7 @@ static inline void atomic_##op(int i, atomic_t *v) \ "1: %0 = memw_locked(%1);\n" \ " %0 = "#op "(%0,%2);\n" \ " memw_locked(%1,P3)=%0;\n" \ - " if !P3 jump 1b;\n" \ + " if (!P3) jump 1b;\n" \ : "=&r" (output) \ : "r" (&v->counter), "r" (i) \ : "memory", "p3" \ @@ -107,7 +107,7 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \ "1: %0 = memw_locked(%1);\n" \ " %0 = "#op "(%0,%2);\n" \ " memw_locked(%1,P3)=%0;\n" \ - " if !P3 jump 1b;\n" \ + " if (!P3) jump 1b;\n" \ : "=&r" (output) \ : "r" (&v->counter), "r" (i) \ : "memory", "p3" \ @@ -124,7 +124,7 @@ static inline int atomic_fetch_##op(int i, atomic_t *v) \ "1: %0 = memw_locked(%2);\n" \ " %1 = "#op "(%0,%3);\n" \ " memw_locked(%2,P3)=%1;\n" \ - " if !P3 jump 1b;\n" \ + " if (!P3) jump 1b;\n" \ : "=&r" (output), "=&r" (val) \ : "r" (&v->counter), "r" (i) \ : "memory", "p3" \ @@ -173,7 +173,7 @@ static inline int atomic_fetch_add_unless(atomic_t *v, int a, int u) " }" " memw_locked(%2, p3) = %1;" " {" - " if !p3 jump 1b;" + " if (!p3) jump 1b;" " }" "2:" : "=&r" (__oldval), "=&r" (tmp) diff --git a/arch/hexagon/include/asm/bitops.h b/arch/hexagon/include/asm/bitops.h index 47384b094b94..71429f756af0 100644 --- a/arch/hexagon/include/asm/bitops.h +++ b/arch/hexagon/include/asm/bitops.h @@ -38,7 +38,7 @@ static inline int test_and_clear_bit(int nr, volatile void *addr) "1: R12 = memw_locked(R10);\n" " { P0 = tstbit(R12,R11); R12 = clrbit(R12,R11); }\n" " memw_locked(R10,P1) = R12;\n" - " {if !P1 jump 1b; %0 = mux(P0,#1,#0);}\n" + " {if (!P1) jump 1b; %0 = mux(P0,#1,#0);}\n" : "=&r" (oldval) : "r" (addr), "r" (nr) : "r10", "r11", "r12", "p0", "p1", "memory" @@ -62,7 +62,7 @@ static inline int test_and_set_bit(int nr, volatile void *addr) "1: R12 = memw_locked(R10);\n" " { P0 = tstbit(R12,R11); R12 = setbit(R12,R11); }\n" " memw_locked(R10,P1) = R12;\n" - " {if !P1 jump 1b; %0 = mux(P0,#1,#0);}\n" + " {if (!P1) jump 1b; %0 = mux(P0,#1,#0);}\n" : "=&r" (oldval) : "r" (addr), "r" (nr) : "r10", "r11", "r12", "p0", "p1", "memory" @@ -88,7 +88,7 @@ static inline int test_and_change_bit(int nr, volatile void *addr) "1: R12 = memw_locked(R10);\n" " { P0 = tstbit(R12,R11); R12 = togglebit(R12,R11); }\n" " memw_locked(R10,P1) = R12;\n" - " {if !P1 jump 1b; %0 = mux(P0,#1,#0);}\n" + " {if (!P1) jump 1b; %0 = mux(P0,#1,#0);}\n" : "=&r" (oldval) : "r" (addr), "r" (nr) : "r10", "r11", "r12", "p0", "p1", "memory" @@ -223,7 +223,7 @@ static inline int ffs(int x) int r; asm("{ P0 = cmp.eq(%1,#0); %0 = ct0(%1);}\n" - "{ if P0 %0 = #0; if !P0 %0 = add(%0,#1);}\n" + "{ if (P0) %0 = #0; if (!P0) %0 = add(%0,#1);}\n" : "=&r" (r) : "r" (x) : "p0"); diff --git a/arch/hexagon/include/asm/cmpxchg.h b/arch/hexagon/include/asm/cmpxchg.h index 6091322c3af9..92b8a02e588a 100644 --- a/arch/hexagon/include/asm/cmpxchg.h +++ b/arch/hexagon/include/asm/cmpxchg.h @@ -30,7 +30,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, __asm__ __volatile__ ( "1: %0 = memw_locked(%1);\n" /* load into retval */ " memw_locked(%1,P0) = %2;\n" /* store into memory */ - " if !P0 jump 1b;\n" + " if (!P0) jump 1b;\n" : "=&r" (retval) : "r" (ptr), "r" (x) : "memory", "p0" diff --git a/arch/hexagon/include/asm/futex.h b/arch/hexagon/include/asm/futex.h index cb635216a732..0191f7c7193e 100644 --- a/arch/hexagon/include/asm/futex.h +++ b/arch/hexagon/include/asm/futex.h @@ -16,7 +16,7 @@ /* For example: %1 = %4 */ \ insn \ "2: memw_locked(%3,p2) = %1;\n" \ - " if !p2 jump 1b;\n" \ + " if (!p2) jump 1b;\n" \ " %1 = #0;\n" \ "3:\n" \ ".section .fixup,\"ax\"\n" \ @@ -84,10 +84,10 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 oldval, "1: %1 = memw_locked(%3)\n" " {\n" " p2 = cmp.eq(%1,%4)\n" - " if !p2.new jump:NT 3f\n" + " if (!p2.new) jump:NT 3f\n" " }\n" "2: memw_locked(%3,p2) = %5\n" - " if !p2 jump 1b\n" + " if (!p2) jump 1b\n" "3:\n" ".section .fixup,\"ax\"\n" "4: %0 = #%6\n" diff --git a/arch/hexagon/include/asm/spinlock.h b/arch/hexagon/include/asm/spinlock.h index bfe07d842ff3..ef103b73bec8 100644 --- a/arch/hexagon/include/asm/spinlock.h +++ b/arch/hexagon/include/asm/spinlock.h @@ -30,9 +30,9 @@ static inline void arch_read_lock(arch_rwlock_t *lock) __asm__ __volatile__( "1: R6 = memw_locked(%0);\n" " { P3 = cmp.ge(R6,#0); R6 = add(R6,#1);}\n" - " { if !P3 jump 1b; }\n" + " { if (!P3) jump 1b; }\n" " memw_locked(%0,P3) = R6;\n" - " { if !P3 jump 1b; }\n" + " { if (!P3) jump 1b; }\n" : : "r" (&lock->lock) : "memory", "r6", "p3" @@ -46,7 +46,7 @@ static inline void arch_read_unlock(arch_rwlock_t *lock) "1: R6 = memw_locked(%0);\n" " R6 = add(R6,#-1);\n" " memw_locked(%0,P3) = R6\n" - " if !P3 jump 1b;\n" + " if (!P3) jump 1b;\n" : : "r" (&lock->lock) : "memory", "r6", "p3" @@ -61,7 +61,7 @@ static inline int arch_read_trylock(arch_rwlock_t *lock) __asm__ __volatile__( " R6 = memw_locked(%1);\n" " { %0 = #0; P3 = cmp.ge(R6,#0); R6 = add(R6,#1);}\n" - " { if !P3 jump 1f; }\n" + " { if (!P3) jump 1f; }\n" " memw_locked(%1,P3) = R6;\n" " { %0 = P3 }\n" "1:\n" @@ -78,9 +78,9 @@ static inline void arch_write_lock(arch_rwlock_t *lock) __asm__ __volatile__( "1: R6 = memw_locked(%0)\n" " { P3 = cmp.eq(R6,#0); R6 = #-1;}\n" - " { if !P3 jump 1b; }\n" + " { if (!P3) jump 1b; }\n" " memw_locked(%0,P3) = R6;\n" - " { if !P3 jump 1b; }\n" + " { if (!P3) jump 1b; }\n" : : "r" (&lock->lock) : "memory", "r6", "p3" @@ -94,7 +94,7 @@ static inline int arch_write_trylock(arch_rwlock_t *lock) __asm__ __volatile__( " R6 = memw_locked(%1)\n" " { %0 = #0; P3 = cmp.eq(R6,#0); R6 = #-1;}\n" - " { if !P3 jump 1f; }\n" + " { if (!P3) jump 1f; }\n" " memw_locked(%1,P3) = R6;\n" " %0 = P3;\n" "1:\n" @@ -117,9 +117,9 @@ static inline void arch_spin_lock(arch_spinlock_t *lock) __asm__ __volatile__( "1: R6 = memw_locked(%0);\n" " P3 = cmp.eq(R6,#0);\n" - " { if !P3 jump 1b; R6 = #1; }\n" + " { if (!P3) jump 1b; R6 = #1; }\n" " memw_locked(%0,P3) = R6;\n" - " { if !P3 jump 1b; }\n" + " { if (!P3) jump 1b; }\n" : : "r" (&lock->lock) : "memory", "r6", "p3" @@ -139,7 +139,7 @@ static inline unsigned int arch_spin_trylock(arch_spinlock_t *lock) __asm__ __volatile__( " R6 = memw_locked(%1);\n" " P3 = cmp.eq(R6,#0);\n" - " { if !P3 jump 1f; R6 = #1; %0 = #0; }\n" + " { if (!P3) jump 1f; R6 = #1; %0 = #0; }\n" " memw_locked(%1,P3) = R6;\n" " %0 = P3;\n" "1:\n" diff --git a/arch/hexagon/kernel/vm_entry.S b/arch/hexagon/kernel/vm_entry.S index 65a1ea0eed2f..554371d92bed 100644 --- a/arch/hexagon/kernel/vm_entry.S +++ b/arch/hexagon/kernel/vm_entry.S @@ -369,7 +369,7 @@ ret_from_fork: R26.L = #LO(do_work_pending); R0 = #VM_INT_DISABLE; } - if P0 jump check_work_pending + if (P0) jump check_work_pending { R0 = R25; callr R24 -- 2.24.0.393.g34dc348eaf-goog ^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH 2/2] hexagon: parenthesize registers in asm predicates 2019-12-09 22:29 ` [PATCH 2/2] hexagon: parenthesize registers in asm predicates Nick Desaulniers @ 2019-12-10 1:05 ` Brian Cain 0 siblings, 0 replies; 6+ messages in thread From: Brian Cain @ 2019-12-10 1:05 UTC (permalink / raw) To: 'Nick Desaulniers' Cc: lee.jones, andriy.shevchenko, ztuowen, mika.westerberg, mcgrof, gregkh, alexios.zavras, allison, will, rfontana, tglx, peterz, boqun.feng, mingo, akpm, geert, linux-hexagon, clang-built-linux, linux-kernel, 'Sid Manning' > -----Original Message----- > From: Nick Desaulniers <ndesaulniers@google.com> > Sent: Monday, December 9, 2019 4:30 PM > To: bcain@codeaurora.org > Cc: Nick Desaulniers <ndesaulniers@google.com>; lee.jones@linaro.org; > andriy.shevchenko@linux.intel.com; ztuowen@gmail.com; > mika.westerberg@linux.intel.com; mcgrof@kernel.org; > gregkh@linuxfoundation.org; alexios.zavras@intel.com; > allison@lohutok.net; will@kernel.org; rfontana@redhat.com; > tglx@linutronix.de; peterz@infradead.org; boqun.feng@gmail.com; > mingo@redhat.com; akpm@linux-foundation.org; geert@linux-m68k.org; > linux-hexagon@vger.kernel.org; clang-built-linux@googlegroups.com; linux- > kernel@vger.kernel.org; Sid Manning <sidneym@codeaurora.org> > Subject: [PATCH 2/2] hexagon: parenthesize registers in asm predicates > > Hexagon requires that register predicates in assembly be parenthesized. > > Link: https://github.com/ClangBuiltLinux/linux/issues/754 > Suggested-by: Sid Manning <sidneym@codeaurora.org> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > --- > arch/hexagon/include/asm/atomic.h | 8 ++++---- > arch/hexagon/include/asm/bitops.h | 8 ++++---- > arch/hexagon/include/asm/cmpxchg.h | 2 +- > arch/hexagon/include/asm/futex.h | 6 +++--- > arch/hexagon/include/asm/spinlock.h | 20 ++++++++++---------- > arch/hexagon/kernel/vm_entry.S | 2 +- > 6 files changed, 23 insertions(+), 23 deletions(-) > > diff --git a/arch/hexagon/include/asm/atomic.h > b/arch/hexagon/include/asm/atomic.h > index 12cd9231c4b8..0231d69c8bf2 100644 > --- a/arch/hexagon/include/asm/atomic.h > +++ b/arch/hexagon/include/asm/atomic.h > @@ -91,7 +91,7 @@ static inline void atomic_##op(int i, atomic_t *v) > \ > "1: %0 = memw_locked(%1);\n" \ > " %0 = "#op "(%0,%2);\n" > \ > " memw_locked(%1,P3)=%0;\n" \ > - " if !P3 jump 1b;\n" \ > + " if (!P3) jump 1b;\n" \ > : "=&r" (output) \ > : "r" (&v->counter), "r" (i) \ > : "memory", "p3" \ > @@ -107,7 +107,7 @@ static inline int atomic_##op##_return(int i, atomic_t > *v) \ > "1: %0 = memw_locked(%1);\n" \ > " %0 = "#op "(%0,%2);\n" > \ > " memw_locked(%1,P3)=%0;\n" \ > - " if !P3 jump 1b;\n" \ > + " if (!P3) jump 1b;\n" \ > : "=&r" (output) \ > : "r" (&v->counter), "r" (i) \ > : "memory", "p3" \ > @@ -124,7 +124,7 @@ static inline int atomic_fetch_##op(int i, atomic_t *v) > \ > "1: %0 = memw_locked(%2);\n" \ > " %1 = "#op "(%0,%3);\n" > \ > " memw_locked(%2,P3)=%1;\n" \ > - " if !P3 jump 1b;\n" \ > + " if (!P3) jump 1b;\n" \ > : "=&r" (output), "=&r" (val) \ > : "r" (&v->counter), "r" (i) \ > : "memory", "p3" \ > @@ -173,7 +173,7 @@ static inline int atomic_fetch_add_unless(atomic_t > *v, int a, int u) > " }" > " memw_locked(%2, p3) = %1;" > " {" > - " if !p3 jump 1b;" > + " if (!p3) jump 1b;" > " }" > "2:" > : "=&r" (__oldval), "=&r" (tmp) > diff --git a/arch/hexagon/include/asm/bitops.h > b/arch/hexagon/include/asm/bitops.h > index 47384b094b94..71429f756af0 100644 > --- a/arch/hexagon/include/asm/bitops.h > +++ b/arch/hexagon/include/asm/bitops.h > @@ -38,7 +38,7 @@ static inline int test_and_clear_bit(int nr, volatile void > *addr) > "1: R12 = memw_locked(R10);\n" > " { P0 = tstbit(R12,R11); R12 = clrbit(R12,R11); }\n" > " memw_locked(R10,P1) = R12;\n" > - " {if !P1 jump 1b; %0 = mux(P0,#1,#0);}\n" > + " {if (!P1) jump 1b; %0 = mux(P0,#1,#0);}\n" > : "=&r" (oldval) > : "r" (addr), "r" (nr) > : "r10", "r11", "r12", "p0", "p1", "memory" > @@ -62,7 +62,7 @@ static inline int test_and_set_bit(int nr, volatile void > *addr) > "1: R12 = memw_locked(R10);\n" > " { P0 = tstbit(R12,R11); R12 = setbit(R12,R11); }\n" > " memw_locked(R10,P1) = R12;\n" > - " {if !P1 jump 1b; %0 = mux(P0,#1,#0);}\n" > + " {if (!P1) jump 1b; %0 = mux(P0,#1,#0);}\n" > : "=&r" (oldval) > : "r" (addr), "r" (nr) > : "r10", "r11", "r12", "p0", "p1", "memory" > @@ -88,7 +88,7 @@ static inline int test_and_change_bit(int nr, volatile void > *addr) > "1: R12 = memw_locked(R10);\n" > " { P0 = tstbit(R12,R11); R12 = togglebit(R12,R11); }\n" > " memw_locked(R10,P1) = R12;\n" > - " {if !P1 jump 1b; %0 = mux(P0,#1,#0);}\n" > + " {if (!P1) jump 1b; %0 = mux(P0,#1,#0);}\n" > : "=&r" (oldval) > : "r" (addr), "r" (nr) > : "r10", "r11", "r12", "p0", "p1", "memory" > @@ -223,7 +223,7 @@ static inline int ffs(int x) > int r; > > asm("{ P0 = cmp.eq(%1,#0); %0 = ct0(%1);}\n" > - "{ if P0 %0 = #0; if !P0 %0 = add(%0,#1);}\n" > + "{ if (P0) %0 = #0; if (!P0) %0 = add(%0,#1);}\n" > : "=&r" (r) > : "r" (x) > : "p0"); > diff --git a/arch/hexagon/include/asm/cmpxchg.h > b/arch/hexagon/include/asm/cmpxchg.h > index 6091322c3af9..92b8a02e588a 100644 > --- a/arch/hexagon/include/asm/cmpxchg.h > +++ b/arch/hexagon/include/asm/cmpxchg.h > @@ -30,7 +30,7 @@ static inline unsigned long __xchg(unsigned long x, > volatile void *ptr, > __asm__ __volatile__ ( > "1: %0 = memw_locked(%1);\n" /* load into retval */ > " memw_locked(%1,P0) = %2;\n" /* store into memory */ > - " if !P0 jump 1b;\n" > + " if (!P0) jump 1b;\n" > : "=&r" (retval) > : "r" (ptr), "r" (x) > : "memory", "p0" > diff --git a/arch/hexagon/include/asm/futex.h > b/arch/hexagon/include/asm/futex.h > index cb635216a732..0191f7c7193e 100644 > --- a/arch/hexagon/include/asm/futex.h > +++ b/arch/hexagon/include/asm/futex.h > @@ -16,7 +16,7 @@ > /* For example: %1 = %4 */ \ > insn \ > "2: memw_locked(%3,p2) = %1;\n" \ > - " if !p2 jump 1b;\n" \ > + " if (!p2) jump 1b;\n" \ > " %1 = #0;\n" \ > "3:\n" \ > ".section .fixup,\"ax\"\n" \ > @@ -84,10 +84,10 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 > __user *uaddr, u32 oldval, > "1: %1 = memw_locked(%3)\n" > " {\n" > " p2 = cmp.eq(%1,%4)\n" > - " if !p2.new jump:NT 3f\n" > + " if (!p2.new) jump:NT 3f\n" > " }\n" > "2: memw_locked(%3,p2) = %5\n" > - " if !p2 jump 1b\n" > + " if (!p2) jump 1b\n" > "3:\n" > ".section .fixup,\"ax\"\n" > "4: %0 = #%6\n" > diff --git a/arch/hexagon/include/asm/spinlock.h > b/arch/hexagon/include/asm/spinlock.h > index bfe07d842ff3..ef103b73bec8 100644 > --- a/arch/hexagon/include/asm/spinlock.h > +++ b/arch/hexagon/include/asm/spinlock.h > @@ -30,9 +30,9 @@ static inline void arch_read_lock(arch_rwlock_t *lock) > __asm__ __volatile__( > "1: R6 = memw_locked(%0);\n" > " { P3 = cmp.ge(R6,#0); R6 = add(R6,#1);}\n" > - " { if !P3 jump 1b; }\n" > + " { if (!P3) jump 1b; }\n" > " memw_locked(%0,P3) = R6;\n" > - " { if !P3 jump 1b; }\n" > + " { if (!P3) jump 1b; }\n" > : > : "r" (&lock->lock) > : "memory", "r6", "p3" > @@ -46,7 +46,7 @@ static inline void arch_read_unlock(arch_rwlock_t > *lock) > "1: R6 = memw_locked(%0);\n" > " R6 = add(R6,#-1);\n" > " memw_locked(%0,P3) = R6\n" > - " if !P3 jump 1b;\n" > + " if (!P3) jump 1b;\n" > : > : "r" (&lock->lock) > : "memory", "r6", "p3" > @@ -61,7 +61,7 @@ static inline int arch_read_trylock(arch_rwlock_t *lock) > __asm__ __volatile__( > " R6 = memw_locked(%1);\n" > " { %0 = #0; P3 = cmp.ge(R6,#0); R6 = add(R6,#1);}\n" > - " { if !P3 jump 1f; }\n" > + " { if (!P3) jump 1f; }\n" > " memw_locked(%1,P3) = R6;\n" > " { %0 = P3 }\n" > "1:\n" > @@ -78,9 +78,9 @@ static inline void arch_write_lock(arch_rwlock_t *lock) > __asm__ __volatile__( > "1: R6 = memw_locked(%0)\n" > " { P3 = cmp.eq(R6,#0); R6 = #-1;}\n" > - " { if !P3 jump 1b; }\n" > + " { if (!P3) jump 1b; }\n" > " memw_locked(%0,P3) = R6;\n" > - " { if !P3 jump 1b; }\n" > + " { if (!P3) jump 1b; }\n" > : > : "r" (&lock->lock) > : "memory", "r6", "p3" > @@ -94,7 +94,7 @@ static inline int arch_write_trylock(arch_rwlock_t *lock) > __asm__ __volatile__( > " R6 = memw_locked(%1)\n" > " { %0 = #0; P3 = cmp.eq(R6,#0); R6 = #-1;}\n" > - " { if !P3 jump 1f; }\n" > + " { if (!P3) jump 1f; }\n" > " memw_locked(%1,P3) = R6;\n" > " %0 = P3;\n" > "1:\n" > @@ -117,9 +117,9 @@ static inline void arch_spin_lock(arch_spinlock_t > *lock) > __asm__ __volatile__( > "1: R6 = memw_locked(%0);\n" > " P3 = cmp.eq(R6,#0);\n" > - " { if !P3 jump 1b; R6 = #1; }\n" > + " { if (!P3) jump 1b; R6 = #1; }\n" > " memw_locked(%0,P3) = R6;\n" > - " { if !P3 jump 1b; }\n" > + " { if (!P3) jump 1b; }\n" > : > : "r" (&lock->lock) > : "memory", "r6", "p3" > @@ -139,7 +139,7 @@ static inline unsigned int > arch_spin_trylock(arch_spinlock_t *lock) > __asm__ __volatile__( > " R6 = memw_locked(%1);\n" > " P3 = cmp.eq(R6,#0);\n" > - " { if !P3 jump 1f; R6 = #1; %0 = #0; }\n" > + " { if (!P3) jump 1f; R6 = #1; %0 = #0; }\n" > " memw_locked(%1,P3) = R6;\n" > " %0 = P3;\n" > "1:\n" > diff --git a/arch/hexagon/kernel/vm_entry.S > b/arch/hexagon/kernel/vm_entry.S index 65a1ea0eed2f..554371d92bed > 100644 > --- a/arch/hexagon/kernel/vm_entry.S > +++ b/arch/hexagon/kernel/vm_entry.S > @@ -369,7 +369,7 @@ ret_from_fork: > R26.L = #LO(do_work_pending); > R0 = #VM_INT_DISABLE; > } > - if P0 jump check_work_pending > + if (P0) jump check_work_pending > { > R0 = R25; > callr R24 > -- > 2.24.0.393.g34dc348eaf-goog Acked-by: Brian Cain <bcain@codeaurora.org> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-12-10 8:09 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-12-09 22:29 [PATCH 0/2] Hexagon fixes Nick Desaulniers 2019-12-09 22:29 ` [PATCH 1/2] hexagon: define ioremap_uc Nick Desaulniers 2019-12-10 1:05 ` Brian Cain 2019-12-10 8:09 ` Geert Uytterhoeven 2019-12-09 22:29 ` [PATCH 2/2] hexagon: parenthesize registers in asm predicates Nick Desaulniers 2019-12-10 1:05 ` Brian Cain
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).