[arch-commits] Commit in libretro-duckstation/repos/community-x86_64 (3 files)
Antonio Rojas
arojas at gemini.archlinux.org
Sat Mar 12 19:23:31 UTC 2022
Date: Saturday, March 12, 2022 @ 19:23:31
Author: arojas
Revision: 1150137
archrelease: copy trunk to community-x86_64
Added:
libretro-duckstation/repos/community-x86_64/PKGBUILD
(from rev 1150136, libretro-duckstation/trunk/PKGBUILD)
libretro-duckstation/repos/community-x86_64/glibc-2.34.patch
(from rev 1150136, libretro-duckstation/trunk/glibc-2.34.patch)
Deleted:
libretro-duckstation/repos/community-x86_64/PKGBUILD
------------------+
PKGBUILD | 90 +++++++++++++++++++++-------------------
glibc-2.34.patch | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 167 insertions(+), 42 deletions(-)
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2022-03-12 19:23:20 UTC (rev 1150136)
+++ PKGBUILD 2022-03-12 19:23:31 UTC (rev 1150137)
@@ -1,42 +0,0 @@
-# Maintainer: Maxime Gauduin <alucryd at archlinux.org>
-
-pkgname=libretro-duckstation
-pkgver=2105
-pkgrel=1
-pkgdesc='Sony PlayStation core'
-arch=(x86_64)
-url=https://github.com/stenzek/duckstation
-license=(GPL3)
-groups=(libretro)
-depends=(
- gcc-libs
- glibc
- libretro-core-info
-)
-makedepends=(
- cmake
- git
-)
-_commit=79aaf908a602e03a16698976791c82baafa794d0
-source=(git+https://github.com/stenzek/duckstation.git#commit=${_commit})
-sha256sums=(SKIP)
-
-pkgver() {
- cd duckstation
-
- git rev-list --count HEAD
-}
-
-build() {
- cmake -S duckstation -B build \
- -DCMAKE_BUILD_TYPE=None \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DBUILD_LIBRETRO_CORE=ON
- make -C build
-}
-
-package() {
- install -Dm 644 build/duckstation_libretro.so -t "${pkgdir}"/usr/lib/libretro/
-}
-
-# vim: ts=2 sw=2 et:
Copied: libretro-duckstation/repos/community-x86_64/PKGBUILD (from rev 1150136, libretro-duckstation/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2022-03-12 19:23:31 UTC (rev 1150137)
@@ -0,0 +1,48 @@
+# Maintainer: Maxime Gauduin <alucryd at archlinux.org>
+
+pkgname=libretro-duckstation
+pkgver=2105
+pkgrel=2
+pkgdesc='Sony PlayStation core'
+arch=(x86_64)
+url=https://github.com/stenzek/duckstation
+license=(GPL3)
+groups=(libretro)
+depends=(
+ gcc-libs
+ glibc
+ libretro-core-info
+)
+makedepends=(
+ cmake
+ git
+)
+_commit=79aaf908a602e03a16698976791c82baafa794d0
+source=(git+https://github.com/stenzek/duckstation.git#commit=${_commit}
+ glibc-2.34.patch)
+sha256sums=('SKIP'
+ 'fef29c81a9a42451a64a1cc32c6489b67bd9464ed5eedca4c03bc7853b8f2a11')
+
+pkgver() {
+ cd duckstation
+
+ git rev-list --count HEAD
+}
+
+prepare() {
+ patch -d duckstation -p1 < glibc-2.34.patch # Fix build with glibc 2.34
+}
+
+build() {
+ cmake -S duckstation -B build \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_LIBRETRO_CORE=ON
+ make -C build
+}
+
+package() {
+ install -Dm 644 build/duckstation_libretro.so -t "${pkgdir}"/usr/lib/libretro/
+}
+
+# vim: ts=2 sw=2 et:
Copied: libretro-duckstation/repos/community-x86_64/glibc-2.34.patch (from rev 1150136, libretro-duckstation/trunk/glibc-2.34.patch)
===================================================================
--- glibc-2.34.patch (rev 0)
+++ glibc-2.34.patch 2022-03-12 19:23:31 UTC (rev 1150137)
@@ -0,0 +1,119 @@
+diff --git a/src/core/cpu_core.h b/src/core/cpu_core.h
+index 66059635..252ee860 100644
+--- a/src/core/cpu_core.h
++++ b/src/core/cpu_core.h
+@@ -56,6 +56,9 @@ struct State
+
+ // data cache (used as scratchpad)
+ std::array<u8, DCACHE_SIZE> dcache = {};
++
++ static constexpr u32 GPRRegisterOffset(u32 index) { return offsetof(State, regs.r) + (sizeof(u32) * index); }
++ static constexpr u32 GTERegisterOffset(u32 index) { return offsetof(State, gte_regs.r32) + (sizeof(u32) * index); }
+ };
+
+ extern State g_state;
+diff --git a/src/core/cpu_recompiler_code_generator.cpp b/src/core/cpu_recompiler_code_generator.cpp
+index 1c7ae0db..a454d4f5 100644
+--- a/src/core/cpu_recompiler_code_generator.cpp
++++ b/src/core/cpu_recompiler_code_generator.cpp
+@@ -14,11 +14,6 @@ Log_SetChannel(CPU::Recompiler);
+
+ namespace CPU::Recompiler {
+
+-u32 CodeGenerator::CalculateRegisterOffset(Reg reg)
+-{
+- return u32(offsetof(State, regs.r[0]) + (static_cast<u32>(reg) * sizeof(u32)));
+-}
+-
+ bool CodeGenerator::CompileBlock(const CodeBlock* block, CodeBlock::HostCodePointer* out_host_code,
+ u32* out_host_code_size)
+ {
+@@ -1991,7 +1986,7 @@ Value CodeGenerator::DoGTERegisterRead(u32 index)
+
+ default:
+ {
+- EmitLoadCPUStructField(value.host_reg, RegSize_32, offsetof(State, gte_regs.r32[index]));
++ EmitLoadCPUStructField(value.host_reg, RegSize_32, State::GTERegisterOffset(index));
+ }
+ break;
+ }
+@@ -2020,7 +2015,7 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
+ {
+ // sign-extend z component of vector registers
+ Value temp = ConvertValueSize(value.ViewAsSize(RegSize_16), RegSize_32, true);
+- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[index]), temp);
++ EmitStoreCPUStructField(State::GTERegisterOffset(index), temp);
+ return;
+ }
+ break;
+@@ -2033,7 +2028,7 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
+ {
+ // zero-extend unsigned values
+ Value temp = ConvertValueSize(value.ViewAsSize(RegSize_16), RegSize_32, false);
+- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[index]), temp);
++ EmitStoreCPUStructField(State::GTERegisterOffset(index), temp);
+ return;
+ }
+ break;
+@@ -2044,15 +2039,15 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
+ Value temp = m_register_cache.AllocateScratch(RegSize_32);
+
+ // SXY0 <- SXY1
+- EmitLoadCPUStructField(temp.host_reg, RegSize_32, offsetof(State, gte_regs.r32[13]));
+- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[12]), temp);
++ EmitLoadCPUStructField(temp.host_reg, RegSize_32, State::GTERegisterOffset(13));
++ EmitStoreCPUStructField(State::GTERegisterOffset(12), temp);
+
+ // SXY1 <- SXY2
+- EmitLoadCPUStructField(temp.host_reg, RegSize_32, offsetof(State, gte_regs.r32[14]));
+- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[13]), temp);
++ EmitLoadCPUStructField(temp.host_reg, RegSize_32, State::GTERegisterOffset(14));
++ EmitStoreCPUStructField(State::GTERegisterOffset(13), temp);
+
+ // SXY2 <- SXYP
+- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[14]), value);
++ EmitStoreCPUStructField(State::GTERegisterOffset(14), value);
+ return;
+ }
+ break;
+@@ -2075,7 +2070,7 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
+ default:
+ {
+ // written as-is, 2x16 or 1x32 bits
+- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[index]), value);
++ EmitStoreCPUStructField(State::GTERegisterOffset(index), value);
+ return;
+ }
+ }
+diff --git a/src/core/cpu_recompiler_code_generator.h b/src/core/cpu_recompiler_code_generator.h
+index b5999233..94af334e 100644
+--- a/src/core/cpu_recompiler_code_generator.h
++++ b/src/core/cpu_recompiler_code_generator.h
+@@ -19,7 +19,6 @@ public:
+ CodeGenerator(JitCodeBuffer* code_buffer);
+ ~CodeGenerator();
+
+- static u32 CalculateRegisterOffset(Reg reg);
+ static const char* GetHostRegName(HostReg reg, RegSize size = HostPointerSize);
+ static void AlignCodeBuffer(JitCodeBuffer* code_buffer);
+
+diff --git a/src/core/cpu_recompiler_code_generator_generic.cpp b/src/core/cpu_recompiler_code_generator_generic.cpp
+index b652cb24..8b8b2d76 100644
+--- a/src/core/cpu_recompiler_code_generator_generic.cpp
++++ b/src/core/cpu_recompiler_code_generator_generic.cpp
+@@ -5,13 +5,13 @@ namespace CPU::Recompiler {
+
+ void CodeGenerator::EmitLoadGuestRegister(HostReg host_reg, Reg guest_reg)
+ {
+- EmitLoadCPUStructField(host_reg, RegSize_32, CalculateRegisterOffset(guest_reg));
++ EmitLoadCPUStructField(host_reg, RegSize_32, State::GPRRegisterOffset(static_cast<u32>(guest_reg)));
+ }
+
+ void CodeGenerator::EmitStoreGuestRegister(Reg guest_reg, const Value& value)
+ {
+ DebugAssert(value.size == RegSize_32);
+- EmitStoreCPUStructField(CalculateRegisterOffset(guest_reg), value);
++ EmitStoreCPUStructField(State::GPRRegisterOffset(static_cast<u32>(guest_reg)), value);
+ }
+
+ void CodeGenerator::EmitStoreInterpreterLoadDelay(Reg reg, const Value& value)
More information about the arch-commits
mailing list