mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Unify Assembler files between Linux and Windows
Add new macro ASMABI used by Windows to change calling API to "sysv_abi". Reviewed-by: Attila Fülöp <attila@fueloep.org> Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Jorgen Lundman <lundman@lundman.net> Closes #14228
This commit is contained in:
+3
-3
@@ -9,6 +9,7 @@
|
||||
#define LUA_CORE
|
||||
|
||||
#include <sys/lua/lua.h>
|
||||
#include <sys/asm_linkage.h>
|
||||
|
||||
#include "lapi.h"
|
||||
#include "ldebug.h"
|
||||
@@ -27,7 +28,6 @@
|
||||
#include "lzio.h"
|
||||
|
||||
|
||||
|
||||
/* Return the number of bytes available on the stack. */
|
||||
#if defined (_KERNEL) && defined(__linux__)
|
||||
#include <asm/current.h>
|
||||
@@ -90,8 +90,8 @@ static intptr_t stack_remaining(void) {
|
||||
|
||||
typedef struct _label_t { long long unsigned val[JMP_BUF_CNT]; } label_t;
|
||||
|
||||
int setjmp(label_t *) __attribute__ ((__nothrow__));
|
||||
extern __attribute__((noreturn)) void longjmp(label_t *);
|
||||
int ASMABI setjmp(label_t *) __attribute__ ((__nothrow__));
|
||||
extern __attribute__((noreturn)) void ASMABI longjmp(label_t *);
|
||||
|
||||
#define LUAI_THROW(L,c) longjmp(&(c)->b)
|
||||
#define LUAI_TRY(L,c,a) if (setjmp(&(c)->b) == 0) { a }
|
||||
|
||||
@@ -27,28 +27,16 @@
|
||||
#include <linux/linkage.h>
|
||||
#endif
|
||||
|
||||
#ifndef RET
|
||||
#define RET ret
|
||||
#endif
|
||||
|
||||
#undef ENTRY
|
||||
#define ENTRY(x) \
|
||||
.text; \
|
||||
.align 8; \
|
||||
.globl x; \
|
||||
.type x, @function; \
|
||||
x:
|
||||
|
||||
#define SET_SIZE(x) \
|
||||
.size x, [.-x]
|
||||
|
||||
/*
|
||||
* Setjmp and longjmp implement non-local gotos using state vectors
|
||||
* type label_t.
|
||||
*/
|
||||
#ifdef __x86_64__
|
||||
|
||||
ENTRY(setjmp)
|
||||
#define _ASM
|
||||
#include <sys/asm_linkage.h>
|
||||
|
||||
ENTRY_ALIGN(setjmp, 8)
|
||||
movq %rsp, 0(%rdi)
|
||||
movq %rbp, 8(%rdi)
|
||||
movq %rbx, 16(%rdi)
|
||||
@@ -62,7 +50,7 @@ x:
|
||||
RET
|
||||
SET_SIZE(setjmp)
|
||||
|
||||
ENTRY(longjmp)
|
||||
ENTRY_ALIGN(longjmp, 8)
|
||||
movq 0(%rdi), %rsp
|
||||
movq 8(%rdi), %rbp
|
||||
movq 16(%rdi), %rbx
|
||||
|
||||
Reference in New Issue
Block a user