Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
955 B

  1. .global _TimerProcThunkProc
  2. .proc _TimerProcThunkProc
  3. .align 32
  4. _TimerProcThunkProc:
  5. // On entry, gp is actually a pointer to the pRealWndProcDesc member of
  6. // the _WndProcThunk struct
  7. alloc r36=ar.pfs,4,6,4,0
  8. mov r37=rp // Save return address
  9. mov r38=gp // Save gp
  10. mov r40=gp // r40 = &thunk.pRealWndProcDesc
  11. ld8 r30=[r40],8 // r30 = thunk.pRealWndProcDesc, r40 = &thunk.pThis
  12. ld8 r42=[r40] // r42 = pThis
  13. ld8 r31=[r30],8 // r31 = thunk.pRealWndProcDesc->pfn, r30 = &thunk.pRealWndProcDesc->gp
  14. ld8 gp=[r30] // gp = thunk.pRealWndProcDesc->gp
  15. mov r43=r33 // r43 = nMsg
  16. mov r44=r34 // r44 = wParam
  17. mov r45=r35 // r45 = lParam
  18. mov b6=r31 // b6 = thunk.pRealWndProcDesc->pfn
  19. br.call.sptk.many rp=b6 // Call thunk.pRealWndProcDesc->pfn
  20. mov gp=r38 // restore gp
  21. mov rp=r37 // restore return address
  22. mov ar.pfs=r36 // restore previous function state
  23. br.ret.sptk.many rp // return
  24. .endp _TimerProcThunkProc