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:16:59 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 BAT0 registers to map the 1st 8MB of RAM to 0x90000000.
  15.  */
  16. .globl setup_bats
  17. setup_bats:
  18. mfpvr 3
  19. rlwinm 3,3,16,16,31 /* r3 = 1 for 601, 4 for 604 */
  20. cmpi 0,3,1
  21. lis 4,0x9000
  22. bne 4f
  23. ori 4,4,4 /* set up BAT registers for 601 */
  24. li 5,0x7f
  25. b 5f
  26. 4: ori 4,4,0xff /* set up BAT registers for 604 */
  27. li 5,2
  28. mtdbatu 3,4
  29. mtdbatl 3,5
  30. 5: mtibatu 3,4
  31. mtibatl 3,5
  32. isync
  33. blr
  34. /*
  35.  * Flush the dcache and invalidate the icache for a range of addresses.
  36.  *
  37.  * flush_cache(addr, len)
  38.  */
  39. .global flush_cache
  40. flush_cache:
  41. addi 4,4,0x1f /* len = (len + 0x1f) / 0x20 */
  42. rlwinm. 4,4,27,5,31
  43. mtctr 4
  44. beqlr
  45. 1: dcbf 0,3
  46. icbi 0,3
  47. addi 3,3,0x20
  48. bdnz 1b
  49. sync
  50. isync
  51. blr