* [PR PATCH] mednafen: update to 1.29.0.
@ 2022-05-14 22:56 beltofdespair
2022-06-29 19:59 ` [PR PATCH] [Merged]: " Duncaen
0 siblings, 1 reply; 2+ messages in thread
From: beltofdespair @ 2022-05-14 22:56 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1182 bytes --]
There is a new pull request by beltofdespair against master on the void-packages repository
https://github.com/beltofdespair/void-packages mednafen
https://github.com/void-linux/void-packages/pull/37135
mednafen: update to 1.29.0.
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **YES**
<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
#### Local build testing
- I built this PR locally for my native architecture, x86_64-glibc
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- armv7l
A patch file from https://github.com/void-linux/void-packages/pull/37135.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mednafen-37135.patch --]
[-- Type: text/x-diff, Size: 9236 bytes --]
From b0d66a2411241a16ede26117f95adf1c5b5172aa Mon Sep 17 00:00:00 2001
From: beltofdespair <mogwinglodot@protonmail.com>
Date: Sat, 14 May 2022 17:48:32 -0500
Subject: [PATCH] mednafen: update to 1.29.0.
---
.../patches/ppc64-snes-libco-elfv2.patch | 325 ------------------
srcpkgs/mednafen/template | 4 +-
2 files changed, 2 insertions(+), 327 deletions(-)
delete mode 100644 srcpkgs/mednafen/patches/ppc64-snes-libco-elfv2.patch
diff --git a/srcpkgs/mednafen/patches/ppc64-snes-libco-elfv2.patch b/srcpkgs/mednafen/patches/ppc64-snes-libco-elfv2.patch
deleted file mode 100644
index 3f78b4f94e75..000000000000
--- a/srcpkgs/mednafen/patches/ppc64-snes-libco-elfv2.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-Note: this is adapted from an equivalent change in higan/bsnes.
-Slightly modified for mednafen (no settings.h, different paths)
-
-From ddf550c1438d60b893a4fc1da333e021ac0e3658 Mon Sep 17 00:00:00 2001
-From: Shawn Anastasio <shawn@anastas.io>
-Date: Tue, 23 Jul 2019 15:59:03 -0500
-Subject: [PATCH] Implement ppc64 ELFv2 support in libco
-
-The existing ppc implementation in libco only supports
-the ELFv1 ABI on PowerPC 64 and therefore can't be used on
-Little Endian systems and Big Endian systems running ELFv2
-distros.
-
-This commit introduces a new implementation of the libco
-API for ppc64 elfv2. It has been tested with bsnes and higan.
-The original ppc implementation is maintained for non-ELFv2
-targets.
----
- libco/libco.c | 4 +-
- libco/ppc64v2.c | 284 ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 287 insertions(+), 1 deletion(-)
- create mode 100644 libco/ppc64v2.c
-
-diff --git a/libco/libco.c b/libco/libco.c
-index de11fbe9..f5ee5d0a 100755
---- a/src/snes/src/lib/libco/libco.c
-+++ b/src/snes/src/lib/libco/libco.c
-@@ -9,6 +9,8 @@
- #include "amd64.c"
- #elif defined(__arm__)
- #include "arm.c"
-+ #elif defined(__powerpc64__) && defined(_CALL_ELF) && (_CALL_ELF == 2)
-+ #include "ppc64v2.c"
- #elif defined(_ARCH_PPC)
- #include "ppc.c"
- #elif defined(_WIN32)
-diff --git a/libco/ppc64v2.c b/libco/ppc64v2.c
-new file mode 100644
-index 00000000..8f733de2
---- /dev/null
-+++ b/src/snes/src/lib/libco/ppc64v2.c
-@@ -0,0 +1,283 @@
-+/**
-+ * libco implementation for ppc64 elfv2.
-+ *
-+ * Written by Shawn Anastasio.
-+ * Licensed under the ISC license.
-+ */
-+
-+#define LIBCO_C
-+#include "libco.h"
-+
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+struct ppc64_context {
-+ // GPRs
-+ uint64_t gprs[32];
-+ uint64_t lr;
-+ uint64_t ccr;
-+
-+ // FPRs
-+ uint64_t fprs[32];
-+
-+#ifdef __ALTIVEC__
-+ // Altivec (VMX)
-+ uint64_t vmx[24 /* 12 non-volatile * 2 */];
-+ uint32_t vrsave;
-+#endif
-+};
-+
-+static thread_local struct ppc64_context *context_running = 0;
-+
-+#define MAX(x, y) ((x) > (y) ? (x) : (y))
-+#define ALIGN(ptr, x) ( (void *)( (uintptr_t)(ptr) & ~((x)-1) ) )
-+
-+#define MIN_STACK 0x10000lu
-+#define MIN_STACK_FRAME 0x20lu
-+#define STACK_ALIGN 0x10lu
-+
-+void swap_context(struct ppc64_context *read, struct ppc64_context *write);
-+__asm__(
-+ ".text\n"
-+ ".align 4\n"
-+ ".type swap_context @function\n"
-+ "swap_context:\n"
-+ ".cfi_startproc\n"
-+
-+ // Dump non-volatile and special GPRs
-+ "std 1, 8(4)\n"
-+ "std 2, 16(4)\n"
-+ "std 12, 96(4)\n"
-+ "std 13, 104(4)\n"
-+ "std 14, 112(4)\n"
-+ "std 15, 120(4)\n"
-+ "std 16, 128(4)\n"
-+ "std 17, 136(4)\n"
-+ "std 18, 144(4)\n"
-+ "std 19, 152(4)\n"
-+ "std 20, 160(4)\n"
-+ "std 21, 168(4)\n"
-+ "std 22, 176(4)\n"
-+ "std 23, 184(4)\n"
-+ "std 24, 192(4)\n"
-+ "std 25, 200(4)\n"
-+ "std 26, 208(4)\n"
-+ "std 27, 216(4)\n"
-+ "std 28, 224(4)\n"
-+ "std 29, 232(4)\n"
-+ "std 30, 240(4)\n"
-+ "std 31, 248(4)\n"
-+
-+ // LR
-+ "mflr 5\n"
-+ "std 5, 256(4)\n"
-+
-+ // CCR
-+ "mfcr 5\n"
-+ "std 5, 264(4)\n"
-+
-+ // Dump non-volatile FPRs
-+ "stfd 14, 384(4)\n"
-+ "stfd 15, 392(4)\n"
-+ "stfd 16, 400(4)\n"
-+ "stfd 17, 408(4)\n"
-+ "stfd 18, 416(4)\n"
-+ "stfd 19, 424(4)\n"
-+ "stfd 20, 432(4)\n"
-+ "stfd 21, 440(4)\n"
-+ "stfd 22, 448(4)\n"
-+ "stfd 23, 456(4)\n"
-+ "stfd 24, 464(4)\n"
-+ "stfd 25, 472(4)\n"
-+ "stfd 26, 480(4)\n"
-+ "stfd 27, 488(4)\n"
-+ "stfd 28, 496(4)\n"
-+ "stfd 29, 504(4)\n"
-+ "stfd 30, 512(4)\n"
-+ "stfd 31, 520(4)\n"
-+
-+#ifdef __ALTIVEC__
-+ // Dump non-volatile VMX registers
-+ "li 5, 528\n"
-+ "stvxl 20, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 21, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 22, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 23, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 24, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 25, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 26, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 27, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 28, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 29, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 30, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+ "stvxl 31, 4, 5\n"
-+ "addi 5, 5, 16\n"
-+
-+ // VRSAVE
-+ "mfvrsave 5\n"
-+ "stw 5, 736(4)\n"
-+#endif
-+
-+ // Restore GPRs
-+ "ld 1, 8(3)\n"
-+ "ld 2, 16(3)\n"
-+ "ld 12, 96(3)\n"
-+ "ld 13, 104(3)\n"
-+ "ld 14, 112(3)\n"
-+ "ld 15, 120(3)\n"
-+ "ld 16, 128(3)\n"
-+ "ld 17, 136(3)\n"
-+ "ld 18, 144(3)\n"
-+ "ld 19, 152(3)\n"
-+ "ld 20, 160(3)\n"
-+ "ld 21, 168(3)\n"
-+ "ld 22, 176(3)\n"
-+ "ld 23, 184(3)\n"
-+ "ld 24, 192(3)\n"
-+ "ld 25, 200(3)\n"
-+ "ld 26, 208(3)\n"
-+ "ld 27, 216(3)\n"
-+ "ld 28, 224(3)\n"
-+ "ld 29, 232(3)\n"
-+ "ld 30, 240(3)\n"
-+ "ld 31, 248(3)\n"
-+
-+ // Restore LR
-+ "ld 5, 256(3)\n"
-+ "mtlr 5\n"
-+
-+ // Restore CCR
-+ "ld 5, 264(3)\n"
-+ "mtcr 5\n"
-+
-+ // Restore FPRs
-+ "lfd 14, 384(3)\n"
-+ "lfd 15, 392(3)\n"
-+ "lfd 16, 400(3)\n"
-+ "lfd 17, 408(3)\n"
-+ "lfd 18, 416(3)\n"
-+ "lfd 19, 424(3)\n"
-+ "lfd 20, 432(3)\n"
-+ "lfd 21, 440(3)\n"
-+ "lfd 22, 448(3)\n"
-+ "lfd 23, 456(3)\n"
-+ "lfd 24, 464(3)\n"
-+ "lfd 25, 472(3)\n"
-+ "lfd 26, 480(3)\n"
-+ "lfd 27, 488(3)\n"
-+ "lfd 28, 496(3)\n"
-+ "lfd 29, 504(3)\n"
-+ "lfd 30, 512(3)\n"
-+ "lfd 31, 520(3)\n"
-+
-+#ifdef __ALTIVEC__
-+ // Restore VMX
-+ "li 5, 528\n"
-+ "lvxl 20, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 21, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 22, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 23, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 24, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 25, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 26, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 27, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 28, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 29, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 30, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+ "lvxl 31, 3, 5\n"
-+ "addi 5, 5, 16\n"
-+
-+ // VRSAVE
-+ "lwz 5, 720(3)\n"
-+ "mtvrsave 5\n"
-+#endif
-+
-+ // Context restored, branch to LR
-+ "blr\n"
-+
-+ ".cfi_endproc\n"
-+ ".size swap_context, .-swap_context\n"
-+);
-+
-+cothread_t co_active() {
-+ if (!context_running)
-+ context_running = (struct ppc64_context *)
-+ malloc(MIN_STACK + sizeof(struct ppc64_context));
-+ return (cothread_t)context_running;
-+}
-+
-+cothread_t co_derive(void *memory, unsigned int size, void (*coentry)(void)) {
-+ uint8_t *sp;
-+ struct ppc64_context *context = (struct ppc64_context *)memory;
-+
-+ // Save current context into new context to initialize it
-+ swap_context(context, context);
-+
-+ // Align stack
-+ sp = (uint8_t *)memory + size - STACK_ALIGN;
-+ sp = (uint8_t *)ALIGN(sp, STACK_ALIGN);
-+
-+ // Write 0 for initial backchain
-+ *(uint64_t *)sp = 0;
-+
-+ // Create new frame with backchain
-+ sp -= MIN_STACK_FRAME;
-+ *(uint64_t *)sp = (uint64_t)(sp + MIN_STACK_FRAME);
-+
-+ // Update context with new stack (r1) and entrypoint (LR, r12)
-+ context->lr = (uint64_t)coentry;
-+ context->gprs[12] = (uint64_t)coentry;
-+ context->gprs[1] = (uint64_t)sp;
-+
-+ return (cothread_t)memory;
-+}
-+
-+cothread_t co_create(unsigned int size, void (*coentry)(void)) {
-+ size_t total = MAX(size, MIN_STACK) + sizeof(struct ppc64_context);
-+ void *memory = malloc(total);
-+ if (!memory)
-+ return (cothread_t)0;
-+
-+ return co_derive(memory, total, coentry);
-+}
-+
-+void co_delete(cothread_t t) {
-+ free(t);
-+}
-+
-+void co_switch(cothread_t t) {
-+ struct ppc64_context *old = context_running;
-+ context_running = (struct ppc64_context *)t;
-+ swap_context((struct ppc64_context *)t, old);
-+}
-+
-+#ifdef __cplusplus
-+}
-+#endif
diff --git a/srcpkgs/mednafen/template b/srcpkgs/mednafen/template
index e56addb35013..4d0cdc5883a6 100644
--- a/srcpkgs/mednafen/template
+++ b/srcpkgs/mednafen/template
@@ -1,6 +1,6 @@
# Template file for 'mednafen'
pkgname=mednafen
-version=1.26.1
+version=1.29.0
revision=1
wrksrc="$pkgname"
build_style=gnu-configure
@@ -13,7 +13,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://mednafen.github.io/"
distfiles="https://mednafen.github.io/releases/files/mednafen-${version}.tar.xz"
-checksum=842907c25c4292c9ba497c9cb9229c7d10e04e22cb4740d154ab690e6587fdf4
+checksum=da3fbcf02877f9be0f028bfa5d1cb59e953a4049b90fe7e39388a3386d9f362e
nopie=yes
build_options="altivec"
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PR PATCH] [Merged]: mednafen: update to 1.29.0.
2022-05-14 22:56 [PR PATCH] mednafen: update to 1.29.0 beltofdespair
@ 2022-06-29 19:59 ` Duncaen
0 siblings, 0 replies; 2+ messages in thread
From: Duncaen @ 2022-06-29 19:59 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1018 bytes --]
There's a merged pull request on the void-packages repository
mednafen: update to 1.29.0.
https://github.com/void-linux/void-packages/pull/37135
Description:
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **YES**
<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
#### Local build testing
- I built this PR locally for my native architecture, x86_64-glibc
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- armv7l
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-06-29 19:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-14 22:56 [PR PATCH] mednafen: update to 1.29.0 beltofdespair
2022-06-29 19:59 ` [PR PATCH] [Merged]: " Duncaen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).