Hi Krishna, kernel test robot noticed the following build errors: [auto build test ERROR on pci/for-linus] [also build test ERROR on robh/for-next rafael-pm/linux-next linus/master v6.5-rc7 next-20230822] [cannot apply to pci/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Krishna-chaitanya-chundru/dt-bindings-pci-qcom-Add-opp-table/20230822-232104 base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git for-linus patch link: https://lore.kernel.org/r/1692717141-32743-4-git-send-email-quic_krichai%40quicinc.com patch subject: [PATCH v4 3/4] OPP: Add api to retrieve opps which is at most the provided level config: arc-allnoconfig (https://download.01.org/0day-ci/archive/20230823/202308230954.jyXY61U7-lkp@xxxxxxxxx/config) compiler: arc-elf-gcc (GCC) 13.2.0 reproduce: (https://download.01.org/0day-ci/archive/20230823/202308230954.jyXY61U7-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202308230954.jyXY61U7-lkp@xxxxxxxxx/ All error/warnings (new ones prefixed by >>): 263 | { | ^ include/linux/signal.h:268:13: error: storage class specified for parameter 'flush_sigqueue' 268 | extern void flush_sigqueue(struct sigpending *queue); | ^~~~~~~~~~~~~~ include/linux/signal.h:272:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 272 | { | ^ include/linux/signal.h:276:1: warning: empty declaration 276 | struct timespec; | ^~~~~~ include/linux/signal.h:277:1: warning: empty declaration 277 | struct pt_regs; | ^~~~~~ include/linux/signal.h:278:1: warning: empty declaration 278 | enum pid_type; | ^~~~ include/linux/signal.h:280:12: error: storage class specified for parameter 'next_signal' 280 | extern int next_signal(struct sigpending *pending, sigset_t *mask); | ^~~~~~~~~~~ include/linux/signal.h:281:12: error: storage class specified for parameter 'do_send_sig_info' 281 | extern int do_send_sig_info(int sig, struct kernel_siginfo *info, | ^~~~~~~~~~~~~~~~ include/linux/signal.h:283:12: error: storage class specified for parameter 'group_send_sig_info' 283 | extern int group_send_sig_info(int sig, struct kernel_siginfo *info, | ^~~~~~~~~~~~~~~~~~~ include/linux/signal.h:285:12: error: storage class specified for parameter 'send_signal_locked' 285 | extern int send_signal_locked(int sig, struct kernel_siginfo *info, | ^~~~~~~~~~~~~~~~~~ include/linux/signal.h:287:12: error: storage class specified for parameter 'sigprocmask' 287 | extern int sigprocmask(int, sigset_t *, sigset_t *); | ^~~~~~~~~~~ include/linux/signal.h:288:13: error: storage class specified for parameter 'set_current_blocked' 288 | extern void set_current_blocked(sigset_t *); | ^~~~~~~~~~~~~~~~~~~ include/linux/signal.h:289:13: error: storage class specified for parameter '__set_current_blocked' 289 | extern void __set_current_blocked(const sigset_t *); | ^~~~~~~~~~~~~~~~~~~~~ include/linux/signal.h:290:12: error: storage class specified for parameter 'show_unhandled_signals' 290 | extern int show_unhandled_signals; | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/signal.h:292:13: error: storage class specified for parameter 'get_signal' 292 | extern bool get_signal(struct ksignal *ksig); | ^~~~~~~~~~ include/linux/signal.h:293:13: error: storage class specified for parameter 'signal_setup_done' 293 | extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping); | ^~~~~~~~~~~~~~~~~ include/linux/signal.h:294:13: error: storage class specified for parameter 'exit_signals' 294 | extern void exit_signals(struct task_struct *tsk); | ^~~~~~~~~~~~ include/linux/signal.h:295:13: error: storage class specified for parameter 'kernel_sigaction' 295 | extern void kernel_sigaction(int, __sighandler_t); | ^~~~~~~~~~~~~~~~ include/linux/signal.h:301:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 301 | { | ^ include/linux/signal.h:311:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 311 | { | ^ include/linux/signal.h:321:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 321 | { | ^ include/linux/signal.h:325:27: error: storage class specified for parameter 'sighand_cachep' 325 | extern struct kmem_cache *sighand_cachep; | ^~~~~~~~~~~~~~ include/linux/signal.h:327:13: error: storage class specified for parameter 'unhandled_signal' 327 | extern bool unhandled_signal(struct task_struct *tsk, int sig); | ^~~~~~~~~~~~~~~~ include/linux/signal.h:470:56: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 470 | static inline bool sigaltstack_size_valid(size_t size) { return true; } | ^ include/linux/signal.h:474:1: warning: empty declaration 474 | struct seq_file; | ^~~~~~ include/linux/signal.h:475:13: error: storage class specified for parameter 'render_sigset_t' 475 | extern void render_sigset_t(struct seq_file *, const char *, sigset_t *); | ^~~~~~~~~~~~~~~ include/linux/signal.h:487:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 487 | { | ^ In file included from include/linux/sched/signal.h:8: include/linux/sched/jobctl.h:7:1: warning: empty declaration 7 | struct task_struct; | ^~~~~~ include/linux/sched/jobctl.h:43:13: error: storage class specified for parameter 'task_set_jobctl_pending' 43 | extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask); | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/sched/jobctl.h:44:13: error: storage class specified for parameter 'task_clear_jobctl_trapping' 44 | extern void task_clear_jobctl_trapping(struct task_struct *task); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/sched/jobctl.h:45:13: error: storage class specified for parameter 'task_clear_jobctl_pending' 45 | extern void task_clear_jobctl_pending(struct task_struct *task, unsigned long mask); | ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/uaccess.h:5, from include/linux/sched/task.h:11, from include/linux/sched/signal.h:9: include/linux/fault-inject-usercopy.h:18:47: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 18 | static inline bool should_fail_usercopy(void) { return false; } | ^ In file included from include/linux/uaccess.h:11: >> arch/arc/include/asm/uaccess.h:140:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 140 | { | ^ arch/arc/include/asm/uaccess.h:367:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 367 | { | ^ arch/arc/include/asm/uaccess.h:588:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 588 | { | ^ In file included from include/asm-generic/uaccess.h:11, from arch/arc/include/asm/uaccess.h:641: include/asm-generic/access_ok.h:32:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 32 | { | ^ include/asm-generic/uaccess.h:144:12: error: storage class specified for parameter '__put_user_bad' 144 | extern int __put_user_bad(void) __attribute__((noreturn)); | ^~~~~~~~~~~~~~ include/asm-generic/uaccess.h:205:12: error: storage class specified for parameter '__get_user_bad' 205 | extern int __get_user_bad(void) __attribute__((noreturn)); | ^~~~~~~~~~~~~~ include/asm-generic/uaccess.h:221:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 221 | { | ^ In file included from ./arch/arc/include/generated/asm/extable.h:1, from include/asm-generic/uaccess.h:229: include/asm-generic/extable.h:18:1: warning: empty declaration 18 | struct exception_table_entry | ^~~~~~ include/asm-generic/extable.h:24:1: warning: empty declaration 24 | struct pt_regs; | ^~~~~~ include/asm-generic/extable.h:25:12: error: storage class specified for parameter 'fixup_exception' 25 | extern int fixup_exception(struct pt_regs *regs); | ^~~~~~~~~~~~~~~ In file included from include/linux/compiler_types.h:80, from <command-line>: include/linux/compiler_attributes.h:356:41: error: expected declaration specifiers before '__attribute__' 356 | #define __must_check __attribute__((__warn_unused_result__)) | ^~~~~~~~~~~~~ include/asm-generic/uaccess.h:231:1: note: in expansion of macro '__must_check' 231 | __must_check long strncpy_from_user(char *dst, const char __user *src, | ^~~~~~~~~~~~ include/linux/compiler_attributes.h:356:41: error: expected declaration specifiers before '__attribute__' 356 | #define __must_check __attribute__((__warn_unused_result__)) | ^~~~~~~~~~~~~ include/asm-generic/uaccess.h:233:1: note: in expansion of macro '__must_check' 233 | __must_check long strnlen_user(const char __user *src, long n); | ^~~~~~~~~~~~ include/linux/uaccess.h:82:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 82 | { | ^ include/linux/uaccess.h:94:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 94 | { | ^ include/linux/uaccess.h:122:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 122 | { | ^ include/linux/uaccess.h:132:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 132 | { | ^ include/linux/uaccess.h:144:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 144 | { | ^ include/linux/uaccess.h:164:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 164 | { | ^ include/linux/uaccess.h:181:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 181 | { | ^ include/linux/uaccess.h:189:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 189 | { | ^ include/linux/uaccess.h:202:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 202 | { | ^ include/linux/uaccess.h:209:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 209 | { | ^ include/linux/uaccess.h:214:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 214 | { | ^ include/linux/uaccess.h:226:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 226 | { | ^ include/linux/uaccess.h:236:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 236 | { | ^ include/linux/uaccess.h:249:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 249 | { | ^ include/linux/uaccess.h:281:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 281 | { | ^ include/linux/uaccess.h:292:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 292 | { | ^ include/linux/uaccess.h:298:25: error: storage class specified for parameter 'check_zeroed_user' 298 | extern __must_check int check_zeroed_user(const void __user *from, size_t size); | ^~~~~~~~~~~~~~~~~ include/linux/uaccess.h:350:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 350 | { -- include/linux/page_ref.h:262:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 262 | { | ^ include/linux/page_ref.h:267:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 267 | { | ^ include/linux/page_ref.h:312:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 312 | { | ^ include/linux/page_ref.h:317:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 317 | { | ^ include/linux/page_ref.h:326:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 326 | { | ^ include/linux/page_ref.h:331:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 331 | { | ^ include/linux/page_ref.h:341:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 341 | { | ^ In file included from include/asm-generic/pgtable-nopud.h:7, from include/asm-generic/pgtable-nopmd.h:7, from arch/arc/include/asm/pgtable-levels.h:95, from arch/arc/include/asm/pgtable.h:11, from include/linux/pgtable.h:6, from include/linux/mm.h:29: include/asm-generic/pgtable-nop4d.h:9:31: error: storage class specified for parameter 'p4d_t' 9 | typedef struct { pgd_t pgd; } p4d_t; | ^~~~~ include/asm-generic/pgtable-nop4d.h:21:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 21 | static inline int pgd_none(pgd_t pgd) { return 0; } | ^ include/asm-generic/pgtable-nop4d.h:22:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 22 | static inline int pgd_bad(pgd_t pgd) { return 0; } | ^ include/asm-generic/pgtable-nop4d.h:23:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 23 | static inline int pgd_present(pgd_t pgd) { return 1; } | ^ include/asm-generic/pgtable-nop4d.h:24:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 24 | static inline void pgd_clear(pgd_t *pgd) { } | ^ include/asm-generic/pgtable-nop4d.h:35:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 35 | static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) | ^ include/asm-generic/pgtable-nopud.h:16:18: error: expected specifier-qualifier-list before 'p4d_t' 16 | typedef struct { p4d_t p4d; } pud_t; | ^~~~~ include/asm-generic/pgtable-nopud.h:16:31: error: storage class specified for parameter 'pud_t' 16 | typedef struct { p4d_t p4d; } pud_t; | ^~~~~ include/asm-generic/pgtable-nopud.h:28:28: error: expected declaration specifiers or '...' before 'p4d_t' 28 | static inline int p4d_none(p4d_t p4d) { return 0; } | ^~~~~ include/asm-generic/pgtable-nopud.h:29:27: error: expected declaration specifiers or '...' before 'p4d_t' 29 | static inline int p4d_bad(p4d_t p4d) { return 0; } | ^~~~~ include/asm-generic/pgtable-nopud.h:30:31: error: expected declaration specifiers or '...' before 'p4d_t' 30 | static inline int p4d_present(p4d_t p4d) { return 1; } | ^~~~~ include/asm-generic/pgtable-nopud.h:31:30: error: expected declaration specifiers or '...' before 'p4d_t' 31 | static inline void p4d_clear(p4d_t *p4d) { } | ^~~~~ include/asm-generic/pgtable-nopud.h:42:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 42 | static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address) | ^ include/asm-generic/pgtable-nopmd.h:9:1: warning: empty declaration 9 | struct mm_struct; | ^~~~~~ include/asm-generic/pgtable-nopmd.h:18:18: error: expected specifier-qualifier-list before 'pud_t' 18 | typedef struct { pud_t pud; } pmd_t; | ^~~~~ include/asm-generic/pgtable-nopmd.h:18:31: error: storage class specified for parameter 'pmd_t' 18 | typedef struct { pud_t pud; } pmd_t; | ^~~~~ include/asm-generic/pgtable-nopmd.h:30:28: error: expected declaration specifiers or '...' before 'pud_t' 30 | static inline int pud_none(pud_t pud) { return 0; } | ^~~~~ include/asm-generic/pgtable-nopmd.h:31:27: error: expected declaration specifiers or '...' before 'pud_t' 31 | static inline int pud_bad(pud_t pud) { return 0; } | ^~~~~ include/asm-generic/pgtable-nopmd.h:32:31: error: expected declaration specifiers or '...' before 'pud_t' 32 | static inline int pud_present(pud_t pud) { return 1; } | ^~~~~ include/asm-generic/pgtable-nopmd.h:33:28: error: expected declaration specifiers or '...' before 'pud_t' 33 | static inline int pud_user(pud_t pud) { return 0; } | ^~~~~ include/asm-generic/pgtable-nopmd.h:34:28: error: expected declaration specifiers or '...' before 'pud_t' 34 | static inline int pud_leaf(pud_t pud) { return 0; } | ^~~~~ include/asm-generic/pgtable-nopmd.h:35:30: error: expected declaration specifiers or '...' before 'pud_t' 35 | static inline void pud_clear(pud_t *pud) { } | ^~~~~ include/asm-generic/pgtable-nopmd.h:46:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 46 | static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) | ^ include/asm-generic/pgtable-nopmd.h:63:51: error: expected declaration specifiers or '...' before 'pmd_t' 63 | static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) | ^~~~~ In file included from arch/arc/include/asm/pgtable.h:12: >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:88:1: note: in expansion of macro 'PTE_BIT_FUNC' 88 | PTE_BIT_FUNC(mknotpresent, &= ~(_PAGE_PRESENT)); | ^~~~~~~~~~~~ >> arch/arc/include/asm/pgtable-bits-arcv2.h:88:52: error: expected declaration specifiers before ';' token 88 | PTE_BIT_FUNC(mknotpresent, &= ~(_PAGE_PRESENT)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:89:1: note: in expansion of macro 'PTE_BIT_FUNC' 89 | PTE_BIT_FUNC(wrprotect, &= ~(_PAGE_WRITE)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:89:43: error: expected declaration specifiers before ';' token 89 | PTE_BIT_FUNC(wrprotect, &= ~(_PAGE_WRITE)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:90:1: note: in expansion of macro 'PTE_BIT_FUNC' 90 | PTE_BIT_FUNC(mkwrite, |= (_PAGE_WRITE)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:90:42: error: expected declaration specifiers before ';' token 90 | PTE_BIT_FUNC(mkwrite, |= (_PAGE_WRITE)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:91:1: note: in expansion of macro 'PTE_BIT_FUNC' 91 | PTE_BIT_FUNC(mkclean, &= ~(_PAGE_DIRTY)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:91:43: error: expected declaration specifiers before ';' token 91 | PTE_BIT_FUNC(mkclean, &= ~(_PAGE_DIRTY)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:92:1: note: in expansion of macro 'PTE_BIT_FUNC' 92 | PTE_BIT_FUNC(mkdirty, |= (_PAGE_DIRTY)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:92:42: error: expected declaration specifiers before ';' token 92 | PTE_BIT_FUNC(mkdirty, |= (_PAGE_DIRTY)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:93:1: note: in expansion of macro 'PTE_BIT_FUNC' 93 | PTE_BIT_FUNC(mkold, &= ~(_PAGE_ACCESSED)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:93:46: error: expected declaration specifiers before ';' token 93 | PTE_BIT_FUNC(mkold, &= ~(_PAGE_ACCESSED)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:94:1: note: in expansion of macro 'PTE_BIT_FUNC' 94 | PTE_BIT_FUNC(mkyoung, |= (_PAGE_ACCESSED)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:94:45: error: expected declaration specifiers before ';' token 94 | PTE_BIT_FUNC(mkyoung, |= (_PAGE_ACCESSED)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:95:1: note: in expansion of macro 'PTE_BIT_FUNC' 95 | PTE_BIT_FUNC(mkspecial, |= (_PAGE_SPECIAL)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:95:44: error: expected declaration specifiers before ';' token 95 | PTE_BIT_FUNC(mkspecial, |= (_PAGE_SPECIAL)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:96:1: note: in expansion of macro 'PTE_BIT_FUNC' 96 | PTE_BIT_FUNC(mkhuge, |= (_PAGE_HW_SZ)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:96:42: error: expected declaration specifiers before ';' token 96 | PTE_BIT_FUNC(mkhuge, |= (_PAGE_HW_SZ)); | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:99:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 99 | { | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:105:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 105 | { | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:136:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 136 | { | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:140:1: note: in expansion of macro 'PTE_BIT_FUNC' 140 | PTE_BIT_FUNC(swp_mkexclusive, |= (_PAGE_SWP_EXCLUSIVE)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:140:56: error: expected declaration specifiers before ';' token 140 | PTE_BIT_FUNC(swp_mkexclusive, |= (_PAGE_SWP_EXCLUSIVE)); | ^ >> arch/arc/include/asm/pgtable-bits-arcv2.h:86:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 86 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | ^ arch/arc/include/asm/pgtable-bits-arcv2.h:141:1: note: in expansion of macro 'PTE_BIT_FUNC' 141 | PTE_BIT_FUNC(swp_clear_exclusive, &= ~(_PAGE_SWP_EXCLUSIVE)); | ^~~~~~~~~~~~ arch/arc/include/asm/pgtable-bits-arcv2.h:141:61: error: expected declaration specifiers before ';' token 141 | PTE_BIT_FUNC(swp_clear_exclusive, &= ~(_PAGE_SWP_EXCLUSIVE)); | ^ >> arch/arc/include/asm/pgtable.h:24:13: error: storage class specified for parameter 'empty_zero_page' 24 | extern char empty_zero_page[PAGE_SIZE]; | ^~~~~~~~~~~~~~~ >> arch/arc/include/asm/pgtable.h:27:14: error: storage class specified for parameter 'swapper_pg_dir' 27 | extern pgd_t swapper_pg_dir[] __aligned(PAGE_SIZE); | ^~~~~~~~~~~~~~ >> arch/arc/include/asm/pgtable.h:27:14: error: alignment may not be specified for 'swapper_pg_dir' In file included from include/linux/pgtable.h:14: include/asm-generic/pgtable_uffd.h:6:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 6 | { | ^ include/asm-generic/pgtable_uffd.h:10:40: error: expected declaration specifiers or '...' before 'pmd_t' 10 | static __always_inline int pmd_uffd_wp(pmd_t pmd) | ^~~~~ include/asm-generic/pgtable_uffd.h:16:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 16 | { | ^ include/asm-generic/pgtable_uffd.h:20:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pmd_mkuffd_wp' 20 | static __always_inline pmd_t pmd_mkuffd_wp(pmd_t pmd) | ^~~~~~~~~~~~~ include/asm-generic/pgtable_uffd.h:26:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 26 | { | ^ include/asm-generic/pgtable_uffd.h:30:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pmd_clear_uffd_wp' 30 | static __always_inline pmd_t pmd_clear_uffd_wp(pmd_t pmd) | ^~~~~~~~~~~~~~~~~ include/asm-generic/pgtable_uffd.h:36:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 36 | { | ^ include/asm-generic/pgtable_uffd.h:41:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 41 | { | ^ include/asm-generic/pgtable_uffd.h:46:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 46 | { | ^ include/asm-generic/pgtable_uffd.h:50:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pmd_swp_mkuffd_wp' 50 | static inline pmd_t pmd_swp_mkuffd_wp(pmd_t pmd) | ^~~~~~~~~~~~~~~~~ include/asm-generic/pgtable_uffd.h:55:35: error: expected declaration specifiers or '...' before 'pmd_t' 55 | static inline int pmd_swp_uffd_wp(pmd_t pmd) | ^~~~~ include/asm-generic/pgtable_uffd.h:60:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pmd_swp_clear_uffd_wp' 60 | static inline pmd_t pmd_swp_clear_uffd_wp(pmd_t pmd) | ^~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/pgtable.h:15: include/linux/page_table_check.h:119:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 119 | { | ^ include/linux/page_table_check.h:123:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 123 | { | ^ include/linux/page_table_check.h:128:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 128 | { | ^ include/linux/page_table_check.h:132:67: error: expected declaration specifiers or '...' before 'pmd_t' 132 | unsigned long addr, pmd_t pmd) | ^~~~~ include/linux/page_table_check.h:137:67: error: expected declaration specifiers or '...' before 'pud_t' 137 | unsigned long addr, pud_t pud) | ^~~~~ include/linux/page_table_check.h:144:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 144 | { | ^ include/linux/page_table_check.h:148:65: error: expected declaration specifiers or '...' before 'pmd_t' 148 | unsigned long addr, pmd_t *pmdp, | ^~~~~ include/linux/page_table_check.h:149:45: error: expected declaration specifiers or '...' before 'pmd_t' 149 | pmd_t pmd) | ^~~~~ include/linux/page_table_check.h:154:65: error: expected declaration specifiers or '...' before 'pud_t' 154 | unsigned long addr, pud_t *pudp, | ^~~~~ include/linux/page_table_check.h:155:45: error: expected declaration specifiers or '...' before 'pud_t' 155 | pud_t pud) | ^~~~~ include/linux/page_table_check.h:161:53: error: expected declaration specifiers or '...' before 'pmd_t' 161 | pmd_t pmd) | ^~~~~ include/linux/pgtable.h:63:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 63 | { | ^ include/linux/pgtable.h:70:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 70 | { | ^ include/linux/pgtable.h:78:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 78 | { | ^ include/linux/pgtable.h:90:40: error: expected declaration specifiers or '...' before 'pmd_t' 90 | static inline pte_t *pte_offset_kernel(pmd_t *pmd, unsigned long address) | ^~~~~ include/linux/pgtable.h:105:32: error: expected declaration specifiers or '...' before 'pmd_t' 105 | static inline pte_t *__pte_map(pmd_t *pmd, unsigned long address) | ^~~~~ include/linux/pgtable.h:110:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 110 | { | ^ include/linux/pgtable.h:133:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 133 | { | ^ include/linux/pgtable.h:135:2: error: expected declaration specifiers before ';' token 135 | }; | ^ include/linux/pgtable.h:159:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 159 | static inline pmd_t *pmd_off(struct mm_struct *mm, unsigned long va) | ^ include/linux/pgtable.h:164:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 164 | static inline pmd_t *pmd_off_k(unsigned long va) .. vim +140 arch/arc/include/asm/uaccess.h 0a5eae458e923a Vineet Gupta 2013-01-18 100 0a5eae458e923a Vineet Gupta 2013-01-18 101 #define __arc_put_user_one(src, dst, op, ret) \ 0a5eae458e923a Vineet Gupta 2013-01-18 102 __asm__ __volatile__( \ 0a5eae458e923a Vineet Gupta 2013-01-18 103 "1: "op" %1,[%2]\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 104 "2: ;nop\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 105 " .section .fixup, \"ax\"\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 106 " .align 4\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 107 "3: mov %0, %3\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 108 " j 2b\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 109 " .previous\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 110 " .section __ex_table, \"a\"\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 111 " .align 4\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 112 " .word 1b,3b\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 113 " .previous\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 114 \ 0a5eae458e923a Vineet Gupta 2013-01-18 115 : "+r" (ret) \ 0a5eae458e923a Vineet Gupta 2013-01-18 116 : "r" (src), "r" (dst), "ir" (-EFAULT)) 0a5eae458e923a Vineet Gupta 2013-01-18 117 0a5eae458e923a Vineet Gupta 2013-01-18 118 #define __arc_put_user_one_64(src, dst, ret) \ 0a5eae458e923a Vineet Gupta 2013-01-18 119 __asm__ __volatile__( \ 0a5eae458e923a Vineet Gupta 2013-01-18 120 "1: st %1,[%2]\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 121 "4: st %R1,[%2, 4]\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 122 "2: ;nop\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 123 " .section .fixup, \"ax\"\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 124 " .align 4\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 125 "3: mov %0, %3\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 126 " j 2b\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 127 " .previous\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 128 " .section __ex_table, \"a\"\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 129 " .align 4\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 130 " .word 1b,3b\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 131 " .word 4b,3b\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 132 " .previous\n" \ 0a5eae458e923a Vineet Gupta 2013-01-18 133 \ 0a5eae458e923a Vineet Gupta 2013-01-18 134 : "+r" (ret) \ 0a5eae458e923a Vineet Gupta 2013-01-18 135 : "r" (src), "r" (dst), "ir" (-EFAULT)) 0a5eae458e923a Vineet Gupta 2013-01-18 136 0a5eae458e923a Vineet Gupta 2013-01-18 137 43697cb0973da1 Vineet Gupta 2013-01-18 138 static inline unsigned long e13909a4acc4b6 Vineet Gupta 2017-03-29 139 raw_copy_from_user(void *to, const void __user *from, unsigned long n) 43697cb0973da1 Vineet Gupta 2013-01-18 @140 { 43697cb0973da1 Vineet Gupta 2013-01-18 141 long res = 0; 43697cb0973da1 Vineet Gupta 2013-01-18 142 char val; 43697cb0973da1 Vineet Gupta 2013-01-18 143 unsigned long tmp1, tmp2, tmp3, tmp4; 43697cb0973da1 Vineet Gupta 2013-01-18 144 unsigned long orig_n = n; 43697cb0973da1 Vineet Gupta 2013-01-18 145 43697cb0973da1 Vineet Gupta 2013-01-18 146 if (n == 0) 43697cb0973da1 Vineet Gupta 2013-01-18 147 return 0; 43697cb0973da1 Vineet Gupta 2013-01-18 148 43697cb0973da1 Vineet Gupta 2013-01-18 149 /* unaligned */ 43697cb0973da1 Vineet Gupta 2013-01-18 150 if (((unsigned long)to & 0x3) || ((unsigned long)from & 0x3)) { 43697cb0973da1 Vineet Gupta 2013-01-18 151 43697cb0973da1 Vineet Gupta 2013-01-18 152 unsigned char tmp; 43697cb0973da1 Vineet Gupta 2013-01-18 153 43697cb0973da1 Vineet Gupta 2013-01-18 154 __asm__ __volatile__ ( 43697cb0973da1 Vineet Gupta 2013-01-18 155 " mov.f lp_count, %0 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 156 " lpnz 2f \n" 43697cb0973da1 Vineet Gupta 2013-01-18 157 "1: ldb.ab %1, [%3, 1] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 158 " stb.ab %1, [%2, 1] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 159 " sub %0,%0,1 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 160 "2: ;nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 161 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 162 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 163 "3: j 2b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 164 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 165 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 166 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 167 " .word 1b, 3b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 168 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 169 43697cb0973da1 Vineet Gupta 2013-01-18 170 : "+r" (n), 43697cb0973da1 Vineet Gupta 2013-01-18 171 /* 43697cb0973da1 Vineet Gupta 2013-01-18 172 * Note as an '&' earlyclobber operand to make sure the 43697cb0973da1 Vineet Gupta 2013-01-18 173 * temporary register inside the loop is not the same as 43697cb0973da1 Vineet Gupta 2013-01-18 174 * FROM or TO. 43697cb0973da1 Vineet Gupta 2013-01-18 175 */ 43697cb0973da1 Vineet Gupta 2013-01-18 176 "=&r" (tmp), "+r" (to), "+r" (from) 43697cb0973da1 Vineet Gupta 2013-01-18 177 : d5e3c55e01d8b1 Vineet Gupta 2019-02-05 178 : "lp_count", "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 179 43697cb0973da1 Vineet Gupta 2013-01-18 180 return n; 43697cb0973da1 Vineet Gupta 2013-01-18 181 } 43697cb0973da1 Vineet Gupta 2013-01-18 182 43697cb0973da1 Vineet Gupta 2013-01-18 183 /* 43697cb0973da1 Vineet Gupta 2013-01-18 184 * Hand-crafted constant propagation to reduce code sz of the 43697cb0973da1 Vineet Gupta 2013-01-18 185 * laddered copy 16x,8,4,2,1 43697cb0973da1 Vineet Gupta 2013-01-18 186 */ 43697cb0973da1 Vineet Gupta 2013-01-18 187 if (__builtin_constant_p(orig_n)) { 43697cb0973da1 Vineet Gupta 2013-01-18 188 res = orig_n; 43697cb0973da1 Vineet Gupta 2013-01-18 189 43697cb0973da1 Vineet Gupta 2013-01-18 190 if (orig_n / 16) { 43697cb0973da1 Vineet Gupta 2013-01-18 191 orig_n = orig_n % 16; 43697cb0973da1 Vineet Gupta 2013-01-18 192 43697cb0973da1 Vineet Gupta 2013-01-18 193 __asm__ __volatile__( 43697cb0973da1 Vineet Gupta 2013-01-18 194 " lsr lp_count, %7,4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 195 " lp 3f \n" 43697cb0973da1 Vineet Gupta 2013-01-18 196 "1: ld.ab %3, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 197 "11: ld.ab %4, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 198 "12: ld.ab %5, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 199 "13: ld.ab %6, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 200 " st.ab %3, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 201 " st.ab %4, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 202 " st.ab %5, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 203 " st.ab %6, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 204 " sub %0,%0,16 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 205 "3: ;nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 206 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 207 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 208 "4: j 3b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 209 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 210 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 211 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 212 " .word 1b, 4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 213 " .word 11b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 214 " .word 12b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 215 " .word 13b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 216 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 217 : "+r" (res), "+r"(to), "+r"(from), 43697cb0973da1 Vineet Gupta 2013-01-18 218 "=r"(tmp1), "=r"(tmp2), "=r"(tmp3), "=r"(tmp4) 43697cb0973da1 Vineet Gupta 2013-01-18 219 : "ir"(n) 43697cb0973da1 Vineet Gupta 2013-01-18 220 : "lp_count", "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 221 } 43697cb0973da1 Vineet Gupta 2013-01-18 222 if (orig_n / 8) { 43697cb0973da1 Vineet Gupta 2013-01-18 223 orig_n = orig_n % 8; 43697cb0973da1 Vineet Gupta 2013-01-18 224 43697cb0973da1 Vineet Gupta 2013-01-18 225 __asm__ __volatile__( 43697cb0973da1 Vineet Gupta 2013-01-18 226 "14: ld.ab %3, [%2,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 227 "15: ld.ab %4, [%2,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 228 " st.ab %3, [%1,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 229 " st.ab %4, [%1,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 230 " sub %0,%0,8 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 231 "31: ;nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 232 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 233 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 234 "4: j 31b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 235 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 236 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 237 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 238 " .word 14b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 239 " .word 15b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 240 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 241 : "+r" (res), "+r"(to), "+r"(from), 43697cb0973da1 Vineet Gupta 2013-01-18 242 "=r"(tmp1), "=r"(tmp2) 43697cb0973da1 Vineet Gupta 2013-01-18 243 : 43697cb0973da1 Vineet Gupta 2013-01-18 244 : "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 245 } 43697cb0973da1 Vineet Gupta 2013-01-18 246 if (orig_n / 4) { 43697cb0973da1 Vineet Gupta 2013-01-18 247 orig_n = orig_n % 4; 43697cb0973da1 Vineet Gupta 2013-01-18 248 43697cb0973da1 Vineet Gupta 2013-01-18 249 __asm__ __volatile__( 43697cb0973da1 Vineet Gupta 2013-01-18 250 "16: ld.ab %3, [%2,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 251 " st.ab %3, [%1,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 252 " sub %0,%0,4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 253 "32: ;nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 254 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 255 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 256 "4: j 32b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 257 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 258 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 259 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 260 " .word 16b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 261 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 262 : "+r" (res), "+r"(to), "+r"(from), "=r"(tmp1) 43697cb0973da1 Vineet Gupta 2013-01-18 263 : 43697cb0973da1 Vineet Gupta 2013-01-18 264 : "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 265 } 43697cb0973da1 Vineet Gupta 2013-01-18 266 if (orig_n / 2) { 43697cb0973da1 Vineet Gupta 2013-01-18 267 orig_n = orig_n % 2; 43697cb0973da1 Vineet Gupta 2013-01-18 268 43697cb0973da1 Vineet Gupta 2013-01-18 269 __asm__ __volatile__( 43697cb0973da1 Vineet Gupta 2013-01-18 270 "17: ldw.ab %3, [%2,2] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 271 " stw.ab %3, [%1,2] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 272 " sub %0,%0,2 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 273 "33: ;nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 274 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 275 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 276 "4: j 33b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 277 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 278 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 279 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 280 " .word 17b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 281 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 282 : "+r" (res), "+r"(to), "+r"(from), "=r"(tmp1) 43697cb0973da1 Vineet Gupta 2013-01-18 283 : 43697cb0973da1 Vineet Gupta 2013-01-18 284 : "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 285 } 43697cb0973da1 Vineet Gupta 2013-01-18 286 if (orig_n & 1) { 43697cb0973da1 Vineet Gupta 2013-01-18 287 __asm__ __volatile__( 43697cb0973da1 Vineet Gupta 2013-01-18 288 "18: ldb.ab %3, [%2,2] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 289 " stb.ab %3, [%1,2] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 290 " sub %0,%0,1 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 291 "34: ; nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 292 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 293 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 294 "4: j 34b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 295 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 296 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 297 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 298 " .word 18b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 299 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 300 : "+r" (res), "+r"(to), "+r"(from), "=r"(tmp1) 43697cb0973da1 Vineet Gupta 2013-01-18 301 : 43697cb0973da1 Vineet Gupta 2013-01-18 302 : "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 303 } 43697cb0973da1 Vineet Gupta 2013-01-18 304 } else { /* n is NOT constant, so laddered copy of 16x,8,4,2,1 */ 43697cb0973da1 Vineet Gupta 2013-01-18 305 43697cb0973da1 Vineet Gupta 2013-01-18 306 __asm__ __volatile__( 43697cb0973da1 Vineet Gupta 2013-01-18 307 " mov %0,%3 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 308 " lsr.f lp_count, %3,4 \n" /* 16x bytes */ 43697cb0973da1 Vineet Gupta 2013-01-18 309 " lpnz 3f \n" 43697cb0973da1 Vineet Gupta 2013-01-18 310 "1: ld.ab %5, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 311 "11: ld.ab %6, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 312 "12: ld.ab %7, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 313 "13: ld.ab %8, [%2, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 314 " st.ab %5, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 315 " st.ab %6, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 316 " st.ab %7, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 317 " st.ab %8, [%1, 4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 318 " sub %0,%0,16 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 319 "3: and.f %3,%3,0xf \n" /* stragglers */ 43697cb0973da1 Vineet Gupta 2013-01-18 320 " bz 34f \n" 43697cb0973da1 Vineet Gupta 2013-01-18 321 " bbit0 %3,3,31f \n" /* 8 bytes left */ 43697cb0973da1 Vineet Gupta 2013-01-18 322 "14: ld.ab %5, [%2,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 323 "15: ld.ab %6, [%2,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 324 " st.ab %5, [%1,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 325 " st.ab %6, [%1,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 326 " sub.f %0,%0,8 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 327 "31: bbit0 %3,2,32f \n" /* 4 bytes left */ 43697cb0973da1 Vineet Gupta 2013-01-18 328 "16: ld.ab %5, [%2,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 329 " st.ab %5, [%1,4] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 330 " sub.f %0,%0,4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 331 "32: bbit0 %3,1,33f \n" /* 2 bytes left */ 43697cb0973da1 Vineet Gupta 2013-01-18 332 "17: ldw.ab %5, [%2,2] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 333 " stw.ab %5, [%1,2] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 334 " sub.f %0,%0,2 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 335 "33: bbit0 %3,0,34f \n" 43697cb0973da1 Vineet Gupta 2013-01-18 336 "18: ldb.ab %5, [%2,1] \n" /* 1 byte left */ 43697cb0973da1 Vineet Gupta 2013-01-18 337 " stb.ab %5, [%1,1] \n" 43697cb0973da1 Vineet Gupta 2013-01-18 338 " sub.f %0,%0,1 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 339 "34: ;nop \n" 43697cb0973da1 Vineet Gupta 2013-01-18 340 " .section .fixup, \"ax\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 341 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 342 "4: j 34b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 343 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 344 " .section __ex_table, \"a\" \n" 43697cb0973da1 Vineet Gupta 2013-01-18 345 " .align 4 \n" 43697cb0973da1 Vineet Gupta 2013-01-18 346 " .word 1b, 4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 347 " .word 11b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 348 " .word 12b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 349 " .word 13b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 350 " .word 14b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 351 " .word 15b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 352 " .word 16b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 353 " .word 17b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 354 " .word 18b,4b \n" 43697cb0973da1 Vineet Gupta 2013-01-18 355 " .previous \n" 43697cb0973da1 Vineet Gupta 2013-01-18 356 : "=r" (res), "+r"(to), "+r"(from), "+r"(n), "=r"(val), 43697cb0973da1 Vineet Gupta 2013-01-18 357 "=r"(tmp1), "=r"(tmp2), "=r"(tmp3), "=r"(tmp4) 43697cb0973da1 Vineet Gupta 2013-01-18 358 : 43697cb0973da1 Vineet Gupta 2013-01-18 359 : "lp_count", "memory"); 43697cb0973da1 Vineet Gupta 2013-01-18 360 } 43697cb0973da1 Vineet Gupta 2013-01-18 361 43697cb0973da1 Vineet Gupta 2013-01-18 362 return res; 43697cb0973da1 Vineet Gupta 2013-01-18 363 } 43697cb0973da1 Vineet Gupta 2013-01-18 364 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki