memory.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * linux/arch/unicore32/include/mach/memory.h
  3. *
  4. * Code specific to PKUnity SoC and UniCore ISA
  5. *
  6. * Copyright (C) 2001-2010 GUAN Xue-tao
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License version 2 as
  10. * published by the Free Software Foundation.
  11. */
  12. #ifndef __MACH_PUV3_MEMORY_H__
  13. #define __MACH_PUV3_MEMORY_H__
  14. #include <mach/hardware.h>
  15. /* Physical DRAM offset. */
  16. #define PHYS_OFFSET UL(0x00000000)
  17. /* The base address of exception vectors. */
  18. #define VECTORS_BASE UL(0xffff0000)
  19. /* The base address of kuser area. */
  20. #define KUSER_BASE UL(0x80000000)
  21. #ifdef __ASSEMBLY__
  22. /* The byte offset of the kernel image in RAM from the start of RAM. */
  23. #define KERNEL_IMAGE_START 0x00408000
  24. #endif
  25. #if !defined(__ASSEMBLY__) && defined(CONFIG_PCI)
  26. void puv3_pci_adjust_zones(unsigned long *size, unsigned long *holes);
  27. #define arch_adjust_zones(size, holes) \
  28. puv3_pci_adjust_zones(size, holes)
  29. #endif
  30. /*
  31. * PCI controller in PKUnity-3 masks highest 5-bit for upstream channel,
  32. * so we must limit the DMA allocation within 128M physical memory for
  33. * supporting PCI devices.
  34. */
  35. #define PCI_DMA_THRESHOLD (PHYS_OFFSET + SZ_128M - 1)
  36. #define is_pcibus_device(dev) (dev && \
  37. (strncmp(dev->bus->name, "pci", 3) == 0))
  38. #define __virt_to_pcibus(x) (__virt_to_phys((x) + PKUNITY_PCIAHB_BASE))
  39. #define __pcibus_to_virt(x) (__phys_to_virt(x) - PKUNITY_PCIAHB_BASE)
  40. /* kuser area */
  41. #define KUSER_VECPAGE_BASE (KUSER_BASE + UL(0x3fff0000))
  42. /* kuser_vecpage (0xbfff0000) is ro, and vectors page (0xffff0000) is rw */
  43. #define kuser_vecpage_to_vectors(x) ((x) - (KUSER_VECPAGE_BASE) \
  44. + (VECTORS_BASE))
  45. #endif