diff options
| -rw-r--r-- | arch/microblaze/include/asm/unistd.h | 6 | ||||
| -rw-r--r-- | arch/microblaze/kernel/Makefile | 1 | ||||
| -rw-r--r-- | arch/microblaze/kernel/ftrace.c | 10 | ||||
| -rw-r--r-- | arch/microblaze/kernel/intc.c | 4 | ||||
| -rw-r--r-- | arch/microblaze/kernel/syscall_table.S | 4 | ||||
| -rw-r--r-- | arch/microblaze/lib/Makefile | 6 |
6 files changed, 24 insertions, 7 deletions
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h index d770b00ec6b1..30edd61a6b8f 100644 --- a/arch/microblaze/include/asm/unistd.h +++ b/arch/microblaze/include/asm/unistd.h | |||
| @@ -386,8 +386,12 @@ | |||
| 386 | #define __NR_fanotify_init 368 | 386 | #define __NR_fanotify_init 368 |
| 387 | #define __NR_fanotify_mark 369 | 387 | #define __NR_fanotify_mark 369 |
| 388 | #define __NR_prlimit64 370 | 388 | #define __NR_prlimit64 370 |
| 389 | #define __NR_name_to_handle_at 371 | ||
| 390 | #define __NR_open_by_handle_at 372 | ||
| 391 | #define __NR_clock_adjtime 373 | ||
| 392 | #define __NR_syncfs 374 | ||
| 389 | 393 | ||
| 390 | #define __NR_syscalls 371 | 394 | #define __NR_syscalls 375 |
| 391 | 395 | ||
| 392 | #ifdef __KERNEL__ | 396 | #ifdef __KERNEL__ |
| 393 | #ifndef __ASSEMBLY__ | 397 | #ifndef __ASSEMBLY__ |
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile index f0cb5c26c81c..494b63b72dd7 100644 --- a/arch/microblaze/kernel/Makefile +++ b/arch/microblaze/kernel/Makefile | |||
| @@ -10,6 +10,7 @@ CFLAGS_REMOVE_early_printk.o = -pg | |||
| 10 | CFLAGS_REMOVE_selfmod.o = -pg | 10 | CFLAGS_REMOVE_selfmod.o = -pg |
| 11 | CFLAGS_REMOVE_heartbeat.o = -pg | 11 | CFLAGS_REMOVE_heartbeat.o = -pg |
| 12 | CFLAGS_REMOVE_ftrace.o = -pg | 12 | CFLAGS_REMOVE_ftrace.o = -pg |
| 13 | CFLAGS_REMOVE_process.o = -pg | ||
| 13 | endif | 14 | endif |
| 14 | 15 | ||
| 15 | extra-y := head.o vmlinux.lds | 16 | extra-y := head.o vmlinux.lds |
diff --git a/arch/microblaze/kernel/ftrace.c b/arch/microblaze/kernel/ftrace.c index 515feb404555..357d56abe24a 100644 --- a/arch/microblaze/kernel/ftrace.c +++ b/arch/microblaze/kernel/ftrace.c | |||
| @@ -51,6 +51,9 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) | |||
| 51 | : "r" (parent), "r" (return_hooker) | 51 | : "r" (parent), "r" (return_hooker) |
| 52 | ); | 52 | ); |
| 53 | 53 | ||
| 54 | flush_dcache_range((u32)parent, (u32)parent + 4); | ||
| 55 | flush_icache_range((u32)parent, (u32)parent + 4); | ||
| 56 | |||
| 54 | if (unlikely(faulted)) { | 57 | if (unlikely(faulted)) { |
| 55 | ftrace_graph_stop(); | 58 | ftrace_graph_stop(); |
| 56 | WARN_ON(1); | 59 | WARN_ON(1); |
| @@ -95,6 +98,9 @@ static int ftrace_modify_code(unsigned long addr, unsigned int value) | |||
| 95 | if (unlikely(faulted)) | 98 | if (unlikely(faulted)) |
| 96 | return -EFAULT; | 99 | return -EFAULT; |
| 97 | 100 | ||
| 101 | flush_dcache_range(addr, addr + 4); | ||
| 102 | flush_icache_range(addr, addr + 4); | ||
| 103 | |||
| 98 | return 0; | 104 | return 0; |
| 99 | } | 105 | } |
| 100 | 106 | ||
| @@ -195,8 +201,6 @@ int ftrace_update_ftrace_func(ftrace_func_t func) | |||
| 195 | ret += ftrace_modify_code((unsigned long)&ftrace_caller, | 201 | ret += ftrace_modify_code((unsigned long)&ftrace_caller, |
| 196 | MICROBLAZE_NOP); | 202 | MICROBLAZE_NOP); |
| 197 | 203 | ||
| 198 | /* All changes are done - lets do caches consistent */ | ||
| 199 | flush_icache(); | ||
| 200 | return ret; | 204 | return ret; |
| 201 | } | 205 | } |
| 202 | 206 | ||
| @@ -210,7 +214,6 @@ int ftrace_enable_ftrace_graph_caller(void) | |||
| 210 | 214 | ||
| 211 | old_jump = *(unsigned int *)ip; /* save jump over instruction */ | 215 | old_jump = *(unsigned int *)ip; /* save jump over instruction */ |
| 212 | ret = ftrace_modify_code(ip, MICROBLAZE_NOP); | 216 | ret = ftrace_modify_code(ip, MICROBLAZE_NOP); |
| 213 | flush_icache(); | ||
| 214 | 217 | ||
| 215 | pr_debug("%s: Replace instruction: 0x%x\n", __func__, old_jump); | 218 | pr_debug("%s: Replace instruction: 0x%x\n", __func__, old_jump); |
| 216 | return ret; | 219 | return ret; |
| @@ -222,7 +225,6 @@ int ftrace_disable_ftrace_graph_caller(void) | |||
| 222 | unsigned long ip = (unsigned long)(&ftrace_call_graph); | 225 | unsigned long ip = (unsigned long)(&ftrace_call_graph); |
| 223 | 226 | ||
| 224 | ret = ftrace_modify_code(ip, old_jump); | 227 | ret = ftrace_modify_code(ip, old_jump); |
| 225 | flush_icache(); | ||
| 226 | 228 | ||
| 227 | pr_debug("%s\n", __func__); | 229 | pr_debug("%s\n", __func__); |
| 228 | return ret; | 230 | return ret; |
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c index 5ba7e162833b..c88f066f41bd 100644 --- a/arch/microblaze/kernel/intc.c +++ b/arch/microblaze/kernel/intc.c | |||
| @@ -158,11 +158,11 @@ void __init init_IRQ(void) | |||
| 158 | for (i = 0; i < nr_irq; ++i) { | 158 | for (i = 0; i < nr_irq; ++i) { |
| 159 | if (intr_type & (0x00000001 << i)) { | 159 | if (intr_type & (0x00000001 << i)) { |
| 160 | irq_set_chip_and_handler_name(i, &intc_dev, | 160 | irq_set_chip_and_handler_name(i, &intc_dev, |
| 161 | handle_edge_irq, intc_dev.name); | 161 | handle_edge_irq, "edge"); |
| 162 | irq_clear_status_flags(i, IRQ_LEVEL); | 162 | irq_clear_status_flags(i, IRQ_LEVEL); |
| 163 | } else { | 163 | } else { |
| 164 | irq_set_chip_and_handler_name(i, &intc_dev, | 164 | irq_set_chip_and_handler_name(i, &intc_dev, |
| 165 | handle_level_irq, intc_dev.name); | 165 | handle_level_irq, "level"); |
| 166 | irq_set_status_flags(i, IRQ_LEVEL); | 166 | irq_set_status_flags(i, IRQ_LEVEL); |
| 167 | } | 167 | } |
| 168 | } | 168 | } |
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S index e88a930fd1e3..85cea81d1ca1 100644 --- a/arch/microblaze/kernel/syscall_table.S +++ b/arch/microblaze/kernel/syscall_table.S | |||
| @@ -375,3 +375,7 @@ ENTRY(sys_call_table) | |||
| 375 | .long sys_fanotify_init | 375 | .long sys_fanotify_init |
| 376 | .long sys_fanotify_mark | 376 | .long sys_fanotify_mark |
| 377 | .long sys_prlimit64 /* 370 */ | 377 | .long sys_prlimit64 /* 370 */ |
| 378 | .long sys_name_to_handle_at | ||
| 379 | .long sys_open_by_handle_at | ||
| 380 | .long sys_clock_adjtime | ||
| 381 | .long sys_syncfs | ||
diff --git a/arch/microblaze/lib/Makefile b/arch/microblaze/lib/Makefile index f1fcbff3da25..10c320aa908b 100644 --- a/arch/microblaze/lib/Makefile +++ b/arch/microblaze/lib/Makefile | |||
| @@ -2,6 +2,12 @@ | |||
| 2 | # Makefile | 2 | # Makefile |
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | ifdef CONFIG_FUNCTION_TRACER | ||
| 6 | CFLAGS_REMOVE_ashldi3.o = -pg | ||
| 7 | CFLAGS_REMOVE_ashrdi3.o = -pg | ||
| 8 | CFLAGS_REMOVE_lshrdi3.o = -pg | ||
| 9 | endif | ||
| 10 | |||
| 5 | lib-y := memset.o | 11 | lib-y := memset.o |
| 6 | 12 | ||
| 7 | ifeq ($(CONFIG_OPT_LIB_ASM),y) | 13 | ifeq ($(CONFIG_OPT_LIB_ASM),y) |
