Commit 4dadf64d authored by Claudio Imbrenda's avatar Claudio Imbrenda
Browse files

s390: Move sske_frame() to a header



Move the sske_frame() function to asm/pgtable.h, so it can be used in
other modules too.

Opportunistically convert the .insn opcode specification to the
appropriate mnemonic.

Reviewed-by: default avatarChristian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: default avatarSteffen Eiden <seiden@linux.ibm.com>
Reviewed-by: default avatarChristoph Schlameuss <schlameuss@linux.ibm.com>
Reviewed-by: default avatarNina Schoetterl-Glausch <nsg@linux.ibm.com>
Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
parent 21401ce4
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1136,6 +1136,13 @@ static inline pte_t pte_mkhuge(pte_t pte)
}
#endif

static inline unsigned long sske_frame(unsigned long addr, unsigned char skey)
{
	asm volatile("sske %[skey],%[addr],1"
		     : [addr] "+a" (addr) : [skey] "d" (skey));
	return addr;
}

#define IPTE_GLOBAL	0
#define	IPTE_LOCAL	1

+0 −7
Original line number Diff line number Diff line
@@ -16,13 +16,6 @@
#include <asm/asm.h>
#include <asm/set_memory.h>

static inline unsigned long sske_frame(unsigned long addr, unsigned char skey)
{
	asm volatile(".insn rrf,0xb22b0000,%[skey],%[addr],1,0"
		     : [addr] "+a" (addr) : [skey] "d" (skey));
	return addr;
}

void __storage_key_init_range(unsigned long start, unsigned long end)
{
	unsigned long boundary, size;