plug.words 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. global scale sheevaplug
  2. marvell 88f6281 (feroceon kirkwood) SoC; ours are revision A0
  3. arm926ej-s rev 1 [56251311] (armv5tejl) 1.2GHz cpu
  4. l1 I & D VIVT caches 16K each: 4-way, 128 sets, 32-byte lines
  5. l1 D is write-through, l1 I is write-back
  6. unified l2 PIPT cache 256K: 4-way, 2048 sets, 32-byte lines
  7. potentially 512K: 8-way
  8. apparently the mmu walks the page tables in dram and won't look in the
  9. l2 cache. there is no hardware cache coherence, thus the l1 caches
  10. need to be flushed or invalidated when mmu mappings change, but l2
  11. only needs to be flushed or invalidated around dma operations and page
  12. table changes, and only the affected dma buffers and descriptors or
  13. page table entries need to be flushed or invalidated in l2.
  14. we arrange that device registers are uncached.
  15. be aware that cache operations act on cache lines (of CACHELINESZ
  16. bytes) as atomic units, so if you invalidate 4 caches of a cache line,
  17. you invalidate the entire cache line, whether it's been written back
  18. (is clean) or not (is dirty). mixed data structures with parts
  19. maintained by hardware and other parts by software are especially
  20. tricky. we try to pad the initial hardware parts so that the software
  21. parts start in a new cache line.
  22. 512MB of dram at physical address 0
  23. 512MB of flash
  24. 16550 uart for console
  25. see http://www.marvell.com/files/products/embedded_processors/kirkwood/\
  26. FS_88F6180_9x_6281_OpenSource.pdf, stored locally as
  27. /public/doc/marvell/88f61xx.kirkwood.pdf
  28. The code is fairly heavy-handed with the use of barrier instructions
  29. (BARRIERS in assembler, coherence in C), partly in reaction to bad
  30. experience doing Power PC ports, but also just as precautions against
  31. modern processors, which may feel free to execute instructions out of
  32. order or some time later, store to memory out of order or some time
  33. later, otherwise break the model of traditional sequential processors,
  34. or any combination of the above.
  35. this plan 9 port is based on the port of native inferno to the
  36. sheevaplug by Salva Peiró (saoret.one@gmail.com) and Mechiel Lukkien
  37. (mechiel@ueber.net).
  38. ___
  39. unfinished business:
  40. access to nand or spi flash would be handy for nvram and small
  41. fossils. flash access isn't well documented. inferno implements
  42. these software layers: ecc, translation (for wear-levelling and bad
  43. sectors), common flash code and specific drivers for flash chips.
  44. ___
  45. # type this once at u-boot, replacing 00504301c49e with your plug's
  46. # mac address; thereafter the plug will pxe boot:
  47. setenv bootdelay 2
  48. setenv bootcmd 'bootp; bootp; tftp 0x1000 /cfg/pxe/00504301c49e; bootp; tftp 0x800000; go 0x800000'
  49. saveenv
  50. # see /cfg/pxe/example-kw
  51. physical mem map
  52. hex addr size what
  53. ----
  54. 0 512MB sdram
  55. 80000000 512MB pcie mem # default
  56. c8010000 2K cesa sram
  57. d0000000 1MB internal regs default address at reset
  58. d8000000 128MB nand flash # actually 512MB addressed through this
  59. e8000000 128MB spi serial flash
  60. f0000000 128MB boot rom # default
  61. f0000000 16MB pcie io # mapped from 0xc0000000 by u-boot
  62. f1000000 1MB internal regs as mapped by u-boot
  63. f1000000 64K dram regs
  64. f1010000 64K uart, flashes, rtc, gpio, etc.
  65. f1030000 64K crypto accelerator (cesa)
  66. f1040000 64K pci-e regs
  67. f1050000 64K usb otg regs (ehci-like)
  68. f1070000 64K gbe regs
  69. f1080000 64K non-ahci sata regs
  70. f1090000 64K sdio regs
  71. f8000000 128MB boot device # default, mapped to 0 by u-boot
  72. f8000000 16MB spi flash # mapped by u-boot
  73. f9000000 8MB nand flash
  74. fb000000 64KB crypto engine
  75. ff000000 16MB boot rom # u-boot
  76. virtual mem map
  77. hex addr size what
  78. ----
  79. 0 512MB user process address space
  80. 60000000 kzero, mapped to 0
  81. 90000000 256MB pcie mem # mapped by u-boot
  82. c0000000 64KB pcie i/o # mapped by u-boot
  83. ... as per physical map