|
@@ -214,5 +214,20 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
|
|
|
BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
|
|
|
return __virt_to_fix(vaddr);
|
|
|
}
|
|
|
+
|
|
|
+/* Return an pointer with offset calculated */
|
|
|
+static inline unsigned long __set_fixmap_offset(enum fixed_addresses idx,
|
|
|
+ phys_addr_t phys, pgprot_t flags)
|
|
|
+{
|
|
|
+ __set_fixmap(idx, phys, flags);
|
|
|
+ return fix_to_virt(idx) + (phys & (PAGE_SIZE - 1));
|
|
|
+}
|
|
|
+
|
|
|
+#define set_fixmap_offset(idx, phys) \
|
|
|
+ __set_fixmap_offset(idx, phys, PAGE_KERNEL)
|
|
|
+
|
|
|
+#define set_fixmap_offset_nocache(idx, phys) \
|
|
|
+ __set_fixmap_offset(idx, phys, PAGE_KERNEL_NOCACHE)
|
|
|
+
|
|
|
#endif /* !__ASSEMBLY__ */
|
|
|
#endif /* _ASM_X86_FIXMAP_H */
|