qemu-arm.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Copyright (c) 2017 Tuomas Tynkkynen
  4. */
  5. #include <common.h>
  6. #include <fdtdec.h>
  7. #ifdef CONFIG_ARM64
  8. #include <asm/armv8/mmu.h>
  9. static struct mm_region qemu_arm64_mem_map[] = {
  10. {
  11. /* Flash */
  12. .virt = 0x00000000UL,
  13. .phys = 0x00000000UL,
  14. .size = 0x08000000UL,
  15. .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
  16. PTE_BLOCK_INNER_SHARE
  17. }, {
  18. /* Peripherals */
  19. .virt = 0x08000000UL,
  20. .phys = 0x08000000UL,
  21. .size = 0x38000000,
  22. .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
  23. PTE_BLOCK_NON_SHARE |
  24. PTE_BLOCK_PXN | PTE_BLOCK_UXN
  25. }, {
  26. /* RAM */
  27. .virt = 0x40000000UL,
  28. .phys = 0x40000000UL,
  29. .size = 255UL * SZ_1G,
  30. .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
  31. PTE_BLOCK_INNER_SHARE
  32. }, {
  33. /* List terminator */
  34. 0,
  35. }
  36. };
  37. struct mm_region *mem_map = qemu_arm64_mem_map;
  38. #endif
  39. int board_init(void)
  40. {
  41. return 0;
  42. }
  43. int dram_init(void)
  44. {
  45. if (fdtdec_setup_mem_size_base() != 0)
  46. return -EINVAL;
  47. return 0;
  48. }
  49. int dram_init_banksize(void)
  50. {
  51. fdtdec_setup_memory_banksize();
  52. return 0;
  53. }
  54. void *board_fdt_blob_setup(void)
  55. {
  56. /* QEMU loads a generated DTB for us at the start of RAM. */
  57. return (void *)CONFIG_SYS_SDRAM_BASE;
  58. }