diff options
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/include/asm/code-patching.h | 4 | ||||
-rw-r--r-- | arch/powerpc/include/asm/ppc-opcode.h | 73 | ||||
-rw-r--r-- | arch/powerpc/include/asm/ppc_asm.h | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/crash_dump.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/entry_32.S | 8 | ||||
-rw-r--r-- | arch/powerpc/kernel/ftrace.c | 8 | ||||
-rw-r--r-- | arch/powerpc/kernel/head_booke.h | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/module_64.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/traps.c | 58 | ||||
-rw-r--r-- | arch/powerpc/lib/feature-fixups.c | 4 |
10 files changed, 106 insertions, 61 deletions
diff --git a/arch/powerpc/include/asm/code-patching.h b/arch/powerpc/include/asm/code-patching.h index 107d9b915e33..37c32aba79b7 100644 --- a/arch/powerpc/include/asm/code-patching.h +++ b/arch/powerpc/include/asm/code-patching.h | |||
@@ -11,9 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <asm/types.h> | 13 | #include <asm/types.h> |
14 | 14 | #include <asm/ppc-opcode.h> | |
15 | #define PPC_NOP_INSTR 0x60000000 | ||
16 | #define PPC_LWSYNC_INSTR 0x7c2004ac | ||
17 | 15 | ||
18 | /* Flags for create_branch: | 16 | /* Flags for create_branch: |
19 | * "b" == create_branch(addr, target, 0); | 17 | * "b" == create_branch(addr, target, 0); |
diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h new file mode 100644 index 000000000000..f4a4db8d5555 --- /dev/null +++ b/arch/powerpc/include/asm/ppc-opcode.h | |||
@@ -0,0 +1,73 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Freescale Semicondutor, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation; either version | ||
7 | * 2 of the License, or (at your option) any later version. | ||
8 | * | ||
9 | * provides masks and opcode images for use by code generation, emulation | ||
10 | * and for instructions that older assemblers might not know about | ||
11 | */ | ||
12 | #ifndef _ASM_POWERPC_PPC_OPCODE_H | ||
13 | #define _ASM_POWERPC_PPC_OPCODE_H | ||
14 | |||
15 | #include <linux/stringify.h> | ||
16 | #include <asm/asm-compat.h> | ||
17 | |||
18 | /* sorted alphabetically */ | ||
19 | #define PPC_INST_DCBA 0x7c0005ec | ||
20 | #define PPC_INST_DCBA_MASK 0xfc0007fe | ||
21 | #define PPC_INST_DCBAL 0x7c2005ec | ||
22 | #define PPC_INST_DCBZL 0x7c2007ec | ||
23 | #define PPC_INST_ISEL 0x7c00001e | ||
24 | #define PPC_INST_ISEL_MASK 0xfc00003e | ||
25 | #define PPC_INST_LSWI 0x7c0004aa | ||
26 | #define PPC_INST_LSWX 0x7c00042a | ||
27 | #define PPC_INST_LWSYNC 0x7c2004ac | ||
28 | #define PPC_INST_MCRXR 0x7c000400 | ||
29 | #define PPC_INST_MCRXR_MASK 0xfc0007fe | ||
30 | #define PPC_INST_MFSPR_PVR 0x7c1f42a6 | ||
31 | #define PPC_INST_MFSPR_PVR_MASK 0xfc1fffff | ||
32 | #define PPC_INST_MSGSND 0x7c00019c | ||
33 | #define PPC_INST_NOP 0x60000000 | ||
34 | #define PPC_INST_POPCNTB 0x7c0000f4 | ||
35 | #define PPC_INST_POPCNTB_MASK 0xfc0007fe | ||
36 | #define PPC_INST_RFCI 0x4c000066 | ||
37 | #define PPC_INST_RFDI 0x4c00004e | ||
38 | #define PPC_INST_RFMCI 0x4c00004c | ||
39 | |||
40 | #define PPC_INST_STRING 0x7c00042a | ||
41 | #define PPC_INST_STRING_MASK 0xfc0007fe | ||
42 | #define PPC_INST_STRING_GEN_MASK 0xfc00067e | ||
43 | |||
44 | #define PPC_INST_STSWI 0x7c0005aa | ||
45 | #define PPC_INST_STSWX 0x7c00052a | ||
46 | #define PPC_INST_TLBILX 0x7c000626 | ||
47 | #define PPC_INST_WAIT 0x7c00007c | ||
48 | |||
49 | /* macros to insert fields into opcodes */ | ||
50 | #define __PPC_RA(a) ((a & 0x1f) << 16) | ||
51 | #define __PPC_RB(b) ((b & 0x1f) << 11) | ||
52 | #define __PPC_T_TLB(t) ((t & 0x3) << 21) | ||
53 | #define __PPC_WC(w) ((w & 0x3) << 21) | ||
54 | |||
55 | /* Deal with instructions that older assemblers aren't aware of */ | ||
56 | #define PPC_DCBAL(a, b) stringify_in_c(.long PPC_INST_DCBAL | \ | ||
57 | __PPC_RA(a) | __PPC_RB(b)) | ||
58 | #define PPC_DCBZL(a, b) stringify_in_c(.long PPC_INST_DCBZL | \ | ||
59 | __PPC_RA(a) | __PPC_RB(b)) | ||
60 | #define PPC_MSGSND(b) stringify_in_c(.long PPC_INST_MSGSND | \ | ||
61 | __PPC_RB(b)) | ||
62 | #define PPC_RFCI stringify_in_c(.long PPC_INST_RFCI) | ||
63 | #define PPC_RFDI stringify_in_c(.long PPC_INST_RFDI) | ||
64 | #define PPC_RFMCI stringify_in_c(.long PPC_INST_RFMCI) | ||
65 | #define PPC_TLBILX(t, a, b) stringify_in_c(.long PPC_INST_TLBILX | \ | ||
66 | __PPC_T_TLB(t) | __PPC_RA(a) | __PPC_RB(b)) | ||
67 | #define PPC_TLBILX_ALL(a, b) PPC_TLBILX(0, a, b) | ||
68 | #define PPC_TLBILX_PID(a, b) PPC_TLBILX(1, a, b) | ||
69 | #define PPC_TLBILX_VA(a, b) PPC_TLBILX(3, a, b) | ||
70 | #define PPC_WAIT(w) stringify_in_c(.long PPC_INST_WAIT | \ | ||
71 | __PPC_WC(w)) | ||
72 | |||
73 | #endif /* _ASM_POWERPC_PPC_OPCODE_H */ | ||
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index 1a0d628eb114..f59a66684aed 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/stringify.h> | 7 | #include <linux/stringify.h> |
8 | #include <asm/asm-compat.h> | 8 | #include <asm/asm-compat.h> |
9 | #include <asm/processor.h> | 9 | #include <asm/processor.h> |
10 | #include <asm/ppc-opcode.h> | ||
10 | 11 | ||
11 | #ifndef __ASSEMBLY__ | 12 | #ifndef __ASSEMBLY__ |
12 | #error __FILE__ should only be used in assembler files | 13 | #error __FILE__ should only be used in assembler files |
@@ -167,11 +168,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ | |||
167 | #define HMT_MEDIUM_HIGH or 5,5,5 # medium high priority | 168 | #define HMT_MEDIUM_HIGH or 5,5,5 # medium high priority |
168 | #define HMT_HIGH or 3,3,3 | 169 | #define HMT_HIGH or 3,3,3 |
169 | 170 | ||
170 | /* handle instructions that older assemblers may not know */ | ||
171 | #define RFCI .long 0x4c000066 /* rfci instruction */ | ||
172 | #define RFDI .long 0x4c00004e /* rfdi instruction */ | ||
173 | #define RFMCI .long 0x4c00004c /* rfmci instruction */ | ||
174 | |||
175 | #ifdef __KERNEL__ | 171 | #ifdef __KERNEL__ |
176 | #ifdef CONFIG_PPC64 | 172 | #ifdef CONFIG_PPC64 |
177 | 173 | ||
diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c index 19671aca6591..5fb667a60894 100644 --- a/arch/powerpc/kernel/crash_dump.c +++ b/arch/powerpc/kernel/crash_dump.c | |||
@@ -48,7 +48,7 @@ static void __init create_trampoline(unsigned long addr) | |||
48 | * branch to "addr" we jump to ("addr" + 32 MB). Although it requires | 48 | * branch to "addr" we jump to ("addr" + 32 MB). Although it requires |
49 | * two instructions it doesn't require any registers. | 49 | * two instructions it doesn't require any registers. |
50 | */ | 50 | */ |
51 | patch_instruction(p, PPC_NOP_INSTR); | 51 | patch_instruction(p, PPC_INST_NOP); |
52 | patch_branch(++p, addr + PHYSICAL_START, 0); | 52 | patch_branch(++p, addr + PHYSICAL_START, 0); |
53 | } | 53 | } |
54 | 54 | ||
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 0506f54b4237..4dd38f129153 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
@@ -956,7 +956,7 @@ ret_from_crit_exc: | |||
956 | lwz r10,crit_srr1@l(r10); | 956 | lwz r10,crit_srr1@l(r10); |
957 | mtspr SPRN_SRR0,r9; | 957 | mtspr SPRN_SRR0,r9; |
958 | mtspr SPRN_SRR1,r10; | 958 | mtspr SPRN_SRR1,r10; |
959 | RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, RFCI) | 959 | RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, PPC_RFCI) |
960 | #endif /* CONFIG_40x */ | 960 | #endif /* CONFIG_40x */ |
961 | 961 | ||
962 | #ifdef CONFIG_BOOKE | 962 | #ifdef CONFIG_BOOKE |
@@ -967,7 +967,7 @@ ret_from_crit_exc: | |||
967 | stw r10,KSP_LIMIT(r9) | 967 | stw r10,KSP_LIMIT(r9) |
968 | RESTORE_xSRR(SRR0,SRR1); | 968 | RESTORE_xSRR(SRR0,SRR1); |
969 | RESTORE_MMU_REGS; | 969 | RESTORE_MMU_REGS; |
970 | RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, RFCI) | 970 | RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, PPC_RFCI) |
971 | 971 | ||
972 | .globl ret_from_debug_exc | 972 | .globl ret_from_debug_exc |
973 | ret_from_debug_exc: | 973 | ret_from_debug_exc: |
@@ -981,7 +981,7 @@ ret_from_debug_exc: | |||
981 | RESTORE_xSRR(SRR0,SRR1); | 981 | RESTORE_xSRR(SRR0,SRR1); |
982 | RESTORE_xSRR(CSRR0,CSRR1); | 982 | RESTORE_xSRR(CSRR0,CSRR1); |
983 | RESTORE_MMU_REGS; | 983 | RESTORE_MMU_REGS; |
984 | RET_FROM_EXC_LEVEL(SPRN_DSRR0, SPRN_DSRR1, RFDI) | 984 | RET_FROM_EXC_LEVEL(SPRN_DSRR0, SPRN_DSRR1, PPC_RFDI) |
985 | 985 | ||
986 | .globl ret_from_mcheck_exc | 986 | .globl ret_from_mcheck_exc |
987 | ret_from_mcheck_exc: | 987 | ret_from_mcheck_exc: |
@@ -992,7 +992,7 @@ ret_from_mcheck_exc: | |||
992 | RESTORE_xSRR(CSRR0,CSRR1); | 992 | RESTORE_xSRR(CSRR0,CSRR1); |
993 | RESTORE_xSRR(DSRR0,DSRR1); | 993 | RESTORE_xSRR(DSRR0,DSRR1); |
994 | RESTORE_MMU_REGS; | 994 | RESTORE_MMU_REGS; |
995 | RET_FROM_EXC_LEVEL(SPRN_MCSRR0, SPRN_MCSRR1, RFMCI) | 995 | RET_FROM_EXC_LEVEL(SPRN_MCSRR0, SPRN_MCSRR1, PPC_RFMCI) |
996 | #endif /* CONFIG_BOOKE */ | 996 | #endif /* CONFIG_BOOKE */ |
997 | 997 | ||
998 | /* | 998 | /* |
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index 4c75a1c0a5b4..5b5d16b2cac8 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #ifdef CONFIG_DYNAMIC_FTRACE | 33 | #ifdef CONFIG_DYNAMIC_FTRACE |
34 | static unsigned int ftrace_nop_replace(void) | 34 | static unsigned int ftrace_nop_replace(void) |
35 | { | 35 | { |
36 | return PPC_NOP_INSTR; | 36 | return PPC_INST_NOP; |
37 | } | 37 | } |
38 | 38 | ||
39 | static unsigned int | 39 | static unsigned int |
@@ -302,7 +302,7 @@ __ftrace_make_nop(struct module *mod, | |||
302 | return -EINVAL; | 302 | return -EINVAL; |
303 | } | 303 | } |
304 | 304 | ||
305 | op = PPC_NOP_INSTR; | 305 | op = PPC_INST_NOP; |
306 | 306 | ||
307 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) | 307 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) |
308 | return -EPERM; | 308 | return -EPERM; |
@@ -380,7 +380,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | |||
380 | * b +8; ld r2,40(r1) | 380 | * b +8; ld r2,40(r1) |
381 | */ | 381 | */ |
382 | if (((op[0] != 0x48000008) || (op[1] != 0xe8410028)) && | 382 | if (((op[0] != 0x48000008) || (op[1] != 0xe8410028)) && |
383 | ((op[0] != PPC_NOP_INSTR) || (op[1] != PPC_NOP_INSTR))) { | 383 | ((op[0] != PPC_INST_NOP) || (op[1] != PPC_INST_NOP))) { |
384 | printk(KERN_ERR "Expected NOPs but have %x %x\n", op[0], op[1]); | 384 | printk(KERN_ERR "Expected NOPs but have %x %x\n", op[0], op[1]); |
385 | return -EINVAL; | 385 | return -EINVAL; |
386 | } | 386 | } |
@@ -423,7 +423,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | |||
423 | return -EFAULT; | 423 | return -EFAULT; |
424 | 424 | ||
425 | /* It should be pointing to a nop */ | 425 | /* It should be pointing to a nop */ |
426 | if (op != PPC_NOP_INSTR) { | 426 | if (op != PPC_INST_NOP) { |
427 | printk(KERN_ERR "Expected NOP but have %x\n", op); | 427 | printk(KERN_ERR "Expected NOP but have %x\n", op); |
428 | return -EINVAL; | 428 | return -EINVAL; |
429 | } | 429 | } |
diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h index bec18078239d..38e242eb0ef8 100644 --- a/arch/powerpc/kernel/head_booke.h +++ b/arch/powerpc/kernel/head_booke.h | |||
@@ -279,7 +279,7 @@ label: | |||
279 | lwz r11,GPR11(r8); \ | 279 | lwz r11,GPR11(r8); \ |
280 | mfspr r8,DEBUG_SPRG; \ | 280 | mfspr r8,DEBUG_SPRG; \ |
281 | \ | 281 | \ |
282 | RFDI; \ | 282 | PPC_RFDI; \ |
283 | b .; \ | 283 | b .; \ |
284 | \ | 284 | \ |
285 | /* continue normal handling for a debug exception... */ \ | 285 | /* continue normal handling for a debug exception... */ \ |
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c index 8992b031a7b6..8fbb12508bf3 100644 --- a/arch/powerpc/kernel/module_64.c +++ b/arch/powerpc/kernel/module_64.c | |||
@@ -329,7 +329,7 @@ static unsigned long stub_for_addr(Elf64_Shdr *sechdrs, | |||
329 | restore r2. */ | 329 | restore r2. */ |
330 | static int restore_r2(u32 *instruction, struct module *me) | 330 | static int restore_r2(u32 *instruction, struct module *me) |
331 | { | 331 | { |
332 | if (*instruction != PPC_NOP_INSTR) { | 332 | if (*instruction != PPC_INST_NOP) { |
333 | printk("%s: Expect noop after relocate, got %08x\n", | 333 | printk("%s: Expect noop after relocate, got %08x\n", |
334 | me->name, *instruction); | 334 | me->name, *instruction); |
335 | return 0; | 335 | return 0; |
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 5457e9575685..970d66ec4657 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #include <asm/processor.h> | 52 | #include <asm/processor.h> |
53 | #endif | 53 | #endif |
54 | #include <asm/kexec.h> | 54 | #include <asm/kexec.h> |
55 | #include <asm/ppc-opcode.h> | ||
55 | 56 | ||
56 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | 57 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) |
57 | int (*__debugger)(struct pt_regs *regs); | 58 | int (*__debugger)(struct pt_regs *regs); |
@@ -637,29 +638,6 @@ static void parse_fpe(struct pt_regs *regs) | |||
637 | * bits is faster and easier. | 638 | * bits is faster and easier. |
638 | * | 639 | * |
639 | */ | 640 | */ |
640 | #define INST_MFSPR_PVR 0x7c1f42a6 | ||
641 | #define INST_MFSPR_PVR_MASK 0xfc1fffff | ||
642 | |||
643 | #define INST_DCBA 0x7c0005ec | ||
644 | #define INST_DCBA_MASK 0xfc0007fe | ||
645 | |||
646 | #define INST_MCRXR 0x7c000400 | ||
647 | #define INST_MCRXR_MASK 0xfc0007fe | ||
648 | |||
649 | #define INST_STRING 0x7c00042a | ||
650 | #define INST_STRING_MASK 0xfc0007fe | ||
651 | #define INST_STRING_GEN_MASK 0xfc00067e | ||
652 | #define INST_LSWI 0x7c0004aa | ||
653 | #define INST_LSWX 0x7c00042a | ||
654 | #define INST_STSWI 0x7c0005aa | ||
655 | #define INST_STSWX 0x7c00052a | ||
656 | |||
657 | #define INST_POPCNTB 0x7c0000f4 | ||
658 | #define INST_POPCNTB_MASK 0xfc0007fe | ||
659 | |||
660 | #define INST_ISEL 0x7c00001e | ||
661 | #define INST_ISEL_MASK 0xfc00003e | ||
662 | |||
663 | static int emulate_string_inst(struct pt_regs *regs, u32 instword) | 641 | static int emulate_string_inst(struct pt_regs *regs, u32 instword) |
664 | { | 642 | { |
665 | u8 rT = (instword >> 21) & 0x1f; | 643 | u8 rT = (instword >> 21) & 0x1f; |
@@ -670,20 +648,20 @@ static int emulate_string_inst(struct pt_regs *regs, u32 instword) | |||
670 | int pos = 0; | 648 | int pos = 0; |
671 | 649 | ||
672 | /* Early out if we are an invalid form of lswx */ | 650 | /* Early out if we are an invalid form of lswx */ |
673 | if ((instword & INST_STRING_MASK) == INST_LSWX) | 651 | if ((instword & PPC_INST_STRING_MASK) == PPC_INST_LSWX) |
674 | if ((rT == rA) || (rT == NB_RB)) | 652 | if ((rT == rA) || (rT == NB_RB)) |
675 | return -EINVAL; | 653 | return -EINVAL; |
676 | 654 | ||
677 | EA = (rA == 0) ? 0 : regs->gpr[rA]; | 655 | EA = (rA == 0) ? 0 : regs->gpr[rA]; |
678 | 656 | ||
679 | switch (instword & INST_STRING_MASK) { | 657 | switch (instword & PPC_INST_STRING_MASK) { |
680 | case INST_LSWX: | 658 | case PPC_INST_LSWX: |
681 | case INST_STSWX: | 659 | case PPC_INST_STSWX: |
682 | EA += NB_RB; | 660 | EA += NB_RB; |
683 | num_bytes = regs->xer & 0x7f; | 661 | num_bytes = regs->xer & 0x7f; |
684 | break; | 662 | break; |
685 | case INST_LSWI: | 663 | case PPC_INST_LSWI: |
686 | case INST_STSWI: | 664 | case PPC_INST_STSWI: |
687 | num_bytes = (NB_RB == 0) ? 32 : NB_RB; | 665 | num_bytes = (NB_RB == 0) ? 32 : NB_RB; |
688 | break; | 666 | break; |
689 | default: | 667 | default: |
@@ -695,9 +673,9 @@ static int emulate_string_inst(struct pt_regs *regs, u32 instword) | |||
695 | u8 val; | 673 | u8 val; |
696 | u32 shift = 8 * (3 - (pos & 0x3)); | 674 | u32 shift = 8 * (3 - (pos & 0x3)); |
697 | 675 | ||
698 | switch ((instword & INST_STRING_MASK)) { | 676 | switch ((instword & PPC_INST_STRING_MASK)) { |
699 | case INST_LSWX: | 677 | case PPC_INST_LSWX: |
700 | case INST_LSWI: | 678 | case PPC_INST_LSWI: |
701 | if (get_user(val, (u8 __user *)EA)) | 679 | if (get_user(val, (u8 __user *)EA)) |
702 | return -EFAULT; | 680 | return -EFAULT; |
703 | /* first time updating this reg, | 681 | /* first time updating this reg, |
@@ -706,8 +684,8 @@ static int emulate_string_inst(struct pt_regs *regs, u32 instword) | |||
706 | regs->gpr[rT] = 0; | 684 | regs->gpr[rT] = 0; |
707 | regs->gpr[rT] |= val << shift; | 685 | regs->gpr[rT] |= val << shift; |
708 | break; | 686 | break; |
709 | case INST_STSWI: | 687 | case PPC_INST_STSWI: |
710 | case INST_STSWX: | 688 | case PPC_INST_STSWX: |
711 | val = regs->gpr[rT] >> shift; | 689 | val = regs->gpr[rT] >> shift; |
712 | if (put_user(val, (u8 __user *)EA)) | 690 | if (put_user(val, (u8 __user *)EA)) |
713 | return -EFAULT; | 691 | return -EFAULT; |
@@ -775,18 +753,18 @@ static int emulate_instruction(struct pt_regs *regs) | |||
775 | return -EFAULT; | 753 | return -EFAULT; |
776 | 754 | ||
777 | /* Emulate the mfspr rD, PVR. */ | 755 | /* Emulate the mfspr rD, PVR. */ |
778 | if ((instword & INST_MFSPR_PVR_MASK) == INST_MFSPR_PVR) { | 756 | if ((instword & PPC_INST_MFSPR_PVR_MASK) == PPC_INST_MFSPR_PVR) { |
779 | rd = (instword >> 21) & 0x1f; | 757 | rd = (instword >> 21) & 0x1f; |
780 | regs->gpr[rd] = mfspr(SPRN_PVR); | 758 | regs->gpr[rd] = mfspr(SPRN_PVR); |
781 | return 0; | 759 | return 0; |
782 | } | 760 | } |
783 | 761 | ||
784 | /* Emulating the dcba insn is just a no-op. */ | 762 | /* Emulating the dcba insn is just a no-op. */ |
785 | if ((instword & INST_DCBA_MASK) == INST_DCBA) | 763 | if ((instword & PPC_INST_DCBA_MASK) == PPC_INST_DCBA) |
786 | return 0; | 764 | return 0; |
787 | 765 | ||
788 | /* Emulate the mcrxr insn. */ | 766 | /* Emulate the mcrxr insn. */ |
789 | if ((instword & INST_MCRXR_MASK) == INST_MCRXR) { | 767 | if ((instword & PPC_INST_MCRXR_MASK) == PPC_INST_MCRXR) { |
790 | int shift = (instword >> 21) & 0x1c; | 768 | int shift = (instword >> 21) & 0x1c; |
791 | unsigned long msk = 0xf0000000UL >> shift; | 769 | unsigned long msk = 0xf0000000UL >> shift; |
792 | 770 | ||
@@ -796,16 +774,16 @@ static int emulate_instruction(struct pt_regs *regs) | |||
796 | } | 774 | } |
797 | 775 | ||
798 | /* Emulate load/store string insn. */ | 776 | /* Emulate load/store string insn. */ |
799 | if ((instword & INST_STRING_GEN_MASK) == INST_STRING) | 777 | if ((instword & PPC_INST_STRING_GEN_MASK) == PPC_INST_STRING) |
800 | return emulate_string_inst(regs, instword); | 778 | return emulate_string_inst(regs, instword); |
801 | 779 | ||
802 | /* Emulate the popcntb (Population Count Bytes) instruction. */ | 780 | /* Emulate the popcntb (Population Count Bytes) instruction. */ |
803 | if ((instword & INST_POPCNTB_MASK) == INST_POPCNTB) { | 781 | if ((instword & PPC_INST_POPCNTB_MASK) == PPC_INST_POPCNTB) { |
804 | return emulate_popcntb_inst(regs, instword); | 782 | return emulate_popcntb_inst(regs, instword); |
805 | } | 783 | } |
806 | 784 | ||
807 | /* Emulate isel (Integer Select) instruction */ | 785 | /* Emulate isel (Integer Select) instruction */ |
808 | if ((instword & INST_ISEL_MASK) == INST_ISEL) { | 786 | if ((instword & PPC_INST_ISEL_MASK) == PPC_INST_ISEL) { |
809 | return emulate_isel(regs, instword); | 787 | return emulate_isel(regs, instword); |
810 | } | 788 | } |
811 | 789 | ||
diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c index 8c5a03be31e0..7e8865bcd683 100644 --- a/arch/powerpc/lib/feature-fixups.c +++ b/arch/powerpc/lib/feature-fixups.c | |||
@@ -85,7 +85,7 @@ static int patch_feature_section(unsigned long value, struct fixup_entry *fcur) | |||
85 | } | 85 | } |
86 | 86 | ||
87 | for (; dest < end; dest++) | 87 | for (; dest < end; dest++) |
88 | patch_instruction(dest, PPC_NOP_INSTR); | 88 | patch_instruction(dest, PPC_INST_NOP); |
89 | 89 | ||
90 | return 0; | 90 | return 0; |
91 | } | 91 | } |
@@ -122,7 +122,7 @@ void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end) | |||
122 | 122 | ||
123 | for (; start < end; start++) { | 123 | for (; start < end; start++) { |
124 | dest = (void *)start + *start; | 124 | dest = (void *)start + *start; |
125 | patch_instruction(dest, PPC_LWSYNC_INSTR); | 125 | patch_instruction(dest, PPC_INST_LWSYNC); |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||