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
testmacw.src

Dec.30 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.W @@Rm+, @@Rn+ : basic
 ************************/
_macw:
 mov    #0, r0
 ldc    r0, sr !S=0
 mov    #0x02, r0 
 clrmac
 mov.l  _pmacwdata1, r1
 mov.l  _pmacwdata2, r2
 mac.w  @@r2+, @@r1+
 ldc    r0, sr !S=1, no effect to MAC operation
 sts    mach, r3
 sts    macl, r4
 mov.l  _pmacwdata3, 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.w  @@r2+, @@r1+
 clrmac !only check clear timing
!----
 mac.w  @@r2+, @@r1+
 mac.w  @@r2+, @@r1+
 mac.w  @@r2+, @@r1+
 mac.w  @@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    _macwend
 nop
 .align 4
_macwdata1:
 .word 0x1234 !4660
 .word 0xfffd !dummy (-3)
 .word 0x0002
 .word 0x0003
 .word 0x0004
 .word 0x0005
_macwdata2:
 .word 0xabcd !-21555
 .word 0x0002 !dummy (2)
 .word 0x0006
 .word 0x0007
 .word 0x0008
 .word 0x0009
_macwdata3:
 .long 0xFFFFFFFF !-100446300
 .long 0xFA034FA4
 .long 0x00000000 !(2x6)+(3x7)+(4x8)+(5x9)=12+21+28+45=110
 .long 0x0000006e
.align 4
_pmacwdata1: .long _macwdata1
_pmacwdata2: .long _macwdata2
_pmacwdata3: .long _macwdata3
_macwend:

/***********************************
 MAC.W @@Rm+, @@Rn+ : value dependency
 ***********************************/
_macw_value:
 mov.l _pmacwsbit, r1
 mov.l _pmacwinih, r2
 mov.l _pmacwinil, r3
 mov.l _pmacwval1, r4
 mov.l _pmacwval2, r5
 mov.l _pmacwmach, r6
 mov.l _pmacwmacl, r7
 mov.l _pmacwcount, 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.w @@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    _macw_value_end:
 nop

 .align 4
!-----------------------------
! S=0 0000 x 0000

! S=0 0001 x 7fff
! S=0 7fff x 0001
! S=0 ffff x 7fff
! S=0 7fff x ffff

! S=0 0001 x 8000
! S=0 8000 x 0001
! S=0 ffff x 8000
! S=0 8000 x ffff

! S=0 7fff x 7fff
! S=0 8000 x 8000
! S=1 7fff x 7fff
! S=1 8000 x 8000

! S=0 7fff x 8000
! S=0 8000 x 7fff
! S=1 7fff x 8000
! S=1 8000 x 7fff

! S=0 0001 x 0001 + 00000000:7fffffff
! S=0 0001 x ffff + ffffffff:80000000

! S=1 0001 x 0001 + 00000000:7fffffff
! S=1 0001 x ffff + ffffffff:80000000

! S=1 0001 x 0001 + 00000006:7fffffff
! S=1 0001 x ffff + 0000000a:80000000

_macwsbit: ! 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

_macwinih: ! 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 0x00000000
 .long 0xffffffff

 .long 0x00000000
 .long 0xffffffff

 .long 0x00000006
 .long 0x0000000a

_macwinil: ! 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 0x7fffffff
 .long 0x80000000

 .long 0x7fffffff
 .long 0x80000000

 .long 0x7fffffff
 .long 0x80000000

_macwval1: ! R4
 .word 0x0000

 .word 0x0001
 .word 0x7fff
 .word 0xffff
 .word 0x7fff

 .word 0x0001
 .word 0x8000
 .word 0xffff
 .word 0x8000

 .word 0x7fff
 .word 0x8000
 .word 0x7fff
 .word 0x8000

 .word 0x7fff
 .word 0x8000
 .word 0x7fff
 .word 0x8000

 .word 0x0001
 .word 0x0001

 .word 0x0001
 .word 0x0001

 .word 0x0001
 .word 0x0001

_macwval2: ! R5
 .word 0x0000

 .word 0x7fff
 .word 0x0001
 .word 0x7fff
 .word 0xffff

 .word 0x8000
 .word 0x0001
 .word 0x8000
 .word 0xffff

 .word 0x7fff
 .word 0x8000
 .word 0x7fff
 .word 0x8000

 .word 0x8000
 .word 0x7fff
 .word 0x8000
 .word 0x7fff

 .word 0x0001
 .word 0xffff

 .word 0x0001
 .word 0xffff

 .word 0x0001
 .word 0xffff

_macwmach: ! R6
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0xffffffff
 .long 0xffffffff

 .long 0xffffffff
 .long 0xffffffff
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0x00000000
 .long 0x00000000
 .long 0x00000000

 .long 0xffffffff
 .long 0xffffffff
 .long 0x00000000
 .long 0x00000000

 .long 0x00000000
 .long 0xffffffff

 .long 0x00000001
 .long 0xffffffff

 .long 0x00000007
 .long 0x0000000b

_macwmacl: ! R7
 .long 0x00000000
 
 .long 0x00007fff
 .long 0x00007fff
 .long 0xffff8001
 .long 0xffff8001

 .long 0xffff8000
 .long 0xffff8000
 .long 0x00008000
 .long 0x00008000

 .long 0x3fff0001
 .long 0x40000000
 .long 0x3fff0001
 .long 0x40000000

 .long 0xc0008000
 .long 0xc0008000
 .long 0xc0008000
 .long 0xc0008000

 .long 0x80000000
 .long 0x7fffffff

 .long 0x7fffffff
 .long 0x80000000

 .long 0x7fffffff
 .long 0x80000000

!-----------------------------
.align 4
_pmacwsbit: .long _macwsbit
_pmacwinih: .long _macwinih
_pmacwinil: .long _macwinil
_pmacwval1: .long _macwval1
_pmacwval2: .long _macwval2
_pmacwmach: .long _macwmach
_pmacwmacl: .long _macwmacl
_pmacwcount: .long (_macwinih - _macwsbit)/4
_macw_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
@@
