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