關閉龍芯2E 之 cache

2021-06-08 09:07:18 字數 699 閱讀 1809

發表日期: 2006-11-01 19:50      

pmon 載入kernel 時,是載入到 kseg0 的(通過在 arch/mips/makefile 中: load-$(config_godsonev2e) += 0x80100000 指定),該位址空間是 unmaped cached 的,當 pmon 將控制權交給核心後,核心啟動過程中cache 是開啟的,但在跟蹤核心的啟動過程中,極易受 cache 的影響,每把斷點設在有 cache 操作的指令附近,都會隨機的宕機。

關閉龍芯的 cache ,依賴於訪問的位址空間

1. 訪問 ckseg0, 設定 config 暫存器的 k0域(config之低3位)為2,則關閉 cache

2. 訪問經 tlb 對映的位址空間, 設定相應的 tlb 表項之 c 域為2,則關閉cache

3. 訪問 xkphys, 指定 va[61:59] 為2,則關閉 cache

考慮到核心位於 ckseg0,故而跟蹤除錯核心的啟動過程時,只要作如下操作即可關閉cache,免受其擾:

mfc0 t0, cp0_config # 讀取cp0之 conifg 暫存器的值於通用暫存器t0中

and t0, 0xfffffff8 # 低 3 位置 0

or t0, 0x2 # 低 3 位置 2,關閉 cache

mtc0 t0, cp0_config # 寫回cp0之 conifg 暫存器

龍芯軟體開發 12 龍芯2E摸索前行

上一次說到怎麼樣執行起來,現在接著上次再進行分析下去。在 locate的程式,如下 locate la s0,start subu s0,ra,s0 ands0,0xffff0000 li t0,sr boot exc vec mtc0 t0,cop 0 status reg mtc0 zero,c...

龍芯2E平台程式效能分析

1.分析一段 的效能,最常用的方法是測量這段 的執行時間。假如我要分析下面這兩段 的效能差異,可以在 前後插入2個變數,分別記錄執行前後的時間,相減即可 一 int matrix 2047 7 int main 二 int matrix 2047 7 int main 則可以在a1,a2處插入 be...

寒假集訓2 E

有n n 100 個整數,已經按照從小到大順序排列好,現在另外給乙個整數x,請將該數插入到序列中,並使新的序列仍然有序。input 輸入資料報含多個測試例項,每組資料由兩行組成,第一行是n和m,第二行是已經有序的n個數的數列。n和m同時為0標示輸入資料的結束,本行不做處理。output 對於每個測試...