[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: PCI IO illegal addressing...again
> -----Original Message-----
> From: Raan Kahn [mailto:firstname.lastname@example.org]
> Sent: 24 November, 1999 12:30
> To: Mailing List Recipients
> Subject: PCI IO illegal addressing...again
> My question is regarding IO address accessing:
> It is illegal for the initiator to assert any byte enables of lesser
> significance than the one indicated by AD[1:0].
> I want to know what haapens if I asserts bytes that are of higher
> What happens if AD[31:0] is 0x00001000 and CBE#[3:0] is
> 0x3 - meaning I want to access only the third byte? Is this legal
> or do I must access at least from byte zero? Do I get a target abort?
> The same question when AD[31:0] is 0x00001002 and CBE#[3:0] is 0x7? Is
> this legal or do I must access from byte 2 and up? Do I get a
> target abort?
This is covered by section 22.214.171.124 in the specification (rev 2.2). In your
first example, the specification requires you to do an access including at
least byte zero (BE#[3:0] = xxx0) or no access at all (BE#[3:0] = 1111).
Second example would require BE#[3:0] = x011 or BE#[3:0] = 1111.
You *might* although get a proper result by using your address/byte enable
combinations, but this is not guaranteed by the spec. A PCI device is free
to do target abort on all I/O byte/word/dword access combinations it doesn't
support. You must thus check the data sheet for the device you are
accessing. (Given the angle of your question, I guess you are writing SW to
an existing device rather than implementing a new PCI device yourself.)