Assembler for MIMD-TRAP2/3 (c) V.Angelov, v3.6, Dec 2007 SVN Revision 0, SVN Date 2007-12-27 Please send any comments to: angelov@kip.uni-heidelberg.de 17:58:33 / 21 Apr 2008 Source code file: src/DDDtst.asm Memory initialisation file: Log file: wrk/cpu1.log Program memory size in words: 4096 Default constants, read from /cad/tools/bin/asm_mimd.inc 1 CPU1 = 2 CC_SIGNED = 0X14 3 CC_NSIGNED = 0X04 4 CC_ZERO = 0X11 5 CC_NZERO = 0X01 6 CC_OVERFL = 0X13 7 CC_NOVERFL = 0X03 8 CC_NEG = 0X12 9 CC_NNEG = 0X02 10 CC_CARRY = 0X10 11 CC_NCARRY = 0X00 12 CC_BUSY = 0X17 13 CC_NBUSY = 0X07 14 CC_DIVB = 0X15 15 CC_NDIVB = 0X05 16 CC_ERRDIV = 0X16 17 CC_NERRDIV = 0X06 18 CC_UNCOND = 0X0F 19 CC_EQ = 0X11 20 CC_NEQ = 0X01 21 CC_NEG = 0X12 22 CC_POS0 = 0X02 23 CC_LTS = 0X14 24 CC_GES = 0X04 25 CC_LTU = 0X10 26 CC_GEU = 0X00 27 CC_LES = 0X19 28 CC_GTS = 0X09 29 CC_LEU = 0X18 30 CC_GTU = 0X08 31 RR_BYTE = 3 32 RR_WORD = 1 33 RR_DWORD = 0 34 LRA1 = LRA 3, 35 LRA2 = LRA 1, 36 LRA4 = LRA 0, 37 LRA4+ = LRA+ 0, 38 XOR = EOR 39 NOT = COM 40 SHLT = SHL 41 ANDT = AND 42 R0 = PRF[0] 43 R1 = PRF[1] 44 R2 = PRF[2] 45 R3 = PRF[3] 46 R4 = PRF[4] 47 R5 = PRF[5] 48 R6 = PRF[6] 49 R7 = PRF[7] 50 R8 = PRF[8] 51 R9 = PRF[9] 52 R10 = PRF[10] 53 R11 = PRF[11] 54 R12 = PRF[12] 55 R13 = PRF[13] 56 R14 = PRF[14] 57 R15 = PRF[15] 58 G0 = GRF[0] 59 G1 = GRF[1] 60 G2 = GRF[2] 61 G3 = GRF[3] 62 G4 = GRF[4] 63 G5 = GRF[5] 64 G6 = GRF[6] 65 G7 = GRF[7] 66 G8 = GRF[8] 67 G9 = GRF[9] 68 G10 = GRF[10] 69 G11 = GRF[11] 70 G12 = GRF[12] 71 G13 = GRF[13] 72 G14 = GRF[14] 73 G15 = GRF[15] 74 F0 = FIT[0] 75 F1 = FIT[1] 76 F2 = FIT[2] 77 F3 = FIT[3] 78 F4 = FIT[4] 79 F5 = FIT[5] 80 F6 = FIT[6] 81 F7 = FIT[7] 82 F8 = FIT[8] 83 F9 = FIT[9] 84 F10 = FIT[10] 85 F11 = FIT[11] 86 F12 = FIT[12] 87 F13 = FIT[13] 88 F14 = FIT[14] 89 F15 = FIT[15] 90 C0 = CON[0] 91 C1 = CON[1] 92 C2 = CON[2] 93 C3 = CON[3] 94 C4 = CON[4] 95 C5 = CON[5] 96 C6 = CON[6] 97 C7 = CON[7] 98 C8 = CON[8] 99 C9 = CON[9] 100 C10 = CON[10] 101 C11 = CON[11] 102 C12 = CON[12] 103 C13 = CON[13] 104 C14 = CON[14] 105 C15 = CON[15] 106 ASM_SVN_REV = 0 1: 2: ; Test program for simultaneous reading of the DME 3: ; all DMEM lockations by cpu3 via local bus. Then 4: ; the data red to grf[3]. All cpus simultaneously 5: ; the result with grf[3]. The errors occured are a 6: ; for cpu(n). 7: #def MEMWR=0xD000 8: #def DALAST=0xFFC 9: #def DAFIRST=0x0 10: 11: 12: nop 0000 : 0000_0000_0000_0000_0000_0000 13: 14: mov c0 r10 ; error counter 0001 : 1100_0010_0000_0110_0000_1010 15: sem 0x8 ; mask for synch 0002 : 0001_0000_0000_0000_0000_1000 16: #ifdef cpu3 17: 18: mov b1_0_0_00_01_11111 r0 ; initializ 19: spio r0 0x201 ; generator 20: iext 0xAAAAAAAA 21: mov 0xAAAAAAAA r0 22: spio r0 0x200 23: nop 24: nop 25: 26: mov DALAST r13 27: mov DAFIRST r15 28: 29: nxt: lpio 0x202 r0 30: nop 31: sra+ r0 32: cmp r13 r15 33: jmp cc_nzero nxt 34: mov c0 g3 35: #else 36: syn 0003 : 0000_1100_0000_0000_0000_0000 37: #endif ; all cpus expec 38: 39: mov DAFIRST r15 0004 : 1100_0110_0000_0000_0000_1111 40: mov DALAST r13 0005 : 1100_0111_1111_1111_1000_1101 41: sem 0x8 0006 : 0001_0000_0000_0000_0000_1000 42: #ifdef cpu3 43: mov b1_0_0_00_01_11111 r0 ; initializ 44: spio r0 0x201 ; generator 45: iext 0xAAAAAAAA 46: mov 0xAAAAAAAA r0 47: spio r0 0x200 48: nop 49: mov c0 g3 50: #else 51: syn 0007 : 0000_1100_0000_0000_0000_0000 52: #endif ; all cpus expec 53: 54: cyc: sem 0x8 0008 : 0001_0000_0000_0000_0000_1000 55: 56: #ifdef cpu3 ; generate again the pseudorandom seq 57: 58: 59: lpio 0x202 r0 60: nop 61: 62: ; lra4 r3 63: ; lra4 r3 64: mov r0 g3 65: #else 66: syn 0009 : 0000_1100_0000_0000_0000_0000 67: #endif 68: 69: lra4 r0 000A : 1101_0010_0000_0000_0000_0000 70: lra4+ r0 000B : 1111_0010_0000_0000_0000_0000 71: cmp r0 g3 000C : 1000_1000_0000_0010_0110_0000 72: jmpr cc_zero 2 000D : 0000_0100_0000_0001_1111_0001 73: add r10 c1 r10 000E : 1000_0010_1010_0110_0010_1010 74: cmp r13 r15 000F : 1000_1000_1101_0001_1110_0000 75: jmp cc_nzero cyc 0010 : 0000_0100_0000_0000_0000_0001 76: 77: 78: sem 0x7 ; set sync 0011 : 0001_0000_0000_0000_0000_0111 79: 80: iext 0xF000 0012 : 0101_0000_0000_0000_0000_1111 81: mov 0xF000 r14 0013 : 1100_0110_0000_0000_0000_1110 82: add r14 c5 r14 ; result i 0014 : 1000_0010_1110_0110_1010_1110 83: jmpr cc_busy 0 0015 : 0000_0100_0000_0010_1011_0111 84: sgio r10 r14 0016 : 0010_0100_1010_0001_1100_0000 85: 86: #ifdef cpu3 87: syn 88: jmpr cc_busy 0 89: mov 0x12 r0 90: sgio r0 0xA04 91: #endif 92: 93: #ifdef cpu0 94: mov c1 g0 95: #endif 96: #ifdef cpu1 97: mov c1 g1 0017 : 1100_0010_0000_0110_0011_0001 98: #endif 99: #ifdef cpu2 100: mov c1 g2 101: #endif 102: jmpr cc_uncond 0 0018 : 0000_0100_0000_0011_0000_1111 Source file read, 0 error(s), 0 warning(s).