un
QNX SDP8.0Building Embedded SystemsConfigurationDeveloper
Union where processor-specific system page information is kept
The un union stores processor-specific system page information. The union serves as a demultiplexing point for the various CPU families. It is demultiplexed based on the value of the type member of the system page structure.
Currently supported CPU architectures include:
Processor | Member | type |
---|---|---|
ARM, 64-bit | aarch64 | SYSPAGE_AARCH64 |
x86, 64-bit | x86_64 | SYSPAGE_X86_64 |
un.x86_64
These structures contain x86-specific information. Usually, startup library functions automatically fill
in these structures, which contain the following members:
- smpinfo
- Contains information on how to manipulate the SMP control hardware; filled in by init_smp().
- gdt
- Contains the Global Descriptor Table (GDT).
- idt
- Contains the Interrupt Descriptor Table (IDT).
- pgdir
- Contains pointers to the Page Directory Tables (PDTs).
- real_addr
- Virtual address corresponding to the physical address range 0 through 0xFFFFF (the bottom 1 megabyte).
un.aarch64
These structures contain ARM-specific information. Usually, startup library functions automatically fill
in these structures, which contain the following members:
- L1_vaddr
- Virtual address of the MMU level-one page table used to map the kernel.
- L1_paddr
- Physical address of the MMU level-one page table used to map the kernel.
- startup_base
- Virtual address of a one-to-one virtual-to-physical mapping used to map the startup code that enables the MMU. This mapping is removed when the kernel is initialized.
- startup_size
- Size of the mapping used for startup_base, in bytes.
- cpu
- Structure containing ARM core-specific operations and data (see the next subsection).
ARM cpu
Currently the ARM cpu structure contains the following routines:
- page_flush()
- Implements CPU-specific cache/TLB flushing when the memory manager unmaps or changes the access protections to a virtual memory mapping for a page. This routine is called for each page in a range being modified by the virtual memory manager.
- page_flush_deferred()
- Performs any operations that can be deferred when the page_flush() kernel callout is used. For example on the SA-1110 processor, an Icache flush is deferred until all pages being operated on have been modified.
Page updated: