Changeset b994a60 in mainline for arch/ia64/src/asm.S
- Timestamp:
- 2006-03-09T12:44:27Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 901122b
- Parents:
- cd373bb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/src/asm.S
rcd373bb rb994a60 27 27 # 28 28 29 #include <arch/register.h> 30 29 31 .text 30 32 … … 47 49 } 48 50 br halt 51 52 /** Switch to userspace - low level code. 53 * 54 * @param in0 Userspace entry point address. 55 * @param in1 Userspace stack pointer address. 56 * @param in2 Userspace register stack pointer address. 57 * @param in3 Value to be stored in IPSR. 58 * @param in4 Value to be stored in RSC. 59 */ 60 .global switch_to_userspace 61 switch_to_userspace: 62 alloc loc0 = ar.pfs, 5, 3, 0, 0 63 rsm (PSR_IC_MASK | PSR_I_MASK) /* disable interruption collection and interrupts */ 64 srlz.d ;; 65 srlz.i ;; 66 67 mov cr.ipsr = in3 68 mov cr.iip = in0 69 mov r12 = in1 70 71 xor r1 = r1, r1 72 73 mov loc1 = cr.ifs 74 movl loc2 = PFM_MASK ;; 75 and loc1 = loc2, loc1 ;; 76 mov cr.ifs = loc1 ;; /* prevent decrementing BSP by rfi */ 77 78 invala 79 80 mov loc1 = ar.rsc ;; 81 and loc1 = ~3, loc1 ;; 82 mov ar.rsc = loc1 ;; /* put RSE into enforced lazy mode */ 83 84 flushrs ;; 85 86 mov ar.bspstore = in2 ;; 87 mov ar.rsc = in4 ;; 88 89 rfi ;;
Note:
See TracChangeset
for help on using the changeset viewer.