head     1.1;
branch   1.1.1;
access   ;
symbols  start:1.1.1.1 thorn_aitch:1.1.1;
locks    ; strict;
comment  @# @;


1.1
date     2003.07.12.13.23.10;  author thorn_aitch;  state Exp;
branches 1.1.1.1;
next     ;

1.1.1.1
date     2003.07.12.13.23.10;  author thorn_aitch;  state Exp;
branches ;
next     ;


desc
@@



1.1
log
@Initial revision
@
text
@/*
===================
test source program
testmull.src

Jan.03 2003
===================

address           size wait width device
00000000-00001FFF  8K  0    32    ROM
00010000-00011FFF  8K  3    32    ROM
00020000-00021FFF  8K  0    16    ROM
00030000-00031FFF  8K  3    16    ROM
ABCD0000-ABCD0003   4  3    32    PIO
ABCD0100-ABCD0103   4  3    32    UART
ABCD0200-ABCD0207   8  3    32    SYS
FFFCE000-FFFCFFFF  8K  0    32    RAM
FFFDE000-FFFDFFFF  8K  3    32    RAM
FFFEE000-FFFEFFFF  8K  0    16    RAM
FFFFE000-FFFFFFFF  8K  3    16    RAM
*/

.equ _rom0, 0x00000000
.equ _rom1, 0x00010000
.equ _rom2, 0x00020000
.equ _rom3, 0x00030000
.equ _pio,  0xabcd0000
.equ _uart, 0xabcd0100
.equ _sys,  0xabcd0200
.equ _ram0, 0xfffce000
.equ _ram1, 0xfffde000
.equ _ram2, 0xfffee000
.equ _ram3, 0xffffe000

.org _rom0
.long _rom0 + _init - _rom0
.long _ram0 + 0x02000

.org 0x0400
 
/**************
 Initialization
 **************/
_init:
_start:
 mov    #0, r14
_test:
 mov.l  _pfail, r13 !fail address
 bra    _testgo
 nop
_pfail: .long _fail
_testgo:

/************************
 MUL.L Rm, Rn
 ************************/
 mov.l  _ptestvalue1, r1
 mov.l  _ptestvalue2, r2
 mov    #0xff, r0
 lds    r0, mach

 mul.l r2, r1
 mul.l r1, r2
 mul.l r2, r1
 mul.l r1, r2 !You should check mult contention,here. 

_testloop:
 mov.l  @@r1+, r3
 mov.l  @@r1+, r4
 mov.l  @@r1+, r5
 mov.l  @@r1+, r6

 mul.l r4, r3

 sts    mach, r3 !You should check mult contention,here.
 sts    macl, r4

!----
 cmp/eq r5, r3
 bt     .+6
 jmp    @@r13
 nop
!----
 cmp/eq r6, r4
 bt     .+6
 jmp    @@r13
 nop
!----
 cmp/eq r2, r1
 bf     _testloop
 bra    _testfinish
 nop
!----
 .align 4
_ptestvalue1: .long _testvalue1
_ptestvalue2: .long _testvalue2

 .align 4
_testvalue1:
 .long  0x00000002 !Rn
 .long  0x00000003 !Rm
 .long  0xffffffff !MACH
 .long  0x00000006 !MACL

 .long  0x12345678
 .long  0x9abcdef0
 .long  0xffffffff
 .long  0x242d2080

 .long  0x00000001
 .long  0xffffffff
 .long  0xffffffff
 .long  0xffffffff

 .long  0xffffffff
 .long  0x00000001
 .long  0xffffffff
 .long  0xffffffff

 .long  0x7fffffff
 .long  0x80000000
 .long  0xffffffff
 .long  0x80000000

 .long  0x80000000
 .long  0x7fffffff
 .long  0xffffffff
 .long  0x80000000

 .long  0xffffffff
 .long  0xffffffff
 .long  0xffffffff
 .long  0x00000001

 .long  0x7fffffff
 .long  0x7fffffff
 .long  0xffffffff
 .long  0x00000001

 .long  0x80000000
 .long  0x80000000
 .long  0xffffffff
 .long  0x00000000
_testvalue2:

_testfinish:
/*********************************************************
 Move to another Next ROM area to check hardware operation
 *********************************************************/
 mov.l _pbranch_table, r13
 add r14, r13
 mov.l @@r13, r12
 jmp @@r12
 add #4, r14
.align 4
_pbranch_table: .long _branch_table
_branch_table:
 .long _rom1+_test
 .long _rom2+_test
 .long _rom3+_test
 .long _rom0+_pass

/**************
 Congraturation
 **************/
_pass:
 mov.l _ppass_value, r0
 mov.l _ppass_value, r1
 mov.l r0, @@r1
 bra   _pass
 nop
.align 4
_ppass_value: .long 0x12345678

/**********
 You Failed
 **********/
_fail:
 mov.l _pfail_value, r0
 mov.l _pfail_value, r1
 bra   _fail
 nop
.align 4
_pfail_value: .long 0x88888888

.end
@


1.1.1.1
log
@First Release
@
text
@@
