VxWorks API Reference : OS Libraries

vmBaseArch36Lib

NAME

vmBaseArch36Lib - VM (bundled) library for PentiumPro/2/3/4 36 bit mode

ROUTINES

vmBaseArch36LibInit( ) - initialize the arch specific bundled VM library
vmBaseArch36Map( ) - map 36bit physical to the 32bit virtual memory
vmBaseArch36Translate( ) - translate a 32bit virtual address to a 36bit physical address

DESCRIPTION

The 36 bit physical addressing mechanism of P6 (Pentium II and III) family processors and P7 (Pentium4) family processors are supported by this library. This library provides the virtual memory mapping and virtual address translation that works with the bundled VM library. The architecture specific VM library APIs are linked in automatically when INCLUDE_MMU_BASIC and INCLUDE_MMU_P6_36BIT are both defined in the BSP. The provided APIs are vmBaseArch36Map( ) and vmBaseArch36Translate( ).

The 4KB-page and 2MB-page are supported. The page size is configurable by VM_PAGE_SIZE macro in the BSP.

The memory description table sysPhysMemDesc[] in sysLib.c has not changed and only allows 32 bit virtual and physical address mapping description. Thus the first 4GB 32 bit address space of the 36 bit physical address is used at the initialization/boot time. Then, the physical address beyond the 4GB can be mapped in somewhere outside of the system memory pool in the 32 bit virtual address space with above APIs.

INCLUDE FILES

mmuPro36Lib.h

SEE ALSO

vmLib, Intel Architecture Software Developer's Manual


OS Libraries : Routines

vmBaseArch36LibInit( )

NAME

vmBaseArch36LibInit( ) - initialize the arch specific bundled VM library

SYNOPSIS

void vmBaseArch36LibInit (void)

DESCRIPTION

This routine links the arch specific bundled VM library into the VxWorks system. It is called automatically when INCLUDE_MMU_BASIC and INCLUDE_MMU_P6_36BIT are both defined in the BSP.

RETURNS

N/A

SEE ALSO

vmBaseArch36Lib


OS Libraries : Routines

vmBaseArch36Map( )

NAME

vmBaseArch36Map( ) - map 36bit physical to the 32bit virtual memory

SYNOPSIS

STATUS vmBaseArch36Map
    (
    void * virtAddr,          /* 32bit virtual address */
    LL_INT physAddr,          /* 36bit physical address */
    UINT32 stateMask,         /* state mask */
    UINT32 state,             /* state */
    UINT32 len                /* length */
    )

DESCRIPTION

vmBaseArch36Map maps 36bit physical pages into a contiguous block of 32bit virtual memory. virtAddr and physAddr must be on page boundaries, and len must be evenly divisible by the page size. After the mapping the specified state is set to all pages in the newly mapped virtual memory.

This routine should not be called from interrupt level.

RETURNS

OK, or ERROR if virtAddr or physAddr are not on page boundaries, len is not a multiple of the page size, the validation fails, or the mapping fails.

ERRNO

S_vmLib_NOT_PAGE_ALIGNED

SEE ALSO

vmBaseArch36Lib


OS Libraries : Routines

vmBaseArch36Translate( )

NAME

vmBaseArch36Translate( ) - translate a 32bit virtual address to a 36bit physical address

SYNOPSIS

STATUS vmBaseArch36Translate
    (
    void *   virtAddr,        /* 32bit virtual address */
    LL_INT * physAddr         /* place to put 36bit result */
    )

DESCRIPTION

vmBaseArch36Translate retrieves mapping information for a 32bit virtual address from the page translation tables. If the specified virtual address has never been mapped, the returned status is ERROR.

This routine is callable from interrupt level.

RETURNS

OK, or ERROR if validation or translation fails.

SEE ALSO

vmBaseArch36Lib