source: trunk/softs/tests_ccvcache_v4/common/subr.S @ 276

Last change on this file since 276 was 270, checked in by haoliu, 12 years ago

fix bug for test_sync

File size: 1.1 KB
Line 
1#include <registers.h>
2/* test common subroutines
3
4        .text
5/*
6 * void print(char *): print a string to the multitty.
7 * assumes k0 points to the tty base.
8 */
9        .globl print
10print:
11        .set noreorder
12        move    t0, a0
131:
14        lb      t1, 0(t0);
15        beq     t1, zero, end
16        nop
17        sb      t1, 0(k0)
18        addiu   t0, t0, 1
19        j       1b
20        nop
21end:
22        jr      ra
23        nop
24
25/*
26 * void print_sync(char *): print a string to the multitty with a sync instruction for each character.
27 * assumes k0 points to the tty base.
28 */
29        .globl print_sync
30print_sync:
31        .set noreorder
32        move    t0, a0
331:
34        lb      t1, 0(t0);
35        beq     t1, zero, end_print_sync
36        nop
37        sb      t1, 0(k0)
38    sync
39        addiu   t0, t0, 1
40        j       1b
41        nop
42end_print_sync:
43        jr      ra
44        nop
45
46
47/*
48 * void printx(uint32_t): print a number in hex to the multitty
49 * assumes points to the tty base.
50 */
51        .globl printx
52printx:
53        .set noreorder
54        move    t0, a0
55        li      t1, '0'
56        sb      t1, 0(k0)
57        li      t1, 'x'
58        sb      t1, 0(k0)
59        li      t1, 8
601:
61        lui     t2, 0xf000;
62        and     t2, t0, t2
63        srl     t2, t2, 28
64        slti    t3, t2, 0xa
65        beq     t3, zero, 2f /* in range A-F */
66        nop
67        addi    t2, t2, '0'
68        j       3f
69        nop
702:
71        addi    t2, t2, 'A' - 0xa
723:
73        sb      t2, 0(k0)
74        addi    t1, t1, -1
75        bgtz    t1, 1b
76        sll     t0, t0, 4
77        jr      ra
78        nop
Note: See TracBrowser for help on using the repository browser.