The definition of virt_to_bus() and bus_to_virt() for ebas285 on the
arm 2.2.2 ARM kernel are rather curious to me; The macros are as follows (from
linux/include/asm-arm/arch-ebsa285/mmu.h):
------------
/* On DEC21285-based machines, the dram is contiguous
*/
#define __virt_to_phys__is_a_macro
#define __virt_to_phys(vpage) ((unsigned long)(vpage) - PAGE_OFFSET)
#define __phys_to_virt__is_a_macro
#define __phys_to_virt(ppage) ((unsigned long)(ppage) + PAGE_OFFSET)
#define __virt_to_bus__is_a_macro
#define ((x) - 0xe0000000)
#define __bus_to_virt__is_a_macro
#define __bus_to_virt(x) ((x) + 0xe0000000)
------------
PAGE_OFFSET from some place else is 0xc0000000
__virt_to_phys() et.al. make sense; however, I loose it on __virt_to_bus()
et.al.
I can't see anything mapped in at 0xe0000000.
Can somebody explain the difference between these 2 sets of macros.
I have an AMD driver that is using __virt_to_bus on addresses returned from
kmalloc(). Thus, I get address manipulation such as:
0xc000fxxx - 0xe0000000
This is either broken or way too slick for me.
Which is it ?
Thanks,
--
Dave Baukus
Inet Technologies Inc.
[EMAIL PROTECTED]
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]