Unify pivot.h; brings powerpc/powerpc64 support to the usr.bin/lastcomm
authorkettenis <kettenis@openbsd.org>
Wed, 14 Apr 2021 16:06:15 +0000 (16:06 +0000)
committerkettenis <kettenis@openbsd.org>
Wed, 14 Apr 2021 16:06:15 +0000 (16:06 +0000)
regress test.

ok bluhm@

regress/sys/kern/stackpivot/pivot.h
regress/usr.bin/lastcomm/pivot.h

index 46a3561..eec5352 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef REGRESS_PIVOT_H
 #define REGRESS_PIVOT_H
 
-static void pivot(size_t *newstack) {
+static void pivot(void *newstack) {
 #if defined(__aarch64__)
     asm("mov sp, %0; ldr lr, [sp]; ret;" ::"r"(newstack));
 #elif defined(__amd64__)
index 5cd1c4e..eec5352 100644 (file)
@@ -1,5 +1,3 @@
-/*     $OpenBSD: pivot.h,v 1.1 2019/09/10 19:01:24 bluhm Exp $ */
-
 #ifndef REGRESS_PIVOT_H
 #define REGRESS_PIVOT_H
 
@@ -12,6 +10,10 @@ static void pivot(void *newstack) {
     asm("mov %0, %%esp; retl;" ::"r"(newstack));
 #elif defined(__mips64__)
     asm("move $sp, %0; ld $ra, 0($sp); jr $ra;" ::"r"(newstack));
+#elif defined(__powerpc64__)
+    asm("mr %%r1, %0; ld %%r3, 0(%%r1); mtlr %%r3; blr;" ::"r"(newstack));
+#elif defined(__powerpc__)
+    asm("mr %%r1, %0; lwz %%r3, 0(%%r1); mtlr %%r3; blr;" ::"r"(newstack));
 #endif
 }