home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-powerpc / lmb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.2 KB  |  81 lines

  1. #ifndef _PPC64_LMB_H
  2. #define _PPC64_LMB_H
  3. #ifdef __KERNEL__
  4.  
  5. /*
  6.  * Definitions for talking to the Open Firmware PROM on
  7.  * Power Macintosh computers.
  8.  *
  9.  * Copyright (C) 2001 Peter Bergner, IBM Corp.
  10.  *
  11.  * This program is free software; you can redistribute it and/or
  12.  * modify it under the terms of the GNU General Public License
  13.  * as published by the Free Software Foundation; either version
  14.  * 2 of the License, or (at your option) any later version.
  15.  */
  16.  
  17. #include <linux/init.h>
  18. #include <asm/prom.h>
  19.  
  20. #define MAX_LMB_REGIONS 128
  21.  
  22. struct lmb_property {
  23.     unsigned long base;
  24.     unsigned long size;
  25. };
  26.  
  27. struct lmb_region {
  28.     unsigned long cnt;
  29.     unsigned long size;
  30.     struct lmb_property region[MAX_LMB_REGIONS+1];
  31. };
  32.  
  33. struct lmb {
  34.     unsigned long debug;
  35.     unsigned long rmo_size;
  36.     struct lmb_region memory;
  37.     struct lmb_region reserved;
  38. };
  39.  
  40. extern struct lmb lmb;
  41.  
  42. extern void __init lmb_init(void);
  43. extern void __init lmb_analyze(void);
  44. extern long __init lmb_add(unsigned long base, unsigned long size);
  45. extern long __init lmb_reserve(unsigned long base, unsigned long size);
  46. extern unsigned long __init lmb_alloc(unsigned long size, unsigned long align);
  47. extern unsigned long __init lmb_alloc_base(unsigned long size,
  48.         unsigned long align, unsigned long max_addr);
  49. extern unsigned long __init __lmb_alloc_base(unsigned long size,
  50.         unsigned long align, unsigned long max_addr);
  51. extern unsigned long __init lmb_phys_mem_size(void);
  52. extern unsigned long __init lmb_end_of_DRAM(void);
  53. extern void __init lmb_enforce_memory_limit(unsigned long memory_limit);
  54.  
  55. extern void lmb_dump_all(void);
  56.  
  57. static inline unsigned long
  58. lmb_size_bytes(struct lmb_region *type, unsigned long region_nr)
  59. {
  60.     return type->region[region_nr].size;
  61. }
  62. static inline unsigned long
  63. lmb_size_pages(struct lmb_region *type, unsigned long region_nr)
  64. {
  65.     return lmb_size_bytes(type, region_nr) >> PAGE_SHIFT;
  66. }
  67. static inline unsigned long
  68. lmb_start_pfn(struct lmb_region *type, unsigned long region_nr)
  69. {
  70.     return type->region[region_nr].base >> PAGE_SHIFT;
  71. }
  72. static inline unsigned long
  73. lmb_end_pfn(struct lmb_region *type, unsigned long region_nr)
  74. {
  75.     return lmb_start_pfn(type, region_nr) +
  76.            lmb_size_pages(type, region_nr);
  77. }
  78.  
  79. #endif /* __KERNEL__ */
  80. #endif /* _PPC64_LMB_H */
  81.