pg-andes.S
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * r4xx0.c: R4000 processor variant specific MMU/Cache routines.
  7.  *
  8.  * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
  9.  * Copyright (C) 1997,  1998,  1999,  2000 Ralf Baechle ralf@gnu.org
  10.  */
  11. #include <asm/asm.h>
  12. #include <asm/regdef.h>
  13. #include <asm/offset.h>
  14. .text
  15. .set mips4
  16. .set noat
  17. /*
  18.  * This is suboptimal for 32-bit kernels; we assume that R10000 is only used
  19.  * with 64-bit kernels.  The prefetch offsets have been experimentally tuned
  20.  * an Origin 200.
  21.  */
  22. LEAF(andes_clear_page)
  23. LONG_ADDIU AT, a0, _PAGE_SIZE
  24. 1: pref 7, 512(a0)
  25. LONG_S zero, 0*SZREG(a0)
  26. LONG_S zero, 1*SZREG(a0)
  27. LONG_S zero, 2*SZREG(a0)
  28. LONG_S zero, 3*SZREG(a0)
  29. LONG_ADDIU a0, a0, 8*SZREG
  30. LONG_S zero, -4*SZREG(a0)
  31. LONG_S zero, -3*SZREG(a0)
  32. LONG_S zero, -2*SZREG(a0)
  33. LONG_S zero, -1*SZREG(a0)
  34. bne AT, a0, 1b
  35. j ra
  36. .end andes_clear_page
  37. END(andes_clear_page)
  38. LEAF(andes_copy_page)
  39. LONG_ADDIU AT, a0, _PAGE_SIZE
  40. 1: pref 0, 2*128(a1)
  41. pref 1, 2*128(a0)
  42. LONG_L a3, 0*SZREG(a1)
  43. LONG_L a2, 1*SZREG8(a1)
  44. LONG_L v1, 2*SZREG(a1)
  45. LONG_L v0, 3*SZREG(a1)
  46. LONG_S a3, 0*SZREG(a0)
  47. LONG_S a2, 1*SZREG(a0)
  48. LONG_S v1, 2*SZREG(a0)
  49. LONG_S v0, 3*SZREG(a0)
  50. LONG_ADDIU a0, a0, 8*SZREG
  51. LONG_ADDIU a1, a1, 8*SZREG
  52. LONG_L a3, -4*SZREG(a1)
  53. LONG_L a2, -3*SZREG(a1)
  54. LONG_L v1, -2*SZREG(a1)
  55. LONG_L v0, -1*SZREG(a1)
  56. LONG_S a3, -4*SZREG(a0)
  57. LONG_S a2, -3*SZREG(a0)
  58. LONG_S v1, -2*SZREG(a0)
  59. LONG_S v0, -1*SZREG(a0)
  60. bne AT, a0,1b
  61. j ra
  62. END(andes_copy_page)