"Alex Buell" <spamtrap@[EMAIL PROTECTED]
> wrote in message
news:20080307130311.d3665415.alex.buell@[EMAIL PROTECTED]
> On Fri, 07 Mar 2008 05:32:13 GMT, I waved a wand and this message
> magically appears in front of Tim Roberts:
>
>> >I've been trying to obtain the addresses of PCI extension ROM and
>> >their sizes on 16 bit MSDOS, whether they're enabled or not. Does
>> >anyone have example sources on how to do this? The examples I've
>> >seen only works in protected mode. Thanks!
>>
>> Few PCI cards have ROMs any more. Your graphics card is just about
>> the only one left.
>>
>> The only way to get this information authoritatively is to enumerate
>> through the configuration space of all of the devices on your PCI
>> bus. You can do that using the PCI BIOS interrupt, INT 1A. The
>> expansion ROM base address is in the configuration space at offset
>> 30h.
>
> I can enumerate through the configuration space via 0x1A. The only
> problem I'm having now with getting the ROM addresses is that I'm
> unable to get the size of the i/o, mem or ROM address spaces. I've
> tried writing 0xFF into the base register addresses/extension ROM
> address registers but that doesn't seem to work!
>
>From the FYSOS source:
// returns the memory range in bytes of the pci card
bit16u pci_mem_range(struct S_PCI_DEV *pci, bit8u ****t, bit8u size) {
bit32u org, range;
// read the original value
org = read_pci(pci->bus, pci->dev, pci->func, ****t, size);
if (org & 1) {
// write 0xFFFFFFFF
write_pci(pci->bus, pci->dev, pci->func, ****t, size, 0xFFFFFFFF);
// read it back.
range = read_pci(pci->bus, pci->dev, pci->func, ****t, size);
// write back the original value (minus the read only bits)
write_pci(pci->bus, pci->dev, pci->func, 0x14, size, org);
// return the range
return (bit16u) ((~(range & ~0x3)) + 1);
}
return 0;
}
Is this what you wanted? i.e.: you want to know how many ****ts
(in bytes) that a specified PCI device uses?
e.g: from 0x1F0 to 0x1F7 = 8 bytes?
Ben
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Forever Young Software
http://www.frontiernet.net/~fys/index.htm
To reply by email, please remove the zzzzzz's
Batteries not included, some assembly required.


|