From d4b186f1d8c85a16a2a954c578de484dde775de3 Mon Sep 17 00:00:00 2001 From: "Masamichi Takagi m-takagi@ab.jp.nec.com" Date: Tue, 27 Nov 2012 15:37:57 +0900 Subject: [PATCH] align 1MB when performing mmap with MAP_FIXED == 0 and MAP_ANONYMOUS == 0 and MAP_PRIVATE == 1 to make it easy to match assembly code in memory and one in file --- kernel/syscall.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/kernel/syscall.c b/kernel/syscall.c index 5a4eafb8..22e77e26 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -474,14 +474,26 @@ SYSCALL_DECLARE(mmap) // #define MAP_PRIVATE 0x02 unsigned long flags = aal_mc_spinlock_lock(&cpu_local_var(current)->vm->memory_range_lock); + +#if 1 /* takagidebug*/ + unsigned long amt_align = 0x100000; /* takagi */ + unsigned long s = ((region->map_end + amt_align - 1) & ~(amt_align - 1)); + unsigned long len = (aal_mc_syscall_arg1(ctx) + PAGE_SIZE - 1) & PAGE_MASK; + dkprintf("(%d),syscall.c,!MAP_FIXED,!MAP_ANONYMOUS,amt_align=%lx,s=%lx,len=%lx\n", aal_mc_get_processor_id(), amt_align, s, len); + region->map_end = + extend_process_region(cpu_local_var(current), + region->map_start, + s, + s + len); +#else unsigned long s = (region->map_end + PAGE_SIZE - 1) & PAGE_MASK; unsigned long len = (aal_mc_syscall_arg1(ctx) + PAGE_SIZE - 1) & PAGE_MASK; - // lockr = aal_mc_spinlock_lock(&cpu_status_lock); region->map_end = extend_process_region(cpu_local_var(current), region->map_start, region->map_end, s + len); +#endif aal_mc_spinlock_unlock(&cpu_local_var(current)->vm->memory_range_lock, flags); if (region->map_end < s + len) { return -EINVAL; } s = region->map_end - len;