⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachetrace.tcl

📁 一个用在mips体系结构中的操作系统
💻 TCL
字号:
## Copyright (C) 1996-1998 by the Board of Trustees#    of Leland Stanford Junior University.# # This file is part of the SimOS distribution. # See LICENSE file for terms of the license. ####### cache_trace.tcl######### Cache_trace routines (First cut will change in the future)### Set the variable cacheTraceFileName before sourcing the file### if you want a name other than the default ./cachetrace###### Cache trace format###### | 32 bit physical address |### | 20 bit virtual address  | 1 bit kernel/user | 2 bit type of cache miss | 9 lower bits of pid |### Note!!! currently the user/kernel mode and pid are correct only for the uniprocessor case######set cachetracePageMask 0xfffff000set cachetracePidMask  0x000001ffset cachetraceImiss    0x000set cachetraceRmiss    0x200set cachetraceWmiss    0x400set cachetraceUmiss    0x600set cachetraceIsKernel 0x800set cachetraceTick     0xffffffffif {![info exists cacheTraceFileName]} {    set cacheTraceFileName ./cachetrace}set cachetraceFd [binary open $cacheTraceFileName "w"]annotation set scache instr -tag cachetrace {    if {($PROCESS($ScacheCPU) == "idle") || ($PROCESS($ScacheCPU) == "runq")} {        set tmpPid 0    } else {        set tmpPid $PID($ScacheCPU)    }    set cachetraceVaddr [expr ($ScacheVaddr & $cachetracePageMask) | ($tmpPid & $cachetracePidMask) | $cachetraceImiss]    if {![inUserMode]} {        set cachetraceVaddr [expr $cachetraceVaddr | $cachetraceIsKernel]    }    binary write $cachetraceFd $ScachePaddr $cachetraceVaddr}annotation set scache read -tag cachetrace {    if {($PROCESS($ScacheCPU) == "idle") || ($PROCESS($ScacheCPU) == "runq")} {        set tmpPid 0    } else {        set tmpPid $PID($ScacheCPU)    }    set cachetraceVaddr [expr ($ScacheVaddr & $cachetracePageMask) | ($tmpPid & $cachetracePidMask) | $cachetraceRmiss]    if {![inUserMode]} {        set cachetraceVaddr [expr $cachetraceVaddr | $cachetraceIsKernel]    }    binary write $cachetraceFd $ScachePaddr $cachetraceVaddr}annotation set scache write -tag cachetrace {    if {($PROCESS($ScacheCPU) == "idle") || ($PROCESS($ScacheCPU) == "runq")} {        set tmpPid 0    } else {        set tmpPid $PID($ScacheCPU)    }    set cachetraceVaddr [expr ($ScacheVaddr & $cachetracePageMask) | ($tmpPid & $cachetracePidMask) | $cachetraceWmiss]    if {![inUserMode]} {        set cachetraceVaddr [expr $cachetraceVaddr | $cachetraceIsKernel]    }    binary write $cachetraceFd $ScachePaddr $cachetraceVaddr}annotation set scache upg -tag cachetrace {    if {($PROCESS($ScacheCPU) == "idle") || ($PROCESS($ScacheCPU) == "runq")} {        set tmpPid 0    } else {        set tmpPid $PID($ScacheCPU)    }    set cachetraceVaddr [expr ($ScacheVaddr & $cachetracePageMask) | ($tmpPid & $cachetracePidMask) | $cachetraceUmiss]    if {![inUserMode]} {        set cachetraceVaddr [expr $cachetraceVaddr | $cachetraceIsKernel]    }    binary write $cachetraceFd $ScachePaddr $cachetraceVaddr}annotation set scache sc_upg -tag cachetrace {    if {($PROCESS($ScacheCPU) == "idle") || ($PROCESS($ScacheCPU) == "runq")} {        set tmpPid 0    } else {        set tmpPid $PID($ScacheCPU)    }    set cachetraceVaddr [expr ($ScacheVaddr & $cachetracePageMask) | ($tmpPid & $cachetracePidMask) | $cachetraceUmiss]    if {![inUserMode]} {        set cachetraceVaddr [expr $cachetraceVaddr | $cachetraceIsKernel]    }    binary write $cachetraceFd $ScachePaddr $cachetraceVaddr}annotation set pc [symbol read kernel::clock:START] -tag cachetrace {    if {$ScacheCPU == 0} {        binary write $cachetraceFd $cachetraceTick $cachetraceTick    }}annotation set simos exit -tag cachetrace {    binary close $cachetraceFd}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -