Commit c13f946b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'csky-for-linus-5.15-rc6' of git://github.com/c-sky/csky-linux

Pull csky fixes from Guo Ren:
 "Only 5 fixups:

   - Make HAVE_TCM depend on !COMPILE_TEST

   - bitops: Remove duplicate __clear_bit define

   - Select ARCH_WANT_FRAME_POINTERS only if compiler supports it

   - Fixup regs.sr broken in ptrace

   - don't let sigreturn play with priveleged bits of status register"

* tag 'csky-for-linus-5.15-rc6' of git://github.com/c-sky/csky-linux:
  csky: Make HAVE_TCM depend on !COMPILE_TEST
  csky: bitops: Remove duplicate __clear_bit define
  csky: Select ARCH_WANT_FRAME_POINTERS only if compiler supports it
  csky: Fixup regs.sr broken in ptrace
  csky: don't let sigreturn play with priveleged bits of status register
parents 5fd01b72 e21e52ad
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ config CSKY
	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
	select ARCH_USE_BUILTIN_BSWAP
	select ARCH_USE_QUEUED_RWLOCKS
	select ARCH_WANT_FRAME_POINTERS if !CPU_CK610
	select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 && $(cc-option,-mbacktrace)
	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
	select COMMON_CLK
	select CLKSRC_MMIO
@@ -241,6 +241,7 @@ endchoice

menuconfig HAVE_TCM
	bool "Tightly-Coupled/Sram Memory"
	depends on !COMPILE_TEST
	help
	  The implementation are not only used by TCM (Tightly-Coupled Meory)
	  but also used by sram on SOC bus. It follow existed linux tcm
+0 −1
Original line number Diff line number Diff line
@@ -74,7 +74,6 @@ static __always_inline unsigned long __fls(unsigned long x)
 * bug fix, why only could use atomic!!!!
 */
#include <asm-generic/bitops/non-atomic.h>
#define __clear_bit(nr, vaddr) clear_bit(nr, vaddr)

#include <asm-generic/bitops/le.h>
#include <asm-generic/bitops/ext2-atomic.h>
+2 −1
Original line number Diff line number Diff line
@@ -99,7 +99,8 @@ static int gpr_set(struct task_struct *target,
	if (ret)
		return ret;

	regs.sr = task_pt_regs(target)->sr;
	/* BIT(0) of regs.sr is Condition Code/Carry bit */
	regs.sr = (regs.sr & BIT(0)) | (task_pt_regs(target)->sr & ~BIT(0));
#ifdef CONFIG_CPU_HAS_HILO
	regs.dcsr = task_pt_regs(target)->dcsr;
#endif
+4 −0
Original line number Diff line number Diff line
@@ -52,10 +52,14 @@ static long restore_sigcontext(struct pt_regs *regs,
	struct sigcontext __user *sc)
{
	int err = 0;
	unsigned long sr = regs->sr;

	/* sc_pt_regs is structured the same as the start of pt_regs */
	err |= __copy_from_user(regs, &sc->sc_pt_regs, sizeof(struct pt_regs));

	/* BIT(0) of regs->sr is Condition Code/Carry bit */
	regs->sr = (sr & ~1) | (regs->sr & 1);

	/* Restore the floating-point state. */
	err |= restore_fpu_state(sc);