* [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai
@ 2024-02-14 16:20 Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 1/6] compat support: cobalt: Move 32-bit compat files to generic Clara Kowalsky
` (7 more replies)
0 siblings, 8 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
Hi all,
this is the third version of the series for adding the 32-bit compat
support for arm64 to xenomai 3.
Thank you Jan and Florian for your comments.
Changes in v3:
- Squashed patch 2 with old patch 5 "Use syscall_get_arguments()".
- Cleaned up pipeline_get_syscall_args() and added reasoning.
Best regards,
Clara Kowalsky
Clara Kowalsky (6):
compat support: cobalt: Move 32-bit compat files to generic
compat support: cobalt/arm: Refactor registers for arm alignment
compat support: cobalt/arm64: Add compat support and clean-up
compat support: cobalt: Bump ABI revision
compat support: lib/cobalt: Fix VFP detection for arm on arm64
compat support: cobalt/arm64: Enable compat support for arm64
.../kernel/dovetail/pipeline/pipeline.h | 9 --
.../arch/arm/include/asm/xenomai/syscall.h | 26 ++---
.../arch/arm/include/asm/xenomai/syscall32.h | 8 +-
.../include/asm/xenomai/uapi/abirevision.h | 1 +
.../arm/include/asm/xenomai/uapi/features.h | 3 +-
.../arm/include/asm/xenomai/uapi/syscall.h | 2 -
kernel/cobalt/arch/arm64/Kconfig | 3 +-
.../arch/arm64/include/asm/xenomai/syscall.h | 10 +-
.../arm64/include/asm/xenomai/syscall32.h | 12 ---
.../include/asm/xenomai/uapi/abirevision.h | 16 +++
.../arm64/include/asm/xenomai/uapi/features.h | 3 +-
.../arch/x86/include/asm/xenomai/syscall32.h | 102 ------------------
.../asm-generic}/xenomai/syscall32-table.h | 6 +-
.../include/asm-generic/xenomai/syscall32.h | 78 +++++++++++++-
kernel/cobalt/posix/syscall.c | 16 +--
kernel/cobalt/posix/syscall.h | 2 +-
kernel/cobalt/trace/cobalt-posix.h | 4 +-
lib/cobalt/arch/arm/features.c | 5 +
.../arch/arm/include/asm/xenomai/syscall.h | 65 ++++++-----
19 files changed, 166 insertions(+), 205 deletions(-)
create mode 120000 kernel/cobalt/arch/arm/include/asm/xenomai/uapi/abirevision.h
delete mode 100644 kernel/cobalt/arch/arm64/include/asm/xenomai/syscall32.h
create mode 100644 kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/abirevision.h
delete mode 100644 kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
rename kernel/cobalt/{arch/x86/include/asm => include/asm-generic}/xenomai/syscall32-table.h (94%)
--
2.39.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3 1/6] compat support: cobalt: Move 32-bit compat files to generic
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
@ 2024-02-14 16:20 ` Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 2/6] compat support: cobalt/arm: Refactor registers for arm alignment Clara Kowalsky
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
In preparation for the 32-bit compat support for arm64, the compat files
from x86 are moved to the asm-generic directory. This allows us to use
these files also for arm64.
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
.../arch/arm/include/asm/xenomai/syscall32.h | 8 +-
.../arm64/include/asm/xenomai/syscall32.h | 12 ---
.../arch/x86/include/asm/xenomai/syscall32.h | 102 ------------------
.../asm-generic}/xenomai/syscall32-table.h | 6 +-
.../include/asm-generic/xenomai/syscall32.h | 78 +++++++++++++-
kernel/cobalt/posix/syscall.c | 12 +--
kernel/cobalt/posix/syscall.h | 2 +-
kernel/cobalt/trace/cobalt-posix.h | 4 +-
8 files changed, 93 insertions(+), 131 deletions(-)
delete mode 100644 kernel/cobalt/arch/arm64/include/asm/xenomai/syscall32.h
delete mode 100644 kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
rename kernel/cobalt/{arch/x86/include/asm => include/asm-generic}/xenomai/syscall32-table.h (94%)
diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall32.h b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall32.h
index 95c5a1168..11587bd71 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall32.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall32.h
@@ -19,6 +19,12 @@
#ifndef _COBALT_ARM_ASM_SYSCALL32_H
#define _COBALT_ARM_ASM_SYSCALL32_H
-#include <asm-generic/xenomai/syscall32.h>
+#define __COBALT_CALL32_INITHAND(__handler)
+
+#define __COBALT_CALL32_INITMODE(__mode)
+
+#define __COBALT_CALL32_ENTRY(__name, __handler)
+
+#define __COBALT_CALL_COMPAT(__reg) 0
#endif /* !_COBALT_ARM_ASM_SYSCALL32_H */
diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall32.h b/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall32.h
deleted file mode 100644
index 13aa8a761..000000000
--- a/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall32.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * SPDX-License-Identifier: GPL-2.0
- *
- * Copyright (C) 2014 Philippe Gerum <rpm@xenomai.org>
- */
-
-#ifndef _COBALT_ARM64_SYSCALL32_H
-#define _COBALT_ARM64_SYSCALL32_H
-
-#include <asm-generic/xenomai/syscall32.h>
-
-#endif /* !_COBALT_ARM64_SYSCALL32_H */
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
deleted file mode 100644
index f023de354..000000000
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2014 Philippe Gerum <rpm@xenomai.org>.
- *
- * Xenomai is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2 of the License,
- * or (at your option) any later version.
- *
- * Xenomai is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Xenomai; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- */
-#ifndef _COBALT_X86_ASM_SYSCALL32_H
-#define _COBALT_X86_ASM_SYSCALL32_H
-
-#include <asm/unistd.h>
-
-#ifdef CONFIG_IA32_EMULATION
-
-#define __COBALT_IA32_BASE 256 /* Power of two. */
-
-#define __COBALT_SYSNR32emu(__reg) \
- ({ \
- long __nr = __reg; \
- if (in_ia32_syscall()) \
- __nr += __COBALT_IA32_BASE; \
- __nr; \
- })
-
-#define __COBALT_COMPAT32emu(__reg) \
- (in_ia32_syscall() ? __COBALT_COMPAT_BIT : 0)
-
-#if __NR_COBALT_SYSCALLS > __COBALT_IA32_BASE
-#error "__NR_COBALT_SYSCALLS > __COBALT_IA32_BASE"
-#endif
-
-#define __syshand32emu__(__name) \
- ((cobalt_syshand)(void (*)(void))(CoBaLt32emu_ ## __name))
-
-#define __COBALT_CALL32emu_INITHAND(__handler) \
- [__COBALT_IA32_BASE ... __COBALT_IA32_BASE + __NR_COBALT_SYSCALLS-1] = __handler,
-
-#define __COBALT_CALL32emu_INITMODE(__mode) \
- [__COBALT_IA32_BASE ... __COBALT_IA32_BASE + __NR_COBALT_SYSCALLS-1] = __mode,
-
-/* ia32 default entry (no thunk) */
-#define __COBALT_CALL32emu_ENTRY(__name, __handler) \
- [sc_cobalt_ ## __name + __COBALT_IA32_BASE] = __handler,
-
-/* ia32 thunk installation */
-#define __COBALT_CALL32emu_THUNK(__name) \
- __COBALT_CALL32emu_ENTRY(__name, __syshand32emu__(__name))
-
-/* ia32 thunk implementation. */
-#define COBALT_SYSCALL32emu(__name, __mode, __args) \
- long CoBaLt32emu_ ## __name __args
-
-/* ia32 thunk declaration. */
-#define COBALT_SYSCALL32emu_DECL(__name, __args) \
- long CoBaLt32emu_ ## __name __args
-
-#else /* !CONFIG_IA32_EMULATION */
-
-/* ia32 emulation support disabled. */
-
-#define __COBALT_SYSNR32emu(__reg) (__reg)
-
-#define __COBALT_COMPAT32emu(__reg) 0
-
-#define __COBALT_CALL32emu_INITHAND(__handler)
-
-#define __COBALT_CALL32emu_INITMODE(__mode)
-
-#define __COBALT_CALL32emu_ENTRY(__name, __handler)
-
-#define __COBALT_CALL32emu_THUNK(__name)
-
-#define COBALT_SYSCALL32emu_DECL(__name, __args)
-
-#endif /* !CONFIG_IA32_EMULATION */
-
-#define __COBALT_CALL32_ENTRY(__name, __handler) \
- __COBALT_CALL32emu_ENTRY(__name, __handler)
-
-#define __COBALT_CALL32_INITHAND(__handler) \
- __COBALT_CALL32emu_INITHAND(__handler)
-
-#define __COBALT_CALL32_INITMODE(__mode) \
- __COBALT_CALL32emu_INITMODE(__mode)
-
-/* Already checked for __COBALT_SYSCALL_BIT */
-#define __COBALT_CALL32_SYSNR(__reg) __COBALT_SYSNR32emu(__reg)
-
-#define __COBALT_CALL_COMPAT(__reg) __COBALT_COMPAT32emu(__reg)
-
-#endif /* !_COBALT_X86_ASM_SYSCALL32_H */
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h b/kernel/cobalt/include/asm-generic/xenomai/syscall32-table.h
similarity index 94%
rename from kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
rename to kernel/cobalt/include/asm-generic/xenomai/syscall32-table.h
index 3d64c46a7..91a65235f 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/syscall32-table.h
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
-#ifndef _COBALT_X86_ASM_SYSCALL32_TABLE_H
-#define _COBALT_X86_ASM_SYSCALL32_TABLE_H
+#ifndef _COBALT_ASM_SYSCALL32_TABLE_H
+#define _COBALT_ASM_SYSCALL32_TABLE_H
/*
* CAUTION: This file is read verbatim into the main syscall
@@ -59,4 +59,4 @@ __COBALT_CALL32emu_THUNK(mq_timedreceive64)
__COBALT_CALL32emu_THUNK(sigtimedwait64)
__COBALT_CALL32emu_THUNK(recvmmsg64)
-#endif /* !_COBALT_X86_ASM_SYSCALL32_TABLE_H */
+#endif /* !_COBALT_ASM_SYSCALL32_TABLE_H */
diff --git a/kernel/cobalt/include/asm-generic/xenomai/syscall32.h b/kernel/cobalt/include/asm-generic/xenomai/syscall32.h
index b0c6f4a7c..3e1fcab8f 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/syscall32.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/syscall32.h
@@ -19,12 +19,82 @@
#ifndef _COBALT_ASM_GENERIC_SYSCALL32_H
#define _COBALT_ASM_GENERIC_SYSCALL32_H
-#define __COBALT_CALL32_INITHAND(__handler)
+#ifdef CONFIG_XENO_ARCH_SYS3264
-#define __COBALT_CALL32_INITMODE(__mode)
+#define __COBALT_COMPAT32_BASE 256 /* Power of two. */
-#define __COBALT_CALL32_ENTRY(__name, __handler)
+#define __COBALT_SYSNR32emu(__reg) \
+ ({ \
+ long __nr = __reg; \
+ if (in_compat_syscall()) \
+ __nr += __COBALT_COMPAT32_BASE; \
+ __nr; \
+ })
-#define __COBALT_CALL_COMPAT(__reg) 0
+#define __COBALT_COMPAT32emu(__reg) \
+ (in_compat_syscall() ? __COBALT_COMPAT_BIT : 0)
+
+#if __NR_COBALT_SYSCALLS > __COBALT_COMPAT32_BASE
+#error "__NR_COBALT_SYSCALLS > __COBALT_COMPAT32_BASE"
+#endif
+
+#define __syshand32emu__(__name) \
+ ((cobalt_syshand)(void (*)(void))(CoBaLt32emu_ ## __name))
+
+#define __COBALT_CALL32emu_INITHAND(__handler) \
+ [__COBALT_COMPAT32_BASE ... __COBALT_COMPAT32_BASE + __NR_COBALT_SYSCALLS-1] = __handler,
+
+#define __COBALT_CALL32emu_INITMODE(__mode) \
+ [__COBALT_COMPAT32_BASE ... __COBALT_COMPAT32_BASE + __NR_COBALT_SYSCALLS-1] = __mode,
+
+/* compat default entry (no thunk) */
+#define __COBALT_CALL32emu_ENTRY(__name, __handler) \
+ [sc_cobalt_ ## __name + __COBALT_COMPAT32_BASE] = __handler,
+
+/* compat thunk installation */
+#define __COBALT_CALL32emu_THUNK(__name) \
+ __COBALT_CALL32emu_ENTRY(__name, __syshand32emu__(__name))
+
+/* compat thunk implementation. */
+#define COBALT_SYSCALL32emu(__name, __mode, __args) \
+ long CoBaLt32emu_ ## __name __args
+
+/* compat thunk declaration. */
+#define COBALT_SYSCALL32emu_DECL(__name, __args) \
+ long CoBaLt32emu_ ## __name __args
+
+#else /* !CONFIG_XENO_ARCH_SYS3264 */
+
+/* compat support disabled. */
+
+#define __COBALT_SYSNR32emu(__reg) (__reg)
+
+#define __COBALT_COMPAT32emu(__reg) 0
+
+#define __COBALT_CALL32emu_INITHAND(__handler)
+
+#define __COBALT_CALL32emu_INITMODE(__mode)
+
+#define __COBALT_CALL32emu_ENTRY(__name, __handler)
+
+#define __COBALT_CALL32emu_THUNK(__name)
+
+#define COBALT_SYSCALL32emu_DECL(__name, __args)
+
+#endif /* !CONFIG_XENO_ARCH_SYS3264 */
+
+#define __COBALT_CALL32_ENTRY(__name, __handler) \
+ __COBALT_CALL32emu_ENTRY(__name, __handler)
+
+#define __COBALT_CALL32_INITHAND(__handler) \
+ __COBALT_CALL32emu_INITHAND(__handler)
+
+#define __COBALT_CALL32_INITMODE(__mode) \
+ __COBALT_CALL32emu_INITMODE(__mode)
+
+/* Already checked for __COBALT_SYSCALL_BIT */
+#define __COBALT_CALL32_SYSNR(__reg) __COBALT_SYSNR32emu(__reg)
+
+#define __COBALT_CALL_COMPAT(__reg) __COBALT_COMPAT32emu(__reg)
#endif /* !_COBALT_ASM_GENERIC_SYSCALL32_H */
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index 66dd1aec8..6e1f15ea5 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -371,12 +371,12 @@ static int CoBaLt_ni(void)
* handler for a 32bit architecture), optionally followed by a set of
* 32bit syscall entries offset by an arch-specific base index, which
* default to the native calls. These nitty-gritty details are defined
- * by <asm/xenomai/syscall32.h>. 32bit architectures - or 64bit ones
+ * by <asm-generic/xenomai/syscall32.h>. 32bit architectures - or 64bit ones
* for which we don't support any 32bit ABI model - will simply define
* __COBALT_CALL32_ENTRY() as an empty macro.
*
* - finally, 32bit thunk entries are generated by including
- * <asm/xenomai/syscall32-table.h>, overriding the default handlers
+ * <asm-generic/xenomai/syscall32-table.h>, overriding the default handlers
* installed during the previous step.
*
* For instance, with CONFIG_IA32_EMULATION support enabled in an
@@ -385,7 +385,7 @@ static int CoBaLt_ni(void)
*
* [sc_cobalt_mq_timedreceive] = CoBaLt_mq_timedreceive,
* ...
- * [sc_cobalt_mq_timedreceive + __COBALT_IA32_BASE] = CoBaLt32emu_mq_timedreceive,
+ * [sc_cobalt_mq_timedreceive + __COBALT_COMPAT32_BASE] = CoBaLt32emu_mq_timedreceive,
*
* CoBaLt32emu_mq_timedreceive() would do the required thunking for
* dealing with the 32<->64bit conversion of arguments. On the other
@@ -395,10 +395,10 @@ static int CoBaLt_ni(void)
*
* [sc_cobalt_sched_yield] = CoBaLt_sched_yield,
* ...
- * [sc_cobalt_sched_yield + __COBALT_IA32_BASE] = CoBaLt_sched_yield,
+ * [sc_cobalt_sched_yield + __COBALT_COMPAT32_BASE] = CoBaLt_sched_yield,
*
* Accordingly, applications targeting the ia32 model issue syscalls
- * in the range [__COBALT_IA32_BASE..__COBALT_IA32_BASE +
+ * in the range [__COBALT_COMPAT32_BASE..__COBALT_COMPAT32_BASE +
* __NR_COBALT_SYSCALLS-1], whilst native (32/64bit) ones issue
* syscalls in the range [0..__NR_COBALT_SYSCALLS-1].
*
@@ -444,7 +444,7 @@ static const cobalt_syshand cobalt_syscalls[] = {
__COBALT_CALL_NI
__COBALT_CALL_ENTRIES
#ifdef CONFIG_XENO_ARCH_SYS3264
-#include <asm/xenomai/syscall32-table.h>
+#include <asm-generic/xenomai/syscall32-table.h>
#endif
};
diff --git a/kernel/cobalt/posix/syscall.h b/kernel/cobalt/posix/syscall.h
index 3a4c98d7a..e43f8d991 100644
--- a/kernel/cobalt/posix/syscall.h
+++ b/kernel/cobalt/posix/syscall.h
@@ -30,7 +30,7 @@ struct pt_regs;
#define COBALT_SYSCALL_DECL(__name, __args) \
long CoBaLt_ ## __name __args
-#include <asm/xenomai/syscall32.h>
+#include <asm-generic/xenomai/syscall32.h>
int handle_head_syscall(bool caller_is_relaxed,
struct pt_regs *regs);
diff --git a/kernel/cobalt/trace/cobalt-posix.h b/kernel/cobalt/trace/cobalt-posix.h
index 1c9302324..fc8e72e39 100644
--- a/kernel/cobalt/trace/cobalt-posix.h
+++ b/kernel/cobalt/trace/cobalt-posix.h
@@ -42,8 +42,8 @@
#define __timespec_args(__name) \
(long long)__entry->tv_sec_##__name, __entry->tv_nsec_##__name
-#ifdef CONFIG_IA32_EMULATION
-#define __sc_compat(__name) , { sc_cobalt_##__name + __COBALT_IA32_BASE, "compat-" #__name }
+#ifdef CONFIG_XENO_ARCH_SYS3264
+#define __sc_compat(__name) , { sc_cobalt_##__name + __COBALT_COMPAT32_BASE, "compat-" #__name }
#else
#define __sc_compat(__name)
#endif
--
2.39.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 2/6] compat support: cobalt/arm: Refactor registers for arm alignment
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 1/6] compat support: cobalt: Move 32-bit compat files to generic Clara Kowalsky
@ 2024-02-14 16:20 ` Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 3/6] compat support: cobalt/arm64: Add compat support and clean-up Clara Kowalsky
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
So far, the syscall number for arm is loaded in ARM_ORIG_r0 and ARM_r7
contains the syscall marker XENO_ARM_SYSCALL.
An alignment change is now made with respect to the arm EABI convention
such that ARM_r7 holds the syscall number and therefore r0 to r6 can be
used normally as arguments.
The now unused XENO_ARM_SYSCALL is removed.
With the arm alignment, the specific arm implementation
pipeline_get_syscall_args() for fetching the syscall arguments is not
needed anymore and is replaced by the generic function
syscall_get_arguments().
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
.../kernel/dovetail/pipeline/pipeline.h | 9 ---
.../arch/arm/include/asm/xenomai/syscall.h | 26 ++------
.../arm/include/asm/xenomai/uapi/syscall.h | 2 -
kernel/cobalt/posix/syscall.c | 4 +-
.../arch/arm/include/asm/xenomai/syscall.h | 65 +++++++++----------
5 files changed, 40 insertions(+), 66 deletions(-)
diff --git a/include/cobalt/kernel/dovetail/pipeline/pipeline.h b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
index 18a7da191..478580fc2 100644
--- a/include/cobalt/kernel/dovetail/pipeline/pipeline.h
+++ b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
@@ -92,13 +92,4 @@ static inline void pipeline_prepare_panic(void)
/* N/A */
}
-#ifndef pipeline_get_syscall_args
-static inline void pipeline_get_syscall_args(struct task_struct *task,
- struct pt_regs *regs,
- unsigned long *args)
-{
- syscall_get_arguments(task, regs, args);
-}
-#endif /* !pipeline_get_syscall_args */
-
#endif /* !_COBALT_KERNEL_DOVETAIL_PIPELINE_H */
diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
index 172197725..0cd59380d 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
@@ -29,13 +29,11 @@
#include <asm-generic/xenomai/syscall.h>
/*
- * Cobalt syscall numbers can be fetched from ARM_ORIG_r0 with ARM_r7
- * containing the Xenomai syscall marker, Linux syscalls directly from
+ * Cobalt syscall and Linux syscall numbers can be fetched directly from
* ARM_r7. Since we have to work with Dovetail whilst remaining binary
- * compatible with applications built for the I-pipe, we retain the
- * old syscall signature based on receiving XENO_ARM_SYSCALL in
- * ARM_r7, possibly ORed with __COBALT_SYSCALL_BIT by Dovetail
- * (IPIPE_COMPAT mode).
+ * compatible with applications built for the I-pipe, the syscall signature
+ * is possibly ORed with __COBALT_SYSCALL_BIT by Dovetail (IPIPE_COMPAT
+ * mode).
*
* FIXME: We also have __COBALT_SYSCALL_BIT (equal to
* __OOB_SYSCALL_BIT) present in the actual syscall number in r0,
@@ -44,8 +42,8 @@
* Dovetail abides by, with the actual syscall number into r7 ORed
* with __OOB_SYSCALL_BIT, freeing r0 for passing a call argument.
*/
-#define __xn_reg_sys(__regs) ((__regs)->ARM_ORIG_r0)
-#define __xn_syscall_p(__regs) (((__regs)->ARM_r7 & ~__COBALT_SYSCALL_BIT) == XENO_ARM_SYSCALL)
+#define __xn_reg_sys(__regs) ((__regs)->ARM_r7)
+#define __xn_syscall_p(__regs) ((__regs)->ARM_r7 & __COBALT_SYSCALL_BIT)
#define __xn_syscall(__regs) (__xn_reg_sys(__regs) & ~__COBALT_SYSCALL_BIT)
/*
@@ -77,16 +75,4 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
return __xn_reg_rval(regs) == -EINTR;
}
-#define pipeline_get_syscall_args pipeline_get_syscall_args
-static inline void pipeline_get_syscall_args(struct task_struct *task,
- struct pt_regs *regs,
- unsigned long *args)
-{
- args[0] = regs->ARM_r1;
- args[1] = regs->ARM_r2;
- args[2] = regs->ARM_r3;
- args[3] = regs->ARM_r4;
- args[4] = regs->ARM_r5;
-}
-
#endif /* !_COBALT_ARM_SYSCALL_H */
diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/syscall.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/syscall.h
index c079a358c..c9561e030 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/syscall.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/syscall.h
@@ -23,8 +23,6 @@
#define __xn_syscode(__nr) (__COBALT_SYSCALL_BIT | (__nr))
-#define XENO_ARM_SYSCALL 0x000F0042 /* carefully chosen... */
-
#define XENOMAI_SYSARCH_TSCINFO 4
#endif /* !_COBALT_ARM_ASM_UAPI_SYSCALL_H */
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index 6e1f15ea5..1d37cb279 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -584,7 +584,7 @@ restart:
*/
p = current;
- pipeline_get_syscall_args(p, regs, args);
+ syscall_get_arguments(p, regs, args);
ret = handler(args[0], args[1], args[2], args[3], args[4]);
if (ret == -ENOSYS && (sysflags & __xn_exec_adaptive)) {
@@ -733,7 +733,7 @@ restart:
}
p = current;
- pipeline_get_syscall_args(p, regs, args);
+ syscall_get_arguments(p, regs, args);
ret = handler(args[0], args[1], args[2], args[3], args[4]);
if (ret == -ENOSYS && (sysflags & __xn_exec_adaptive)) {
diff --git a/lib/cobalt/arch/arm/include/asm/xenomai/syscall.h b/lib/cobalt/arch/arm/include/asm/xenomai/syscall.h
index 864330490..105bf9faf 100644
--- a/lib/cobalt/arch/arm/include/asm/xenomai/syscall.h
+++ b/lib/cobalt/arch/arm/include/asm/xenomai/syscall.h
@@ -37,62 +37,61 @@
#error TLS support (__thread) is broken with GCC >= 4.3, use --disable-tls when configuring
#endif
-#define LOADARGS_0(syscode, dummy...) \
- __a0 = (unsigned long) (syscode)
+#define LOADARGS_0(syscode, arg1...)
#define LOADARGS_1(syscode, arg1) \
- LOADARGS_0(syscode); \
- __a1 = (unsigned long) (arg1)
+ LOADARGS_0(syscode, arg1); \
+ __a0 = (unsigned long) (arg1)
#define LOADARGS_2(syscode, arg1, arg2) \
LOADARGS_1(syscode, arg1); \
- __a2 = (unsigned long) (arg2)
+ __a1 = (unsigned long) (arg2)
#define LOADARGS_3(syscode, arg1, arg2, arg3) \
LOADARGS_2(syscode, arg1, arg2); \
- __a3 = (unsigned long) (arg3)
+ __a2 = (unsigned long) (arg3)
#define LOADARGS_4(syscode, arg1, arg2, arg3, arg4) \
LOADARGS_3(syscode, arg1, arg2, arg3); \
- __a4 = (unsigned long) (arg4)
+ __a3 = (unsigned long) (arg4)
#define LOADARGS_5(syscode, arg1, arg2, arg3, arg4, arg5) \
LOADARGS_4(syscode, arg1, arg2, arg3, arg4); \
- __a5 = (unsigned long) (arg5)
+ __a4 = (unsigned long) (arg5)
-#define CLOBBER_REGS_0 "r0"
-#define CLOBBER_REGS_1 CLOBBER_REGS_0, "r1"
-#define CLOBBER_REGS_2 CLOBBER_REGS_1, "r2"
-#define CLOBBER_REGS_3 CLOBBER_REGS_2, "r3"
-#define CLOBBER_REGS_4 CLOBBER_REGS_3, "r4"
-#define CLOBBER_REGS_5 CLOBBER_REGS_4, "r5"
+#define CLOBBER_REGS_0
+#define CLOBBER_REGS_1 "r0"
+#define CLOBBER_REGS_2 CLOBBER_REGS_1, "r1"
+#define CLOBBER_REGS_3 CLOBBER_REGS_2, "r2"
+#define CLOBBER_REGS_4 CLOBBER_REGS_3, "r3"
+#define CLOBBER_REGS_5 CLOBBER_REGS_4, "r4"
-#define LOADREGS_0 __r0 = __a0
-#define LOADREGS_1 LOADREGS_0; __r1 = __a1
-#define LOADREGS_2 LOADREGS_1; __r2 = __a2
-#define LOADREGS_3 LOADREGS_2; __r3 = __a3
-#define LOADREGS_4 LOADREGS_3; __r4 = __a4
-#define LOADREGS_5 LOADREGS_4; __r5 = __a5
+#define LOADREGS_0
+#define LOADREGS_1 __r0 = __a0
+#define LOADREGS_2 LOADREGS_1; __r1 = __a1
+#define LOADREGS_3 LOADREGS_2; __r2 = __a2
+#define LOADREGS_4 LOADREGS_3; __r3 = __a3
+#define LOADREGS_5 LOADREGS_4; __r4 = __a4
#define ASM_INDECL_0 \
- unsigned long __a0; register unsigned long __r0 __asm__ ("r0");
+ register unsigned long __r0 __asm__ ("r0");
#define ASM_INDECL_1 ASM_INDECL_0; \
- unsigned long __a1; register unsigned long __r1 __asm__ ("r1")
+ unsigned long __a0;
#define ASM_INDECL_2 ASM_INDECL_1; \
- unsigned long __a2; register unsigned long __r2 __asm__ ("r2")
+ unsigned long __a1; register unsigned long __r1 __asm__ ("r1")
#define ASM_INDECL_3 ASM_INDECL_2; \
- unsigned long __a3; register unsigned long __r3 __asm__ ("r3")
+ unsigned long __a2; register unsigned long __r2 __asm__ ("r2")
#define ASM_INDECL_4 ASM_INDECL_3; \
- unsigned long __a4; register unsigned long __r4 __asm__ ("r4")
+ unsigned long __a3; register unsigned long __r3 __asm__ ("r3")
#define ASM_INDECL_5 ASM_INDECL_4; \
- unsigned long __a5; register unsigned long __r5 __asm__ ("r5")
+ unsigned long __a4; register unsigned long __r4 __asm__ ("r4")
-#define ASM_INPUT_0 "0" (__r0)
-#define ASM_INPUT_1 ASM_INPUT_0, "r" (__r1)
-#define ASM_INPUT_2 ASM_INPUT_1, "r" (__r2)
-#define ASM_INPUT_3 ASM_INPUT_2, "r" (__r3)
-#define ASM_INPUT_4 ASM_INPUT_3, "r" (__r4)
-#define ASM_INPUT_5 ASM_INPUT_4, "r" (__r5)
+#define ASM_INPUT_0 "r" (__r7)
+#define ASM_INPUT_1 ASM_INPUT_0, "0" (__r0)
+#define ASM_INPUT_2 ASM_INPUT_1, "r" (__r1)
+#define ASM_INPUT_3 ASM_INPUT_2, "r" (__r2)
+#define ASM_INPUT_4 ASM_INPUT_3, "r" (__r3)
+#define ASM_INPUT_5 ASM_INPUT_4, "r" (__r4)
#define XENOMAI_DO_SYSCALL(nr, op, args...) \
({ \
ASM_INDECL_##nr; \
- unsigned long __r7 = XENO_ARM_SYSCALL; \
+ unsigned long __r7 = __xn_syscode(op); \
LOADARGS_##nr(__xn_syscode(op), args); \
__asm__ __volatile__ ("" : /* */ : /* */ : \
CLOBBER_REGS_##nr); \
--
2.39.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 3/6] compat support: cobalt/arm64: Add compat support and clean-up
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 1/6] compat support: cobalt: Move 32-bit compat files to generic Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 2/6] compat support: cobalt/arm: Refactor registers for arm alignment Clara Kowalsky
@ 2024-02-14 16:20 ` Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 4/6] compat support: cobalt: Bump ABI revision Clara Kowalsky
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h b/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h
index 26e4ed8c3..42057e986 100644
--- a/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/arm64/include/asm/xenomai/syscall.h
@@ -9,8 +9,6 @@
#define _COBALT_ARM64_SYSCALL_H
#include <linux/errno.h>
-#include <linux/uaccess.h>
-#include <asm/unistd.h>
#include <asm/ptrace.h>
#include <asm-generic/xenomai/syscall.h>
@@ -20,7 +18,13 @@
*/
#define __xn_reg_sys(__regs) ((unsigned long)(__regs)->syscallno)
#define __xn_syscall_p(regs) ((__xn_reg_sys(regs) & __COBALT_SYSCALL_BIT) != 0)
+
+#ifdef CONFIG_XENO_ARCH_SYS3264
+#define __xn_syscall(__regs) __COBALT_SYSNR32emu(__xn_reg_sys(__regs) \
+ & ~__COBALT_SYSCALL_BIT)
+#else
#define __xn_syscall(__regs) ((unsigned long)(__xn_reg_sys(__regs) & ~__COBALT_SYSCALL_BIT))
+#endif
#define __xn_reg_rval(__regs) ((__regs)->regs[0])
#define __xn_reg_pc(__regs) ((__regs)->pc)
@@ -32,7 +36,7 @@
*/
#define __xn_rootcall_p(__regs, __code) \
({ \
- *(__code) = __xn_syscall(__regs); \
+ *(__code) = __xn_reg_sys(__regs); \
*(__code) < NR_syscalls; \
})
--
2.39.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 4/6] compat support: cobalt: Bump ABI revision
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
` (2 preceding siblings ...)
2024-02-14 16:20 ` [PATCH v3 3/6] compat support: cobalt/arm64: Add compat support and clean-up Clara Kowalsky
@ 2024-02-14 16:20 ` Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 5/6] compat support: lib/cobalt: Fix VFP detection for arm on arm64 Clara Kowalsky
` (3 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
With introduction of the compat support, arm and arm64 are linked and
therefore the ABI revision is aligned by setting it in a shared file.
The ABI revision of arm is incremented and arm64 is bumped to the same
version.
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
.../arm/include/asm/xenomai/uapi/abirevision.h | 1 +
.../arch/arm/include/asm/xenomai/uapi/features.h | 3 +--
.../arm64/include/asm/xenomai/uapi/abirevision.h | 16 ++++++++++++++++
.../arm64/include/asm/xenomai/uapi/features.h | 3 +--
4 files changed, 19 insertions(+), 4 deletions(-)
create mode 120000 kernel/cobalt/arch/arm/include/asm/xenomai/uapi/abirevision.h
create mode 100644 kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/abirevision.h
diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/abirevision.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/abirevision.h
new file mode 120000
index 000000000..e4b49fffc
--- /dev/null
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/abirevision.h
@@ -0,0 +1 @@
+../../../../../arm64/include/asm/xenomai/uapi/abirevision.h
\ No newline at end of file
diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/features.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/features.h
index 4a87c6732..0db0cd3eb 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/features.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/features.h
@@ -21,8 +21,7 @@
#ifndef _COBALT_ARM_ASM_UAPI_FEATURES_H
#define _COBALT_ARM_ASM_UAPI_FEATURES_H
-/* The ABI revision level we use on this arch. */
-#define XENOMAI_ABI_REV 19UL
+#include <asm/xenomai/uapi/abirevision.h>
#define XENOMAI_FEAT_DEP (__xn_feat_generic_mask)
diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/abirevision.h b/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/abirevision.h
new file mode 100644
index 000000000..1d17c113b
--- /dev/null
+++ b/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/abirevision.h
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * ABI revision
+ *
+ * Copyright (c) Siemens AG 2024
+ *
+ * Authors:
+ * Clara Kowalsky <clara.kowalsky@siemens.com>
+ */
+#ifndef _COBALT_ASM_UAPI_ABIREVISION_H
+#define _COBALT_ASM_UAPI_ABIREVISION_H
+
+/* The ABI revision level we use on this arch. */
+#define XENOMAI_ABI_REV 20UL
+
+#endif /* !_COBALT_ASM_UAPI_ABIREVISION_H */
diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/features.h b/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/features.h
index fba1db391..c03a0bc7e 100644
--- a/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/features.h
+++ b/kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/features.h
@@ -21,8 +21,7 @@
#ifndef _COBALT_ARM64_ASM_UAPI_FEATURES_H
#define _COBALT_ARM64_ASM_UAPI_FEATURES_H
-/* The ABI revision level we use on this arch. */
-#define XENOMAI_ABI_REV 3UL
+#include <asm/xenomai/uapi/abirevision.h>
#define XENOMAI_FEAT_DEP (__xn_feat_generic_mask)
--
2.39.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 5/6] compat support: lib/cobalt: Fix VFP detection for arm on arm64
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
` (3 preceding siblings ...)
2024-02-14 16:20 ` [PATCH v3 4/6] compat support: cobalt: Bump ABI revision Clara Kowalsky
@ 2024-02-14 16:20 ` Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 6/6] compat support: cobalt/arm64: Enable compat support for arm64 Clara Kowalsky
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
In arm64 the floating point feature is fp and not vfp as in arm.
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
lib/cobalt/arch/arm/features.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/cobalt/arch/arm/features.c b/lib/cobalt/arch/arm/features.c
index c91886102..707c87c7c 100644
--- a/lib/cobalt/arch/arm/features.c
+++ b/lib/cobalt/arch/arm/features.c
@@ -52,6 +52,11 @@ int cobalt_fp_detect(void)
features |= __COBALT_HAVE_VFP;
break;
}
+ /* arm on arm64 */
+ if (strstr(buffer, "fp")) {
+ features |= __COBALT_HAVE_VFP;
+ break;
+ }
}
fclose(fp);
--
2.39.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 6/6] compat support: cobalt/arm64: Enable compat support for arm64
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
` (4 preceding siblings ...)
2024-02-14 16:20 ` [PATCH v3 5/6] compat support: lib/cobalt: Fix VFP detection for arm on arm64 Clara Kowalsky
@ 2024-02-14 16:20 ` Clara Kowalsky
2024-02-15 9:56 ` [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Florian Bezdeka
2024-02-15 11:29 ` Jan Kiszka
7 siblings, 0 replies; 10+ messages in thread
From: Clara Kowalsky @ 2024-02-14 16:20 UTC (permalink / raw)
To: xenomai; +Cc: florian.bezdeka, jan.kiszka, Clara Kowalsky
This enables the 32-bit EABI compat mode for building the user-space
libraries of arm64. It allows us to run arm(hf) applications on arm64
kernels.
Furthermore, the dependency from XENO_ARCH_SYS3264 to CONFIG_COMPAT_VDSO
is added.
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
kernel/cobalt/arch/arm64/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/cobalt/arch/arm64/Kconfig b/kernel/cobalt/arch/arm64/Kconfig
index bdf5f1602..14e5fa1c4 100644
--- a/kernel/cobalt/arch/arm64/Kconfig
+++ b/kernel/cobalt/arch/arm64/Kconfig
@@ -5,7 +5,8 @@ config XENO_ARCH_FPU
def_bool y
config XENO_ARCH_SYS3264
- def_bool n
+ def_bool COMPAT
+ depends on COMPAT_VDSO
config XENO_ARCH_OUTOFLINE_XNLOCK
bool
--
2.39.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
` (5 preceding siblings ...)
2024-02-14 16:20 ` [PATCH v3 6/6] compat support: cobalt/arm64: Enable compat support for arm64 Clara Kowalsky
@ 2024-02-15 9:56 ` Florian Bezdeka
2024-02-15 11:25 ` Kowalsky, Clara
2024-02-15 11:29 ` Jan Kiszka
7 siblings, 1 reply; 10+ messages in thread
From: Florian Bezdeka @ 2024-02-15 9:56 UTC (permalink / raw)
To: Clara Kowalsky, xenomai; +Cc: jan.kiszka
On Wed, 2024-02-14 at 17:20 +0100, Clara Kowalsky wrote:
> Hi all,
>
> this is the third version of the series for adding the 32-bit compat
> support for arm64 to xenomai 3.
>
> Thank you Jan and Florian for your comments.
> Changes in v3:
> - Squashed patch 2 with old patch 5 "Use syscall_get_arguments()".
> - Cleaned up pipeline_get_syscall_args() and added reasoning.
>
> Best regards,
> Clara Kowalsky
No further comments right now. This stuff is fully CI tested, right? If
so:
Reviewed-by: Florian Bezdeka <florian.bezdeka@siemens.com>
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai
2024-02-15 9:56 ` [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Florian Bezdeka
@ 2024-02-15 11:25 ` Kowalsky, Clara
0 siblings, 0 replies; 10+ messages in thread
From: Kowalsky, Clara @ 2024-02-15 11:25 UTC (permalink / raw)
To: Bezdeka, Florian, xenomai; +Cc: Kiszka, Jan
Yes, green pipeline for all builds and tests, the compat test runs successfully locally.
Clara
> -----Original Message-----
> From: Bezdeka, Florian (T CED OES-DE) <florian.bezdeka@siemens.com>
> Sent: Donnerstag, 15. Februar 2024 10:56
> To: Kowalsky, Clara (T CED OES-DE) <clara.kowalsky@siemens.com>;
> xenomai@lists.linux.dev
> Cc: Kiszka, Jan (T CED) <jan.kiszka@siemens.com>
> Subject: Re: [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai
>
> On Wed, 2024-02-14 at 17:20 +0100, Clara Kowalsky wrote:
> > Hi all,
> >
> > this is the third version of the series for adding the 32-bit compat
> > support for arm64 to xenomai 3.
> >
> > Thank you Jan and Florian for your comments.
> > Changes in v3:
> > - Squashed patch 2 with old patch 5 "Use syscall_get_arguments()".
> > - Cleaned up pipeline_get_syscall_args() and added reasoning.
> >
> > Best regards,
> > Clara Kowalsky
>
> No further comments right now. This stuff is fully CI tested, right? If
> so:
>
> Reviewed-by: Florian Bezdeka <florian.bezdeka@siemens.com>
>
> Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
` (6 preceding siblings ...)
2024-02-15 9:56 ` [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Florian Bezdeka
@ 2024-02-15 11:29 ` Jan Kiszka
7 siblings, 0 replies; 10+ messages in thread
From: Jan Kiszka @ 2024-02-15 11:29 UTC (permalink / raw)
To: Clara Kowalsky, xenomai; +Cc: florian.bezdeka
On 14.02.24 17:20, Clara Kowalsky wrote:
> Hi all,
>
> this is the third version of the series for adding the 32-bit compat
> support for arm64 to xenomai 3.
>
> Thank you Jan and Florian for your comments.
> Changes in v3:
> - Squashed patch 2 with old patch 5 "Use syscall_get_arguments()".
> - Cleaned up pipeline_get_syscall_args() and added reasoning.
>
> Best regards,
> Clara Kowalsky
>
>
> Clara Kowalsky (6):
> compat support: cobalt: Move 32-bit compat files to generic
> compat support: cobalt/arm: Refactor registers for arm alignment
> compat support: cobalt/arm64: Add compat support and clean-up
> compat support: cobalt: Bump ABI revision
> compat support: lib/cobalt: Fix VFP detection for arm on arm64
> compat support: cobalt/arm64: Enable compat support for arm64
>
> .../kernel/dovetail/pipeline/pipeline.h | 9 --
> .../arch/arm/include/asm/xenomai/syscall.h | 26 ++---
> .../arch/arm/include/asm/xenomai/syscall32.h | 8 +-
> .../include/asm/xenomai/uapi/abirevision.h | 1 +
> .../arm/include/asm/xenomai/uapi/features.h | 3 +-
> .../arm/include/asm/xenomai/uapi/syscall.h | 2 -
> kernel/cobalt/arch/arm64/Kconfig | 3 +-
> .../arch/arm64/include/asm/xenomai/syscall.h | 10 +-
> .../arm64/include/asm/xenomai/syscall32.h | 12 ---
> .../include/asm/xenomai/uapi/abirevision.h | 16 +++
> .../arm64/include/asm/xenomai/uapi/features.h | 3 +-
> .../arch/x86/include/asm/xenomai/syscall32.h | 102 ------------------
> .../asm-generic}/xenomai/syscall32-table.h | 6 +-
> .../include/asm-generic/xenomai/syscall32.h | 78 +++++++++++++-
> kernel/cobalt/posix/syscall.c | 16 +--
> kernel/cobalt/posix/syscall.h | 2 +-
> kernel/cobalt/trace/cobalt-posix.h | 4 +-
> lib/cobalt/arch/arm/features.c | 5 +
> .../arch/arm/include/asm/xenomai/syscall.h | 65 ++++++-----
> 19 files changed, 166 insertions(+), 205 deletions(-)
> create mode 120000 kernel/cobalt/arch/arm/include/asm/xenomai/uapi/abirevision.h
> delete mode 100644 kernel/cobalt/arch/arm64/include/asm/xenomai/syscall32.h
> create mode 100644 kernel/cobalt/arch/arm64/include/asm/xenomai/uapi/abirevision.h
> delete mode 100644 kernel/cobalt/arch/x86/include/asm/xenomai/syscall32.h
> rename kernel/cobalt/{arch/x86/include/asm => include/asm-generic}/xenomai/syscall32-table.h (94%)
>
Thanks, applied.
Jan
--
Siemens AG, Technology
Linux Expert Center
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-02-15 11:29 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-14 16:20 [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 1/6] compat support: cobalt: Move 32-bit compat files to generic Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 2/6] compat support: cobalt/arm: Refactor registers for arm alignment Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 3/6] compat support: cobalt/arm64: Add compat support and clean-up Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 4/6] compat support: cobalt: Bump ABI revision Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 5/6] compat support: lib/cobalt: Fix VFP detection for arm on arm64 Clara Kowalsky
2024-02-14 16:20 ` [PATCH v3 6/6] compat support: cobalt/arm64: Enable compat support for arm64 Clara Kowalsky
2024-02-15 9:56 ` [PATCH v3 0/6] Add 32-bit compat support for arm64 to xenomai Florian Bezdeka
2024-02-15 11:25 ` Kowalsky, Clara
2024-02-15 11:29 ` Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.