FreeCalypso > hg > freecalypso-tools
annotate target-utils/libbase/waitarm.S @ 1007:85ea82ce21d5
CHANGES: document Installed-binaries
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 10 Dec 2023 01:24:14 +0000 | 
| parents | 06ad5e30e8d0 | 
| children | 
| rev | line source | 
|---|---|
| 453 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 495 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 2 * This assembly module provides a wait_ARM_cycles() function similar to | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 3 * the one in TI's firmware; it is meant to gradually replace and phase out | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 4 * osmo_delay_ms(). One loop count for this function equals 4 ARM clock | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 5 * cycles when running out of IRAM; if the ARM clock is 52 MHz, 13 loop counts | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 6 * equal one microsecond. | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 7 * | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 8 * Note the instruction sequence difference from TI's firmware version: | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 9 * we use the SUBS instruction (equivalent of plain SUB in Thumb) and omit | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 10 * the CMP, which is why our version is 4 cycles per loop (when running | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 11 * out of IRAM), as opposed to 5 cycles per loop (plus wait states as they | 
| 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 12 * execute from flash) in TI's fw version. | 
| 453 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 */ | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 .text | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 .code 32 | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 .globl wait_ARM_cycles | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 wait_ARM_cycles: | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 cmp r0, #0 | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 bxeq lr | 
| 495 
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
 Mychaela Falconia <falcon@freecalypso.org> parents: 
453diff
changeset | 21 1: subs r0, r0, #1 | 
| 453 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 bne 1b | 
| 
6228d27738d1
target-utils: wait_ARM_cycles() added to libbase
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 bx lr | 
