Subject: [RFC PATCH 0/7] powerpc: first hack at pcrel addressing

From: Nicholas Piggin <[email-masked]>
Date: Tue, 20 Sep 2022 00:01:42 +1000

pcrel surprisingly didn't take much to get working, at least if
we ignore the hard bits (modules, ftrace, kprobes...). I'd like
to get it merged so we can incrementally fix the missing
bits. The series is functional but not quite polished, so this
is a good point to see if people agree with the approach.

Aside from polishing, the major bit missing before merge is Kconfig
detection of compiler pcrel feature.

Thanks,
Nick

Nicholas Piggin (7):
  powerpc: use 16-bit immediate for STACK_FRAME_REGS_MARKER
  powerpc/64: abstract asm global variable declaration and access
  powerpc/64: provide a helper macro to load r2 with the kernel TOC
  powerpc: add CFUNC assembly label annotation
  powerpc/64s: update generic cpu option name and compiler flags
  powerpc/64s: POWER10 CPU Kconfig build option
  powerpc/64s: Add option to build vmlinux with pcrel addressing

 arch/powerpc/Makefile                         |  22 ++-
 arch/powerpc/boot/opal-calls.S                |   6 +-
 arch/powerpc/boot/ppc_asm.h                   |   4 +
 arch/powerpc/include/asm/atomic.h             |  20 ++-
 arch/powerpc/include/asm/io.h                 |  36 ++++
 arch/powerpc/include/asm/ppc_asm.h            | 157 +++++++++++++++++-
 arch/powerpc/include/asm/ptrace.h             |   6 +-
 arch/powerpc/include/asm/uaccess.h            |  22 +++
 arch/powerpc/kernel/entry_32.S                |   9 +-
 arch/powerpc/kernel/exceptions-64e.S          |  12 +-
 arch/powerpc/kernel/exceptions-64s.S          | 116 ++++++-------
 arch/powerpc/kernel/head_32.h                 |   3 +-
 arch/powerpc/kernel/head_64.S                 |  58 +++++--
 arch/powerpc/kernel/head_booke.h              |   3 +-
 arch/powerpc/kernel/interrupt_64.S            |  56 +++----
 arch/powerpc/kernel/irq.c                     |   4 +
 arch/powerpc/kernel/misc_64.S                 |   2 +-
 arch/powerpc/kernel/optprobes_head.S          |   2 +-
 arch/powerpc/kernel/swsusp_asm64.S            |  22 +--
 arch/powerpc/kernel/trace/ftrace_mprofile.S   |   7 +-
 arch/powerpc/kernel/vdso/gettimeofday.S       |   2 +-
 arch/powerpc/kernel/vector.S                  |  41 ++---
 arch/powerpc/kernel/vmlinux.lds.S             |   6 +
 arch/powerpc/kvm/book3s_hv_rmhandlers.S       |  16 +-
 arch/powerpc/lib/copypage_64.S                |  11 +-
 arch/powerpc/lib/copypage_power7.S            |   4 +-
 arch/powerpc/lib/copyuser_power7.S            |   8 +-
 arch/powerpc/lib/hweight_64.S                 |   8 +-
 arch/powerpc/lib/memcmp_64.S                  |   4 +-
 arch/powerpc/lib/memcpy_power7.S              |   6 +-
 arch/powerpc/lib/string_64.S                  |   9 +-
 arch/powerpc/perf/bhrb.S                      |   2 +-
 arch/powerpc/platforms/Kconfig.cputype        |  30 +++-
 .../powerpc/platforms/powernv/opal-wrappers.S |   2 +-
 arch/powerpc/platforms/pseries/hvCall.S       |  14 +-
 arch/powerpc/xmon/spr_access.S                |   4 +-
 36 files changed, 502 insertions(+), 232 deletions(-)

-- 
2.37.2