diff options
| author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-04-19 17:31:52 -0400 |
|---|---|---|
| committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-04-19 17:31:52 -0400 |
| commit | f70a290e8a889caa905ab7650c696f2bb299be1a (patch) | |
| tree | 56f0886d839499e9f522f189999024b3e86f9be2 /arch/arm | |
| parent | fcc9d2e5a6c89d22b8b773a64fb4ad21ac318446 (diff) | |
| parent | 7ef4a793a624c6e66c16ca1051847f75161f5bec (diff) | |
Merge branch 'wip-nested-locking' into tegra-nested-lockingwip-nested-locking
Conflicts:
Makefile
include/linux/fs.h
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/Kconfig | 8 | ||||
| -rw-r--r-- | arch/arm/include/asm/timex.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/unistd.h | 3 | ||||
| -rw-r--r-- | arch/arm/kernel/calls.S | 14 | ||||
| -rw-r--r-- | arch/arm/kernel/smp.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-realview/include/mach/timex.h | 27 |
6 files changed, 58 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 3c3b868948a..6dc9a2f42ab 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -2214,3 +2214,11 @@ source "security/Kconfig" | |||
| 2214 | source "crypto/Kconfig" | 2214 | source "crypto/Kconfig" |
| 2215 | 2215 | ||
| 2216 | source "lib/Kconfig" | 2216 | source "lib/Kconfig" |
| 2217 | |||
| 2218 | config ARCH_HAS_SEND_PULL_TIMERS | ||
| 2219 | def_bool n | ||
| 2220 | |||
| 2221 | config ARCH_HAS_FEATHER_TRACE | ||
| 2222 | def_bool n | ||
| 2223 | |||
| 2224 | source "litmus/Kconfig" | ||
diff --git a/arch/arm/include/asm/timex.h b/arch/arm/include/asm/timex.h index 3be8de3adab..8a102a383a3 100644 --- a/arch/arm/include/asm/timex.h +++ b/arch/arm/include/asm/timex.h | |||
| @@ -16,9 +16,11 @@ | |||
| 16 | 16 | ||
| 17 | typedef unsigned long cycles_t; | 17 | typedef unsigned long cycles_t; |
| 18 | 18 | ||
| 19 | #ifndef get_cycles | ||
| 19 | static inline cycles_t get_cycles (void) | 20 | static inline cycles_t get_cycles (void) |
| 20 | { | 21 | { |
| 21 | return 0; | 22 | return 0; |
| 22 | } | 23 | } |
| 24 | #endif | ||
| 23 | 25 | ||
| 24 | #endif | 26 | #endif |
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index c60a2944f95..23ae09ffc49 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
| @@ -403,6 +403,9 @@ | |||
| 403 | #define __NR_sendmmsg (__NR_SYSCALL_BASE+374) | 403 | #define __NR_sendmmsg (__NR_SYSCALL_BASE+374) |
| 404 | #define __NR_setns (__NR_SYSCALL_BASE+375) | 404 | #define __NR_setns (__NR_SYSCALL_BASE+375) |
| 405 | 405 | ||
| 406 | #define __NR_LITMUS (__NR_SYSCALL_BASE+376) | ||
| 407 | #include <litmus/unistd_32.h> | ||
| 408 | |||
| 406 | /* | 409 | /* |
| 407 | * The following SWIs are ARM private. | 410 | * The following SWIs are ARM private. |
| 408 | */ | 411 | */ |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 9943e9e74a1..c0de805e4ea 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
| @@ -385,6 +385,20 @@ | |||
| 385 | CALL(sys_syncfs) | 385 | CALL(sys_syncfs) |
| 386 | CALL(sys_sendmmsg) | 386 | CALL(sys_sendmmsg) |
| 387 | /* 375 */ CALL(sys_setns) | 387 | /* 375 */ CALL(sys_setns) |
| 388 | CALL(sys_set_rt_task_param) | ||
| 389 | CALL(sys_get_rt_task_param) | ||
| 390 | CALL(sys_complete_job) | ||
| 391 | CALL(sys_od_open) | ||
| 392 | /* 380 */ CALL(sys_od_close) | ||
| 393 | CALL(sys_litmus_lock) | ||
| 394 | CALL(sys_litmus_unlock) | ||
| 395 | CALL(sys_query_job_no) | ||
| 396 | CALL(sys_wait_for_job_release) | ||
| 397 | /* 385 */ CALL(sys_wait_for_ts_release) | ||
| 398 | CALL(sys_release_ts) | ||
| 399 | CALL(sys_null_call) | ||
| 400 | CALL(sys_dynamic_group_lock) | ||
| 401 | CALL(sys_dynamic_group_unlock) | ||
| 388 | #ifndef syscalls_counted | 402 | #ifndef syscalls_counted |
| 389 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls | 403 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
| 390 | #define syscalls_counted | 404 | #define syscalls_counted |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 14d06f50d16..a07ca050112 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
| @@ -40,6 +40,8 @@ | |||
| 40 | #include <asm/ptrace.h> | 40 | #include <asm/ptrace.h> |
| 41 | #include <asm/localtimer.h> | 41 | #include <asm/localtimer.h> |
| 42 | 42 | ||
| 43 | #include <litmus/preempt.h> | ||
| 44 | |||
| 43 | /* | 45 | /* |
| 44 | * as from 2.5, kernels no longer have an init_tasks structure | 46 | * as from 2.5, kernels no longer have an init_tasks structure |
| 45 | * so we need some other way of telling a new secondary core | 47 | * so we need some other way of telling a new secondary core |
| @@ -629,6 +631,8 @@ asmlinkage void __exception_irq_entry do_IPI(int ipinr, struct pt_regs *regs) | |||
| 629 | break; | 631 | break; |
| 630 | 632 | ||
| 631 | case IPI_RESCHEDULE: | 633 | case IPI_RESCHEDULE: |
| 634 | /* LITMUS^RT: take action based on scheduler state */ | ||
| 635 | sched_state_ipi(); | ||
| 632 | scheduler_ipi(); | 636 | scheduler_ipi(); |
| 633 | break; | 637 | break; |
| 634 | 638 | ||
diff --git a/arch/arm/mach-realview/include/mach/timex.h b/arch/arm/mach-realview/include/mach/timex.h index 4eeb069373c..e8bcc40d1f0 100644 --- a/arch/arm/mach-realview/include/mach/timex.h +++ b/arch/arm/mach-realview/include/mach/timex.h | |||
| @@ -21,3 +21,30 @@ | |||
| 21 | */ | 21 | */ |
| 22 | 22 | ||
| 23 | #define CLOCK_TICK_RATE (50000000 / 16) | 23 | #define CLOCK_TICK_RATE (50000000 / 16) |
| 24 | |||
| 25 | #if defined(CONFIG_MACH_REALVIEW_PB11MP) || defined(CONFIG_MACH_REALVIEW_PB1176) | ||
| 26 | |||
| 27 | static inline unsigned long realview_get_arm11_cp15_ccnt(void) | ||
| 28 | { | ||
| 29 | unsigned long cycles; | ||
| 30 | /* Read CP15 CCNT register. */ | ||
| 31 | asm volatile ("mrc p15, 0, %0, c15, c12, 1" : "=r" (cycles)); | ||
| 32 | return cycles; | ||
| 33 | } | ||
| 34 | |||
| 35 | #define get_cycles realview_get_arm11_cp15_ccnt | ||
| 36 | |||
| 37 | #elif defined(CONFIG_MACH_REALVIEW_PBA8) | ||
| 38 | |||
| 39 | |||
| 40 | static inline unsigned long realview_get_a8_cp15_ccnt(void) | ||
| 41 | { | ||
| 42 | unsigned long cycles; | ||
| 43 | /* Read CP15 CCNT register. */ | ||
| 44 | asm volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r" (cycles)); | ||
| 45 | return cycles; | ||
| 46 | } | ||
| 47 | |||
| 48 | #define get_cycles realview_get_a8_cp15_ccnt | ||
| 49 | |||
| 50 | #endif | ||
