OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [tools/] [tcl/] [rw11/] [asm.tcl] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 22 wfjm
# $Id: asm.tcl 552 2014-03-02 23:02:00Z mueller $
2 20 wfjm
#
3 22 wfjm
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4 20 wfjm
#
5
# This program is free software; you may redistribute and/or modify it under
6
# the terms of the GNU General Public License as published by the Free
7
# Software Foundation, either version 2, or at your option any later version.
8
#
9
# This program is distributed in the hope that it will be useful, but
10
# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
# for complete details.
13
#
14
#  Revision History:
15
# Date         Rev Version  Comment
16 22 wfjm
# 2014-03-01   552   1.0.1  BUGFIX: asmwait checks now pc if stop: defined
17 20 wfjm
# 2013-04-26   510   1.0    Initial version (extracted from util.tcl)
18
#
19
 
20
package provide rw11 1.0
21
 
22
package require rlink
23
package require rwxxtpp
24
 
25
namespace eval rw11 {
26
 
27
  #
28
  # asmrun: run a program loaded with ldasm
29
  # 
30
  proc asmrun {cpu symName opts} {
31
    upvar 1 $symName sym
32
    array set defs {r0 0 r1 0 r2 0 r3 0 r4 0 r5 0}
33
    array set defs $opts
34
 
35
    if {![info exists defs(pc)]} {
36
      if {[info exists sym(start)]} {
37
        set defs(pc) $sym(start)
38
      } else {
39
        error "neither opts(pc) nor sym(start) given"
40
      }
41
    }
42
 
43
    if {![info exists defs(sp)]} {
44
      if {[info exists sym(stack)]} {
45
        set defs(sp) $sym(stack)
46
      } elseif {[info exists sym(start)]} {
47
        set defs(sp) $sym(start)
48
      } else {
49
        error "neither opts(sp) nor sym(stack) or sym(start) given"
50
      }
51
    }
52
 
53
    $cpu cp -wr0 $defs(r0) \
54
            -wr1 $defs(r1) \
55
            -wr2 $defs(r2) \
56
            -wr3 $defs(r3) \
57
            -wr4 $defs(r4) \
58
            -wr5 $defs(r5)
59
 
60
    $cpu cp -wsp $defs(sp) \
61
            -stapc $defs(pc)
62
 
63
    return ""
64
  }
65
 
66
  #
67
  # asmwait: wait for completion of a program loaded with ldasm
68
  # 
69
  proc asmwait {cpu symName {tout 10.}} {
70
    upvar 1 $symName sym
71
    set dt [$cpu wtcpu -reset $tout]
72 22 wfjm
    if {$dt >= 0 && [info exists sym(stop)]} {
73 20 wfjm
      $cpu cp -rpc -edata $sym(stop)
74
    }
75
    return $dt
76
  }
77
 
78
  #
79
  # asmtreg: test registers after running a program loaded with ldasm
80
  # 
81
  proc asmtreg {cpu opts} {
82
    array set defs $opts
83
    set cpcmd ""
84
    foreach key [lsort [array names defs]] {
85
      append cpcmd " -r$key -edata $defs($key)"
86
    }
87
    eval $cpu cp $cpcmd
88
    return ""
89
  }
90
 
91
  #
92
  # asmtmem: test memory after running a program loaded with ldasm
93
  # 
94
  proc asmtmem {cpu base list} {
95
    set nw [llength $list]
96
    if {$nw == 0} {
97
      error "asmtreg called with empty list"
98
    }
99
    $cpu cp -wal $base -brm $nw -edata $list
100
    return ""
101
  }
102
 
103
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.