Changeset a35b458 in mainline for kernel/arch/ppc32/src/asm.S
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ppc32/src/asm.S
r3061bc1 ra35b458 40 40 * r5 = entry 41 41 */ 42 42 43 43 /* Disable interrupts */ 44 44 45 45 mfmsr r31 46 46 rlwinm r31, r31, 0, 17, 15 47 47 mtmsr r31 48 48 isync 49 49 50 50 /* Set entry point */ 51 51 52 52 mtsrr0 r5 53 53 54 54 /* Set privileged state, enable interrupts */ 55 55 56 56 ori r31, r31, MSR_PR 57 57 ori r31, r31, MSR_EE 58 58 mtsrr1 r31 59 59 60 60 /* Set stack */ 61 61 62 62 mr sp, r4 63 63 64 64 /* %r6 is defined to hold pcb_ptr - set it to 0 */ 65 65 66 66 xor r6, r6, r6 67 67 68 68 /* Jump to userspace */ 69 69 70 70 rfi 71 71 FUNCTION_END(userspace_asm) … … 73 73 SYMBOL(iret) 74 74 /* Disable interrupts */ 75 75 76 76 mfmsr r31 77 77 rlwinm r31, r31, 0, 17, 15 78 78 mtmsr r31 79 79 isync 80 80 81 81 lwz r0, ISTATE_OFFSET_R0(sp) 82 82 lwz r2, ISTATE_OFFSET_R2(sp) … … 109 109 lwz r30, ISTATE_OFFSET_R30(sp) 110 110 lwz r31, ISTATE_OFFSET_R31(sp) 111 111 112 112 lwz r12, ISTATE_OFFSET_CR(sp) 113 113 mtcr r12 114 114 115 115 lwz r12, ISTATE_OFFSET_PC(sp) 116 116 mtsrr0 r12 117 117 118 118 lwz r12, ISTATE_OFFSET_SRR1(sp) 119 119 mtsrr1 r12 120 120 121 121 lwz r12, ISTATE_OFFSET_LR(sp) 122 122 mtlr r12 123 123 124 124 lwz r12, ISTATE_OFFSET_CTR(sp) 125 125 mtctr r12 126 126 127 127 lwz r12, ISTATE_OFFSET_XER(sp) 128 128 mtxer r12 129 129 130 130 lwz r12, ISTATE_OFFSET_R12(sp) 131 131 lwz sp, ISTATE_OFFSET_SP(sp) 132 132 133 133 rfi 134 134 135 135 SYMBOL(iret_syscall) 136 136 /* Disable interrupts */ 137 137 138 138 mfmsr r31 139 139 rlwinm r31, r31, 0, 17, 15 140 140 mtmsr r31 141 141 isync 142 142 143 143 lwz r0, ISTATE_OFFSET_R0(sp) 144 144 lwz r2, ISTATE_OFFSET_R2(sp) … … 170 170 lwz r30, ISTATE_OFFSET_R30(sp) 171 171 lwz r31, ISTATE_OFFSET_R31(sp) 172 172 173 173 lwz r12, ISTATE_OFFSET_CR(sp) 174 174 mtcr r12 175 175 176 176 lwz r12, ISTATE_OFFSET_PC(sp) 177 177 mtsrr0 r12 178 178 179 179 lwz r12, ISTATE_OFFSET_SRR1(sp) 180 180 mtsrr1 r12 181 181 182 182 lwz r12, ISTATE_OFFSET_LR(sp) 183 183 mtlr r12 184 184 185 185 lwz r12, ISTATE_OFFSET_CTR(sp) 186 186 mtctr r12 187 187 188 188 lwz r12, ISTATE_OFFSET_XER(sp) 189 189 mtxer r12 190 190 191 191 lwz r12, ISTATE_OFFSET_R12(sp) 192 192 lwz sp, ISTATE_OFFSET_SP(sp) 193 193 194 194 rfi 195 195 … … 200 200 addi r4, r4, -4 201 201 beq 2f 202 202 203 203 andi. r0, r6, 3 204 204 mtctr r7 205 205 bne 5f 206 206 207 207 1: 208 208 209 209 lwz r7, 4(r4) 210 210 lwzu r8, 8(r4) … … 212 212 stwu r8, 8(r6) 213 213 bdnz 1b 214 214 215 215 andi. r5, r5, 7 216 216 217 217 2: 218 218 219 219 cmplwi 0, r5, 4 220 220 blt 3f 221 221 222 222 lwzu r0, 4(r4) 223 223 addi r5, r5, -4 224 224 stwu r0, 4(r6) 225 225 226 226 3: 227 227 228 228 cmpwi 0, r5, 0 229 229 beqlr … … 231 231 addi r4, r4, 3 232 232 addi r6, r6, 3 233 233 234 234 4: 235 235 236 236 lbzu r0, 1(r4) 237 237 stbu r0, 1(r6) 238 238 bdnz 4b 239 239 blr 240 240 241 241 5: 242 242 243 243 subfic r0, r0, 4 244 244 mtctr r0 245 245 246 246 6: 247 247 248 248 lbz r7, 4(r4) 249 249 addi r4, r4, 1
Note:
See TracChangeset
for help on using the changeset viewer.