Line 37... |
Line 37... |
// from http://www.opencores.org/lgpl.shtml //
|
// from http://www.opencores.org/lgpl.shtml //
|
// //
|
// //
|
*****************************************************************/
|
*****************************************************************/
|
|
|
#include "amber_registers.h"
|
#include "amber_registers.h"
|
|
#include "amber_macros.h"
|
|
|
.section .text
|
.section .text
|
.globl main
|
.globl main
|
main:
|
main:
|
|
|
|
@ Run through the test 4 times
|
|
@ 1 - cache off
|
|
@ 2 - cache on but empty
|
|
@ 3 - cache on and loaded
|
|
@ 4 - same as 3
|
|
mov r10, #4
|
|
|
|
|
/* lsl 0 */
|
/* lsl 0 */
|
mov r1, #1
|
1: mov r1, #1
|
mov r2, r1, lsl #0
|
mov r2, r1, lsl #0
|
mov r3, #0x1
|
expect r2, 1, __LINE__
|
cmp r2, r3
|
|
bne testfail
|
|
|
|
/* lsl 1 */
|
/* lsl 1 */
|
mov r4, #1
|
mov r4, #1
|
mov r5, r4, lsl #1
|
mov r5, r4, lsl #1
|
mov r6, #2
|
expect r5, 2, __LINE__
|
cmp r5, r6
|
|
bne testfail
|
|
|
|
/* lsl 31 */
|
/* lsl 31 */
|
mov r7, #1
|
mov r7, #1
|
mov r8, r1, lsl #31
|
mov r8, r1, lsl #31
|
mov r9, #0x80000000
|
expect r8, 0x80000000, __LINE__
|
cmp r8, r9
|
|
bne testfail
|
|
|
|
/* lsr 1 */
|
/* lsr 1 */
|
mov r1, #2
|
mov r1, #2
|
mov r2, r1, lsr #1
|
mov r2, r1, lsr #1
|
mov r3, #0x1
|
expect r2, 1, __LINE__
|
cmp r2, r3
|
|
bne testfail
|
|
|
|
/* lsr 8 */
|
/* lsr 8 */
|
mov r4, #0xff00
|
mov r4, #0xff00
|
mov r5, r4, lsr #8
|
mov r5, r4, lsr #8
|
cmp r5, #0xff
|
expect r5, 0xff, __LINE__
|
bne testfail
|
|
|
|
/* ror 8 */
|
/* ror 8 */
|
ldr r6, Data1
|
ldr r6, Data1
|
mov r7, r6, ror #8
|
mov r7, r6, ror #8
|
ldr r8, Data2
|
ldr r8, Data2
|
cmp r7, r8
|
compare r7, r8, __LINE__
|
bne testfail
|
|
|
|
|
@ ---------------------
|
|
@ Sequences of shift operations
|
|
@ ---------------------
|
|
|
|
@ lsl
|
|
mov r0, #0
|
|
mov r1, #1
|
|
mov r2, #2
|
|
mov r3, #3
|
|
mov r4, #4
|
|
mov r5, #5
|
|
|
|
mov r6, r3, lsl #31
|
|
mov r7, r0, lsl #2
|
|
mov r8, r1, lsl #11
|
|
mov r9, r2, lsl #17
|
|
|
|
expect r6, 0x80000000, __LINE__
|
|
expect r7, 0x00000000, __LINE__
|
|
expect r8, 0x00000800, __LINE__
|
|
expect r9, 0x00040000, __LINE__
|
|
|
|
mov r6, r3, lsl #30
|
|
mov r7, r1, lsl #2
|
|
mov r8, r2, lsl #4
|
|
mov r9, r3, lsl #5
|
|
|
|
expect r6, 0xc0000000, __LINE__
|
|
expect r7, 0x00000004, __LINE__
|
|
expect r8, 0x00000020, __LINE__
|
|
expect r9, 0x00000060, __LINE__
|
|
|
|
@ lsr
|
|
mov r0, #0x80000000
|
|
mov r1, #0x7f000000
|
|
mov r2, #0x80000001
|
|
mov r3, #0x7fffffff
|
|
mov r4, #0x7ffffffe
|
|
mov r5, #0x55000000
|
|
orr r5, r5, #0x55
|
|
|
|
mov r6, r0, lsr #1
|
|
mov r7, r0, lsr #2
|
|
mov r8, r1, lsr #24
|
|
mov r9, r2, lsr #1
|
|
|
|
expect r6, 0x40000000, __LINE__
|
|
expect r7, 0x20000000, __LINE__
|
|
expect r8, 0x0000007f, __LINE__
|
|
expect r9, 0x40000000, __LINE__
|
|
|
|
@ ---------------------
|
|
@ Enable the cache
|
|
@ ---------------------
|
|
mvn r0, #0
|
|
mcr 15, 0, r0, cr3, cr0, 0 @ cacheable area
|
|
mov r0, #1
|
|
mcr 15, 0, r0, cr2, cr0, 0 @ cache enable
|
|
|
|
subs r10, r10, #1
|
|
bne 1b
|
|
|
b testpass
|
b testpass
|
|
|
|
|
testfail:
|
testfail:
|