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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: SCCS/s.misc.S 1.6 05/18/01 15:17:15 cort
  3.  */
  4. /*
  5.  * Copyright (C) Paul Mackerras 1997.
  6.  *
  7.  * This program is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License
  9.  * as published by the Free Software Foundation; either version
  10.  * 2 of the License, or (at your option) any later version.
  11.  */
  12. .text
  13. /*
  14.  * Use the BAT3 registers to map the 1st 8MB of RAM to
  15.  * the address given as the 1st argument.
  16.  */
  17. .globl setup_bats
  18. setup_bats:
  19. mfpvr 5
  20. rlwinm 5,5,16,16,31 /* r3 = 1 for 601, 4 for 604 */
  21. cmpi 0,5,1
  22. li 0,0
  23. bne 4f
  24. mtibatl 3,0 /* invalidate BAT first */
  25. ori 3,3,4 /* set up BAT registers for 601 */
  26. li 4,0x7f
  27. mtibatu 3,3
  28. mtibatl 3,4
  29. b 5f
  30. 4: mtdbatu 3,0 /* invalidate BATs first */
  31. mtibatu 3,0
  32. ori 3,3,0xff /* set up BAT registers for 604 */
  33. li 4,2
  34. mtdbatl 3,4
  35. mtdbatu 3,3
  36. mtibatl 3,4
  37. mtibatu 3,3
  38. 5: sync
  39. isync
  40. blr
  41. /*
  42.  * Flush the dcache and invalidate the icache for a range of addresses.
  43.  *
  44.  * flush_cache(addr, len)
  45.  */
  46. .global flush_cache
  47. flush_cache:
  48. addi 4,4,0x1f /* len = (len + 0x1f) / 0x20 */
  49. rlwinm. 4,4,27,5,31
  50. mtctr 4
  51. beqlr
  52. 1: dcbf 0,3
  53. icbi 0,3
  54. addi 3,3,0x20
  55. bdnz 1b
  56. sync
  57. isync
  58. blr