pci-nommu.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #include <linux/mm.h>
  2. #include <linux/init.h>
  3. #include <linux/pci.h>
  4. #include <linux/string.h>
  5. /* 
  6.  * Dummy IO MMU functions
  7.  */
  8. extern unsigned long end_pfn;
  9. void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
  10.    dma_addr_t *dma_handle)
  11. {
  12. void *ret;
  13. int gfp = GFP_ATOMIC;
  14. if (hwdev == NULL ||
  15.     end_pfn > (hwdev->dma_mask>>PAGE_SHIFT) ||  /* XXX */
  16.     (u32)hwdev->dma_mask < 0xffffffff)
  17. gfp |= GFP_DMA;
  18. ret = (void *)__get_free_pages(gfp, get_order(size));
  19. if (ret != NULL) {
  20. memset(ret, 0, size);
  21. *dma_handle = virt_to_bus(ret);
  22. }
  23. return ret;
  24. }
  25. void pci_free_consistent(struct pci_dev *hwdev, size_t size,
  26.  void *vaddr, dma_addr_t dma_handle)
  27. {
  28. free_pages((unsigned long)vaddr, get_order(size));
  29. }
  30. static void __init check_ram(void) 
  31. if (end_pfn >= 0xffffffff>>PAGE_SHIFT) { 
  32. printk(KERN_ERR "WARNING more than 4GB of memory but no IOMMU.n"
  33.        KERN_ERR "WARNING 32bit PCI may malfunction.n"); 
  34. /* Could play with highmem_start_page here to trick some subsystems
  35.    into bounce buffers. Unfortunately that would require setting
  36.    CONFIG_HIGHMEM too. 
  37.  */