Update: After changing my direct accesses of the virtual address to the HAL
READ_REGISTER_*/WRITE_REGISTER_*
functions everything works like a charm. I had done this before, but that
was previous to where I had correctly mapped the
physical address to a virtual.

Randy

> *(ULONG*)virtAddr = oneBit;
>
> // test read
> if ( *(ULONG*)virtAddr != oneBit ) {
> RtlInitUnicodeString(&uniErrorString, L"0x0000000000000005"); // error
> condition
> goto testDONE;
> }
>
> // test write, this should fail silently because of write-once bit
> *(ULONGLONG*)virtAddr = zeroBit;
> memVal = *(ULONGLONG*)virtAddr;
>
> uniErrorString.Length = 0;
> uniErrorString.MaximumLength = 70;
> uniErrorString.Buffer = &addrBuffer[0];
> // convert value to string
> if ( STATUS_SUCCESS !=
> RtlIntegerToUnicodeString(memVal,10,&uniErrorString) ) {
> RtlInitUnicodeString(&uniErrorString, L"0x0000000000000003"); // error
> condition
> }
>
> testDONE:
> // do error things...
>
>

Re: Problem accessing Intel chipset configuration registers by Maxim

Maxim
Tue Sep 21 19:12:13 CDT 2004

Correct. The HAL calls do the memory barriers necessary for register
accesses.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim@storagecraft.com
http://www.storagecraft.com

"Randy" <mcclellr@oit.edu> wrote in message
news:ciqch9$ui7$1@news01.intel.com...
> Update: After changing my direct accesses of the virtual address to the HAL
> READ_REGISTER_*/WRITE_REGISTER_*
> functions everything works like a charm. I had done this before, but that
> was previous to where I had correctly mapped the
> physical address to a virtual.
>
> Randy
>
> > *(ULONG*)virtAddr = oneBit;
> >
> > // test read
> > if ( *(ULONG*)virtAddr != oneBit ) {
> > RtlInitUnicodeString(&uniErrorString, L"0x0000000000000005"); // error
> > condition
> > goto testDONE;
> > }
> >
> > // test write, this should fail silently because of write-once bit
> > *(ULONGLONG*)virtAddr = zeroBit;
> > memVal = *(ULONGLONG*)virtAddr;
> >
> > uniErrorString.Length = 0;
> > uniErrorString.MaximumLength = 70;
> > uniErrorString.Buffer = &addrBuffer[0];
> > // convert value to string
> > if ( STATUS_SUCCESS !=
> > RtlIntegerToUnicodeString(memVal,10,&uniErrorString) ) {
> > RtlInitUnicodeString(&uniErrorString, L"0x0000000000000003"); // error
> > condition
> > }
> >
> > testDONE:
> > // do error things...
> >
> >
>
>