Difference between revisions of "Unit PlatformARMv7"
Line 2,179: | Line 2,179: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,194: | Line 2,194: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,206: | Line 2,206: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,218: | Line 2,218: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,230: | Line 2,230: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,242: | Line 2,242: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,254: | Line 2,254: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 2,266: | Line 2,266: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,278: | Line 2,278: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,290: | Line 2,290: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,302: | Line 2,302: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,314: | Line 2,314: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,326: | Line 2,326: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,338: | Line 2,338: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,350: | Line 2,350: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,362: | Line 2,362: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,374: | Line 2,374: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,386: | Line 2,386: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,398: | Line 2,398: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,410: | Line 2,410: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,422: | Line 2,422: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,434: | Line 2,434: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,446: | Line 2,446: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,458: | Line 2,458: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,470: | Line 2,470: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 2,482: | Line 2,482: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See Standby mode on page A8-810 of the ARMv7 Architecture Reference Manual | | See Standby mode on page A8-810 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,494: | Line 2,494: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See Standby mode on page A8-810 of the ARMv7 Architecture Reference Manual | | See Standby mode on page A8-810 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,506: | Line 2,506: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See Page A8-316 of the ARMv7 Architecture Reference Manual | | See Page A8-316 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,518: | Line 2,518: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See Page A8-808 of the ARMv7 Architecture Reference Manual | | See Page A8-808 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,530: | Line 2,530: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See Standby mode on page A8-810 of the ARMv7 Architecture Reference Manual | | See Standby mode on page A8-810 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,542: | Line 2,542: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page A8-90 of the ARMv7 Architecture Reference Manual | | See page A8-90 of the ARMv7 Architecture Reference Manual | ||
Note that this is also available in the FPC RTL as ReadBarrier/WriteBarrier See: \source\rtl\arm\arm.inc | Note that this is also available in the FPC RTL as ReadBarrier/WriteBarrier See: \source\rtl\arm\arm.inc | ||
Line 2,556: | Line 2,556: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page A8-92 of the ARMv7 Architecture Reference Manual | | See page A8-92 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,568: | Line 2,568: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page A8-102 of the ARMv7 Architecture Reference Manual | | See page A8-102 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,580: | Line 2,580: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-138 of the ARMv7 Architecture Reference Manual | | See page B3-138 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,592: | Line 2,592: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-138 of the ARMv7 Architecture Reference Manual | | See page B3-138 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,604: | Line 2,604: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-138 of the ARMv7 Architecture Reference Manual | | See page B3-138 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,616: | Line 2,616: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,628: | Line 2,628: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,640: | Line 2,640: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,652: | Line 2,652: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,664: | Line 2,664: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,676: | Line 2,676: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,688: | Line 2,688: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,700: | Line 2,700: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,712: | Line 2,712: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,724: | Line 2,724: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,736: | Line 2,736: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! SetWay |
| Set/Way/Level will be passed in r0 | | Set/Way/Level will be passed in r0 | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,751: | Line 2,751: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! SetWay |
| Set/Way/Level will be passed in r0 | | Set/Way/Level will be passed in r0 | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,766: | Line 2,766: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! SetWay |
| Set/Way/Level will be passed in r0 | | Set/Way/Level will be passed in r0 | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,781: | Line 2,781: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page A8-102 of the ARMv7 Architecture Reference Manual | | See page A8-102 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,793: | Line 2,793: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page B3-127 of the ARMv7 Architecture Reference Manual | | See page B3-127 of the ARMv7 Architecture Reference Manual | ||
|- | |- | ||
Line 2,805: | Line 2,805: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! OldStack |
| The address to save the stack pointer to for the current thread (Passed in r0) | | The address to save the stack pointer to for the current thread (Passed in r0) | ||
|- | |- | ||
− | ! | + | ! NewStack |
| The address to restore the stack pointer from for the new thread (Passed in r1) | | The address to restore the stack pointer from for the new thread (Passed in r1) | ||
|- | |- | ||
− | ! | + | ! NewThread |
| The handle of the new thread to switch to (Passed in r2) | | The handle of the new thread to switch to (Passed in r2) | ||
|- | |- | ||
− | ! | + | ! Note |
| At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | | At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | ||
<br />(See: ARMv7ThreadSetupStack for additional information) | <br />(See: ARMv7ThreadSetupStack for additional information) | ||
Line 2,889: | Line 2,889: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! OldStack |
| The address to save the stack pointer to for the current thread (Passed in r0) | | The address to save the stack pointer to for the current thread (Passed in r0) | ||
|- | |- | ||
− | ! | + | ! NewStack |
| The address to restore the stack pointer from for the new thread (Passed in r1) | | The address to restore the stack pointer from for the new thread (Passed in r1) | ||
|- | |- | ||
− | ! | + | ! NewThread |
| The handle of the new thread to switch to (Passed in r2) | | The handle of the new thread to switch to (Passed in r2) | ||
|- | |- | ||
− | ! | + | ! Note |
| At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | | At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | ||
<br />(See: ARMv7ThreadSetupStack for additional information) | <br />(See: ARMv7ThreadSetupStack for additional information) | ||
Line 2,962: | Line 2,962: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! OldStack |
| The address to save the stack pointer to for the current thread (Passed in r0) | | The address to save the stack pointer to for the current thread (Passed in r0) | ||
|- | |- | ||
− | ! | + | ! NewStack |
| The address to restore the stack pointer from for the new thread (Passed in r1) | | The address to restore the stack pointer from for the new thread (Passed in r1) | ||
|- | |- | ||
− | ! | + | ! NewThread |
| The handle of the new thread to switch to (Passed in r2) | | The handle of the new thread to switch to (Passed in r2) | ||
|- | |- | ||
− | ! | + | ! Note |
| At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | | At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | ||
<br />(See: ARMv7ThreadSetupStack for additional information) | <br />(See: ARMv7ThreadSetupStack for additional information) | ||
Line 3,035: | Line 3,035: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! OldStack |
| The address to save the stack pointer to for the current thread (Passed in r0) | | The address to save the stack pointer to for the current thread (Passed in r0) | ||
|- | |- | ||
− | ! | + | ! NewStack |
| The address to restore the stack pointer from for the new thread (Passed in r1) | | The address to restore the stack pointer from for the new thread (Passed in r1) | ||
|- | |- | ||
− | ! | + | ! NewThread |
| The handle of the new thread to switch to (Passed in r2) | | The handle of the new thread to switch to (Passed in r2) | ||
|- | |- | ||
− | ! | + | ! Note |
| At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | | At the point of the actual context switch (str sp/ldr sp) the thread stacks will look like this: | ||
<br />(See: ARMv7ThreadSetupStack for additional information) | <br />(See: ARMv7ThreadSetupStack for additional information) | ||
Line 3,108: | Line 3,108: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,120: | Line 3,120: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,132: | Line 3,132: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,144: | Line 3,144: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,156: | Line 3,156: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,168: | Line 3,168: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,180: | Line 3,180: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,192: | Line 3,192: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,204: | Line 3,204: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,216: | Line 3,216: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,228: | Line 3,228: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,240: | Line 3,240: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,252: | Line 3,252: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | ARM | + | | ARM states that CLZ is supported for ARMv5 and above |
|- | |- | ||
|} | |} | ||
Line 3,264: | Line 3,264: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | ARM | + | | ARM states that CLZ is supported for ARMv5 and above |
|- | |- | ||
|} | |} | ||
Line 3,279: | Line 3,279: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,291: | Line 3,291: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,306: | Line 3,306: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,321: | Line 3,321: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,336: | Line 3,336: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,351: | Line 3,351: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,366: | Line 3,366: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,381: | Line 3,381: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,396: | Line 3,396: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Spin |
| Pointer to the Spin entry to lock (Passed in R0) | | Pointer to the Spin entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,411: | Line 3,411: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| True if the mask would enable IRQ on restore, False if it would not | | True if the mask would enable IRQ on restore, False if it would not | ||
|- | |- | ||
Line 3,423: | Line 3,423: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| True if the mask would enable FIQ on restore, False if it would not | | True if the mask would enable FIQ on restore, False if it would not | ||
|- | |- | ||
Line 3,435: | Line 3,435: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,447: | Line 3,447: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,459: | Line 3,459: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Mutex |
| Pointer to the Mutex entry to lock (Passed in R0) | | Pointer to the Mutex entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,474: | Line 3,474: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Mutex |
| Pointer to the Mutex entry to lock (Passed in R0) | | Pointer to the Mutex entry to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | | ERROR_SUCCESS if completed or another error code on failure (Returned in R0) | ||
|- | |- | ||
Line 3,489: | Line 3,489: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Mutex |
| Pointer to the Mutex entry to try to lock (Passed in R0) | | Pointer to the Mutex entry to try to lock (Passed in R0) | ||
|- | |- | ||
− | ! | + | ! Return |
− | | ERROR_SUCCESS if completed, ERROR_LOCKED if already locked or another error code on failure (Returned in R0) | + | | ERROR_SUCCESS if completed, ERROR_LOCKED if already locked or another error code on failure (Returned in R0). |
|- | |- | ||
|} | |} | ||
Line 3,504: | Line 3,504: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,516: | Line 3,516: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,528: | Line 3,528: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! StackBase |
| Pointer to the base (highest address) of the allocated stack (as returned by ThreadAllocateStack | | Pointer to the base (highest address) of the allocated stack (as returned by ThreadAllocateStack | ||
|- | |- | ||
− | ! | + | ! StartProc |
| The procedure the thread will start executing when resumed | | The procedure the thread will start executing when resumed | ||
|- | |- | ||
− | ! | + | ! ReturnProc |
| The procedure the thread will return to on exit | | The procedure the thread will return to on exit | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to the starting address of the stack, which will be the Stack Pointer on the first context switch | | Pointer to the starting address of the stack, which will be the Stack Pointer on the first context switch | ||
|- | |- | ||
− | ! | + | ! Note |
| At the point of a context switch the thread stack will look like this: | | At the point of a context switch the thread stack will look like this: | ||
<br />(Base "Highest Address" of Stack) | <br />(Base "Highest Address" of Stack) | ||
Line 3,620: | Line 3,620: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,635: | Line 3,635: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,650: | Line 3,650: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,665: | Line 3,665: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,677: | Line 3,677: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| This routine is registered as the vector for undefined instruction exception in the vector table loaded during startup | | This routine is registered as the vector for undefined instruction exception in the vector table loaded during startup | ||
|- | |- | ||
Line 3,689: | Line 3,689: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| This routine is registered as the vector for SWI requests in the vector table loaded during startup. When the processor executes an SVC it switches to SWI mode, stores the address of the next instruction in the SWI mode link register (lr_svc) and saves the current program status register into the SWI mode saved program status register (spsr_svc). | | This routine is registered as the vector for SWI requests in the vector table loaded during startup. When the processor executes an SVC it switches to SWI mode, stores the address of the next instruction in the SWI mode link register (lr_svc) and saves the current program status register into the SWI mode saved program status register (spsr_svc). | ||
<br />The SWI handler first saves the SWI mode lr and spsr (which represent the location and state to return to) onto the SYS mode stack using the srsdb (Store Return State Decrement Before) instruction. | <br />The SWI handler first saves the SWI mode lr and spsr (which represent the location and state to return to) onto the SYS mode stack using the srsdb (Store Return State Decrement Before) instruction. | ||
Line 3,717: | Line 3,717: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| This routine is registered as the vector for prefetch abort exception in the vector table loaded during startup | | This routine is registered as the vector for prefetch abort exception in the vector table loaded during startup | ||
|- | |- | ||
Line 3,729: | Line 3,729: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| This routine is registered as the vector for data abort exception in the vector table loaded during startup | | This routine is registered as the vector for data abort exception in the vector table loaded during startup | ||
|- | |- | ||
Line 3,741: | Line 3,741: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,753: | Line 3,753: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| This routine is registered as the vector for IRQ requests in the vector table loaded during startup. | | This routine is registered as the vector for IRQ requests in the vector table loaded during startup. | ||
<br />At the end of each instruction the processor checks the IRQ line and if triggered it will lookup the vector in the vector table and jump to the routine listed. | <br />At the end of each instruction the processor checks the IRQ line and if triggered it will lookup the vector in the vector table and jump to the routine listed. | ||
Line 3,776: | Line 3,776: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| This routine is registered as the vector for FIQ requests in the vector table loaded during startup. | | This routine is registered as the vector for FIQ requests in the vector table loaded during startup. | ||
<br />At the end of each instruction the processor checks the FIQ line and if triggered it will lookup the vector in the vector table and jump to the routine listed. | <br />At the end of each instruction the processor checks the FIQ line and if triggered it will lookup the vector in the vector table and jump to the routine listed. | ||
Line 3,804: | Line 3,804: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,816: | Line 3,816: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,828: | Line 3,828: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,840: | Line 3,840: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,852: | Line 3,852: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,864: | Line 3,864: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,876: | Line 3,876: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,888: | Line 3,888: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,900: | Line 3,900: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,912: | Line 3,912: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,924: | Line 3,924: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 3,936: | Line 3,936: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,948: | Line 3,948: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
Caller must call ARMv7InvalidateTLB after changes if MMU is enabled | Caller must call ARMv7InvalidateTLB after changes if MMU is enabled | ||
Line 3,961: | Line 3,961: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,973: | Line 3,973: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Large Page Table descriptors must begin on a 16 longword (64 byte) boundary and be repeated for 16 consecutive longwords | | Large Page Table descriptors must begin on a 16 longword (64 byte) boundary and be repeated for 16 consecutive longwords | ||
See page ??? | See page ??? | ||
Line 3,987: | Line 3,987: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 3,999: | Line 3,999: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
Caller must call ARMv7InvalidateTLB after changes if MMU is enabled | Caller must call ARMv7InvalidateTLB after changes if MMU is enabled | ||
Line 4,012: | Line 4,012: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
|- | |- | ||
Line 4,024: | Line 4,024: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| See page ??? | | See page ??? | ||
Caller must call ARMv7InvalidateTLB after changes if MMU is enabled | Caller must call ARMv7InvalidateTLB after changes if MMU is enabled | ||
Line 4,037: | Line 4,037: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Supersection Page Table descriptors must begin on a 16 longword (64 byte) boundary and be repeated for 16 consecutive longwords | | Supersection Page Table descriptors must begin on a 16 longword (64 byte) boundary and be repeated for 16 consecutive longwords | ||
See page ??? | See page ??? |
Revision as of 04:48, 25 April 2018
Return to Unit Reference
Contents
[hide]Description
Ultibo Platform interface unit for ARMv7
The ARMv7 does not support the SWP/SWPB instructions for syncronisation (Lock/Mutex/Semaphore etc) unless enabled.
On ARMv7 Unaligned memory access is always enabled.
On ARMv7 the Extended Page Table format is always enabled.
For usage of barriers (DMB/DSB/ISB) after cache maintenance operations see: ARM.Reference_Manual_1.pdf - Appendix G Barrier Litmus Tests
Constants
ARMV7_PAGE_TABLES_*
ARMV7_CP15_C0_MAINID_*
ARMV7_CP15_C0_MPID_*
ARMV7_CP15_C0_CCSID_*
ARMV7_CP15_C0_CLID_*
ARMV7_CP15_C0_CSSEL_*
ARMV7_CP15_C1_*
ARMV7_CP15_C1_AUX_*
ARMV7_CP15_C1_CP*
ARMV7_CP15_C1_SCR_*
ARMV7_CP15_C2_TTBR_*
ARMV7_CP15_C3_DOMAIN*
ARMV7_CP15_C10_PRRR_*
ARMV7_CP15_C10_NMRR_*
ARMV7_CP15_C14_CNT_CTL_*
ARMV7_CP15_C14_*
ARMV7_FPEXC_*
ARMV7_L1D_TYPE_*
ARMV7_L1D_FLAG_*
ARMV7_L1D_*_MASK
ARMV7_L1D_TEX*
ARMV7_L1D_AP*
ARMV7_L1D_ACCESS_*
ARMV7_L1D_CACHE_*
ARMV7_L1D_CACHE_CACHEABLE_*
ARMV7_L1D_CACHE_REMAP_*
ARMV7_L2D_TYPE_*
ARMV7_L2D_FLAG_*
ARMV7_L2D_*_MASK
ARMV7_L2D_LARGE_TEX*
ARMV7_L2D_SMALL_TEX*
ARMV7_L2D_AP*
ARMV7_L2D_ACCESS_*
ARMV7_L2D_LARGE_CACHE_*
ARMV7_L2D_LARGE_CACHE_CACHEABLE_*
ARMV7_L2D_LARGE_CACHE_REMAP_*
ARMV7_L2D_SMALL_CACHE_*
ARMV7_L2D_SMALL_CACHE_CACHEABLE_*
ARMV7_L2D_SMALL_CACHE_REMAP_*
ARMV7_*
Type definitions
ARMv7 page table initialization
TARMv7PageTableInit = procedure;
|
ARMv7 dispatch IRQ
TARMv7DispatchIRQ = function(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
|
ARMv7 dispatch FIQ
TARMv7DispatchFIQ = function(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
|
ARMv7 dispatch SWI
TARMv7DispatchSWI = function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;
|
Public variables
ARMv7 specific variables
ARMv7Initialized:Boolean;
|
Page table handlers
ARMv7PageTableInitHandler:TARMv7PageTableInit;
|
IRQ handlers
ARMv7DispatchIRQHandler:TARMv7DispatchIRQ;
|
FIQ handlers
ARMv7DispatchFIQHandler:TARMv7DispatchFIQ;
|
SWI handlers
ARMv7DispatchSWIHandler:TARMv7DispatchSWI;
|
Function declarations
Initialization functions
ARMv7 platform functions
procedure ARMv7TimerInit(Frequency:LongWord); assembler; nostackframe;
procedure ARMv7PageTableInit;
procedure ARMv7SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt);
function ARMv7CPUGetCurrent:LongWord; assembler; nostackframe;
function ARMv7CPUGetMainID:LongWord; assembler; nostackframe;
function ARMv7CPUGetMultiprocessorID:LongWord; assembler; nostackframe;
function ARMv7L1CacheGetType:LongWord; assembler; nostackframe;
function ARMv7L1DataCacheGetSize:LongWord; assembler; nostackframe;
function ARMv7L1DataCacheGetLineSize:LongWord; assembler; nostackframe;
function ARMv7L1InstructionCacheGetSize:LongWord; assembler; nostackframe;
function ARMv7L1InstructionCacheGetLineSize:LongWord; assembler; nostackframe;
function ARMv7L2CacheGetType:LongWord; assembler; nostackframe;
function ARMv7L2CacheGetSize:LongWord; assembler; nostackframe;
function ARMv7L2CacheGetLineSize:LongWord; assembler; nostackframe;
procedure ARMv7Halt; assembler; nostackframe; public name'_haltproc';
procedure ARMv7Pause; assembler; nostackframe;
procedure ARMv7WaitForInterrupt; assembler; nostackframe;
procedure ARMv7DataMemoryBarrier; assembler; nostackframe;
procedure ARMv7DataSynchronizationBarrier; assembler; nostackframe;
procedure ARMv7InstructionMemoryBarrier; assembler; nostackframe;
procedure ARMv7InvalidateTLB; assembler; nostackframe;
procedure ARMv7InvalidateDataTLB; assembler; nostackframe;
procedure ARMv7InvalidateInstructionTLB; assembler; nostackframe;
procedure ARMv7InvalidateCache; assembler; nostackframe;
procedure ARMv7CleanDataCache; assembler; nostackframe;
procedure ARMv7InvalidateDataCache; assembler; nostackframe;
procedure ARMv7InvalidateL1DataCache; assembler; nostackframe;
procedure ARMv7CleanAndInvalidateDataCache; assembler; nostackframe;
procedure ARMv7InvalidateInstructionCache; assembler; nostackframe;
procedure ARMv7CleanDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv7InvalidateDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv7CleanAndInvalidateDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv7InvalidateInstructionCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv7CleanDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
procedure ARMv7InvalidateDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
procedure ARMv7CleanAndInvalidateDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
procedure ARMv7FlushPrefetchBuffer; assembler; nostackframe;
procedure ARMv7FlushBranchTargetCache; assembler; nostackframe;
procedure ARMv7ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
procedure ARMv7ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
procedure ARMv7ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
procedure ARMv7ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
function ARMv7InterlockedOr(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedDecrement(var Target:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedIncrement(var Target:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; assembler; nostackframe;
function ARMv7InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; assembler; nostackframe;
procedure ARMv7PageTableGetEntry(Address:PtrUInt; var Entry:TPageTableEntry);
function ARMv7PageTableSetEntry(const Entry:TPageTableEntry):LongWord;
function ARMv7VectorTableGetEntry(Number:LongWord):PtrUInt;
function ARMv7VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord;
function ARMv7FirstBitSet(Value:LongWord):LongWord; assembler; nostackframe;
function ARMv7CountLeadingZeros(Value:LongWord):LongWord; assembler; nostackframe;
ARMv7 thread functions
function ARMv7SpinLock(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinUnlock(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinLockIRQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinUnlockIRQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinLockFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinUnlockFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinLockIRQFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinUnlockIRQFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv7SpinExchangeIRQ(Spin1,Spin2:PSpinEntry):LongWord;
function ARMv7SpinExchangeFIQ(Spin1,Spin2:PSpinEntry):LongWord;
function ARMv7MutexLock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
function ARMv7MutexUnlock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
function ARMv7MutexTryLock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
function ARMv7ThreadGetCurrent:TThreadHandle; assembler; nostackframe;
function ARMv7ThreadSetCurrent(Thread:TThreadHandle):LongWord; assembler; nostackframe;
function ARMv7ThreadSetupStack(StackBase:Pointer; StartProc:TThreadStart; ReturnProc:TThreadEnd; Parameter:Pointer):Pointer;
ARMv7 IRQ functions
function ARMv7DispatchIRQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle; inline;
ARMv7 FIQ functions
function ARMv7DispatchFIQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle; inline;
ARMv7 SWI functions
function ARMv7DispatchSWI(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle; inline;
ARMv7 interrupt functions
procedure ARMv7UndefinedInstructionHandler; assembler; nostackframe;
procedure ARMv7SoftwareInterruptHandler; assembler; nostackframe;
procedure ARMv7PrefetchAbortHandler; assembler; nostackframe;
procedure ARMv7DataAbortHandler; assembler; nostackframe;
procedure ARMv7IRQHandler; assembler; nostackframe;
procedure ARMv7FIQHandler; assembler; nostackframe;
ARMv7 helper functions
function ARMv7GetTimerState(Timer:LongWord):LongWord; assembler; nostackframe;
procedure ARMv7SetTimerState(Timer,State:LongWord); assembler; nostackframe;
function ARMv7GetTimerCount(Timer:LongWord):Int64; assembler; nostackframe;
function ARMv7GetTimerValue(Timer:LongWord):LongWord; assembler; nostackframe;
procedure ARMV7SetTimerValue(Timer,Value:LongWord); assembler; nostackframe;
function ARMv7GetTimerCompare(Timer:LongWord):Int64; assembler; nostackframe;
procedure ARMV7SetTimerCompare(Timer,High,Low:LongWord); assembler; nostackframe;
function ARMv7GetTimerFrequency:LongWord; assembler; nostackframe;
function ARMv7GetPageTableCoarse(Address:PtrUInt):LongWord;
function ARMv7SetPageTableCoarse(Address,CoarseAddress:PtrUInt; Flags:Word):Boolean;
function ARMv7GetPageTableLarge(Address:PtrUInt):LongWord;
function ARMv7SetPageTableLarge(Address,PhysicalAddress:PtrUInt; Flags:Word):Boolean;
function ARMv7GetPageTableSmall(Address:PtrUInt):LongWord;
function ARMv7SetPageTableSmall(Address,PhysicalAddress:PtrUInt; Flags:Word):Boolean;
function ARMv7GetPageTableSection(Address:PtrUInt):LongWord;
function ARMv7SetPageTableSection(Address,PhysicalAddress:PtrUInt; Flags:LongWord):Boolean;
function ARMv7SetPageTableSupersection(Address,PhysicalAddress:PtrUInt; Flags:LongWord):Boolean;
Return to Unit Reference