diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-11 15:42:45 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-11 15:42:45 -0800 |
commit | c1eb8f6cff3442b0b7eff5b801c9745ea9abcb14 (patch) | |
tree | b825aebc64cf6fa58b6edbfefdc5a0c670b61b82 /arch/parisc/kernel/toc_asm.S | |
parent | f18e2d877269672597088c308ca75d7d52620028 (diff) | |
parent | 68d247ad38b1ef46bd945a5220fa6d28c901c2f2 (diff) |
Merge tag 'for-5.17/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc architecture updates from Helge Deller:
- Fix lpa and lpa_user defines (John David Anglin)
- Fix symbol lookup of init functions with an __is_kernel() fix (Helge
Deller)
- Fix wrong pdc_toc_pim_11 and pdc_toc_pim_20 definitions (Helge
Deller)
- Add lws_atomic_xchg and lws_atomic_store syscalls (John David Anglin)
- Rewrite light-weight syscall and futex code (John David Anglin)
- Enable TOC (transfer of contents) feature unconditionally (Helge
Deller)
- Improve fault handler messages (John David Anglin)
- Improve build process (Masahiro Yamada)
- Reduce kernel code footprint of user access functions (Helge Deller)
- Fix build error due to outX() macros (Bart Van Assche)
- Ue default_groups in kobj_type in pdc_stable (Greg Kroah-Hartman)
- Default to 16 CPUs on 32-bit kernel (Helge Deller)
* tag 'for-5.17/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
parisc: Default to 16 CPUs on 32-bit kernel
sections: Fix __is_kernel() to include init ranges
parisc: Re-use toc_stack as hpmc_stack
parisc: Enable TOC (transfer of contents) feature unconditionally
parisc: io: Improve the outb(), outw() and outl() macros
parisc: pdc_stable: use default_groups in kobj_type
parisc: Add kgdb io_module to read chars via PDC
parisc: Fix pdc_toc_pim_11 and pdc_toc_pim_20 definitions
parisc: Add lws_atomic_xchg and lws_atomic_store syscalls
parisc: Rewrite light-weight syscall and futex code
parisc: Enhance page fault termination message
parisc: Don't call faulthandler_disabled() in do_page_fault()
parisc: Switch user access functions to signal errors in r29 instead of r8
parisc: Avoid calling faulthandler_disabled() twice
parisc: Fix lpa and lpa_user defines
parisc: Define depi_safe macro
parisc: decompressor: do not copy source files while building
Diffstat (limited to 'arch/parisc/kernel/toc_asm.S')
-rw-r--r-- | arch/parisc/kernel/toc_asm.S | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/arch/parisc/kernel/toc_asm.S b/arch/parisc/kernel/toc_asm.S index e94ba8044190..570f5cef526e 100644 --- a/arch/parisc/kernel/toc_asm.S +++ b/arch/parisc/kernel/toc_asm.S @@ -5,34 +5,25 @@ .level 1.1 #include <asm/assembly.h> -#include <asm/psw.h> #include <linux/threads.h> #include <linux/linkage.h> .text .import toc_intr,code - .import toc_lock,data + .import toc_stack,data .align 16 ENTRY_CFI(toc_handler) - /* - * synchronize CPUs and obtain offset - * for stack setup. - */ - load32 PA(toc_lock),%r1 -0: ldcw,co 0(%r1),%r2 - cmpib,= 0,%r2,0b - nop - addi 1,%r2,%r4 - stw %r4,0(%r1) - addi -1,%r2,%r4 - load32 PA(toc_stack),%sp - /* - * deposit CPU number into stack address, - * so every CPU will have its own stack. - */ - SHLREG %r4,14,%r4 + +#ifdef CONFIG_SMP + /* get per-cpu toc_stack address. */ + mfctl %cr30, %r1 + tophys %r1,%r2 /* task_struct */ + LDREG TASK_TI_CPU(%r2),%r4 /* cpu */ + load32 PA(__per_cpu_offset),%r1 + LDREGX %r4(%r1),%r4 add %r4,%sp,%sp +#endif /* * setup pt_regs on stack and save the @@ -82,7 +73,3 @@ ENDPROC_CFI(toc_handler) */ SYM_DATA(toc_handler_csum, .long 0) SYM_DATA(toc_handler_size, .long . - toc_handler) - - __PAGE_ALIGNED_BSS - .align 64 -SYM_DATA(toc_stack, .block 16384*NR_CPUS) |