hppa: add cacheflush() syscall wrapper

The hppa Linux kernel supports the cacheflush() syscall
since version 6.5. This adds the glibc syscall wrapper.

Signed-off-by: Helge Deller <deller@gmx.de>

---
v2: This patch was too late in release cycle for GLIBC_2.40,
    so update now to GLIBC_2.41 instead.
This commit is contained in:
John David Anglin 2024-12-22 09:51:54 -05:00
parent 4b37fb71e0
commit 9bdb1487c5
5 changed files with 46 additions and 0 deletions

View file

@ -15,6 +15,11 @@ test-xfail-check-wx-segment = *
endif # $(subdir) == elf
ifeq ($(subdir),misc)
sysdep_routines += cacheflush
sysdep_headers += sys/cachectl.h
endif
ifeq ($(subdir),debug)
test-xfail-tst-ssp-1 = $(have-ssp)
endif # $(subdir) == debug

View file

@ -23,4 +23,7 @@ libc {
GLIBC_2.19 {
fanotify_mark;
}
GLIBC_2.41 {
cacheflush;
}
}

View file

@ -2821,6 +2821,7 @@ GLIBC_2.4 sys_errlist D 0x400
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
GLIBC_2.41 cacheflush F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F

View file

@ -0,0 +1,36 @@
/* HPPA cache flushing interface.
Copyright (C) 2018-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#ifndef _SYS_CACHECTL_H
#define _SYS_CACHECTL_H 1
#include <features.h>
/* Get the kernel definition for the op bits. */
#include <asm/cachectl.h>
__BEGIN_DECLS
#ifdef __USE_MISC
extern int cacheflush (void *__addr, const int __nbytes,
const int __op) __THROW;
#endif
__END_DECLS
#endif /* sys/cachectl.h */

View file

@ -8,5 +8,6 @@ listen - listen i:ii __listen listen
shutdown - shutdown i:ii __shutdown shutdown
socket - socket i:iii __socket socket
socketpair - socketpair i:iiif __socketpair socketpair
cacheflush - cacheflush i:pii _flush_cache cacheflush
personality EXTRA personality Ei:i __personality personality