mcount.S 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * linux/arch/blackfin/mcount.S
  3. *
  4. * Copyright (C) 2006 Analog Devices Inc.
  5. *
  6. * 2007/04/12 Save index, length, modify and base registers. --rpm
  7. */
  8. #include <linux/linkage.h>
  9. #include <asm/blackfin.h>
  10. .text
  11. .align 4 /* just in case */
  12. ENTRY(__mcount)
  13. [--sp] = i0;
  14. [--sp] = i1;
  15. [--sp] = i2;
  16. [--sp] = i3;
  17. [--sp] = l0;
  18. [--sp] = l1;
  19. [--sp] = l2;
  20. [--sp] = l3;
  21. [--sp] = m0;
  22. [--sp] = m1;
  23. [--sp] = m2;
  24. [--sp] = m3;
  25. [--sp] = b0;
  26. [--sp] = b1;
  27. [--sp] = b2;
  28. [--sp] = b3;
  29. [--sp] = ( r7:0, p5:0 );
  30. [--sp] = ASTAT;
  31. p1.L = _ipipe_trace_enable;
  32. p1.H = _ipipe_trace_enable;
  33. r7 = [p1];
  34. CC = r7 == 0;
  35. if CC jump out;
  36. link 0x10;
  37. r0 = 0x0;
  38. [sp + 0xc] = r0; /* v */
  39. r0 = 0x0; /* type: IPIPE_TRACE_FN */
  40. r1 = rets;
  41. p0 = [fp]; /* p0: Prior FP */
  42. r2 = [p0 + 4]; /* r2: Prior RETS */
  43. call ___ipipe_trace;
  44. unlink;
  45. out:
  46. ASTAT = [sp++];
  47. ( r7:0, p5:0 ) = [sp++];
  48. b3 = [sp++];
  49. b2 = [sp++];
  50. b1 = [sp++];
  51. b0 = [sp++];
  52. m3 = [sp++];
  53. m2 = [sp++];
  54. m1 = [sp++];
  55. m0 = [sp++];
  56. l3 = [sp++];
  57. l2 = [sp++];
  58. l1 = [sp++];
  59. l0 = [sp++];
  60. i3 = [sp++];
  61. i2 = [sp++];
  62. i1 = [sp++];
  63. i0 = [sp++];
  64. rts;
  65. ENDPROC(__mcount)