14c8a99caSJanosch Frank/* SPDX-License-Identifier: GPL-2.0-only */ 24c8a99caSJanosch Frank/* 34c8a99caSJanosch Frank * Commonly used assembly macros 44c8a99caSJanosch Frank * 54c8a99caSJanosch Frank * Copyright (c) 2022 IBM Corp 64c8a99caSJanosch Frank * 74c8a99caSJanosch Frank * Authors: 84c8a99caSJanosch Frank * Janosch Frank <frankja@linux.ibm.com> 94c8a99caSJanosch Frank */ 104c8a99caSJanosch Frank#include <asm/asm-offsets.h> 114c8a99caSJanosch Frank 124c8a99caSJanosch Frank/* 134c8a99caSJanosch Frank * Writes a PSW to addr_psw, useful for exception PSWs in lowcore 144c8a99caSJanosch Frank * 154c8a99caSJanosch Frank * reg is the scratch register used for temporary storage, it's NOT restored 164c8a99caSJanosch Frank * The psw address part is defined via psw_new_addr 174c8a99caSJanosch Frank * The psw mask part is always 64 bit 184c8a99caSJanosch Frank */ 194c8a99caSJanosch Frank.macro SET_PSW_NEW_ADDR reg, psw_new_addr, addr_psw 204c8a99caSJanosch Franklarl \reg, psw_mask_64 21*9854a09cSJanosch Frankmvc \addr_psw(8,%r0), 0(\reg) 224c8a99caSJanosch Franklarl \reg, \psw_new_addr 234c8a99caSJanosch Frankstg \reg, \addr_psw + 8 244c8a99caSJanosch Frank.endm 254c8a99caSJanosch Frank 264c8a99caSJanosch Frank.section .rodata 274c8a99caSJanosch Frankpsw_mask_64: 284c8a99caSJanosch Frank .quad 0x0000000180000000 29