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.08;  author thorn_aitch;  state Exp;
branches 1.1.1.1;
next     ;

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


desc
@@



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

Sep.16 2002
Nov.02 2002
Dec.06 2002
===================

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:

/************************
 MAC.L @@Rm+, @@Rn+ : basic
 ************************/
_macl:
 mov    #0, r0
 ldc    r0, sr !S=0
 mov    #0x02, r0 
 clrmac
 mov.l  _pmacldata1, r1
 mov.l  _pmacldata2, r2
 mac.l  @@r2+, @@r1+
 ldc    r0, sr !S=1, no effect to MAC operation
 sts    mach, r3
 sts    macl, r4
 mov.l  _pmacldata3, r5
 mov.l  @@r5+, r6
 mov.l  @@r5+, r7
!----
 cmp/eq r6, r3
 bt     .+6
 jmp    @@r13
 nop
!----
 cmp/eq r7, r4
 bt     .+6
 jmp    @@r13
 nop
!----
 mov    #0, r0
 ldc    r0, sr !S=0
 mac.l  @@r2+, @@r1+
 clrmac !only check clear timing
!----
 mac.l  @@r2+, @@r1+
 mac.l  @@r2+, @@r1+
 mac.l  @@r2+, @@r1+
 mac.l  @@r2+, @@r1+
 sts    macl, r4
 sts    mach, r3
 mov.l  @@r5+, r6
 mov.l  @@r5+, r7
!----
 cmp/eq r6, r3
 bt     .+6
 jmp    @@r13
 nop
!----
 cmp/eq r7, r4
 bt     .+6
 jmp    @@r13
 nop
!----
 bra    _maclend
 nop
 .align 4
_macldata1:
 .long 0x01234567 !19088743
 .long 0xfffffffd !dummy (-3)
 .long 0x00000002
 .long 0x00000003
 .long 0x00000004
 .long 0x00000005
_macldata2:
 .long 0x89abcdef !-1985229329
 .long 0x00000002 !dummy (2)
 .long 0x00000006
 .long 0x00000007
 .long 0x00000008
 .long 0x00000009
_macldata3:
 .long 0xff795e36 !-37895532457343447
 .long 0xc94e4629
 .long 0x00000000 !(2x6)+(3x7)+(4x8)+(5x9)=12+21+28+45=110
 .long 0x0000006e
.align 4
_pmacldata1: .long _macldata1
_pmacldata2: .long _macldata2
_pmacldata3: .long _macldata3
_maclend:

/***********************************
 MAC.L @@Rm+, @@Rn+ : value dependency
 ***********************************/
_macl_value:
 mov.l _pmaclsbit, r1
 mov.l _pmaclinih, r2
 mov.l _pmaclinil, r3
 mov.l _pmaclval1, r4
 mov.l _pmaclval2, r5
 mov.l _pmaclmach, r6
 mov.l _pmaclmacl, r7
 mov.l _pmaclcount, r8

_mac_value1:
 mov.l @@r1+, r0
 ldc   r0, sr
 mov.l @@r2+, r0
 lds   r0, mach
 mov.l @@r3+, r0
 lds   r0, macl
 mac.l @@r5+, @@r4+
 sts   mach, r9
 sts   macl, r10
!----
 mov.l @@r6+, r0
 cmp/eq r0, r9
 bt     .+6
 jmp    @@r13
 nop
!----
 mov.l @@r7+, r0
 cmp/eq r0, r10
 bt     .+6
 jmp    @@r13
 nop
!----
 add   #-1, r8
 cmp/pl r8
 bt    _mac_value1
!----
 bra    _macl_value_end:
 nop

 .align 4
!-----------------------------
! S=0 00000000 x 00000000

! S=0 00000001 x 7fffffff
! S=0 7fffffff x 00000001
! S=0 ffffffff x 7fffffff
! S=0 7fffffff x ffffffff

! S=0 00000001 x 80000000
! S=0 80000000 x 00000001
! S=0 ffffffff x 80000000
! S=0 80000000 x ffffffff

! S=0 7fffffff x 7fffffff
! S=0 80000000 x 80000000
! S=1 7fffffff x 7fffffff
! S=1 80000000 x 80000000

