Re: [PATCH 0/9] AArch64 Mach public headers

2024-04-15 Thread Samuel Thibault
Hello, Thanks! I applied the series except the patch adding the test, since it fails on x86_64. Most probably it's the test that needs fixing. Samuel Sergey Bugaev, le lun. 15 avril 2024 12:01:40 +0300, a ecrit: > Hello! > > This patchset contains public headers for AArch64 support in GNU Mach

Re: [PATCH 9/9] Add a test for thread state

2024-04-15 Thread Samuel Thibault
Samuel Thibault, le mar. 16 avril 2024 02:59:39 +0200, a ecrit: > Sergey Bugaev, le lun. 15 avril 2024 12:01:49 +0300, a ecrit: > > This tests generating and handling exceptions, thread_get_state(), > > thread_set_state(), and newly added thread_set_self_state(). It does > > many of the same thing

Re: [PATCH 9/9] Add a test for thread state

2024-04-15 Thread Samuel Thibault
Sergey Bugaev, le lun. 15 avril 2024 12:01:49 +0300, a ecrit: > This tests generating and handling exceptions, thread_get_state(), > thread_set_state(), and newly added thread_set_self_state(). It does > many of the same things that glibc does when handling a signal. > --- > Note that I only teste

Re: [RFC PATCH 03/23] Allow glibc to be compiled without EXEC_PAGESIZE

2024-04-15 Thread Sergey Bugaev
Hello, On Wed, Apr 10, 2024 at 2:57 PM Florian Weimer wrote: > * Sergey Bugaev: > > > We could define EXEC_PAGESIZE to some conservative value on > > aarch64-gnu too, if it turns out that this little workaround is really > > required. But it seems cleaner to make sure we don't need to, as > > Rol

[PATCH 9/9] Add a test for thread state

2024-04-15 Thread Sergey Bugaev
This tests generating and handling exceptions, thread_get_state(), thread_set_state(), and newly added thread_set_self_state(). It does many of the same things that glibc does when handling a signal. --- Note that I only tested this on i386 and AArch64, not on x86_64. tests/test-thread-state.c |

[PATCH 3/9] aarch64: Add public syscall ABI

2024-04-15 Thread Sergey Bugaev
We use largely the same ABI as Linux: a syscall is invoked with the "svc #0" instruction, passing arguments the same way as for a regular function call. Specifically, up to 8 arguments are passed in the x0-x7 registers, and the rest are placed on the stack (this is only necessary for the vm_map()

[PATCH 5/9] aarch64: Add mach_aarch64 API

2024-04-15 Thread Sergey Bugaev
This currently contains a single RPC to get Linux-compatible hwcaps, as well as the values of MIDR_EL1 and REVIDR_EL1 system registers. In the future, this is expected to host the APIs to manage PAC keys, and possibly some sort of AArch64-specific APIs for userland IRQ handlers. --- aarch64/Makef

[PATCH 6/9] aarch64: Add exception type definitions

2024-04-15 Thread Sergey Bugaev
A few yet-unimplemented codes are also sketched out; these are included so you know roughly what to expect once the missing functionality gets implemented, but are not in any way stable or usable. --- aarch64/Makefrag.am | 1 + aarch64/include/mach/aarch64/exception.h | 90 ++

[PATCH 8/9] Add thread_set_self_state() trap

2024-04-15 Thread Sergey Bugaev
This is a new Mach trap that sets the calling thread's state to the passed value, as if with a call to the thread_set_state() RPC. If the flavor of state being set is the one that contains the register used for syscall return value (i386_THREAD_STATE or i386_REGS_SEGS_STATE on x86, AARCH64_THREAD_

[PATCH 7/9] aarch64: Add thread state types

2024-04-15 Thread Sergey Bugaev
Notes: * TPIDR_EL0, the TLS pointer, is included in the generic state directly. * TPIDR2_EL0, part of the SME extension, is not included in the generic state. If we add SME support, it will be a part of something like aarch64_sme_state. * CPSR is not a real register in AArch64 (unlike in AArch

[PATCH 2/9] aarch64: Add the basics

2024-04-15 Thread Sergey Bugaev
This adds "aarch64" host support to the build system, along with some uninteresting installed headers. The empty aarch64/aarch64/ast.h header is also added to create the aarch64/aarch64/ directory (due to Git peculiarity). With this, it should be possible to run 'configure --host=aarch64-gnu' and

[PATCH 0/9] AArch64 Mach public headers

2024-04-15 Thread Sergey Bugaev
Hello! This patchset contains public headers for AArch64 support in GNU Mach, along with just enough buildsystem infrastructure to recognize and install them. It is quite similar to the "sketch" patches that I have posted in January of this year, but I have done a number of changes for two reasons

[PATCH 4/9] aarch64: Add vm_param.h

2024-04-15 Thread Sergey Bugaev
And make it so that the generic vm_param.h doesn't require the machine- specific one to define PAGE_SIZE etc. We *don't* want a PAGE_SIZE constant to be statically exported to userland; instead userland should initialize vm_page_size by querying vm_statistics(), and then use vm_page_size. We'd al

[PATCH 1/9] Add CPU_TYPE_ARM64

2024-04-15 Thread Sergey Bugaev
This is distinct from CPU_TYPE_ARM, since we're going to exclusively use AArch64 / A64, which CPU_TYPE_ARM was never meant to support, and to match EM_AARCH64, which is also separate from EM_ARM. CPU_TYPE_X86_64 was similarly made distinct from CPU_TYPE_I386. This is named CPU_TYPE_ARM64 rather t