Re: [PATCH] parisc: Fix cacheflush() syscall to flush correct cache

John David Anglin <[email protected]>
Newsgroups org.kernel.vger.linux-parisc
Message-ID <[email protected]>
When generating generating PA 1.x compatible code, the fic instruction needs a 3-bit
s field (i.e., implicit space register selection isn't supported).

Dave

On 2026-03-09 10:41 a.m., Helge Deller wrote:
> From: Helge Deller <[email protected]>
> 
> Somehow the assembly flush instruction was swapped for I- and D-cache flags
> in the cacheflush() syscall:
> SYSCALL_DEFINE3(cacheflush, ...)
> {
> 	if (cache & DCACHE) {
> 			"fic ...\n"
> 	}
> 	if (cache & ICACHE && error == 0) {
> 			"fdc ...\n"
> 	}
> 
> Fix it by using fdc for DCACHE, and fic for ICACHE flushing.
> 
> Noticed-by: Felix Lechner <[email protected]>
> Fixes: c6d96328fecd ("parisc: Add cacheflush() syscall")
> Signed-off-by: Helge Deller <[email protected]>
> ---
>  arch/parisc/kernel/cache.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
> index 4c5240d3a3c7..b189265785dc 100644
> --- a/arch/parisc/kernel/cache.c
> +++ b/arch/parisc/kernel/cache.c
> @@ -953,7 +953,7 @@ SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes,
>  #else
>  			"1: cmpb,<<,n	%0,%2,1b\n"
>  #endif
> -			"   fic,m	%3(%4,%0)\n"
> +			"   fdc,m	%3(%4,%0)\n"
>  			"2: sync\n"
>  			ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 2b, "%1")
>  			: "+r" (start), "+r" (error)
> @@ -968,7 +968,7 @@ SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes,
>  #else
>  			"1: cmpb,<<,n	%0,%2,1b\n"
>  #endif
> -			"   fdc,m	%3(%4,%0)\n"
> +			"   fic,m	%3(%4,%0)\n"
>  			"2: sync\n"
>  			ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 2b, "%1")
>  			: "+r" (start), "+r" (error)


-- 
John David Anglin  [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.