Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7db4ff5 authored by Vijaya Kumar K's avatar Vijaya Kumar K Committed by Catalin Marinas
Browse files

arm64: Add macros to manage processor debug state



Add macros to enable and disable to manage PSTATE.D
for debugging. The macros local_dbg_save and local_dbg_restore
are moved to irqflags.h file

KGDB boot tests fail because of PSTATE.D is masked.
unmask it for debugging support

Signed-off-by: default avatarVijaya Kumar K <Vijaya.Kumar@caviumnetworks.com>
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent cfbf8d48
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -43,23 +43,6 @@ enum debug_el {
#ifndef __ASSEMBLY__
struct task_struct;

#define local_dbg_save(flags)							\
	do {									\
		typecheck(unsigned long, flags);				\
		asm volatile(							\
		"mrs	%0, daif			// local_dbg_save\n"	\
		"msr	daifset, #8"						\
		: "=r" (flags) : : "memory");					\
	} while (0)

#define local_dbg_restore(flags)						\
	do {									\
		typecheck(unsigned long, flags);				\
		asm volatile(							\
		"msr	daif, %0			// local_dbg_restore\n"	\
		: : "r" (flags) : "memory");					\
	} while (0)

#define DBG_ARCH_ID_RESERVED	0	/* In case of ptrace ABI updates. */

#define DBG_HOOK_HANDLED	0
+23 −0
Original line number Diff line number Diff line
@@ -90,5 +90,28 @@ static inline int arch_irqs_disabled_flags(unsigned long flags)
	return flags & PSR_I_BIT;
}

/*
 * save and restore debug state
 */
#define local_dbg_save(flags)						\
	do {								\
		typecheck(unsigned long, flags);			\
		asm volatile(						\
		"mrs    %0, daif		// local_dbg_save\n"	\
		"msr    daifset, #8"					\
		: "=r" (flags) : : "memory");				\
	} while (0)

#define local_dbg_restore(flags)					\
	do {								\
		typecheck(unsigned long, flags);			\
		asm volatile(						\
		"msr    daif, %0		// local_dbg_restore\n"	\
		: : "r" (flags) : "memory");				\
	} while (0)

#define local_dbg_enable()	asm("msr	daifclr, #8" : : : "memory")
#define local_dbg_disable()	asm("msr	daifset, #8" : : : "memory")

#endif
#endif
+1 −0
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ static void clear_os_lock(void *unused)
{
	asm volatile("msr oslar_el1, %0" : : "r" (0));
	isb();
	local_dbg_enable();
}

static int os_lock_notify(struct notifier_block *self,