Commit b8af5999 authored by Heiko Carstens's avatar Heiko Carstens Committed by Alexander Gordeev
Browse files

s390/ptrace: make all psw related defines also available for asm



Use the _AC() macro to make all psw related defines also available for
assembler files.

Acked-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent 63764028
Loading
Loading
Loading
Loading
+26 −26
Original line number Diff line number Diff line
@@ -23,9 +23,31 @@
#define _PIF_GUEST_FAULT		BIT(PIF_GUEST_FAULT)
#define _PIF_FTRACE_FULL_REGS		BIT(PIF_FTRACE_FULL_REGS)

#define PSW_DEFAULT_KEY			((PAGE_DEFAULT_ACC) << 52)
#define PSW32_MASK_PER		_AC(0x40000000, UL)
#define PSW32_MASK_DAT		_AC(0x04000000, UL)
#define PSW32_MASK_IO		_AC(0x02000000, UL)
#define PSW32_MASK_EXT		_AC(0x01000000, UL)
#define PSW32_MASK_KEY		_AC(0x00F00000, UL)
#define PSW32_MASK_BASE		_AC(0x00080000, UL)	/* Always one */
#define PSW32_MASK_MCHECK	_AC(0x00040000, UL)
#define PSW32_MASK_WAIT		_AC(0x00020000, UL)
#define PSW32_MASK_PSTATE	_AC(0x00010000, UL)
#define PSW32_MASK_ASC		_AC(0x0000C000, UL)
#define PSW32_MASK_CC		_AC(0x00003000, UL)
#define PSW32_MASK_PM		_AC(0x00000f00, UL)
#define PSW32_MASK_RI		_AC(0x00000080, UL)

#define PSW32_ADDR_AMODE	_AC(0x80000000, UL)
#define PSW32_ADDR_INSN		_AC(0x7FFFFFFF, UL)

#define PSW32_DEFAULT_KEY	((PAGE_DEFAULT_ACC) << 20)

#define PSW32_ASC_PRIMARY	_AC(0x00000000, UL)
#define PSW32_ASC_ACCREG	_AC(0x00004000, UL)
#define PSW32_ASC_SECONDARY	_AC(0x00008000, UL)
#define PSW32_ASC_HOME		_AC(0x0000C000, UL)

#ifndef __ASSEMBLY__
#define PSW_DEFAULT_KEY			((PAGE_DEFAULT_ACC) << 52)

#define PSW_KERNEL_BITS	(PSW_DEFAULT_KEY | PSW_MASK_BASE | PSW_ASC_HOME | \
			 PSW_MASK_EA | PSW_MASK_BA | PSW_MASK_DAT)
@@ -33,6 +55,8 @@
			 PSW_DEFAULT_KEY | PSW_MASK_BASE | PSW_MASK_MCHECK | \
			 PSW_MASK_PSTATE | PSW_ASC_PRIMARY)

#ifndef __ASSEMBLY__

struct psw_bits {
	unsigned long	     :	1;
	unsigned long per    :	1; /* PER-Mask */
@@ -73,30 +97,6 @@ enum {
	&(*(struct psw_bits *)(&(__psw)));	\
}))

#define PSW32_MASK_PER		0x40000000UL
#define PSW32_MASK_DAT		0x04000000UL
#define PSW32_MASK_IO		0x02000000UL
#define PSW32_MASK_EXT		0x01000000UL
#define PSW32_MASK_KEY		0x00F00000UL
#define PSW32_MASK_BASE		0x00080000UL	/* Always one */
#define PSW32_MASK_MCHECK	0x00040000UL
#define PSW32_MASK_WAIT		0x00020000UL
#define PSW32_MASK_PSTATE	0x00010000UL
#define PSW32_MASK_ASC		0x0000C000UL
#define PSW32_MASK_CC		0x00003000UL
#define PSW32_MASK_PM		0x00000f00UL
#define PSW32_MASK_RI		0x00000080UL

#define PSW32_ADDR_AMODE	0x80000000UL
#define PSW32_ADDR_INSN		0x7FFFFFFFUL

#define PSW32_DEFAULT_KEY	(((u32)PAGE_DEFAULT_ACC) << 20)

#define PSW32_ASC_PRIMARY	0x00000000UL
#define PSW32_ASC_ACCREG	0x00004000UL
#define PSW32_ASC_SECONDARY	0x00008000UL
#define PSW32_ASC_HOME		0x0000C000UL

