Maps a 64-bit address to a 32-bit address that can be used by the 32-bit PowerPC kernel.
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/remap.h>
int as_remap64 (addr64, len, addr32 )
unsigned long
long addr64;
unsigned int len;
unsigned int*addr32;
addr64 | Specifies the 64-bit, effective address of start of range to be mapped. |
len | Specifies the number of bytes in the range to be mapped. |
addr32 | Specifies the location where the mapped, 32-bit address will be saved by as_remap64. |
The as_remap64 service maps a 64-bit address into a 32-bit address. This service allows other kernel services to continue using 32-bit addreses, even for 64-bit processes. If the 32-bit address is passed to a user-memory-access kernel service, the original 64-bit address is obtained and used. The original 64-bit address can also be obtained by calling the as_unremap64 kernel service.
The as_remap64 kernel service may be called for either a 32-bit or 64-bit process. If called for a 32-bit process and addr64 is a valid 32-bit address, then this address is simply returned in the addr32 parameter.
The as_remap64 kernel service can be called from the process environment only.
0 | Successful completion. |
EINVAL |
The process is 32-bit, and addr64 is not a valid 32-bit address or Too many address ranges have already been mapped. |
The as_unremap64 kernel service.
Memory Kernel Services and Understanding Virtual Memory Manager Interfaces in AIX 5L Version 5.2 Kernel Extensions and Device Support Programming Concepts.