Showing changes from revision #1 to #2:
Added | Removed | Changed
Entry | (32 bit addresses) |
---|---|
R0 | Logical address of start of region |
R1 | Physical address of start of region |
R2 | Length of region |
R3 | Flags: |
Bit 0: Bounce buffer must be used | |
Bits 1+: Reserved | |
R9 | R4 from OS_Memory 19 input / R9 output from previous Output Function call |
R12 | R1 from OS_Memory 19 input |
SVC32 mode, interrupts enabled |
Entry | (64 bit addresses) |
---|---|
R0 | Logical address of start of region |
R1,R2 | Physical address of start of region |
R3 | Flags: |
Bit 0: Bounce buffer must be used | |
Bits 1+: Reserved | |
R4 | Length of region |
R9 | R4 from OS_Memory 19 input / R9 output from previous Output Function call |
R12 | R1 from OS_Memory 19 input |
SVC32 mode, interrupts enabled |
Exit | |
---|---|
R9 | New R9 for next Output call |
R0-R3, R12 | Corrupt |
- | All other registers preserved |
OS_Memory 19 calls this function to pass the details of processed buffer regions to your code.
Bit 11 of the OS_Memory 19 flags should be used to indicate whether your code is using the 32 bit or 64 bit interface.
If OS_Memory 19 indicates that a bounce buffer must be used for a region, then it’s imperative to not perform DMA to that region, and only perform CPU access instead.