diff options
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/kernel/intvec_32.S | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/tile/kernel/intvec_32.S b/arch/tile/kernel/intvec_32.S index 3404c75f8e64..84f296ca9e63 100644 --- a/arch/tile/kernel/intvec_32.S +++ b/arch/tile/kernel/intvec_32.S | |||
@@ -952,7 +952,7 @@ STD_ENTRY(interrupt_return) | |||
952 | * able to safely read all the remaining words on those cache | 952 | * able to safely read all the remaining words on those cache |
953 | * lines without waiting for the memory subsystem. | 953 | * lines without waiting for the memory subsystem. |
954 | */ | 954 | */ |
955 | pop_reg_zero r0, r1, sp, PTREGS_OFFSET_REG(30) - PTREGS_OFFSET_REG(0) | 955 | pop_reg_zero r0, r28, sp, PTREGS_OFFSET_REG(30) - PTREGS_OFFSET_REG(0) |
956 | pop_reg_zero r30, r2, sp, PTREGS_OFFSET_PC - PTREGS_OFFSET_REG(30) | 956 | pop_reg_zero r30, r2, sp, PTREGS_OFFSET_PC - PTREGS_OFFSET_REG(30) |
957 | pop_reg_zero r21, r3, sp, PTREGS_OFFSET_EX1 - PTREGS_OFFSET_PC | 957 | pop_reg_zero r21, r3, sp, PTREGS_OFFSET_EX1 - PTREGS_OFFSET_PC |
958 | pop_reg_zero lr, r4, sp, PTREGS_OFFSET_REG(52) - PTREGS_OFFSET_EX1 | 958 | pop_reg_zero lr, r4, sp, PTREGS_OFFSET_REG(52) - PTREGS_OFFSET_EX1 |
@@ -1017,7 +1017,17 @@ STD_ENTRY(interrupt_return) | |||
1017 | { move r22, zero; move r23, zero } | 1017 | { move r22, zero; move r23, zero } |
1018 | { move r24, zero; move r25, zero } | 1018 | { move r24, zero; move r25, zero } |
1019 | { move r26, zero; move r27, zero } | 1019 | { move r26, zero; move r27, zero } |
1020 | { move r28, zero; move r29, zero } | 1020 | |
1021 | /* Set r1 to errno if we are returning an error, otherwise zero. */ | ||
1022 | { | ||
1023 | moveli r29, 1024 | ||
1024 | sub r1, zero, r0 | ||
1025 | } | ||
1026 | slt_u r29, r1, r29 | ||
1027 | { | ||
1028 | mnz r1, r29, r1 | ||
1029 | move r29, zero | ||
1030 | } | ||
1021 | iret | 1031 | iret |
1022 | 1032 | ||
1023 | /* | 1033 | /* |