[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