helper.c 660 B

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