ARM64: move Psync closer to PAGE_MASK

and use 'bic' instead of 'and'
	modified:   stub/arm64-linux.elf-so_fold.h
	modified:   stub/src/arm64-linux.elf-so_fold.S
This commit is contained in:
John Reiser 2025-01-26 18:43:14 -08:00
parent aee970e80b
commit d41ceb0d31
2 changed files with 612 additions and 616 deletions

File diff suppressed because it is too large Load Diff

View File

@ -56,7 +56,7 @@ get_page_mask: .globl get_page_mask
Punmap: .globl Punmap Punmap: .globl Punmap
ldr x8,PAGE_MASK ldr x8,PAGE_MASK
and x8,x0,x8 bic x8,x0,x8
sub x0,x0,x8 sub x0,x0,x8
add x1,x1,x8 add x1,x1,x8
munmap: .globl munmap munmap: .globl munmap
@ -66,7 +66,7 @@ munmap: .globl munmap
Pprotect: .globl Pprotect Pprotect: .globl Pprotect
mprotect: .globl mprotect mprotect: .globl mprotect
ldr x8,PAGE_MASK ldr x8,PAGE_MASK
and x8,x0,x8 bic x8,x0,x8
sub x0,x0,x8 sub x0,x0,x8
add x1,x1,x8 add x1,x1,x8
do_sys __NR_mprotect; ret do_sys __NR_mprotect; ret
@ -80,12 +80,19 @@ mmap_privanon: .globl mmap_privanon
Pmap: .globl Pmap Pmap: .globl Pmap
ldr x8,PAGE_MASK ldr x8,PAGE_MASK
and x8,x0,x8 bic x8,x0,x8
sub x0,x0,x8 sub x0,x0,x8
add x1,x1,x8 add x1,x1,x8
mmap: .globl mmap mmap: .globl mmap
do_sys __NR_mmap; ret do_sys __NR_mmap; ret
Psync: .globl Psync
ldr x8,PAGE_MASK
bic x8,x0,x8
sub x0,x0,x8
add x1,x1,x8
do_sys __NR_msync; ret
fold: // enter here (x0= &so_info; x1= &{argc,argv,envp,lr} fold: // enter here (x0= &so_info; x1= &{argc,argv,envp,lr}
//%esp: //%esp:
// MATCH_04 ptr unfolded_code // MATCH_04 ptr unfolded_code
@ -199,13 +206,6 @@ brk:
readlink: readlink:
do_sys __NR_readlink; ret do_sys __NR_readlink; ret
Psync: .globl Psync
ldr x8,PAGE_MASK
bic x8,x0,x8
sub x0,x0,x8
add x1,x1,x8
do_sys __NR_msync; ret
.globl __sync_cache_range .globl __sync_cache_range
__sync_cache_range: // (void *lo, void *hi) __sync_cache_range: // (void *lo, void *hi)
#include "arm64-sync-cache-range.S" #include "arm64-sync-cache-range.S"