Projects
Mega:23.03
python-greenlet
_service:tar_scm:0001-add-loongarch64-architect...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:0001-add-loongarch64-architecture-support.patch of Package python-greenlet
From 5bad26bce4675cd6b590a2e990e69ff7a6c187b5 Mon Sep 17 00:00:00 2001 From: wang--ge <wang__ge@126.com> Date: Sat, 7 May 2022 14:39:18 +0800 Subject: [PATCH] add loongarch64 architecture support --- .../platform/switch_loongarch64_linux.h | 31 +++++++++++++++++++ src/greenlet/slp_platformselect.h | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 src/greenlet/platform/switch_loongarch64_linux.h diff --git a/src/greenlet/platform/switch_loongarch64_linux.h b/src/greenlet/platform/switch_loongarch64_linux.h new file mode 100644 index 0000000..4252561 --- /dev/null +++ b/src/greenlet/platform/switch_loongarch64_linux.h @@ -0,0 +1,31 @@ +#define STACK_REFPLUS 1 + +#ifdef SLP_EVAL +#define STACK_MAGIC 0 + +#define REGS_TO_SAVE "s0", "s1", "s2", "s3", "s4", "s5", \ + "s6", "s7", "s8", "fp", \ + "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31" + +static int +slp_switch(void) +{ + register int ret; + register long *stackref, stsizediff; + __asm__ volatile ("" : : : REGS_TO_SAVE); + __asm__ volatile ("move %0, $sp" : "=r" (stackref) : ); + { + SLP_SAVE_STATE(stackref, stsizediff); + __asm__ volatile ( + "add.d $sp, $sp, %0\n\t" + : /* no outputs */ + : "r" (stsizediff) + ); + SLP_RESTORE_STATE(); + } + __asm__ volatile ("" : : : REGS_TO_SAVE); + __asm__ volatile ("move %0, $zero" : "=r" (ret) : ); + return ret; +} + +#endif \ No newline at end of file diff --git a/src/greenlet/slp_platformselect.h b/src/greenlet/slp_platformselect.h index b5e8eb6..1766e16 100644 --- a/src/greenlet/slp_platformselect.h +++ b/src/greenlet/slp_platformselect.h @@ -45,6 +45,8 @@ #endif #elif defined(__GNUC__) && defined(__mips__) && defined(__linux__) #include "platform/switch_mips_unix.h" /* Linux/MIPS */ +#elif defined(__GNUC__) && defined(__loongarch64) && defined(__linux__) +#include "platform/switch_loongarch64_linux.h" /* Linux/LoongArch64 */ #elif defined(__GNUC__) && defined(__aarch64__) #include "platform/switch_aarch64_gcc.h" /* Aarch64 ABI */ #elif defined(__GNUC__) && defined(__mc68000__) -- 2.27.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2