diff --git a/libc/bionic/sys_msg.cpp b/libc/bionic/sys_msg.cpp
index 9d2dc0e..462c83b 100644
--- a/libc/bionic/sys_msg.cpp
+++ b/libc/bionic/sys_msg.cpp
@@ -36,33 +36,33 @@
   // Annoyingly, the kernel requires this for 32-bit but rejects it for 64-bit.
   cmd |= IPC_64;
 #endif
-#if __i386__
-  return syscall(SYS_ipc, MSGCTL, id, cmd, 0, buf, 0);
-#else
+#if defined(SYS_msgctl)
   return syscall(SYS_msgctl, id, cmd, buf);
+#else
+  return syscall(SYS_ipc, MSGCTL, id, cmd, 0, buf, 0);
 #endif
 }
 
 int msgget(key_t key, int flags) {
-#if __i386__
-  return syscall(SYS_ipc, MSGGET, key, flags, 0, 0, 0);
-#else
+#if defined(SYS_msgget)
   return syscall(SYS_msgget, key, flags);
+#else
+  return syscall(SYS_ipc, MSGGET, key, flags, 0, 0, 0);
 #endif
 }
 
 ssize_t msgrcv(int id, void* msg, size_t n, long type, int flags) {
-#if __i386__
-  return syscall(SYS_ipc, IPCCALL(1, MSGRCV), id, n, flags, msg, type);
-#else
+#if defined(SYS_msgrcv)
   return syscall(SYS_msgrcv, id, msg, n, type, flags);
+#else
+  return syscall(SYS_ipc, IPCCALL(1, MSGRCV), id, n, flags, msg, type);
 #endif
 }
 
 int msgsnd(int id, const void* msg, size_t n, int flags) {
-#if __i386__
-  return syscall(SYS_ipc, MSGSND, id, n, flags, msg, 0);
-#else
+#if defined(SYS_msgsnd)
   return syscall(SYS_msgsnd, id, msg, n, flags);
+#else
+  return syscall(SYS_ipc, MSGSND, id, n, flags, msg, 0);
 #endif
 }
diff --git a/libc/bionic/sys_sem.cpp b/libc/bionic/sys_sem.cpp
index 08e685a..058cfef 100644
--- a/libc/bionic/sys_sem.cpp
+++ b/libc/bionic/sys_sem.cpp
@@ -41,18 +41,18 @@
   va_start(ap, cmd);
   semun arg = va_arg(ap, semun);
   va_end(ap);
-#if __i386__
-  return syscall(SYS_ipc, SEMCTL, id, num, cmd, &arg, 0);
-#else
+#if defined(SYS_semctl)
   return syscall(SYS_semctl, id, num, cmd, arg);
+#else
+  return syscall(SYS_ipc, SEMCTL, id, num, cmd, &arg, 0);
 #endif
 }
 
 int semget(key_t key, int n, int flags) {
-#if __i386__
-  return syscall(SYS_ipc, SEMGET, key, n, flags, 0, 0);
-#else
+#if defined(SYS_semget)
   return syscall(SYS_semget, key, n, flags);
+#else
+  return syscall(SYS_ipc, SEMGET, key, n, flags, 0, 0);
 #endif
 }
 
@@ -61,9 +61,9 @@
 }
 
 int semtimedop(int id, sembuf* ops, size_t op_count, const timespec* ts) {
-#if __i386__
-  return syscall(SYS_ipc, SEMTIMEDOP, id, op_count, 0, ops, ts);
-#else
+#if defined(SYS_semtimedop)
   return syscall(SYS_semtimedop, id, ops, op_count, ts);
+#else
+  return syscall(SYS_ipc, SEMTIMEDOP, id, op_count, 0, ops, ts);
 #endif
 }
diff --git a/libc/bionic/sys_shm.cpp b/libc/bionic/sys_shm.cpp
index 6f1b8f5..f780e04 100644
--- a/libc/bionic/sys_shm.cpp
+++ b/libc/bionic/sys_shm.cpp
@@ -32,15 +32,15 @@
 #include <unistd.h>
 
 void* shmat(int id, const void* address, int flags) {
-#if __i386__
+#if defined(SYS_shmat)
+  return reinterpret_cast<void*>(syscall(SYS_shmat, id, address, flags));
+#else
   // See the kernel's ipc/syscall.c for the other side of this dance.
   void* result = nullptr;
   if (syscall(SYS_ipc, SHMAT, id, flags, &result, address, 0) == -1) {
     return reinterpret_cast<void*>(-1);
   }
   return result;
-#else
-  return reinterpret_cast<void*>(syscall(SYS_shmat, id, address, flags));
 #endif
 }
 
@@ -49,25 +49,25 @@
   // Annoyingly, the kernel requires this for 32-bit but rejects it for 64-bit.
   cmd |= IPC_64;
 #endif
-#if __i386__
-  return syscall(SYS_ipc, SHMCTL, id, cmd, 0, buf, 0);
-#else
+#if defined(SYS_shmctl)
   return syscall(SYS_shmctl, id, cmd, buf);
+#else
+  return syscall(SYS_ipc, SHMCTL, id, cmd, 0, buf, 0);
 #endif
 }
 
 int shmdt(const void* address) {
-#if __i386__
-  return syscall(SYS_ipc, SHMDT, 0, 0, 0, address, 0);
-#else
+#if defined(SYS_shmdt)
   return syscall(SYS_shmdt, address);
+#else
+  return syscall(SYS_ipc, SHMDT, 0, 0, 0, address, 0);
 #endif
 }
 
 int shmget(key_t key, size_t size, int flags) {
-#if __i386__
-  return syscall(SYS_ipc, SHMGET, key, size, flags, 0, 0);
-#else
+#if defined(SYS_shmget)
   return syscall(SYS_shmget, key, size, flags);
+#else
+  return syscall(SYS_ipc, SHMGET, key, size, flags, 0, 0);
 #endif
 }
