[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: PCI IO illegal addressing...again



> -----Original Message-----
> From: Raan Kahn [mailto:raan@ngcable.com]
> Sent: 24 November, 1999 12:30
> To: Mailing List Recipients
> Subject: PCI IO illegal addressing...again
>
>
> Hi,
>
> 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
> significance.
>
> 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 3.2.2.1 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.)

Regards,
- Olaf