Changeset 48c1ef9 in mainline for arch/ppc64/src/asm.S
- Timestamp:
- 2006-05-21T20:38:18Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 040542aa
- Parents:
- bd55bbb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc64/src/asm.S
rbd55bbb r48c1ef9 31 31 .text 32 32 33 .global userspace_asm 33 34 .global iret 35 .global iret_syscall 34 36 .global memsetb 35 37 .global memcpy 38 .global memcpy_from_uspace 39 .global memcpy_to_uspace 40 .global memcpy_from_uspace_failover_address 41 .global memcpy_to_uspace_failover_address 42 43 userspace_asm: 44 45 # r3 = uspace_uarg 46 # r4 = stack 47 # r5 = entry 48 49 # disable interrupts 50 51 mfmsr r31 52 rlwinm r31, r31, 0, 17, 15 53 mtmsr r31 54 55 # set entry point 56 57 mtsrr0 r5 58 59 # set problem state, enable interrupts 60 61 ori r31, r31, msr_pr 62 ori r31, r31, msr_ee 63 mtsrr1 r31 64 65 # set stack 66 67 mr sp, r4 68 69 # jump to userspace 70 71 rfi 36 72 37 73 iret: 38 lwz r3, 144(sp) 39 mtxer r3 40 41 lwz r3, 140(sp) 42 mtctr r3 43 44 lwz r3, 136(sp) 45 mtcr r3 46 47 lwz r3, 132(sp) 48 mtlr r3 49 50 lwz r3, 128(sp) 51 mtspr srr1, r3 52 53 lwz r3, 124(sp) 54 mtspr srr0, r3 55 56 lwz r0, 0(sp) 57 lwz r2, 4(sp) 58 lwz r3, 8(sp) 59 lwz r4, 12(sp) 60 lwz r5, 16(sp) 61 lwz r6, 20(sp) 62 lwz r7, 24(sp) 63 lwz r8, 28(sp) 64 lwz r9, 32(sp) 65 lwz r10, 36(sp) 66 lwz r11, 40(sp) 67 lwz r12, 44(sp) 68 lwz r13, 48(sp) 69 lwz r14, 52(sp) 70 lwz r15, 56(sp) 71 lwz r16, 60(sp) 72 lwz r17, 64(sp) 73 lwz r18, 68(sp) 74 lwz r19, 72(sp) 75 lwz r20, 76(sp) 76 lwz r21, 80(sp) 77 lwz r22, 84(sp) 78 lwz r23, 88(sp) 79 lwz r24, 92(sp) 80 lwz r25, 96(sp) 81 lwz r26, 100(sp) 82 lwz r27, 104(sp) 83 lwz r28, 108(sp) 84 lwz r29, 112(sp) 85 lwz r30, 116(sp) 86 lwz r31, 120(sp) 87 88 mfspr sp, sprg1 89 74 75 # disable interrupts 76 77 mfmsr r31 78 rlwinm r31, r31, 0, 17, 15 79 mtmsr r31 80 81 lwz r0, 8(sp) 82 lwz r2, 12(sp) 83 lwz r3, 16(sp) 84 lwz r4, 20(sp) 85 lwz r5, 24(sp) 86 lwz r6, 28(sp) 87 lwz r7, 32(sp) 88 lwz r8, 36(sp) 89 lwz r9, 40(sp) 90 lwz r10, 44(sp) 91 lwz r11, 48(sp) 92 lwz r13, 52(sp) 93 lwz r14, 56(sp) 94 lwz r15, 60(sp) 95 lwz r16, 64(sp) 96 lwz r17, 68(sp) 97 lwz r18, 72(sp) 98 lwz r19, 76(sp) 99 lwz r20, 80(sp) 100 lwz r21, 84(sp) 101 lwz r22, 88(sp) 102 lwz r23, 92(sp) 103 lwz r24, 96(sp) 104 lwz r25, 100(sp) 105 lwz r26, 104(sp) 106 lwz r27, 108(sp) 107 lwz r28, 112(sp) 108 lwz r29, 116(sp) 109 lwz r30, 120(sp) 110 lwz r31, 124(sp) 111 112 lwz r12, 128(sp) 113 mtcr r12 114 115 lwz r12, 132(sp) 116 mtsrr0 r12 117 118 lwz r12, 136(sp) 119 mtsrr1 r12 120 121 lwz r12, 140(sp) 122 mtlr r12 123 124 lwz r12, 144(sp) 125 mtctr r12 126 127 lwz r12, 148(sp) 128 mtxer r12 129 130 lwz r12, 152(sp) 131 lwz sp, 156(sp) 132 133 rfi 134 135 iret_syscall: 136 137 # reset decrementer 138 139 li r31, 1000 140 mtdec r31 141 142 # disable interrupts 143 144 mfmsr r31 145 rlwinm r31, r31, 0, 17, 15 146 mtmsr r31 147 148 lwz r0, 8(sp) 149 lwz r2, 12(sp) 150 lwz r4, 20(sp) 151 lwz r5, 24(sp) 152 lwz r6, 28(sp) 153 lwz r7, 32(sp) 154 lwz r8, 36(sp) 155 lwz r9, 40(sp) 156 lwz r10, 44(sp) 157 lwz r11, 48(sp) 158 lwz r13, 52(sp) 159 lwz r14, 56(sp) 160 lwz r15, 60(sp) 161 lwz r16, 64(sp) 162 lwz r17, 68(sp) 163 lwz r18, 72(sp) 164 lwz r19, 76(sp) 165 lwz r20, 80(sp) 166 lwz r21, 84(sp) 167 lwz r22, 88(sp) 168 lwz r23, 92(sp) 169 lwz r24, 96(sp) 170 lwz r25, 100(sp) 171 lwz r26, 104(sp) 172 lwz r27, 108(sp) 173 lwz r28, 112(sp) 174 lwz r29, 116(sp) 175 lwz r30, 120(sp) 176 lwz r31, 124(sp) 177 178 lwz r12, 128(sp) 179 mtcr r12 180 181 lwz r12, 132(sp) 182 mtsrr0 r12 183 184 lwz r12, 136(sp) 185 mtsrr1 r12 186 187 lwz r12, 140(sp) 188 mtlr r12 189 190 lwz r12, 144(sp) 191 mtctr r12 192 193 lwz r12, 148(sp) 194 mtxer r12 195 196 lwz r12, 152(sp) 197 lwz sp, 156(sp) 198 90 199 rfi 91 200 … … 134 243 135 244 memcpy: 245 memcpy_from_uspace: 246 memcpy_to_uspace: 247 136 248 srwi. r7, r5, 3 137 249 addi r6, r3, -4 … … 194 306 mtctr r7 195 307 b 1b 308 309 memcpy_from_uspace_failover_address: 310 memcpy_to_uspace_failover_address: 311 b memcpy_from_uspace_failover_address
Note:
See TracChangeset
for help on using the changeset viewer.