diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-07-12 23:38:26 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-07-12 23:38:26 -0400 |
commit | af3bf7fbe0148aadc8fedd6f5e5279cabef9ced5 (patch) | |
tree | 25e3b1099ecf851bb7b5f6e6d3ffcdeb33de32f0 /arch/powerpc/kernel | |
parent | 10db8d212864cb6741df7d7fafda5ab6661f6f88 (diff) | |
parent | b915341b4be29b3b2c02da932b69871e9b55ca4b (diff) |
Merge remote-tracking branch 'kumar/next' into next
Freescale updates for 3.6
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/head_fsl_booke.S | 23 | ||||
-rw-r--r-- | arch/powerpc/kernel/setup-common.c | 27 | ||||
-rw-r--r-- | arch/powerpc/kernel/setup_32.c | 24 |
3 files changed, 33 insertions, 41 deletions
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index 7e7bd88674db..0f59863c3ade 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S | |||
@@ -556,8 +556,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_EMB_HV) | |||
556 | /* SPE Unavailable */ | 556 | /* SPE Unavailable */ |
557 | START_EXCEPTION(SPEUnavailable) | 557 | START_EXCEPTION(SPEUnavailable) |
558 | NORMAL_EXCEPTION_PROLOG(SPE_UNAVAIL) | 558 | NORMAL_EXCEPTION_PROLOG(SPE_UNAVAIL) |
559 | bne load_up_spe | 559 | beq 1f |
560 | addi r3,r1,STACK_FRAME_OVERHEAD | 560 | bl load_up_spe |
561 | b fast_exception_return | ||
562 | 1: addi r3,r1,STACK_FRAME_OVERHEAD | ||
561 | EXC_XFER_EE_LITE(0x2010, KernelSPE) | 563 | EXC_XFER_EE_LITE(0x2010, KernelSPE) |
562 | #else | 564 | #else |
563 | EXCEPTION(0x2020, SPE_UNAVAIL, SPEUnavailable, \ | 565 | EXCEPTION(0x2020, SPE_UNAVAIL, SPEUnavailable, \ |
@@ -778,7 +780,7 @@ tlb_write_entry: | |||
778 | /* Note that the SPE support is closely modeled after the AltiVec | 780 | /* Note that the SPE support is closely modeled after the AltiVec |
779 | * support. Changes to one are likely to be applicable to the | 781 | * support. Changes to one are likely to be applicable to the |
780 | * other! */ | 782 | * other! */ |
781 | load_up_spe: | 783 | _GLOBAL(load_up_spe) |
782 | /* | 784 | /* |
783 | * Disable SPE for the task which had SPE previously, | 785 | * Disable SPE for the task which had SPE previously, |
784 | * and save its SPE registers in its thread_struct. | 786 | * and save its SPE registers in its thread_struct. |
@@ -826,20 +828,7 @@ load_up_spe: | |||
826 | subi r4,r5,THREAD | 828 | subi r4,r5,THREAD |
827 | stw r4,last_task_used_spe@l(r3) | 829 | stw r4,last_task_used_spe@l(r3) |
828 | #endif /* !CONFIG_SMP */ | 830 | #endif /* !CONFIG_SMP */ |
829 | /* restore registers and return */ | 831 | blr |
830 | 2: REST_4GPRS(3, r11) | ||
831 | lwz r10,_CCR(r11) | ||
832 | REST_GPR(1, r11) | ||
833 | mtcr r10 | ||
834 | lwz r10,_LINK(r11) | ||
835 | mtlr r10 | ||
836 | REST_GPR(10, r11) | ||
837 | mtspr SPRN_SRR1,r9 | ||
838 | mtspr SPRN_SRR0,r12 | ||
839 | REST_GPR(9, r11) | ||
840 | REST_GPR(12, r11) | ||
841 | lwz r11,GPR11(r11) | ||
842 | rfi | ||
843 | 832 | ||
844 | /* | 833 | /* |
845 | * SPE unavailable trap from kernel - print a message, but let | 834 | * SPE unavailable trap from kernel - print a message, but let |
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index afd4f051f3f2..bdc499c17872 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
@@ -720,6 +720,33 @@ static int powerpc_debugfs_init(void) | |||
720 | arch_initcall(powerpc_debugfs_init); | 720 | arch_initcall(powerpc_debugfs_init); |
721 | #endif | 721 | #endif |
722 | 722 | ||
723 | #ifdef CONFIG_BOOKE_WDT | ||
724 | extern u32 booke_wdt_enabled; | ||
725 | extern u32 booke_wdt_period; | ||
726 | |||
727 | /* Checks wdt=x and wdt_period=xx command-line option */ | ||
728 | notrace int __init early_parse_wdt(char *p) | ||
729 | { | ||
730 | if (p && strncmp(p, "0", 1) != 0) | ||
731 | booke_wdt_enabled = 1; | ||
732 | |||
733 | return 0; | ||
734 | } | ||
735 | early_param("wdt", early_parse_wdt); | ||
736 | |||
737 | int __init early_parse_wdt_period(char *p) | ||
738 | { | ||
739 | unsigned long ret; | ||
740 | if (p) { | ||
741 | if (!kstrtol(p, 0, &ret)) | ||
742 | booke_wdt_period = ret; | ||
743 | } | ||
744 | |||
745 | return 0; | ||
746 | } | ||
747 | early_param("wdt_period", early_parse_wdt_period); | ||
748 | #endif /* CONFIG_BOOKE_WDT */ | ||
749 | |||
723 | void ppc_printk_progress(char *s, unsigned short hex) | 750 | void ppc_printk_progress(char *s, unsigned short hex) |
724 | { | 751 | { |
725 | pr_info("%s\n", s); | 752 | pr_info("%s\n", s); |
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index ec8a53fa9e8f..a8f54ecb091f 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
@@ -149,30 +149,6 @@ notrace void __init machine_init(u64 dt_ptr) | |||
149 | ppc_md.progress("id mach(): done", 0x200); | 149 | ppc_md.progress("id mach(): done", 0x200); |
150 | } | 150 | } |
151 | 151 | ||
152 | #ifdef CONFIG_BOOKE_WDT | ||
153 | extern u32 booke_wdt_enabled; | ||
154 | extern u32 booke_wdt_period; | ||
155 | |||
156 | /* Checks wdt=x and wdt_period=xx command-line option */ | ||
157 | notrace int __init early_parse_wdt(char *p) | ||
158 | { | ||
159 | if (p && strncmp(p, "0", 1) != 0) | ||
160 | booke_wdt_enabled = 1; | ||
161 | |||
162 | return 0; | ||
163 | } | ||
164 | early_param("wdt", early_parse_wdt); | ||
165 | |||
166 | int __init early_parse_wdt_period (char *p) | ||
167 | { | ||
168 | if (p) | ||
169 | booke_wdt_period = simple_strtoul(p, NULL, 0); | ||
170 | |||
171 | return 0; | ||
172 | } | ||
173 | early_param("wdt_period", early_parse_wdt_period); | ||
174 | #endif /* CONFIG_BOOKE_WDT */ | ||
175 | |||
176 | /* Checks "l2cr=xxxx" command-line option */ | 152 | /* Checks "l2cr=xxxx" command-line option */ |
177 | int __init ppc_setup_l2cr(char *str) | 153 | int __init ppc_setup_l2cr(char *str) |
178 | { | 154 | { |