Re: Memory Access Problem

From: Alan Cox (alan@lxorguk.ukuu.org.uk)
Date: Tue May 15 2001 - 04:40:41 EST


> 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/



This archive was generated by hypermail 2b29 : Tue May 15 2001 - 21:00:40 EST