64 bit machines
Justin T. Gibbs
gibbs at scsiguy.com
Wed Mar 13 07:15:12 PST 2002
>I am confused by these lines from ahc_init. The type of physaddr is uint32_t.
>What happens
>on a 64 bit architecture. I hear that it works on a 64 bit machine, which is f
>ine, I am not sure
>how it does though!
>
>-Nigel
>
> physaddr = ahc->scb_data->hscb_busaddr;
> ahc_outb(ahc, HSCB_ADDR, physaddr & 0xFF);
> ahc_outb(ahc, HSCB_ADDR + 1, (physaddr >> 8) & 0xFF);
> ahc_outb(ahc, HSCB_ADDR + 2, (physaddr >> 16) & 0xFF);
> ahc_outb(ahc, HSCB_ADDR + 3, (physaddr >> 24) & 0xFF);
>
> physaddr = ahc->shared_data_busaddr;
> ahc_outb(ahc, SHARED_DATA_ADDR, physaddr & 0xFF);
> ahc_outb(ahc, SHARED_DATA_ADDR + 1, (physaddr >> 8) & 0xFF);
> ahc_outb(ahc, SHARED_DATA_ADDR + 2, (physaddr >> 16) & 0xFF);
> ahc_outb(ahc, SHARED_DATA_ADDR + 3, (physaddr >> 24) & 0xFF);
The driver assumes that you can always map its "book-keeping" memeory
below 4GB in the PCI address space. Take a look at the bus_dma_tags
that are created for this information. The normal data path supports
addresses up to 39bits in size today, but will be extended to 64bits
in the near future.
--
Justin
To Unsubscribe: send mail to majordomo at FreeBSD.org
with "unsubscribe aic7xxx" in the body of the message
More information about the aic7xxx
mailing list