typedef struct {
	unsigned int mask;
	unsigned int addr;
+58 −59
Original line number Diff line number Diff line
@@ -166,6 +166,64 @@

#endif /* __s390x__ */

#ifndef __s390x__

#define PSW_MASK_PER		_AC(0x40000000, UL)
#define PSW_MASK_DAT		_AC(0x04000000, UL)
#define PSW_MASK_IO		_AC(0x02000000, UL)
#define PSW_MASK_EXT		_AC(0x01000000, UL)
#define PSW_MASK_KEY		_AC(0x00F00000, UL)
#define PSW_MASK_BASE		_AC(0x00080000, UL)	/* always one */
#define PSW_MASK_MCHECK		_AC(0x00040000, UL)
#define PSW_MASK_WAIT		_AC(0x00020000, UL)
#define PSW_MASK_PSTATE		_AC(0x00010000, UL)
#define PSW_MASK_ASC		_AC(0x0000C000, UL)
#define PSW_MASK_CC		_AC(0x00003000, UL)
#define PSW_MASK_PM		_AC(0x00000F00, UL)
#define PSW_MASK_RI		_AC(0x00000000, UL)
#define PSW_MASK_EA		_AC(0x00000000, UL)
#define PSW_MASK_BA		_AC(0x00000000, UL)

#define PSW_MASK_USER		_AC(0x0000FF00, UL)

#define PSW_ADDR_AMODE		_AC(0x80000000, UL)
#define PSW_ADDR_INSN		_AC(0x7FFFFFFF, UL)

#define PSW_ASC_PRIMARY		_AC(0x00000000, UL)
#define PSW_ASC_ACCREG		_AC(0x00004000, UL)
#define PSW_ASC_SECONDARY	_AC(0x00008000, UL)
#define PSW_ASC_HOME		_AC(0x0000C000, UL)

#else /* __s390x__ */

#define PSW_MASK_PER		_AC(0x4000000000000000, UL)
#define PSW_MASK_DAT		_AC(0x0400000000000000, UL)
#define PSW_MASK_IO		_AC(0x0200000000000000, UL)
#define PSW_MASK_EXT		_AC(0x0100000000000000, UL)
#define PSW_MASK_BASE		_AC(0x0000000000000000, UL)
#define PSW_MASK_KEY		_AC(0x00F0000000000000, UL)
#define PSW_MASK_MCHECK		_AC(0x0004000000000000, UL)
#define PSW_MASK_WAIT		_AC(0x0002000000000000, UL)
#define PSW_MASK_PSTATE		_AC(0x0001000000000000, UL)
#define PSW_MASK_ASC		_AC(0x0000C00000000000, UL)
#define PSW_MASK_CC		_AC(0x0000300000000000, UL)
#define PSW_MASK_PM		_AC(0x00000F0000000000, UL)
#define PSW_MASK_RI		_AC(0x0000008000000000, UL)
#define PSW_MASK_EA		_AC(0x0000000100000000, UL)
#define PSW_MASK_BA		_AC(0x0000000080000000, UL)

#define PSW_MASK_USER		_AC(0x0000FF0180000000, UL)

#define PSW_ADDR_AMODE		_AC(0x0000000000000000, UL)
#define PSW_ADDR_INSN		_AC(0xFFFFFFFFFFFFFFFF, UL)

#define PSW_ASC_PRIMARY		_AC(0x0000000000000000, UL)
#define PSW_ASC_ACCREG		_AC(0x0000400000000000, UL)
#define PSW_ASC_SECONDARY	_AC(0x0000800000000000, UL)
#define PSW_ASC_HOME		_AC(0x0000C00000000000, UL)

#endif /* __s390x__ */

#define NUM_GPRS	16
#define NUM_FPRS	16
#define NUM_CRS		16
@@ -214,65 +272,6 @@ typedef struct {
	unsigned long addr;
} __attribute__ ((aligned(8))) psw_t;

#ifndef __s390x__

#define PSW_MASK_PER		0x40000000UL
#define PSW_MASK_DAT		0x04000000UL
#define PSW_MASK_IO		0x02000000UL
#define PSW_MASK_EXT		0x01000000UL
#define PSW_MASK_KEY		0x00F00000UL
#define PSW_MASK_BASE		0x00080000UL	/* always one */
#define PSW_MASK_MCHECK		0x00040000UL
#define PSW_MASK_WAIT		0x00020000UL
#define PSW_MASK_PSTATE		0x00010000UL
#define PSW_MASK_ASC		0x0000C000UL
#define PSW_MASK_CC		0x00003000UL
#define PSW_MASK_PM		0x00000F00UL
#define PSW_MASK_RI		0x00000000UL
#define PSW_MASK_EA		0x00000000UL
#define PSW_MASK_BA		0x00000000UL

#define PSW_MASK_USER		0x0000FF00UL

#define PSW_ADDR_AMODE		0x80000000UL
#define PSW_ADDR_INSN		0x7FFFFFFFUL

#define PSW_ASC_PRIMARY		0x00000000UL
#define PSW_ASC_ACCREG		0x00004000UL
#define PSW_ASC_SECONDARY	0x00008000UL
#define PSW_ASC_HOME		0x0000C000UL

#else /* __s390x__ */

#define PSW_MASK_PER		0x4000000000000000UL
#define PSW_MASK_DAT		0x0400000000000000UL
#define PSW_MASK_IO		0x0200000000000000UL
#define PSW_MASK_EXT		0x0100000000000000UL
#define PSW_MASK_BASE		0x0000000000000000UL
#define PSW_MASK_KEY		0x00F0000000000000UL
#define PSW_MASK_MCHECK		0x0004000000000000UL
#define PSW_MASK_WAIT		0x0002000000000000UL
#define PSW_MASK_PSTATE		0x0001000000000000UL
#define PSW_MASK_ASC		0x0000C00000000000UL
#define PSW_MASK_CC		0x0000300000000000UL
#define PSW_MASK_PM		0x00000F0000000000UL
#define PSW_MASK_RI		0x0000008000000000UL
#define PSW_MASK_EA		0x0000000100000000UL
#define PSW_MASK_BA		0x0000000080000000UL

#define PSW_MASK_USER		0x0000FF0180000000UL

#define PSW_ADDR_AMODE		0x0000000000000000UL
#define PSW_ADDR_INSN		0xFFFFFFFFFFFFFFFFUL

#define PSW_ASC_PRIMARY		0x0000000000000000UL
#define PSW_ASC_ACCREG		0x0000400000000000UL
#define PSW_ASC_SECONDARY	0x0000800000000000UL
#define PSW_ASC_HOME		0x0000C00000000000UL

#endif /* __s390x__ */


/*
 * The s390_regs structure is used to define the elf_gregset_t.
 */