tlb.c 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Copyright 2009-2010 Freescale Semiconductor, Inc.
  4. *
  5. * (C) Copyright 2000
  6. * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  7. */
  8. #include <common.h>
  9. #include <asm/mmu.h>
  10. struct fsl_e_tlb_entry tlb_table[] = {
  11. /* TLB 0 - for temp stack in cache */
  12. SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR,
  13. MAS3_SX|MAS3_SW|MAS3_SR, 0,
  14. 0, 0, BOOKE_PAGESZ_4K, 0),
  15. SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
  16. CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
  17. MAS3_SX|MAS3_SW|MAS3_SR, 0,
  18. 0, 0, BOOKE_PAGESZ_4K, 0),
  19. SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
  20. CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
  21. MAS3_SX|MAS3_SW|MAS3_SR, 0,
  22. 0, 0, BOOKE_PAGESZ_4K, 0),
  23. SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
  24. CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
  25. MAS3_SX|MAS3_SW|MAS3_SR, 0,
  26. 0, 0, BOOKE_PAGESZ_4K, 0),
  27. /* TLB 1 Initializations */
  28. /*
  29. * TLBe 0: 64M write-through, guarded
  30. * Out of reset this entry is only 4K.
  31. * 0xfc000000 32MB NAND FLASH (CS3)
  32. * 0xfe000000 32MB NOR FLASH (CS0)
  33. */
  34. #ifdef CONFIG_NAND_SPL
  35. SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE,
  36. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  37. 0, 0, BOOKE_PAGESZ_1M, 1),
  38. #else
  39. SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE,
  40. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_W|MAS2_G,
  41. 0, 0, BOOKE_PAGESZ_64M, 1),
  42. #endif
  43. /*
  44. * TLBe 1: 256KB Non-cacheable, guarded
  45. * 0xf8000000 32K BCSR
  46. * 0xf8008000 32K PIB (CS4)
  47. * 0xf8010000 32K PIB (CS5)
  48. */
  49. SET_TLB_ENTRY(1, CONFIG_SYS_BCSR_BASE, CONFIG_SYS_BCSR_BASE_PHYS,
  50. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  51. 0, 1, BOOKE_PAGESZ_256K, 1),
  52. /*
  53. * TLBe 2: 256M Non-cacheable, guarded
  54. * 0xa00000000 256M PCIe MEM (lower half)
  55. */
  56. SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
  57. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  58. 0, 2, BOOKE_PAGESZ_256M, 1),
  59. /*
  60. * TLBe 3: 256M Non-cacheable, guarded
  61. * 0xb00000000 256M PCIe MEM (higher half)
  62. */
  63. SET_TLB_ENTRY(1, (CONFIG_SYS_PCIE1_MEM_VIRT + 0x10000000),
  64. (CONFIG_SYS_PCIE1_MEM_PHYS + 0x10000000),
  65. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  66. 0, 3, BOOKE_PAGESZ_256M, 1),
  67. /*
  68. * TLBe 4: 64M Non-cacheable, guarded
  69. * 0xe000_0000 1M CCSRBAR
  70. * 0xe280_0000 8M PCIe IO
  71. */
  72. SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
  73. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  74. 0, 4, BOOKE_PAGESZ_64M, 1),
  75. #if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L2_ADDR)
  76. /* *I*G - L2SRAM */
  77. SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L2_ADDR, CONFIG_SYS_INIT_L2_ADDR_PHYS,
  78. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  79. 0, 5, BOOKE_PAGESZ_256K, 1),
  80. SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L2_ADDR + 0x40000,
  81. CONFIG_SYS_INIT_L2_ADDR_PHYS + 0x40000,
  82. MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
  83. 0, 6, BOOKE_PAGESZ_256K, 1),
  84. #endif
  85. };
  86. int num_tlb_entries = ARRAY_SIZE(tlb_table);