copy_page.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id: copy_page.S,v 1.2 2001/07/23 10:27:25 gniibe Exp $
  2.  *
  3.  * copy_page implementation of SuperH
  4.  *
  5.  * Copyright (C) 2001  Niibe Yutaka & Kaz Kojima
  6.  *
  7.  */
  8. /*
  9.  * copy_page
  10.  * @to: P1 address
  11.  * @from: P1 address
  12.  *
  13.  * void copy_page(void *to, void *from)
  14.  */
  15. /*
  16.  * r0, r1, r2, r3, r4, r5, r6, r7 --- scratch 
  17.  * r8 --- from + 4096
  18.  * r9 --- not used
  19.  * r10 --- to
  20.  * r11 --- from
  21.  */
  22. #include <linux/linkage.h>
  23. ENTRY(copy_page)
  24. mov.l r8,@-r15
  25. mov.l r10,@-r15
  26. mov.l r11,@-r15
  27. mov r4,r10
  28. mov r5,r11
  29. mov r5,r8
  30. mov.w .L4096,r0
  31. add r0,r8
  32. !
  33. 1: mov.l @r11+,r0
  34. mov.l @r11+,r1
  35. mov.l @r11+,r2
  36. mov.l @r11+,r3
  37. mov.l @r11+,r4
  38. mov.l @r11+,r5
  39. mov.l @r11+,r6
  40. mov.l @r11+,r7
  41. #if defined(__sh3__)
  42. mov.l r0,@r10
  43. #elif defined(__SH4__)
  44. movca.l r0,@r10
  45. mov r10,r0
  46. #endif
  47. add #32,r10
  48. mov.l r7,@-r10
  49. mov.l r6,@-r10
  50. mov.l r5,@-r10
  51. mov.l r4,@-r10
  52. mov.l r3,@-r10
  53. mov.l r2,@-r10
  54. mov.l r1,@-r10
  55. #if defined(__SH4__)
  56. ocbwb @r0
  57. #endif
  58. cmp/eq r11,r8
  59. bf/s 1b
  60.  add #28,r10
  61. !
  62. mov.l @r15+,r11
  63. mov.l @r15+,r10
  64. mov.l @r15+,r8
  65. rts
  66.  nop
  67. .L4096: .word 4096