Go to the documentation of this file.
2 #ifdef CONFIG_VIRT_CPU_ACCOUNTING
4 #define XEN_ACCOUNT_GET_STAMP \
5 MOV_FROM_ITC(pUStk, p6, r20, r2);
7 #define XEN_ACCOUNT_GET_STAMP
36 #define XEN_DO_SAVE_MIN(__COVER,SAVE_IFS,EXTRA,WORKAROUND) \
37 mov r16=IA64_KR(CURRENT); \
41 MOV_FROM_IPSR(p0,r29); \
46 adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16; \
50 adds r1=-IA64_TASK_THREAD_ON_USTACK_OFFSET,r16 \
55 cmp.eq pKStk,pUStk=r0,r17; \
57 (pUStk) mov ar.rsc=0; \
59 (pUStk) mov.m r24=ar.rnat; \
60 (pUStk) addl r22=IA64_RBS_OFFSET,r1; \
63 (pUStk) lfetch.fault.excl.nt1 [r22]; \
64 (pUStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1; \
65 (pUStk) mov r23=ar.bspstore; \
67 (pUStk) mov ar.bspstore=r22; \
68 (pKStk) addl r1=-IA64_PT_REGS_SIZE,r1; \
70 (pUStk) mov r18=ar.bsp; \
71 (pUStk) mov ar.rsc=0x3; \
72 adds r17=2*L1_CACHE_BYTES,r1; \
73 adds r16=PT(CR_IPSR),r1; \
75 lfetch.fault.excl.nt1 [r17],L1_CACHE_BYTES; \
78 lfetch.fault.excl.nt1 [r17]; \
79 tbit.nz p15,p0=r29,IA64_PSR_I_BIT; \
87 .mem.offset 0,0; st8.spill [r16]=r8,16; \
88 .mem.offset 8,0; st8.spill [r17]=r9,16; \
90 .mem.offset 0,0; st8.spill [r16]=r10,24; \
91 movl r8=XSI_PRECOVER_IFS; \
92 .mem.offset 8,0; st8.spill [r17]=r11,24; \
97 (pUStk) sub r18=r18,r22; \
104 movl r11=FPSR_DEFAULT; \
111 (pUStk) st8 [r17]=r24,16; \
112 (pKStk) adds r17=16,r17; \
114 (pUStk) st8 [r16]=r23,16; \
116 (pKStk) adds r16=16,r16; \
120 cmp.eq pNonSys,pSys=r0,r0 \
122 .mem.offset 0,0; st8.spill [r16]=r20,16; \
123 .mem.offset 8,0; st8.spill [r17]=r12,16; \
126 .mem.offset 0,0; st8.spill [r16]=r13,16; \
127 .mem.offset 8,0; st8.spill [r17]=r21,16; \
128 mov r13=IA64_KR(CURRENT); \
130 .mem.offset 0,0; st8.spill [r16]=r15,16; \
131 .mem.offset 8,0; st8.spill [r17]=r14,16; \
133 .mem.offset 0,0; st8.spill [r16]=r2,16; \
134 .mem.offset 8,0; st8.spill [r17]=r3,16; \
135 XEN_ACCOUNT_GET_STAMP \
136 adds r2=IA64_PT_REGS_R16_OFFSET,r1; \