! S=0 7fffffff x 80000000
! S=0 80000000 x 7fffffff
! S=1 7fffffff x 80000000
! S=1 80000000 x 7fffffff

! S=0 00000001 x 00000001 + 00007fff:ffffffff
! S=0 00000001 x ffffffff + ffff8000:00000000

! S=1 00000001 x 00000001 + 00007fff:ffffffff
! S=1 00000001 x ffffffff + ffff8000:00000000

! S=1 00000001 x 00000001 + 0007ffff:ffffffff
! S=1 00000001 x ffffffff + fff80000:00000000

_maclsbit: ! R1
 .long 0x00000000 ! S=0

 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0

 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0

 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0
 .long 0x00000002 ! S=1
 .long 0x00000002 ! S=1

 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0
 .long 0x00000002 ! S=1
 .long 0x00000002 ! S=1

 .long 0x00000000 ! S=0
 .long 0x00000000 ! S=0

 .long 0x00000002 ! S=1
 .long 0x00000002 ! S=1

 .long 0x00000002 ! S=1
 .long 0x00000002 ! S=1

_maclinih: ! R2
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00007fff
 .long 0xffff8000

 .long 0x00007fff
 .long 0xffff8000

 .long 0x0007ffff
 .long 0xfff80000

_maclinil: ! R3
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0xffffffff
 .long 0x00000000

 .long 0xffffffff
 .long 0x00000000

 .long 0xffffffff
 .long 0x00000000

_maclval1: ! R4
 .long 0x00000000

 .long 0x00000001
 .long 0x7fffffff
 .long 0xffffffff
 .long 0x7fffffff

 .long 0x00000001
 .long 0x80000000
 .long 0xffffffff
 .long 0x80000000

 .long 0x7fffffff
 .long 0x80000000
 .long 0x7fffffff
 .long 0x80000000

 .long 0x7fffffff
 .long 0x80000000
 .long 0x7fffffff
 .long 0x80000000

 .long 0x00000001
 .long 0x00000001

 .long 0x00000001
 .long 0x00000001

 .long 0x00000001
 .long 0x00000001

_maclval2: ! R5
 .long 0x00000000

 .long 0x7fffffff
 .long 0x00000001
 .long 0x7fffffff
 .long 0xffffffff

 .long 0x80000000
 .long 0x00000001
 .long 0x80000000
 .long 0xffffffff

 .long 0x7fffffff
 .long 0x80000000
 .long 0x7fffffff
 .long 0x80000000

 .long 0x80000000
 .long 0x7fffffff
 .long 0x80000000
 .long 0x7fffffff

 .long 0x00000001
 .long 0xffffffff

 .long 0x00000001
 .long 0xffffffff

 .long 0x00000001
 .long 0xffffffff

_maclmach: ! R6
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0xffffffff
 .long 0xffffffff

 .long 0xffffffff
 .long 0xffffffff
 .long 0x00000000
 .long 0x00000000

 .long 0x3fffffff
 .long 0x40000000
 .long 0x00007fff
 .long 0x00007fff

 .long 0xc0000000
 .long 0xc0000000
 .long 0xffff8000
 .long 0xffff8000

 .long 0x00008000
 .long 0xffff7fff

 .long 0x00007fff
 .long 0xffff8000

 .long 0x00007fff
 .long 0xffff8000

_maclmacl: ! R7
 .long 0x00000000
 
 .long 0x7fffffff
 .long 0x7fffffff
 .long 0x80000001
 .long 0x80000001

 .long 0x80000000
 .long 0x80000000
 .long 0x80000000
 .long 0x80000000

 .long 0x00000001
 .long 0x00000000
 .long 0xffffffff
 .long 0xffffffff

 .long 0x80000000
 .long 0x80000000
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0xffffffff

 .long 0xffffffff
 .long 0x00000000

 .long 0xffffffff
 .long 0x00000000

!-----------------------------
.align 4
_pmaclsbit: .long _maclsbit
_pmaclinih: .long _maclinih
_pmaclinil: .long _maclinil
_pmaclval1: .long _maclval1
_pmaclval2: .long _maclval2
_pmaclmach: .long _maclmach
_pmaclmacl: .long _maclmacl
_pmaclcount: .long (_maclinih - _maclsbit)/4
_macl_value_end:

/*********************************************************
 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
@@
