kmem.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef __KMEM_H__
  2. #define __KMEM_H__
  3. #include <inttypes.h>
  4. #include "list.h"
  5. #define PG_FLAG_FREE 0x00000001
  6. #ifdef CONFIG_PLAT_AE210P
  7. #include "ae210p_regs.h"
  8. #define PG_MASK 0xFFFFFF00
  9. #define PG_SHIFT 8
  10. #define PG_SIZE (1 << PG_SHIFT) //256Byte per page
  11. /* 48MB ~ 112MB */
  12. #define MEM_START 0x00208000 //EDLM_BASEi+32K
  13. #define MEM_END 0x00210000 //EDLM_BASE+64K
  14. #elif defined( CONFIG_LATENCY_HEAP )
  15. #define PG_MASK 0xFFFFFFC0
  16. #define PG_SHIFT 6
  17. #define PG_SIZE (1 << PG_SHIFT)
  18. #define MEM_START 0x0C000
  19. #define MEM_END 0x10000
  20. #else
  21. #ifdef CONFIG_PLAT_AG101P_16MB
  22. #define PG_MASK 0xFFFFFF00
  23. #define PG_SHIFT 8
  24. #define PG_SIZE (1 << PG_SHIFT)
  25. #ifdef CONFIG_SMALL_HEAP
  26. /* 6MB ~ 7MB*/
  27. #define MEM_START 0x00600000
  28. #else
  29. /* 3MB ~ 7MB*/
  30. #define MEM_START 0x00300000
  31. #endif
  32. #define MEM_END 0x00700000
  33. #else
  34. #define PG_MASK 0xFFFFF000
  35. #define PG_SHIFT 12
  36. #define PG_SIZE (1 << PG_SHIFT)
  37. /* 48MB ~ 112MB */
  38. #define MEM_START 0x03000000
  39. #define MEM_END 0x07000000
  40. #endif
  41. #endif
  42. #define MEM_LIMIT ((MEM_END) - (MEM_START))
  43. struct page_struct {
  44. struct list_head lru;
  45. uint32_t flag;
  46. intptr_t alloc_nr;
  47. };
  48. extern int init_kmem(intptr_t start, intptr_t end);
  49. extern void *alloc_pages(intptr_t pg_req_nr);
  50. extern void *alloc_page(void);
  51. extern void free_pages(void *addr);
  52. extern void *kmalloc(intptr_t size);
  53. extern void kfree(void *addr);
  54. extern struct page_struct *addr_to_pf_des(void *addr);
  55. extern void mem_dump_map(void);
  56. #endif /* __KMEM_H__ */