Difference between revisions of "Unit PlatformQEMUVPB"
From Ultibo.org
Line 10: | Line 10: | ||
---- | ---- | ||
− | '' | + | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''QEMUVPB specific constants''' <code> QEMUVPB_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>QEMUVPB_STARTUP_ADDRESS = $00010000;</code> | ||
+ | | Address of StartupHandler on Reset | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''QEMUVPB page table constants''' <code> QEMUVPB_PAGE_TABLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>QEMUVPB_PAGE_TABLE_BASE = $00004000;</code> | ||
+ | | Place the first level Page Table after the interrupt vectors at 0x00001000 and before the code start at 0x00010000 | ||
+ | |- | ||
+ | | <code>QEMUVPB_PAGE_TABLE_SIZE = SIZE_16K;</code> | ||
+ | | ARMv7 first level Page Table is exactly 16KB in size (4096 32 bit (4 byte) entries) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''QEMUVPB vector table constants''' <code> QEMUVPB_VECTOR_TABLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>QEMUVPB_VECTOR_TABLE_BASE = $00001000;</code> | ||
+ | | Place the Interrupt Vector Table at 0x00001000 before the code start at 0x00010000 | ||
+ | |- | ||
+ | | <code>QEMUVPB_VECTOR_TABLE_SIZE = SIZE_64;</code> | ||
+ | | The Interrupt Vector Table is exactly 64 bytes (16 32 bit (4 byte) entries) | ||
+ | |- | ||
+ | | <code>QEMUVPB_VECTOR_TABLE_COUNT = 8;</code> | ||
+ | | The Interrupt Vector Table contains 8 entries on an ARMv7 device | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''QEMUVPB CPU count constants''' <code> QEMUVPB_CPU_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>QEMUVPB_CPU_COUNT = VERSATILEPB_CPU_COUNT;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>QEMUVPB_CPU_BOOT = CPU_ID_0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>QEMUVPB_CPU_MASK = CPU_AFFINITY_0;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''QEMUVPB SWI constants''' <code> QEMUVPB_SWI_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>QEMUVPB_SWI_COUNT = 256;</code> | ||
+ | | Number of available SWI entries | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''QEMUVPB kernel name constants''' <code> QEMUVPB_KERNEL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>QEMUVPB_KERNEL_NAME = 'kernel.bin';</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>QEMUVPB_KERNEL_NAME = 'kernel64.bin';</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>QEMUVPB_KERNEL_CONFIG = '';</code> | ||
+ | | Not available as a file | ||
+ | |- | ||
+ | | <code>QEMUVPB_KERNEL_COMMAND = '';</code> | ||
+ | | Not available as a file | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === |
Revision as of 02:55, 14 December 2016
Return to Unit Reference
Contents
[hide]Description
To be documented
Constants
[Expand]
QEMUVPB specific constants
QEMUVPB_*
[Expand]
QEMUVPB page table constants
QEMUVPB_PAGE_TABLE_*
[Expand]
QEMUVPB vector table constants
QEMUVPB_VECTOR_TABLE_*
[Expand]
QEMUVPB CPU count constants
QEMUVPB_CPU_*
[Expand]
QEMUVPB SWI constants
QEMUVPB_SWI_*
[Expand]
QEMUVPB kernel name constants
QEMUVPB_KERNEL_*
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
QEMUVPB platform functions
[Expand]
procedure QEMUVPBPageTableInit;
Description: Initialize the Hardware Page Tables before enabling the MMU
[Expand]
function QEMUVPBRequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request registration of the supplied handler to the specified IRQ number
[Expand]
function QEMUVPBReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request deregistration of the supplied handler from the specified IRQ number
[Expand]
function QEMUVPBRequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request registration of the supplied handler to the specified FIQ number
[Expand]
function QEMUVPBReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request deregistration of the supplied handler from the specified FIQ number
[Expand]
function QEMUVPBRegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
Description: Request registration of the supplied extended handler to the specified System Call number
[Expand]
function QEMUVPBDeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
Description: Request deregistration of the supplied extended handler from the specified System Call number
[Expand]
function QEMUVPBGetInterruptEntry(Number:LongWord):TInterruptEntry;
Description: To be documented
[Expand]
function QEMUVPBGetSystemCallEntry(Number:LongWord):TSystemCallEntry;
Description: Get the system call entry for the specified system call number
[Expand]
function QEMUVPBClockGetCount:LongWord;
Description: Gets the current system clock count (32 least significant bits of total)
QEMUVPB thread functions
[Expand]
procedure QEMUVPBSchedulerInit;
Description: Initialize the scheduler interrupt on the boot CPU
QEMUVPB IRQ functions
[Expand]
function QEMUVPBDispatchIRQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Process any pending IRQ requests
[Expand]
function QEMUVPBHandleIRQ(Number,CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Call the handler function for an IRQ that was received, or halt if it doesn't exist
QEMUVPB FIQ functions
[Expand]
function QEMUVPBDispatchFIQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Process any pending FIQ requests
[Expand]
function QEMUVPBHandleFIQ(Number,CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Call the handler function for an FIQ that was received, or halt if it doesn't exist
QEMUVPB SWI functions
[Expand]
function QEMUVPBDispatchSWI(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;
Description: Process an SWI request
QEMUVPB clock functions
[Expand]
procedure QEMUVPBClockInterrupt(Parameter:Pointer);
Description: Interrupt handler function for the clock interrupt
[Expand]
procedure QEMUVPBClockUpdate(Cycles:LongWord; var Last:LongWord);
Description: Setup a clock interrupt to trigger after the specified number of clock cycles
QEMUVPB scheduler functions
[Expand]
function QEMUVPBSchedulerInterrupt(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;
Description: Interrupt handler function for the scheduler interrupt
[Expand]
procedure QEMUVPBSchedulerUpdate(Cycles:LongWord; var Last:LongWord);
Description: Setup a scheduler interrupt to trigger after the specified number of clock cycles
[Expand]
procedure QEMUVPBSchedulerSystemCall(Request:PSystemCallRequest);
Description: System Call handler for the scheduler
QEMUVPB framebuffer functions
[Expand]
function QEMUVPBFramebufferDeviceAllocate(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Description: Implementation of FramebufferDeviceAllocate API for PL110 Framebuffer
[Expand]
function QEMUVPBFramebufferDeviceRelease(Framebuffer:PFramebufferDevice):LongWord;
Description: Implementation of FramebufferDeviceRelease API for PL110 Framebuffer
[Expand]
function QEMUVPBFramebufferDeviceBlank(Framebuffer:PFramebufferDevice; Blank:Boolean):LongWord;
Description: Implementation of FramebufferDevicBlank API for PL110 Framebuffer
[Expand]
function QEMUVPBFramebufferDeviceCommit(Framebuffer:PFramebufferDevice; Address,Size,Flags:LongWord):LongWord;
Description: Implementation of FramebufferDeviceCommit API for PL110 Framebuffer
[Expand]
function QEMUVPBFramebufferDeviceSetProperties(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Description: Implementation of FramebufferDeviceSetProperties API for PL110 Framebuffer
QEMUVPB helper functions
[Expand]
procedure QEMUVPBBootBlink; assembler; nostackframe;
Description: Output characters to UART0 without dependency on any other RTL setup
[Expand]
procedure QEMUVPBBootOutput(Value:LongWord);
Description: Output characters to UART0 without dependency on any other RTL setup
Return to Unit Reference