Re: [PATCH v4 3/4] OPP: Add api to retrieve opps which is at most the provided level
From: kernel test robot
Date: Tue Aug 22 2023 - 21:14:10 EST
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