cacheflush.S 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. .global cris_flush_cache_range
  2. .type cris_flush_cache_range, @function
  3. cris_flush_cache_range:
  4. move.d 1024, $r12
  5. cmp.d $r11, $r12
  6. bhi cris_flush_1KB
  7. nop
  8. add.d $r10, $r11
  9. ftagd [$r10]
  10. cris_flush_last:
  11. addq 32, $r10
  12. cmp.d $r11, $r10
  13. blt cris_flush_last
  14. ftagd [$r10]
  15. ret
  16. nop
  17. cris_flush_1KB:
  18. ftagd [$r10]
  19. addq 32, $r10
  20. ftagd [$r10]
  21. addq 32, $r10
  22. ftagd [$r10]
  23. addq 32, $r10
  24. ftagd [$r10]
  25. addq 32, $r10
  26. ftagd [$r10]
  27. addq 32, $r10
  28. ftagd [$r10]
  29. addq 32, $r10
  30. ftagd [$r10]
  31. addq 32, $r10
  32. ftagd [$r10]
  33. addq 32, $r10
  34. ftagd [$r10]
  35. addq 32, $r10
  36. ftagd [$r10]
  37. addq 32, $r10
  38. ftagd [$r10]
  39. addq 32, $r10
  40. ftagd [$r10]
  41. addq 32, $r10
  42. ftagd [$r10]
  43. addq 32, $r10
  44. ftagd [$r10]
  45. addq 32, $r10
  46. ftagd [$r10]
  47. addq 32, $r10
  48. ftagd [$r10]
  49. addq 32, $r10
  50. ftagd [$r10]
  51. addq 32, $r10
  52. ftagd [$r10]
  53. addq 32, $r10
  54. ftagd [$r10]
  55. addq 32, $r10
  56. ftagd [$r10]
  57. addq 32, $r10
  58. ftagd [$r10]
  59. addq 32, $r10
  60. ftagd [$r10]
  61. addq 32, $r10
  62. ftagd [$r10]
  63. addq 32, $r10
  64. ftagd [$r10]
  65. addq 32, $r10
  66. ftagd [$r10]
  67. addq 32, $r10
  68. ftagd [$r10]
  69. addq 32, $r10
  70. ftagd [$r10]
  71. addq 32, $r10
  72. ftagd [$r10]
  73. addq 32, $r10
  74. ftagd [$r10]
  75. addq 32, $r10
  76. ftagd [$r10]
  77. addq 32, $r10
  78. ftagd [$r10]
  79. addq 32, $r10
  80. ftagd [$r10]
  81. addq 32, $r10
  82. ba cris_flush_cache_range
  83. sub.d $r12, $r11
  84. .size cris_flush_cache_range, . - cris_flush_cache_range
  85. .global cris_flush_cache
  86. .type cris_flush_cache, @function
  87. cris_flush_cache:
  88. moveq 0, $r10
  89. cris_flush_line:
  90. move.d 16*1024, $r11
  91. addq 16, $r10
  92. cmp.d $r10, $r11
  93. blt cris_flush_line
  94. fidxd [$r10]
  95. ret
  96. nop
  97. .size cris_flush_cache, . - cris_flush_cache