[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202104230602.N3ksyBSy-lkp@intel.com>
Date: Fri, 23 Apr 2021 06:28:52 +0800
From: kernel test robot <lkp@...el.com>
To: Tanner Love <tannerlove.kernel@...il.com>, netdev@...r.kernel.org
Cc: kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
davem@...emloft.net, Tanner Love <tannerlove@...gle.com>,
Eric Dumazet <edumazet@...gle.com>,
Mahesh Bandewar <maheshb@...gle.com>
Subject: Re: [PATCH net-next 2/3] once: replace uses of
__section(".data.once") with DO_ONCE_LITE(_IF)?
Hi Tanner,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Tanner-Love/net-update-netdev_rx_csum_fault-print-dump-only-once/20210423-034958
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 5d869070569a23aa909c6e7e9d010fc438a492ef
config: powerpc-randconfig-r011-20210421 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project f5446b769a7929806f72256fccd4826d66502e59)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/0day-ci/linux/commit/eaeb33f0f85f70fc4e5fbae1e2344e9c6867c840
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tanner-Love/net-update-netdev_rx_csum_fault-print-dump-only-once/20210423-034958
git checkout eaeb33f0f85f70fc4e5fbae1e2344e9c6867c840
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
In file included from kernel/bounds.c:10:
In file included from include/linux/page-flags.h:10:
In file included from include/linux/bug.h:5:
In file included from arch/powerpc/include/asm/bug.h:109:
In file included from include/asm-generic/bug.h:7:
In file included from include/linux/once.h:6:
In file included from include/linux/jump_label.h:249:
In file included from include/linux/atomic.h:7:
In file included from arch/powerpc/include/asm/atomic.h:11:
>> arch/powerpc/include/asm/cmpxchg.h:80:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u8, _local, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:81:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u8, _relaxed, "cc");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:82:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u16, _local, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:83:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u16, _relaxed, "cc");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
>> arch/powerpc/include/asm/cmpxchg.h:166:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __xchg");
^
arch/powerpc/include/asm/cmpxchg.h:185:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __xchg_local");
^
arch/powerpc/include/asm/cmpxchg.h:206:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, , PPC_ATOMIC_ENTRY_BARRIER, PPC_ATOMIC_EXIT_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:207:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, _local, , , "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:208:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, _acquire, , PPC_ACQUIRE_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:209:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, _relaxed, , , "cc");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:210:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, , PPC_ATOMIC_ENTRY_BARRIER, PPC_ATOMIC_EXIT_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:211:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, _local, , , "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:212:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, _acquire, , PPC_ACQUIRE_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:213:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, _relaxed, , , "cc");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:407:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg");
^
arch/powerpc/include/asm/cmpxchg.h:427:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg_local");
^
arch/powerpc/include/asm/cmpxchg.h:447:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg_relaxed");
^
arch/powerpc/include/asm/cmpxchg.h:467:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg_acquire");
^
In file included from kernel/bounds.c:10:
In file included from include/linux/page-flags.h:10:
In file included from include/linux/bug.h:5:
In file included from arch/powerpc/include/asm/bug.h:109:
In file included from include/asm-generic/bug.h:7:
In file included from include/linux/once.h:6:
In file included from include/linux/jump_label.h:249:
In file included from include/linux/atomic.h:7:
In file included from arch/powerpc/include/asm/atomic.h:11:
In file included from arch/powerpc/include/asm/cmpxchg.h:526:
In file included from include/asm-generic/cmpxchg-local.h:6:
In file included from include/linux/irqflags.h:16:
In file included from arch/powerpc/include/asm/irqflags.h:12:
In file included from arch/powerpc/include/asm/hw_irq.h:12:
In file included from arch/powerpc/include/asm/ptrace.h:264:
In file included from include/linux/thread_info.h:59:
In file included from arch/powerpc/include/asm/thread_info.h:13:
In file included from arch/powerpc/include/asm/page.h:249:
>> arch/powerpc/include/asm/page_32.h:48:2: error: implicit declaration of function '__WARN' [-Werror,-Wimplicit-function-declaration]
WARN_ON((unsigned long)addr & (L1_CACHE_BYTES - 1));
^
arch/powerpc/include/asm/bug.h:87:4: note: expanded from macro 'WARN_ON'
__WARN(); \
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--
In file included from kernel/bounds.c:10:
In file included from include/linux/page-flags.h:10:
In file included from include/linux/bug.h:5:
In file included from arch/powerpc/include/asm/bug.h:109:
In file included from include/asm-generic/bug.h:7:
In file included from include/linux/once.h:6:
In file included from include/linux/jump_label.h:249:
In file included from include/linux/atomic.h:7:
In file included from arch/powerpc/include/asm/atomic.h:11:
>> arch/powerpc/include/asm/cmpxchg.h:80:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u8, _local, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:81:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u8, _relaxed, "cc");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:82:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u16, _local, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:83:1: error: use of undeclared identifier 'BITS_PER_BYTE'
XCHG_GEN(u16, _relaxed, "cc");
^
arch/powerpc/include/asm/cmpxchg.h:22:11: note: expanded from macro 'XCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
>> arch/powerpc/include/asm/cmpxchg.h:166:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __xchg");
^
arch/powerpc/include/asm/cmpxchg.h:185:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __xchg_local");
^
arch/powerpc/include/asm/cmpxchg.h:206:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, , PPC_ATOMIC_ENTRY_BARRIER, PPC_ATOMIC_EXIT_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:207:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, _local, , , "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:208:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, _acquire, , PPC_ACQUIRE_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:209:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u8, _relaxed, , , "cc");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:210:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, , PPC_ATOMIC_ENTRY_BARRIER, PPC_ATOMIC_EXIT_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:211:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, _local, , , "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:212:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, _acquire, , PPC_ACQUIRE_BARRIER, "memory");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:213:1: error: use of undeclared identifier 'BITS_PER_BYTE'
CMPXCHG_GEN(u16, _relaxed, , , "cc");
^
arch/powerpc/include/asm/cmpxchg.h:47:11: note: expanded from macro 'CMPXCHG_GEN'
bitoff = BITOFF_CAL(sizeof(type), off); \
^
arch/powerpc/include/asm/cmpxchg.h:11:61: note: expanded from macro 'BITOFF_CAL'
#define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE)
^
arch/powerpc/include/asm/cmpxchg.h:407:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg");
^
arch/powerpc/include/asm/cmpxchg.h:427:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg_local");
^
arch/powerpc/include/asm/cmpxchg.h:447:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg_relaxed");
^
arch/powerpc/include/asm/cmpxchg.h:467:2: error: implicit declaration of function 'BUILD_BUG_ON_MSG' [-Werror,-Wimplicit-function-declaration]
BUILD_BUG_ON_MSG(1, "Unsupported size for __cmpxchg_acquire");
^
In file included from kernel/bounds.c:10:
In file included from include/linux/page-flags.h:10:
In file included from include/linux/bug.h:5:
In file included from arch/powerpc/include/asm/bug.h:109:
In file included from include/asm-generic/bug.h:7:
In file included from include/linux/once.h:6:
In file included from include/linux/jump_label.h:249:
In file included from include/linux/atomic.h:7:
In file included from arch/powerpc/include/asm/atomic.h:11:
In file included from arch/powerpc/include/asm/cmpxchg.h:526:
In file included from include/asm-generic/cmpxchg-local.h:6:
In file included from include/linux/irqflags.h:16:
In file included from arch/powerpc/include/asm/irqflags.h:12:
In file included from arch/powerpc/include/asm/hw_irq.h:12:
In file included from arch/powerpc/include/asm/ptrace.h:264:
In file included from include/linux/thread_info.h:59:
In file included from arch/powerpc/include/asm/thread_info.h:13:
In file included from arch/powerpc/include/asm/page.h:249:
>> arch/powerpc/include/asm/page_32.h:48:2: error: implicit declaration of function '__WARN' [-Werror,-Wimplicit-function-declaration]
WARN_ON((unsigned long)addr & (L1_CACHE_BYTES - 1));
^
arch/powerpc/include/asm/bug.h:87:4: note: expanded from macro 'WARN_ON'
__WARN(); \
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [scripts/Makefile.build:116: kernel/bounds.s] Error 1
make[2]: Target '__build' not remade because of errors.
make[1]: *** [Makefile:1235: prepare0] Error 2
make[1]: Target 'modules_prepare' not remade because of errors.
make: *** [Makefile:215: __sub-make] Error 2
make: Target 'modules_prepare' not remade because of errors.
..
vim +/BITS_PER_BYTE +80 arch/powerpc/include/asm/cmpxchg.h
d0563a1297e234 Pan Xinhui 2016-04-27 72
ae3a197e3d0bfe David Howells 2012-03-28 73 /*
ae3a197e3d0bfe David Howells 2012-03-28 74 * Atomic exchange
ae3a197e3d0bfe David Howells 2012-03-28 75 *
26760fc19a7e66 Boqun Feng 2015-12-15 76 * Changes the memory location '*p' to be val and returns
ae3a197e3d0bfe David Howells 2012-03-28 77 * the previous value stored there.
ae3a197e3d0bfe David Howells 2012-03-28 78 */
26760fc19a7e66 Boqun Feng 2015-12-15 79
d0563a1297e234 Pan Xinhui 2016-04-27 @80 XCHG_GEN(u8, _local, "memory");
d0563a1297e234 Pan Xinhui 2016-04-27 81 XCHG_GEN(u8, _relaxed, "cc");
d0563a1297e234 Pan Xinhui 2016-04-27 82 XCHG_GEN(u16, _local, "memory");
d0563a1297e234 Pan Xinhui 2016-04-27 83 XCHG_GEN(u16, _relaxed, "cc");
d0563a1297e234 Pan Xinhui 2016-04-27 84
ae3a197e3d0bfe David Howells 2012-03-28 85 static __always_inline unsigned long
26760fc19a7e66 Boqun Feng 2015-12-15 86 __xchg_u32_local(volatile void *p, unsigned long val)
ae3a197e3d0bfe David Howells 2012-03-28 87 {
ae3a197e3d0bfe David Howells 2012-03-28 88 unsigned long prev;
ae3a197e3d0bfe David Howells 2012-03-28 89
ae3a197e3d0bfe David Howells 2012-03-28 90 __asm__ __volatile__(
ae3a197e3d0bfe David Howells 2012-03-28 91 "1: lwarx %0,0,%2 \n"
ae3a197e3d0bfe David Howells 2012-03-28 92 " stwcx. %3,0,%2 \n\
ae3a197e3d0bfe David Howells 2012-03-28 93 bne- 1b"
ae3a197e3d0bfe David Howells 2012-03-28 94 : "=&r" (prev), "+m" (*(volatile unsigned int *)p)
ae3a197e3d0bfe David Howells 2012-03-28 95 : "r" (p), "r" (val)
ae3a197e3d0bfe David Howells 2012-03-28 96 : "cc", "memory");
ae3a197e3d0bfe David Howells 2012-03-28 97
ae3a197e3d0bfe David Howells 2012-03-28 98 return prev;
ae3a197e3d0bfe David Howells 2012-03-28 99 }
ae3a197e3d0bfe David Howells 2012-03-28 100
ae3a197e3d0bfe David Howells 2012-03-28 101 static __always_inline unsigned long
26760fc19a7e66 Boqun Feng 2015-12-15 102 __xchg_u32_relaxed(u32 *p, unsigned long val)
ae3a197e3d0bfe David Howells 2012-03-28 103 {
ae3a197e3d0bfe David Howells 2012-03-28 104 unsigned long prev;
ae3a197e3d0bfe David Howells 2012-03-28 105
ae3a197e3d0bfe David Howells 2012-03-28 106 __asm__ __volatile__(
ae3a197e3d0bfe David Howells 2012-03-28 107 "1: lwarx %0,0,%2\n"
26760fc19a7e66 Boqun Feng 2015-12-15 108 " stwcx. %3,0,%2\n"
26760fc19a7e66 Boqun Feng 2015-12-15 109 " bne- 1b"
26760fc19a7e66 Boqun Feng 2015-12-15 110 : "=&r" (prev), "+m" (*p)
ae3a197e3d0bfe David Howells 2012-03-28 111 : "r" (p), "r" (val)
26760fc19a7e66 Boqun Feng 2015-12-15 112 : "cc");
ae3a197e3d0bfe David Howells 2012-03-28 113
ae3a197e3d0bfe David Howells 2012-03-28 114 return prev;
ae3a197e3d0bfe David Howells 2012-03-28 115 }
ae3a197e3d0bfe David Howells 2012-03-28 116
ae3a197e3d0bfe David Howells 2012-03-28 117 #ifdef CONFIG_PPC64
ae3a197e3d0bfe David Howells 2012-03-28 118 static __always_inline unsigned long
26760fc19a7e66 Boqun Feng 2015-12-15 119 __xchg_u64_local(volatile void *p, unsigned long val)
ae3a197e3d0bfe David Howells 2012-03-28 120 {
ae3a197e3d0bfe David Howells 2012-03-28 121 unsigned long prev;
ae3a197e3d0bfe David Howells 2012-03-28 122
ae3a197e3d0bfe David Howells 2012-03-28 123 __asm__ __volatile__(
ae3a197e3d0bfe David Howells 2012-03-28 124 "1: ldarx %0,0,%2 \n"
ae3a197e3d0bfe David Howells 2012-03-28 125 " stdcx. %3,0,%2 \n\
ae3a197e3d0bfe David Howells 2012-03-28 126 bne- 1b"
ae3a197e3d0bfe David Howells 2012-03-28 127 : "=&r" (prev), "+m" (*(volatile unsigned long *)p)
ae3a197e3d0bfe David Howells 2012-03-28 128 : "r" (p), "r" (val)
ae3a197e3d0bfe David Howells 2012-03-28 129 : "cc", "memory");
ae3a197e3d0bfe David Howells 2012-03-28 130
ae3a197e3d0bfe David Howells 2012-03-28 131 return prev;
ae3a197e3d0bfe David Howells 2012-03-28 132 }
ae3a197e3d0bfe David Howells 2012-03-28 133
ae3a197e3d0bfe David Howells 2012-03-28 134 static __always_inline unsigned long
26760fc19a7e66 Boqun Feng 2015-12-15 135 __xchg_u64_relaxed(u64 *p, unsigned long val)
ae3a197e3d0bfe David Howells 2012-03-28 136 {
ae3a197e3d0bfe David Howells 2012-03-28 137 unsigned long prev;
ae3a197e3d0bfe David Howells 2012-03-28 138
ae3a197e3d0bfe David Howells 2012-03-28 139 __asm__ __volatile__(
ae3a197e3d0bfe David Howells 2012-03-28 140 "1: ldarx %0,0,%2\n"
26760fc19a7e66 Boqun Feng 2015-12-15 141 " stdcx. %3,0,%2\n"
26760fc19a7e66 Boqun Feng 2015-12-15 142 " bne- 1b"
26760fc19a7e66 Boqun Feng 2015-12-15 143 : "=&r" (prev), "+m" (*p)
ae3a197e3d0bfe David Howells 2012-03-28 144 : "r" (p), "r" (val)
26760fc19a7e66 Boqun Feng 2015-12-15 145 : "cc");
ae3a197e3d0bfe David Howells 2012-03-28 146
ae3a197e3d0bfe David Howells 2012-03-28 147 return prev;
ae3a197e3d0bfe David Howells 2012-03-28 148 }
ae3a197e3d0bfe David Howells 2012-03-28 149 #endif
ae3a197e3d0bfe David Howells 2012-03-28 150
ae3a197e3d0bfe David Howells 2012-03-28 151 static __always_inline unsigned long
d0563a1297e234 Pan Xinhui 2016-04-27 152 __xchg_local(void *ptr, unsigned long x, unsigned int size)
ae3a197e3d0bfe David Howells 2012-03-28 153 {
ae3a197e3d0bfe David Howells 2012-03-28 154 switch (size) {
d0563a1297e234 Pan Xinhui 2016-04-27 155 case 1:
d0563a1297e234 Pan Xinhui 2016-04-27 156 return __xchg_u8_local(ptr, x);
d0563a1297e234 Pan Xinhui 2016-04-27 157 case 2:
d0563a1297e234 Pan Xinhui 2016-04-27 158 return __xchg_u16_local(ptr, x);
ae3a197e3d0bfe David Howells 2012-03-28 159 case 4:
26760fc19a7e66 Boqun Feng 2015-12-15 160 return __xchg_u32_local(ptr, x);
ae3a197e3d0bfe David Howells 2012-03-28 161 #ifdef CONFIG_PPC64
ae3a197e3d0bfe David Howells 2012-03-28 162 case 8:
26760fc19a7e66 Boqun Feng 2015-12-15 163 return __xchg_u64_local(ptr, x);
ae3a197e3d0bfe David Howells 2012-03-28 164 #endif
ae3a197e3d0bfe David Howells 2012-03-28 165 }
10d8b1480e6966 pan xinhui 2016-02-23 @166 BUILD_BUG_ON_MSG(1, "Unsupported size for __xchg");
ae3a197e3d0bfe David Howells 2012-03-28 167 return x;
ae3a197e3d0bfe David Howells 2012-03-28 168 }
ae3a197e3d0bfe David Howells 2012-03-28 169
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (30148 bytes)
Powered by blists - more mailing lists