[Barrelfish-users] Undefined address space 'pageX'

Timothy Roscoe troscoe at inf.ethz.ch
Fri Jul 6 10:21:40 CEST 2012


Hi Patrik, 

You should not need to modify rtl8029as.dev at all - its functionality
hasn't changed since it was written originally (it's not a complex
card), and reverting it will most likely break the existing driver. 

The file has changed because Mackerel acquired new constructs which
made it much simpler to express things like arrays of registers, and
non-standard address spaces, both of which the RTL uses. 

The best source of material for understanding the .dev file is the
Mackerel manual (available on the web site and in the source code as a
technical note), but as I said, you shouldn't need to modify this
file, only the driver. 

Do you have a citation for the AM79C973 ever working?  I don't think we
have one here, and if I remember correctly the AM79C973 is compatible
with the LANCE, rather than the RTL8029, and we don't have a LANCE
driver... 

 -- Mothy

At Thu, 5 Jul 2012 16:44:55 +0000, Patrik Eklöf <peklof at kth.se> wrote:
> Hi all,
> 
> I'm told the AM79C973 NIC worked with BF before (well, just adding it in and using the RTL driver doesn't work in the latest anyway), so I'm trying to "hack" BF to work with it again by changing the rtl8029as.dev file.
> (Scream at me if I'm doing this the wrong way :p)
> 
> Anyway, I have a diff from a bf version from 2010 which I'm trying to patch in.
> Now, I am not so versed in Mackarel, so I'm trying to understand how this works.
> 
> I have these lines here in the diff file:
> 
> -  regarray par rw page1( 0x1 )[6] "Physical Address" type(uint8);
> +  register par0 rw also io ( base, 0x1 ) "Physical Address Field 0" type(uint8);
> +  register par1 rw also io ( base, 0x2 ) "Physical Address Field 1" type(uint8);
> +  register par2 rw also io ( base, 0x3 ) "Physical Address Field 2" type(uint8);
> +  register par3 rw also io ( base, 0x4 ) "Physical Address Field 3" type(uint8);
> +  register par4 rw also io ( base, 0x5 ) "Physical Address Field 4" type(uint8);
> +  register par5 rw also io ( base, 0x6 ) "Physical Address Field 5" type(uint8);
> 
> Since the current drive seems to work with arrays, I added back the first line with par1 since they seem to be based on the same address and equal number of bytes.
> But when I compile this, I get
> 
> ../source/devices/rtl8029as.dev:276:12: Undefined address space 'page1'
> 
> I can see a line
> 
> -  space page1(addr) bytewise "NE2000 compatible page 1";
> 
> at the beginning of the files (that's removed), but is this really necessary? Am I not understanding what a page is? Can someone explain, or elaborate a little perhaps, on how these retrofit these changes or how pages and arrays work?
> 
> Thanks.
> 
> Regards,
> Patrik Eklöf
> Student at ICT, Master of Science in Engineering Education, IT Programme, KTH, Kista
> 



More information about the Barrelfish-users mailing list