Re: Memory Access Problem

Alan Cox (alan@lxorguk.ukuu.org.uk)
Tue, 15 May 2001 10:40:41 +0100 (BST)


> I use readw to access memory below 1MB , report "Segmentation fault"
> and stall in memory
>
> simple code below (this will get paraller port)
> ==
> int init_module(void){
> unsigned int *BIOS_Data=(unsigned int *)0x400;
> u32 test;
> test = readw(BIOS_Data);
>
> printk(KERN_CRIT "0x400:%x\n",test);
> }
> ==
> but those can work in kernel 2.2.19 , no problem .
>
> can anyone help me ?

2.2 had back compatibility support for old drivers that did this 2.4 does
not.

readb() is for bus accesses after mapping with ioremap
isa_readb() is a quick form for ISA bus which is always mapped

For main memory you want to use
phys_to_virt()

to get the virtual mapping of the page. That will work for the BIOS page but
not for arbitary higher pages which may not even be mapped.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/