^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _PPC_BOOT_REG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _PPC_BOOT_REG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright 2007 Davud Gibson, IBM Corporation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) static inline u32 mfpvr(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) u32 pvr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) asm volatile ("mfpvr %0" : "=r"(pvr));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) return pvr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define __stringify_1(x) #x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define __stringify(x) __stringify_1(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define mfspr(rn) ({unsigned long rval; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) asm volatile("mfspr %0," __stringify(rn) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) : "=r" (rval)); rval; })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define mtspr(rn, v) asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) register void *__stack_pointer asm("r1");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define get_sp() (__stack_pointer)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #endif /* _PPC_BOOT_REG_H */