summaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorjoerg <joerg>2015-03-31 15:24:14 +0000
committerjoerg <joerg>2015-03-31 15:24:14 +0000
commit80ebb4f3b3b15a5ebb01df7d46dd9ced13d646fd (patch)
tree2b10db7e1e7b330f6bf9a01484c8dae3e740cb9c /emulators
parent8d58c4c25c3e2316bf7ae0e614700c82295d7758 (diff)
downloadpkgsrc-80ebb4f3b3b15a5ebb01df7d46dd9ced13d646fd.tar.gz
Replace nasty global asm with a naked function. Avoids killing libbfd
when building with Clang.
Diffstat (limited to 'emulators')
-rw-r--r--emulators/libretro-mupen64plus/distinfo3
-rw-r--r--emulators/libretro-mupen64plus/patches/patch-libretro_libco_armeabi.c30
2 files changed, 32 insertions, 1 deletions
diff --git a/emulators/libretro-mupen64plus/distinfo b/emulators/libretro-mupen64plus/distinfo
index 1f7c03028c3..4d2c8c3f4fb 100644
--- a/emulators/libretro-mupen64plus/distinfo
+++ b/emulators/libretro-mupen64plus/distinfo
@@ -1,6 +1,7 @@
-$NetBSD: distinfo,v 1.2 2015/02/05 17:42:06 wiz Exp $
+$NetBSD: distinfo,v 1.3 2015/03/31 15:24:14 joerg Exp $
SHA1 (mupen64plus-libretro-20150204.zip) = 85599e878094348163d68fdd704c5bc7edf78e44
RMD160 (mupen64plus-libretro-20150204.zip) = 6c08b86834a8f6d548c85eaa34ca38e779b6a0d2
Size (mupen64plus-libretro-20150204.zip) = 3286777 bytes
SHA1 (patch-glide2gl_src_Glide64_Util.h) = d3bceef0ba895af8309bfe9435d701d76ca31a27
+SHA1 (patch-libretro_libco_armeabi.c) = dbce5604b0a160dfbdae82506957e2c852d4ca9d
diff --git a/emulators/libretro-mupen64plus/patches/patch-libretro_libco_armeabi.c b/emulators/libretro-mupen64plus/patches/patch-libretro_libco_armeabi.c
new file mode 100644
index 00000000000..ad00136acbd
--- /dev/null
+++ b/emulators/libretro-mupen64plus/patches/patch-libretro_libco_armeabi.c
@@ -0,0 +1,30 @@
+$NetBSD: patch-libretro_libco_armeabi.c,v 1.1 2015/03/31 15:24:14 joerg Exp $
+
+--- libretro/libco/armeabi.c.orig 2015-03-30 10:10:39.000000000 +0000
++++ libretro/libco/armeabi.c
+@@ -22,19 +22,15 @@ extern "C" {
+ static thread_local uint32_t co_active_buffer[64];
+ static thread_local cothread_t co_active_handle;
+
+-asm (
++/* ASM */
++__attribute__((naked))
++void co_switch_arm(cothread_t handle, cothread_t current) {
++ asm volatile (
+ ".arm\n"
+- ".align 4\n"
+- ".globl co_switch_arm\n"
+- ".globl _co_switch_arm\n"
+- "co_switch_arm:\n"
+- "_co_switch_arm:\n"
+ " stmia r1!, {r4, r5, r6, r7, r8, r9, r10, r11, sp, lr}\n"
+ " ldmia r0!, {r4, r5, r6, r7, r8, r9, r10, r11, sp, pc}\n"
+- );
+-
+-/* ASM */
+-void co_switch_arm(cothread_t handle, cothread_t current);
++ );
++}
+
+ static void crash(void)
+ {