Changeset 1eee8383 in mainline
- Timestamp:
- 2005-05-18T16:09:25Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6de2480e
- Parents:
- 6b96ab44
- Location:
- arch/ia64
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/include/context.h
r6b96ab44 r1eee8383 39 39 40 40 struct context { 41 __u64 pfs; 42 __u64 unat_caller; 43 __u64 unat_callee; 44 41 45 /* 42 46 * General registers -
arch/ia64/src/context.S
r6b96ab44 r1eee8383 33 33 34 34 context_save: 35 alloc loc0 = ar.pfs, 1, 9, 0, 0 35 alloc loc0 = ar.pfs, 1, 10, 0, 0 36 mov loc1 = ar.unat ;; 37 38 st8 [in0] = loc0, 8 ;; /* save ar.pfs */ 39 st8 [in0] = loc1, 8 ;; /* save ar.unat (caller) */ 40 mov loc2 = in0 ;; 41 add in0 = 8, in0 ;; /* skip ar.unat (callee) */ 36 42 37 43 /* … … 40 46 41 47 /* 42 * Save general registers 48 * Save general registers including NaT bits 43 49 */ 44 st8 [in0] = r1, 8 ;; 45 st8 [in0] = r2, 8 ;; 46 st8 [in0] = r3, 8 ;; 47 st8 [in0] = r4, 8 ;; 48 st8 [in0] = r5, 8 ;; 49 st8 [in0] = r6, 8 ;; 50 st8 [in0] = r7, 8 ;; 51 st8 [in0] = r8, 8 ;; 52 st8 [in0] = r9, 8 ;; 53 st8 [in0] = r10, 8 ;; 54 st8 [in0] = r11, 8 ;; 55 st8 [in0] = r12, 8 ;; /* save sp */ 56 st8 [in0] = r13, 8 ;; 57 st8 [in0] = r14, 8 ;; 58 st8 [in0] = r15, 8 ;; 59 st8 [in0] = r16, 8 ;; 60 st8 [in0] = r17, 8 ;; 61 st8 [in0] = r18, 8 ;; 62 st8 [in0] = r19, 8 ;; 63 st8 [in0] = r20, 8 ;; 64 st8 [in0] = r21, 8 ;; 65 st8 [in0] = r22, 8 ;; 66 st8 [in0] = r23, 8 ;; 67 st8 [in0] = r24, 8 ;; 68 st8 [in0] = r25, 8 ;; 69 st8 [in0] = r26, 8 ;; 70 st8 [in0] = r27, 8 ;; 71 st8 [in0] = r28, 8 ;; 72 st8 [in0] = r29, 8 ;; 73 st8 [in0] = r30, 8 ;; 74 st8 [in0] = r31, 8 ;; 50 st8.spill [in0] = r1, 8 ;; 51 st8.spill [in0] = r2, 8 ;; 52 st8.spill [in0] = r3, 8 ;; 53 st8.spill [in0] = r4, 8 ;; 54 st8.spill [in0] = r5, 8 ;; 55 st8.spill [in0] = r6, 8 ;; 56 st8.spill [in0] = r7, 8 ;; 57 st8.spill [in0] = r8, 8 ;; 58 st8.spill [in0] = r9, 8 ;; 59 st8.spill [in0] = r10, 8 ;; 60 st8.spill [in0] = r11, 8 ;; 61 st8.spill [in0] = r12, 8 ;; /* save sp */ 62 st8.spill [in0] = r13, 8 ;; 63 st8.spill [in0] = r14, 8 ;; 64 st8.spill [in0] = r15, 8 ;; 65 st8.spill [in0] = r16, 8 ;; 66 st8.spill [in0] = r17, 8 ;; 67 st8.spill [in0] = r18, 8 ;; 68 st8.spill [in0] = r19, 8 ;; 69 st8.spill [in0] = r20, 8 ;; 70 st8.spill [in0] = r21, 8 ;; 71 st8.spill [in0] = r22, 8 ;; 72 st8.spill [in0] = r23, 8 ;; 73 st8.spill [in0] = r24, 8 ;; 74 st8.spill [in0] = r25, 8 ;; 75 st8.spill [in0] = r26, 8 ;; 76 st8.spill [in0] = r27, 8 ;; 77 st8.spill [in0] = r28, 8 ;; 78 st8.spill [in0] = r29, 8 ;; 79 st8.spill [in0] = r30, 8 ;; 80 st8.spill [in0] = r31, 8 ;; 81 82 mov loc3 = ar.unat ;; 83 st8 [loc2] = loc3 /* save ar.unat (callee) */ 75 84 76 85 /* 77 86 * Save branch registers 78 87 */ 79 mov loc1 = b0 ;; 80 st8 [in0] = loc1, 8 /* save pc */ 81 mov loc2 = b1 ;; 82 st8 [in0] = loc2, 8 83 mov loc3 = b2 ;; 88 mov loc2 = b0 ;; 89 st8 [in0] = loc2, 8 /* save pc */ 90 mov loc3 = b1 ;; 84 91 st8 [in0] = loc3, 8 85 mov loc4 = b 3;;92 mov loc4 = b2 ;; 86 93 st8 [in0] = loc4, 8 87 mov loc5 = b 4;;94 mov loc5 = b3 ;; 88 95 st8 [in0] = loc5, 8 89 mov loc6 = b 5;;96 mov loc6 = b4 ;; 90 97 st8 [in0] = loc6, 8 91 mov loc7 = b 6;;98 mov loc7 = b5 ;; 92 99 st8 [in0] = loc7, 8 93 mov loc8 = b 7;;100 mov loc8 = b6 ;; 94 101 st8 [in0] = loc8, 8 102 mov loc9 = b7 ;; 103 st8 [in0] = loc9, 8 95 104 96 105 /* 97 106 * Save predicate registers 98 107 */ 99 mov loc 1= pr ;;100 st8 [in0] = loc 1, 8108 mov loc2 = pr ;; 109 st8 [in0] = loc2, 8 101 110 102 111 mov ar.pfs = loc0 112 mov ar.unat = loc1 103 113 104 114 add r8 = r0, r0, 1 /* context_save returns 1 */ … … 106 116 107 117 context_restore: 108 alloc loc0 = ar.pfs, 1, 9, 0, 0118 alloc loc0 = ar.pfs, 1, 10, 0, 0 ;; 109 119 110 120 /* … … 112 122 */ 113 123 124 ld8 loc0 = [in0], 8 ;; /* load pfs */ 125 ld8 loc1 = [in0], 8 ;; /* load unat (caller) */ 126 ld8 loc2 = [in0], 8 ;; /* load unat (callee) */ 127 128 mov ar.unat = loc2 ;; 129 114 130 /* 115 * Restore general registers 131 * Restore general registers including NaT bits 116 132 */ 117 ld8 r1 = [in0], 8 ;;118 ld8 r2 = [in0], 8 ;;119 ld8 r3 = [in0], 8 ;;120 ld8 r4 = [in0], 8 ;;121 ld8 r5 = [in0], 8 ;;122 ld8 r6 = [in0], 8 ;;123 ld8 r7 = [in0], 8 ;;124 ld8 r8 = [in0], 8 ;;125 ld8 r9 = [in0], 8 ;;126 ld8 r10 = [in0], 8 ;;127 ld8 r11 = [in0], 8 ;;128 ld8 r12 = [in0], 8 ;; /* restore sp */129 ld8 r13 = [in0], 8 ;;130 ld8 r14 = [in0], 8 ;;131 ld8 r15 = [in0], 8 ;;132 ld8 r16 = [in0], 8 ;;133 ld8 r17 = [in0], 8 ;;134 ld8 r18 = [in0], 8 ;;135 ld8 r19 = [in0], 8 ;;136 ld8 r20 = [in0], 8 ;;137 ld8 r21 = [in0], 8 ;;138 ld8 r22 = [in0], 8 ;;139 ld8 r23 = [in0], 8 ;;140 ld8 r24 = [in0], 8 ;;141 ld8 r25 = [in0], 8 ;;142 ld8 r26 = [in0], 8 ;;143 ld8 r27 = [in0], 8 ;;144 ld8 r28 = [in0], 8 ;;145 ld8 r29 = [in0], 8 ;;146 ld8 r30 = [in0], 8 ;;147 ld8 r31 = [in0], 8 ;;133 ld8.fill r1 = [in0], 8 ;; 134 ld8.fill r2 = [in0], 8 ;; 135 ld8.fill r3 = [in0], 8 ;; 136 ld8.fill r4 = [in0], 8 ;; 137 ld8.fill r5 = [in0], 8 ;; 138 ld8.fill r6 = [in0], 8 ;; 139 ld8.fill r7 = [in0], 8 ;; 140 ld8.fill r8 = [in0], 8 ;; 141 ld8.fill r9 = [in0], 8 ;; 142 ld8.fill r10 = [in0], 8 ;; 143 ld8.fill r11 = [in0], 8 ;; 144 ld8.fill r12 = [in0], 8 ;; /* restore sp */ 145 ld8.fill r13 = [in0], 8 ;; 146 ld8.fill r14 = [in0], 8 ;; 147 ld8.fill r15 = [in0], 8 ;; 148 ld8.fill r16 = [in0], 8 ;; 149 ld8.fill r17 = [in0], 8 ;; 150 ld8.fill r18 = [in0], 8 ;; 151 ld8.fill r19 = [in0], 8 ;; 152 ld8.fill r20 = [in0], 8 ;; 153 ld8.fill r21 = [in0], 8 ;; 154 ld8.fill r22 = [in0], 8 ;; 155 ld8.fill r23 = [in0], 8 ;; 156 ld8.fill r24 = [in0], 8 ;; 157 ld8.fill r25 = [in0], 8 ;; 158 ld8.fill r26 = [in0], 8 ;; 159 ld8.fill r27 = [in0], 8 ;; 160 ld8.fill r28 = [in0], 8 ;; 161 ld8.fill r29 = [in0], 8 ;; 162 ld8.fill r30 = [in0], 8 ;; 163 ld8.fill r31 = [in0], 8 ;; 148 164 149 165 /* 150 166 * Restore branch registers 151 167 */ 152 ld8 loc1 = [in0], 8 ;; /* restore pc */ 153 mov b0 = loc1 168 ld8 loc2 = [in0], 8 ;; /* restore pc */ 169 mov b0 = loc2 170 ld8 loc3 = [in0], 8 ;; 171 mov b1 = loc3 172 ld8 loc4 = [in0], 8 ;; 173 mov b2 = loc4 174 ld8 loc5 = [in0], 8 ;; 175 mov b3 = loc5 176 ld8 loc6 = [in0], 8 ;; 177 mov b4 = loc6 178 ld8 loc7 = [in0], 8 ;; 179 mov b5 = loc7 180 ld8 loc8 = [in0], 8 ;; 181 mov b6 = loc8 182 ld8 loc9 = [in0], 8 ;; 183 mov b7 = loc9 184 185 /* 186 * Restore predicate registers 187 */ 154 188 ld8 loc2 = [in0], 8 ;; 155 mov b1 = loc2 156 ld8 loc3 = [in0], 8 ;; 157 mov b2 = loc3 158 ld8 loc4 = [in0], 8 ;; 159 mov b3 = loc4 160 ld8 loc5 = [in0], 8 ;; 161 mov b4 = loc5 162 ld8 loc6 = [in0], 8 ;; 163 mov b5 = loc6 164 ld8 loc7 = [in0], 8 ;; 165 mov b6 = loc7 166 ld8 loc8 = [in0], 8 ;; 167 mov b7 = loc8 168 169 ld8 loc1 = [in0], 8 ;; 170 mov pr = loc1, ~0 189 mov pr = loc2, ~0 171 190 172 191 mov ar.pfs = loc0 192 mov ar.unat = loc1 173 193 174 194 mov r8 = r0 /* context_restore returns 0 */
Note:
See TracChangeset
for help on using the changeset viewer.