mem_user.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * arch/um/include/mem_user.h
  3. *
  4. * BRIEF MODULE DESCRIPTION
  5. * user side memory interface for support IO memory inside user mode linux
  6. *
  7. * Copyright (C) 2001 RidgeRun, Inc.
  8. * Author: RidgeRun, Inc.
  9. * Greg Lonnon glonnon@ridgerun.com or info@ridgerun.com
  10. *
  11. * This program is free software; you can redistribute it and/or modify it
  12. * under the terms of the GNU General Public License as published by the
  13. * Free Software Foundation; either version 2 of the License, or (at your
  14. * option) any later version.
  15. *
  16. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  17. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  18. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
  19. * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  20. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  21. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  22. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  23. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  25. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. *
  27. * You should have received a copy of the GNU General Public License along
  28. * with this program; if not, write to the Free Software Foundation, Inc.,
  29. * 675 Mass Ave, Cambridge, MA 02139, USA.
  30. */
  31. #ifndef _MEM_USER_H
  32. #define _MEM_USER_H
  33. struct iomem_region {
  34. struct iomem_region *next;
  35. char *driver;
  36. int fd;
  37. int size;
  38. unsigned long phys;
  39. unsigned long virt;
  40. };
  41. extern struct iomem_region *iomem_regions;
  42. extern int iomem_size;
  43. #define ROUND_4M(n) ((((unsigned long) (n)) + (1 << 22)) & ~((1 << 22) - 1))
  44. extern int init_mem_user(void);
  45. extern void setup_memory(void *entry);
  46. extern unsigned long find_iomem(char *driver, unsigned long *len_out);
  47. extern int init_maps(unsigned long physmem, unsigned long iomem,
  48. unsigned long highmem);
  49. extern unsigned long get_vm(unsigned long len);
  50. extern void setup_physmem(unsigned long start, unsigned long usable,
  51. unsigned long len, unsigned long long highmem);
  52. extern void add_iomem(char *name, int fd, unsigned long size);
  53. extern unsigned long phys_offset(unsigned long phys);
  54. extern void map_memory(unsigned long virt, unsigned long phys,
  55. unsigned long len, int r, int w, int x);
  56. #endif