aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/include/asm/generic-scatterlist.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2009-06-18 21:48:18 +0200
committerH. Peter Anvin <hpa@zytor.com>2009-06-18 14:39:53 -0700
commit06f5013aa8eb5895ced2c71d13f5114103605555 (patch)
tree893dbbfc9eb6967b7a39fe51e3500338311531ee /arch/x86/include/asm/generic-scatterlist.h
parent7bfd124d6dae7d394e73753300594a81a022fe7d (diff)
x86: convert almost generic headers to asm-generic version
In x86, mman.h, module.h, scatterlist.h, types.h and ucontext.h can use the asm-generic version by just defining the x86 specific parts locally and falling back on the generic code for the common bits. This patch illustrates the differences between the x86 and asm-generic versions by changing a file that is initially identical to the x86 version to one that is identical to the asm-generic version. Signed-off-by: Arnd Bergmann <arnd@arndb.de> LKML-Reference: <cover.1245354003.git.arnd@arndb.de> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/include/asm/generic-scatterlist.h')
-rw-r--r--arch/x86/include/asm/generic-scatterlist.h34
1 files changed, 22 insertions, 12 deletions
diff --git a/arch/x86/include/asm/generic-scatterlist.h b/arch/x86/include/asm/generic-scatterlist.h
index 263d397d2ee..8b9454496a7 100644
--- a/arch/x86/include/asm/generic-scatterlist.h
+++ b/arch/x86/include/asm/generic-scatterlist.h
@@ -1,7 +1,7 @@
-#ifndef _ASM_X86_SCATTERLIST_H
-#define _ASM_X86_SCATTERLIST_H
+#ifndef __ASM_GENERIC_SCATTERLIST_H
+#define __ASM_GENERIC_SCATTERLIST_H
-#include <asm/types.h>
+#include <linux/types.h>
struct scatterlist {
#ifdef CONFIG_DEBUG_SG
@@ -14,20 +14,30 @@ struct scatterlist {
unsigned int dma_length;
};
-#define ARCH_HAS_SG_CHAIN
-#define ISA_DMA_THRESHOLD (0x00ffffff)
-
/*
- * These macros should be used after a pci_map_sg call has been done
+ * These macros should be used after a dma_map_sg call has been done
* to get bus addresses of each of the SG entries and their lengths.
* You should only work with the number of sg entries pci_map_sg
- * returns.
+ * returns, or alternatively stop on the first sg_dma_len(sg) which
+ * is 0.
*/
#define sg_dma_address(sg) ((sg)->dma_address)
-#ifdef CONFIG_X86_32
-# define sg_dma_len(sg) ((sg)->length)
+#ifndef sg_dma_len
+/*
+ * Normally, you have an iommu on 64 bit machines, but not on 32 bit
+ * machines. Architectures that are differnt should override this.
+ */
+#if __BITS_PER_LONG == 64
+#define sg_dma_len(sg) ((sg)->dma_length)
#else
-# define sg_dma_len(sg) ((sg)->dma_length)
+#define sg_dma_len(sg) ((sg)->length)
+#endif /* 64 bit */
+#endif /* sg_dma_len */
+
+#ifndef ISA_DMA_THRESHOLD
+#define ISA_DMA_THRESHOLD (~0UL)
#endif
-#endif /* _ASM_X86_SCATTERLIST_H */
+#define ARCH_HAS_SG_CHAIN
+
+#endif /* __ASM_GENERIC_SCATTERLIST_H */