FreeCalypso > hg > freecalypso-tools
annotate target-utils/libbase/waitarm.S @ 960:411d1cc14326
sms-pdu-decode family: prepare for SC address becoming optional
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 04 Aug 2023 23:09:12 +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:
453
diff
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:
453
diff
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:
453
diff
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:
453
diff
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:
453
diff
changeset
|
6 * equal one microsecond. |
|
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
Mychaela Falconia <falcon@freecalypso.org>
parents:
453
diff
changeset
|
7 * |
|
06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
Mychaela Falconia <falcon@freecalypso.org>
parents:
453
diff
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:
453
diff
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:
453
diff
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:
453
diff
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:
453
diff
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:
453
diff
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 |
