Hello, I need to port my driver from AIX 4.3 to 5.2
When working in AIX 5.2 with 32 bit I encountered no problems.
However, wheh moving to 64 bit, I needed to use new shared memory
interfaces as the old ones (as_att,as_get,as_put,as_det)
aren't there anymore, therefore I moved to as_att64 and friends.
I encountered a problem using as_att64.
Note that I share kernel memory that I preallocate(not I/O space) with
user-mode.
In the 32 bit mode, I would give as_att as an offset the kernel
virtual address
of the segment I want to map. The user-mode app read/write the
resulting
address with no problem.
In the 64 bit mode, I tried giving the 64 bit kernel address as an
offset,
but the user-mode app failed to read/write the resulting address and
received a SIGSEGV signal.
Note that the resulting address is not NULL but looks like
0x07000000.....
which looks fine as it belongs to the shared memory place in the
process
address space.
It appears that the address is invalid because:
1.as_att64 didn't give the correct user-mode address.
2.There are some kind of protection attribute that generate the
fault.

Further info:
In 32 bit, I use some black magic on the vmhandle_t received from
as_geth in order to give it read/write access. It seems that doing a
binary "and" with 0x9fffffff does the job.
In 64 bit I didn't do it as I am not certain what is the correct
value.

Can someone please help, I am sure I am missing something very little,
yet
very annoying.

Eran.