diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2009-12-08 12:18:38 -0500 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2009-12-08 12:47:35 -0500 |
commit | d51bd45799b03ebc04a82602a709e150ea9fae28 (patch) | |
tree | 59cfd1acd8aa4693ebb64aef1685d0a319a03c91 | |
parent | 54d16459d3022f25e99ba0319d886870b1bc449a (diff) |
add sparc64 arch-dependent bits
-rw-r--r-- | arch/sparc64/Kconfig | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/smp.c | 6 | ||||
-rw-r--r-- | arch/sparc64/kernel/systbls.S | 20 | ||||
-rw-r--r-- | include/asm-sparc64/feather_trace.h | 11 | ||||
-rw-r--r-- | include/asm-sparc64/unistd.h | 6 |
5 files changed, 43 insertions, 2 deletions
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 10b212a1f9f5..8d90b5a63749 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -471,3 +471,5 @@ source "security/Kconfig" | |||
471 | source "crypto/Kconfig" | 471 | source "crypto/Kconfig" |
472 | 472 | ||
473 | source "lib/Kconfig" | 473 | source "lib/Kconfig" |
474 | |||
475 | source "litmus/Kconfig" | ||
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index c39944927f1a..55f1ebd74fa7 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -46,6 +46,9 @@ | |||
46 | #include <asm/ldc.h> | 46 | #include <asm/ldc.h> |
47 | #include <asm/hypervisor.h> | 47 | #include <asm/hypervisor.h> |
48 | 48 | ||
49 | #include <litmus/litmus.h> | ||
50 | #include <litmus/trace.h> | ||
51 | |||
49 | extern void calibrate_delay(void); | 52 | extern void calibrate_delay(void); |
50 | 53 | ||
51 | int sparc64_multi_core __read_mostly; | 54 | int sparc64_multi_core __read_mostly; |
@@ -1033,6 +1036,8 @@ void smp_receive_signal(int cpu) | |||
1033 | void smp_receive_signal_client(int irq, struct pt_regs *regs) | 1036 | void smp_receive_signal_client(int irq, struct pt_regs *regs) |
1034 | { | 1037 | { |
1035 | clear_softint(1 << irq); | 1038 | clear_softint(1 << irq); |
1039 | set_tsk_need_resched(current); | ||
1040 | TS_SEND_RESCHED_END; | ||
1036 | } | 1041 | } |
1037 | 1042 | ||
1038 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | 1043 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) |
@@ -1413,6 +1418,7 @@ void __init smp_cpus_done(unsigned int max_cpus) | |||
1413 | 1418 | ||
1414 | void smp_send_reschedule(int cpu) | 1419 | void smp_send_reschedule(int cpu) |
1415 | { | 1420 | { |
1421 | TS_SEND_RESCHED_START(cpu); | ||
1416 | smp_receive_signal(cpu); | 1422 | smp_receive_signal(cpu); |
1417 | } | 1423 | } |
1418 | 1424 | ||
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index 06d10907d8ce..96a74d3ab11a 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -82,6 +82,13 @@ sys_call_table32: | |||
82 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait | 82 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait |
83 | /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, compat_sys_timerfd, sys_eventfd, compat_sys_fallocate | 83 | /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, compat_sys_timerfd, sys_eventfd, compat_sys_fallocate |
84 | 84 | ||
85 | /*LITMUS, 315*/ | ||
86 | .word sys_set_rt_task_param, sys_get_rt_task_param, sys_complete_job, sys_od_open, sys_od_close | ||
87 | /*320*/ | ||
88 | .word sys_fmlp_down, sys_fmlp_up, sys_srp_down, sys_srp_up, sys_query_job_no | ||
89 | /*325*/ .word sys_wait_for_job_release, sys_wait_for_ts_release, sys_release_ts | ||
90 | |||
91 | |||
85 | #endif /* CONFIG_COMPAT */ | 92 | #endif /* CONFIG_COMPAT */ |
86 | 93 | ||
87 | /* Now the 64-bit native Linux syscall table. */ | 94 | /* Now the 64-bit native Linux syscall table. */ |
@@ -154,6 +161,12 @@ sys_call_table: | |||
154 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait | 161 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait |
155 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd, sys_eventfd, sys_fallocate | 162 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd, sys_eventfd, sys_fallocate |
156 | 163 | ||
164 | /*LITMUS, 315*/ | ||
165 | .word sys_set_rt_task_param, sys_get_rt_task_param, sys_complete_job, sys_od_open, sys_od_close | ||
166 | /*320*/ | ||
167 | .word sys_fmlp_down, sys_fmlp_up, sys_srp_down, sys_srp_up, sys_query_job_no | ||
168 | /*325*/ .word sys_wait_for_job_release, sys_wait_for_ts_release, sys_release_ts, sys_null_call | ||
169 | |||
157 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ | 170 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ |
158 | defined(CONFIG_SOLARIS_EMUL_MODULE) | 171 | defined(CONFIG_SOLARIS_EMUL_MODULE) |
159 | /* Now the 32-bit SunOS syscall table. */ | 172 | /* Now the 32-bit SunOS syscall table. */ |
@@ -271,6 +284,11 @@ sunos_sys_table: | |||
271 | .word sunos_nosys, sunos_nosys, sunos_nosys | 284 | .word sunos_nosys, sunos_nosys, sunos_nosys |
272 | .word sunos_nosys | 285 | .word sunos_nosys |
273 | /*310*/ .word sunos_nosys, sunos_nosys, sunos_nosys | 286 | /*310*/ .word sunos_nosys, sunos_nosys, sunos_nosys |
274 | .word sunos_nosys, sunos_nosys | 287 | .word sunos_nosys, sunos_nosys, sunos_nosys |
288 | .word sunos_nosys, sunos_nosys, sunos_nosys | ||
289 | .word sunos_nosys | ||
290 | /*320*/ .word sunos_nosys, sunos_nosys, sunos_nosys | ||
291 | .word sunos_nosys, sunos_nosys, sunos_nosys | ||
292 | .word sunos_nosys, sunos_nosys, sunos_nosys | ||
275 | 293 | ||
276 | #endif | 294 | #endif |
diff --git a/include/asm-sparc64/feather_trace.h b/include/asm-sparc64/feather_trace.h new file mode 100644 index 000000000000..869a3e003628 --- /dev/null +++ b/include/asm-sparc64/feather_trace.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef _ARCH_FEATHER_TRACE_H | ||
2 | #define _ARCH_FEATHER_TRACE_H | ||
3 | |||
4 | #include <asm/timex.h> | ||
5 | |||
6 | static inline unsigned long long ft_timestamp(void) | ||
7 | { | ||
8 | return get_cycles(); | ||
9 | } | ||
10 | |||
11 | #endif | ||
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h index cb751b4d0f56..ebebde69c34d 100644 --- a/include/asm-sparc64/unistd.h +++ b/include/asm-sparc64/unistd.h | |||
@@ -333,7 +333,11 @@ | |||
333 | #define __NR_eventfd 313 | 333 | #define __NR_eventfd 313 |
334 | #define __NR_fallocate 314 | 334 | #define __NR_fallocate 314 |
335 | 335 | ||
336 | #define NR_SYSCALLS 315 | 336 | #define __NR_LITMUS 315 |
337 | |||
338 | #include "litmus/unistd.h" | ||
339 | |||
340 | #define NR_SYSCALLS 315 + NR_litmus_syscalls | ||
337 | 341 | ||
338 | #ifdef __KERNEL__ | 342 | #ifdef __KERNEL__ |
339 | /* sysconf options, for SunOS compatibility */ | 343 | /* sysconf options, for SunOS compatibility */ |