Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:
"A couple of small fixes, and wiring up the new syscalls which appeared
during the merge window"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
ARM: 8550/1: protect idiv patching against undefined gcc behavior
ARM: wire up preadv2 and pwritev2 syscalls
ARM: SMP enable of cache maintanence broadcast

+13 -7
+1 -1
arch/arm/include/asm/unistd.h
··· 19 19 * This may need to be greater than __NR_last_syscall+1 in order to 20 20 * account for the padding in the syscall table 21 21 */ 22 - #define __NR_syscalls (392) 22 + #define __NR_syscalls (396) 23 23 24 24 #define __ARCH_WANT_STAT64 25 25 #define __ARCH_WANT_SYS_GETHOSTNAME
+2
arch/arm/include/uapi/asm/unistd.h
··· 418 418 #define __NR_membarrier (__NR_SYSCALL_BASE+389) 419 419 #define __NR_mlock2 (__NR_SYSCALL_BASE+390) 420 420 #define __NR_copy_file_range (__NR_SYSCALL_BASE+391) 421 + #define __NR_preadv2 (__NR_SYSCALL_BASE+392) 422 + #define __NR_pwritev2 (__NR_SYSCALL_BASE+393) 421 423 422 424 /* 423 425 * The following SWIs are ARM private.
+3 -1
arch/arm/kernel/calls.S
··· 399 399 CALL(sys_execveat) 400 400 CALL(sys_userfaultfd) 401 401 CALL(sys_membarrier) 402 - CALL(sys_mlock2) 402 + /* 390 */ CALL(sys_mlock2) 403 403 CALL(sys_copy_file_range) 404 + CALL(sys_preadv2) 405 + CALL(sys_pwritev2) 404 406 #ifndef syscalls_counted 405 407 .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls 406 408 #define syscalls_counted
+2
arch/arm/kernel/setup.c
··· 430 430 pr_info("CPU: div instructions available: patching division code\n"); 431 431 432 432 fn_addr = ((uintptr_t)&__aeabi_uidiv) & ~1; 433 + asm ("" : "+g" (fn_addr)); 433 434 ((u32 *)fn_addr)[0] = udiv_instruction(); 434 435 ((u32 *)fn_addr)[1] = bx_lr_instruction(); 435 436 flush_icache_range(fn_addr, fn_addr + 8); 436 437 437 438 fn_addr = ((uintptr_t)&__aeabi_idiv) & ~1; 439 + asm ("" : "+g" (fn_addr)); 438 440 ((u32 *)fn_addr)[0] = sdiv_instruction(); 439 441 ((u32 *)fn_addr)[1] = bx_lr_instruction(); 440 442 flush_icache_range(fn_addr, fn_addr + 8);
+5 -5
arch/arm/mm/proc-v7.S
··· 281 281 bl v7_invalidate_l1 282 282 ldmia r12, {r1-r6, lr} 283 283 #ifdef CONFIG_SMP 284 + orr r10, r10, #(1 << 6) @ Enable SMP/nAMP mode 284 285 ALT_SMP(mrc p15, 0, r0, c1, c0, 1) 285 - ALT_UP(mov r0, #(1 << 6)) @ fake it for UP 286 - tst r0, #(1 << 6) @ SMP/nAMP mode enabled? 287 - orreq r0, r0, #(1 << 6) @ Enable SMP/nAMP mode 288 - orreq r0, r0, r10 @ Enable CPU-specific SMP bits 289 - mcreq p15, 0, r0, c1, c0, 1 286 + ALT_UP(mov r0, r10) @ fake it for UP 287 + orr r10, r10, r0 @ Set required bits 288 + teq r10, r0 @ Were they already set? 289 + mcrne p15, 0, r10, c1, c0, 1 @ No, update register 290 290 #endif 291 291 b __v7_setup_cont 292 292