1234567891011121314151617181920212223242526272829303132333435 |
- #
- ! $Source$
- ! $State$
- ! $Revision$
- #include "powerpc.h"
- .sect .text
-
- ! Index into a bounds-checked array.
- !
- ! On entry:
- ! r3 = ptr to descriptor
- ! r4 = index
- ! r5 = address of array
- .define .aar4
- .aar4:
- addis r0, r0, <.trap_earray
- ori r0, r0, >.trap_earray
- mtspr ctr, r0 ! load CTR with trap address
- lwz r0, 0(r3)
- subf. r4, r0, r4 ! adjust range
- bcctr IFTRUE, LT, 0 ! check lower bound
-
- lwz r0, 4(r3)
- cmpl cr0, 0, r4, r3
- bcctr IFFALSE, LT, 0 ! check upper bound
-
- lwz r0, 8(r3)
- mullw r4, r4, r0 ! scale index
- add r3, r4, r5 ! calculate element address
-
- bclr ALWAYS, 0, 0
|