init.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * linux/arch/cris/mm/init.c
  3. *
  4. * Copyright (C) 1995 Linus Torvalds
  5. * Copyright (C) 2000,2001 Axis Communications AB
  6. *
  7. * Authors: Bjorn Wesen (bjornw@axis.com)
  8. *
  9. */
  10. #include <linux/gfp.h>
  11. #include <linux/init.h>
  12. #include <linux/bootmem.h>
  13. #include <asm/tlb.h>
  14. #include <asm/sections.h>
  15. unsigned long empty_zero_page;
  16. void __init
  17. mem_init(void)
  18. {
  19. int codesize, reservedpages, datasize, initsize;
  20. unsigned long tmp;
  21. BUG_ON(!mem_map);
  22. /* max/min_low_pfn was set by setup.c
  23. * now we just copy it to some other necessary places...
  24. *
  25. * high_memory was also set in setup.c
  26. */
  27. max_mapnr = num_physpages = max_low_pfn - min_low_pfn;
  28. /* this will put all memory onto the freelists */
  29. totalram_pages = free_all_bootmem();
  30. reservedpages = 0;
  31. for (tmp = 0; tmp < max_mapnr; tmp++) {
  32. /*
  33. * Only count reserved RAM pages
  34. */
  35. if (PageReserved(mem_map + tmp))
  36. reservedpages++;
  37. }
  38. codesize = (unsigned long) &_etext - (unsigned long) &_stext;
  39. datasize = (unsigned long) &_edata - (unsigned long) &_etext;
  40. initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;
  41. printk(KERN_INFO
  42. "Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, "
  43. "%dk init)\n" ,
  44. nr_free_pages() << (PAGE_SHIFT-10),
  45. max_mapnr << (PAGE_SHIFT-10),
  46. codesize >> 10,
  47. reservedpages << (PAGE_SHIFT-10),
  48. datasize >> 10,
  49. initsize >> 10
  50. );
  51. }
  52. /* free the pages occupied by initialization code */
  53. void
  54. free_initmem(void)
  55. {
  56. free_initmem_default(0);
  57. }