1// SPDX-License-Identifier: GPL-2.0
2// Copyright (C) 2020 ARM Limited
3
4#include "helper.h"
5
6size_t keyia_sign(size_t ptr)
7{
8	asm volatile("paciza %0" : "+r" (ptr));
9	return ptr;
10}
11
12size_t keyib_sign(size_t ptr)
13{
14	asm volatile("pacizb %0" : "+r" (ptr));
15	return ptr;
16}
17
18size_t keyda_sign(size_t ptr)
19{
20	asm volatile("pacdza %0" : "+r" (ptr));
21	return ptr;
22}
23
24size_t keydb_sign(size_t ptr)
25{
26	asm volatile("pacdzb %0" : "+r" (ptr));
27	return ptr;
28}
29
30size_t keyg_sign(size_t ptr)
31{
32	/* output is encoded in the upper 32 bits */
33	size_t dest = 0;
34	size_t modifier = 0;
35
36	asm volatile("pacga %0, %1, %2" : "=r" (dest) : "r" (ptr), "r" (modifier));
37
38	return dest;
39}
40