Difference between revisions of "Unit PlatformARM"
Line 14: | Line 14: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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;">'''ARM mode | + | <div style="font-size: 14px; padding-left: 12px;">'''ARM mode''' <code> ARM_MODE_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 65: | Line 65: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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;">'''ARM interrupt disable | + | <div style="font-size: 14px; padding-left: 12px;">'''ARM interrupt disable''' <code> ARM_I_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 85: | Line 85: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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;">'''ARM thumb and jazelle | + | <div style="font-size: 14px; padding-left: 12px;">'''ARM thumb and jazelle''' <code> ARM_*_BIT </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 105: | Line 105: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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;">'''ARM abort | + | <div style="font-size: 14px; padding-left: 12px;">'''ARM abort''' <code> ARM_A_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 120: | Line 120: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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;">'''ARM boot tag | + | <div style="font-size: 14px; padding-left: 12px;">'''ARM boot tag''' <code> ATAG_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 163: | Line 163: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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;">'''ARM machine type | + | <div style="font-size: 14px; padding-left: 12px;">'''ARM machine type''' <code> ARM_MACHINE_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 546: | Line 546: | ||
|- | |- | ||
| <code>ARMInitialized:Boolean;</code> | | <code>ARMInitialized:Boolean;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 552: | Line 552: | ||
|- | |- | ||
| <code>ARMBootMode:LongWord = 0;</code> | | <code>ARMBootMode:LongWord = 0;</code> | ||
− | | style="width: | + | | style="width: 40%;"|The ARM Mode that the processor was in at boot time (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
|- | |- | ||
|} | |} | ||
Line 558: | Line 558: | ||
|- | |- | ||
| <code>ARMBootVectors:LongWord = 0;</code> | | <code>ARMBootVectors:LongWord = 0;</code> | ||
− | | style="width: | + | | style="width: 40%;"|The Vector Base Address that was current at boot time (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
|- | |- | ||
|} | |} | ||
Line 564: | Line 564: | ||
|- | |- | ||
| <code>ARMTagsAddress:LongWord = ARMTAGS_INITIAL;</code> | | <code>ARMTagsAddress:LongWord = ARMTAGS_INITIAL;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Pointer to the ARM TAGS provided by the bootloader at startup (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
|- | |- | ||
|} | |} | ||
Line 570: | Line 570: | ||
|- | |- | ||
| <code>ARMMachineType:LongWord = 0;</code> | | <code>ARMMachineType:LongWord = 0;</code> | ||
− | | style="width: | + | | style="width: 40%;"|ARM Machine Type provided by the bootloader at startup (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
|- | |- | ||
|} | |} | ||
Line 579: | Line 579: | ||
|- | |- | ||
| <code>ARMTagsCount:LongWord;</code> | | <code>ARMTagsCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 588: | Line 588: | ||
|- | |- | ||
| <code>TagNoneCount:LongWord;</code> | | <code>TagNoneCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM NONE Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 597: | Line 597: | ||
|- | |- | ||
| <code>TagCoreCount:LongWord;</code> | | <code>TagCoreCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM CORE Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 603: | Line 603: | ||
|- | |- | ||
| <code>TagCoreFlags:LongWord;</code> | | <code>TagCoreFlags:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 609: | Line 609: | ||
|- | |- | ||
| <code>TagCorePageSize:LongWord;</code> | | <code>TagCorePageSize:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 615: | Line 615: | ||
|- | |- | ||
| <code>TagCoreRootDevice:LongWord;</code> | | <code>TagCoreRootDevice:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 624: | Line 624: | ||
|- | |- | ||
| <code>TagMemoryCount:LongWord;</code> | | <code>TagMemoryCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM MEM Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 630: | Line 630: | ||
|- | |- | ||
| <code>TagMemorySize:LongWord;</code> | | <code>TagMemorySize:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Size of the last block reported by ARM Tags |
|- | |- | ||
|} | |} | ||
Line 636: | Line 636: | ||
|- | |- | ||
| <code>TagMemoryStart:LongWord;</code> | | <code>TagMemoryStart:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Start of the last block reported by ARM Tags |
|- | |- | ||
|} | |} | ||
Line 642: | Line 642: | ||
|- | |- | ||
| <code>TagMemoryLength:LongWord;</code> | | <code>TagMemoryLength:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Adjusted Size of the last block reported by ARM Tags |
|- | |- | ||
|} | |} | ||
Line 648: | Line 648: | ||
|- | |- | ||
| <code>TagMemoryAddress:LongWord;</code> | | <code>TagMemoryAddress:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Adjusted Address of the last block reported by ARM Tags |
|- | |- | ||
|} | |} | ||
Line 657: | Line 657: | ||
|- | |- | ||
| <code>TagVideoTextCount:LongWord;</code> | | <code>TagVideoTextCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM VIDEOTEXT Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 666: | Line 666: | ||
|- | |- | ||
| <code>TagRamdiskCount:LongWord;</code> | | <code>TagRamdiskCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM RAMDISK Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 675: | Line 675: | ||
|- | |- | ||
| <code>TagInitRd2Count:LongWord;</code> | | <code>TagInitRd2Count:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM INITRD2 Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 684: | Line 684: | ||
|- | |- | ||
| <code>TagSerialCount:LongWord;</code> | | <code>TagSerialCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM SERIAL Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 690: | Line 690: | ||
|- | |- | ||
| <code>TagSerialNoLow:LongWord;</code> | | <code>TagSerialNoLow:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 696: | Line 696: | ||
|- | |- | ||
| <code>TagSerialNoHigh:LongWord;</code> | | <code>TagSerialNoHigh:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 705: | Line 705: | ||
|- | |- | ||
| <code>TagRevisionCount:LongWord;</code> | | <code>TagRevisionCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM REVISION Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 711: | Line 711: | ||
|- | |- | ||
| <code>TagRevisionNo:LongWord;</code> | | <code>TagRevisionNo:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 720: | Line 720: | ||
|- | |- | ||
| <code>TagVideoFBCount:LongWord;</code> | | <code>TagVideoFBCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM VIDEOLFB Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 729: | Line 729: | ||
|- | |- | ||
| <code>TagCmdCount:LongWord;</code> | | <code>TagCmdCount:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Number of ARM CMDLINE Tags found during parse |
|- | |- | ||
|} | |} | ||
Line 735: | Line 735: | ||
|- | |- | ||
| <code>TagCommandSize:LongWord;</code> | | <code>TagCommandSize:LongWord;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Length of the command line in characters (Including null terminator) |
|- | |- | ||
|} | |} | ||
Line 741: | Line 741: | ||
|- | |- | ||
| <code>TagCommandCount:LongInt;</code> | | <code>TagCommandCount:LongInt;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Count of parameters (space delimited) in the command line |
|- | |- | ||
|} | |} | ||
Line 747: | Line 747: | ||
|- | |- | ||
| <code>TagCommandAddress:PChar;</code> | | <code>TagCommandAddress:PChar;</code> | ||
− | | style="width: | + | | style="width: 40%;"|Pointer to the start of the command line |
|- | |- | ||
|} | |} | ||
Line 756: | Line 756: | ||
|- | |- | ||
| <code>ARMWaitHandler:TARMWait;</code> | | <code>ARMWaitHandler:TARMWait;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 762: | Line 762: | ||
|- | |- | ||
| <code>ARMLongWaitHandler:TARMLongWait;</code> | | <code>ARMLongWaitHandler:TARMLongWait;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 768: | Line 768: | ||
|- | |- | ||
| <code>ARMShortWaitHandler:TARMShortWait;</code> | | <code>ARMShortWaitHandler:TARMShortWait;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 777: | Line 777: | ||
|- | |- | ||
| <code>ARMSlowBlinkHandler:TARMSlowBlink;</code> | | <code>ARMSlowBlinkHandler:TARMSlowBlink;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 783: | Line 783: | ||
|- | |- | ||
| <code>ARMFastBlinkHandler:TARMFastBlink;</code> | | <code>ARMFastBlinkHandler:TARMFastBlink;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} |
Revision as of 03:11, 27 March 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo Platform interface unit for ARM
To be documented
Constants
ARM_MODE_*
ARM_I_*
ARM_*_BIT
ARM_A_*
ATAG_*
ARM_MACHINE_*
Type definitions
ARM boot tag header
ARM tag core
ARM tag memory
ARM tag video text
ARM tag ramdisk
ARM tag init ramdisk
ARM tag serial
ARM tag revision
ARM tag video framebuffer
ARM tag command
ARM boot tag
ARM wait
TARMWait = procedure;
|
ARM long wait
TARMLongWait = procedure;
|
ARM short wait
TARMShortWait = procedure;
|
ARM slow blink
TARMSlowBlink = procedure;
|
ARM fast blink
TARMFastBlink = procedure;
|
Public variables
ARM specific variables
ARMInitialized:Boolean;
|
ARMBootMode:LongWord = 0;
|
The ARM Mode that the processor was in at boot time (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
ARMBootVectors:LongWord = 0;
|
The Vector Base Address that was current at boot time (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
ARMTagsAddress:LongWord = ARMTAGS_INITIAL;
|
Pointer to the ARM TAGS provided by the bootloader at startup (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
ARMMachineType:LongWord = 0;
|
ARM Machine Type provided by the bootloader at startup (Set by Startup). Must be initialized to remain in .data or else rewritten to zero with .bss |
ARM tags variables
ARMTagsCount:LongWord;
|
Number of ARM Tags found during parse |
Tag none variables
TagNoneCount:LongWord;
|
Number of ARM NONE Tags found during parse |
Tag core variables
TagCoreCount:LongWord;
|
Number of ARM CORE Tags found during parse |
TagCoreFlags:LongWord;
|
TagCorePageSize:LongWord;
|
TagCoreRootDevice:LongWord;
|
Tag memory variables
TagMemoryCount:LongWord;
|
Number of ARM MEM Tags found during parse |
TagMemorySize:LongWord;
|
Size of the last block reported by ARM Tags |
TagMemoryStart:LongWord;
|
Start of the last block reported by ARM Tags |
TagMemoryLength:LongWord;
|
Adjusted Size of the last block reported by ARM Tags |
TagMemoryAddress:LongWord;
|
Adjusted Address of the last block reported by ARM Tags |
Tag video text variables
TagVideoTextCount:LongWord;
|
Number of ARM VIDEOTEXT Tags found during parse |
Tag ramdisk variables
TagRamdiskCount:LongWord;
|
Number of ARM RAMDISK Tags found during parse |
Tag Init RD2 variables
TagInitRd2Count:LongWord;
|
Number of ARM INITRD2 Tags found during parse |
Tag serial variables
TagSerialCount:LongWord;
|
Number of ARM SERIAL Tags found during parse |
TagSerialNoLow:LongWord;
|
TagSerialNoHigh:LongWord;
|
Tag revision variables
TagRevisionCount:LongWord;
|
Number of ARM REVISION Tags found during parse |
TagRevisionNo:LongWord;
|
Tag video FB variables
TagVideoFBCount:LongWord;
|
Number of ARM VIDEOLFB Tags found during parse |
Tag command variables
TagCmdCount:LongWord;
|
Number of ARM CMDLINE Tags found during parse |
TagCommandSize:LongWord;
|
Length of the command line in characters (Including null terminator) |
TagCommandCount:LongInt;
|
Count of parameters (space delimited) in the command line |
TagCommandAddress:PChar;
|
Pointer to the start of the command line |
Wait handlers
ARMWaitHandler:TARMWait;
|
ARMLongWaitHandler:TARMLongWait;
|
ARMShortWaitHandler:TARMShortWait;
|
Blink handlers
ARMSlowBlinkHandler:TARMSlowBlink;
|
ARMFastBlinkHandler:TARMFastBlink;
|
Function declarations
Initialization functions
ARM platform functions
procedure ARMParseBootTags;
procedure ARMParseCommandLine;
procedure ARMParseEnvironment;
function ARMGetSP:PtrUInt; assembler; nostackframe;
function ARMGetPC:PtrUInt; assembler; nostackframe;
function ARMGetIRQ:Boolean; assembler; nostackframe;
procedure ARMEnableIRQ; assembler; nostackframe;
procedure ARMDisableIRQ; assembler; nostackframe;
function ARMSaveIRQ:TIRQMask; assembler; nostackframe;
function ARMRestoreIRQ(IRQMask:TIRQMask):TIRQMask; assembler; nostackframe;
function ARMGetFIQ:Boolean; assembler; nostackframe;
procedure ARMEnableFIQ; assembler; nostackframe;
procedure ARMDisableFIQ; assembler; nostackframe;
function ARMSaveFIQ:TFIQMask; assembler; nostackframe;
function ARMRestoreFIQ(FIQMask:TFIQMask):TFIQMask; assembler; nostackframe;
procedure ARMEnableIRQFIQ; assembler; nostackframe;
procedure ARMDisableIRQFIQ; assembler; nostackframe;
function ARMSaveIRQFIQ:TIRQFIQMask; assembler; nostackframe;
function ARMRestoreIRQFIQ(IRQFIQMask:TIRQFIQMask):TIRQFIQMask; assembler; nostackframe;
procedure ARMEnableAbort; assembler; nostackframe;
procedure ARMDisableAbort; assembler; nostackframe;
function ARMSaveAbort:TAbortMask; assembler; nostackframe;
function ARMRestoreAbort(AbortMask:TAbortMask):TAbortMask; assembler; nostackframe;
ARM helper functions
Return to Unit Reference