Linux 6.7-rc7
[linux-modified.git] / Documentation / translations / zh_TW / arch / parisc / registers.rst
1 .. include:: ../../disclaimer-zh_TW.rst
2
3 :Original: Documentation/arch/parisc/registers.rst
4
5 :翻譯:
6
7  司延騰 Yanteng Si <siyanteng@loongson.cn>
8
9 .. _tw_parisc_registers:
10
11 =========================
12 Linux/PA-RISC的寄存器用法
13 =========================
14
15 [ 用星號表示目前尚未實現的計劃用途。 ]
16
17 ABI約定的通用寄存器
18 ===================
19
20 控制寄存器
21 ----------
22
23 ============================    =================================
24 CR 0 (恢復計數器)               用於ptrace
25 CR 1-CR 7(無定義)               未使用
26 CR 8 (Protection ID)            每進程值*
27 CR 9, 12, 13 (PIDS)             未使用
28 CR10 (CCR)                      FPU延遲保存*
29 CR11                            按照ABI的規定(SAR)
30 CR14 (中斷向量)                 初始化爲 fault_vector
31 CR15 (EIEM)                     所有位初始化爲1*
32 CR16 (間隔計時器)               讀取週期數/寫入開始時間間隔計時器
33 CR17-CR22                       中斷參數
34 CR19                            中斷指令寄存器
35 CR20                            中斷空間寄存器
36 CR21                            中斷偏移量寄存器
37 CR22                            中斷 PSW
38 CR23 (EIRR)                     讀取未決中斷/寫入清除位
39 CR24 (TR 0)                     內核空間頁目錄指針
40 CR25 (TR 1)                     用戶空間頁目錄指針
41 CR26 (TR 2)                     不使用
42 CR27 (TR 3)                     線程描述符指針
43 CR28 (TR 4)                     不使用
44 CR29 (TR 5)                     不使用
45 CR30 (TR 6)                     當前 / 0
46 CR31 (TR 7)                     臨時寄存器,在不同地方使用
47 ============================    =================================
48
49 空間寄存器(內核模式)
50 ----------------------
51
52 ========                        ==============================
53 SR0                             臨時空間寄存器
54 SR4-SR7                         設置爲0
55 SR1                             臨時空間寄存器
56 SR2                             內核不應該破壞它
57 SR3                             用於用戶空間訪問(當前進程)
58 ========                        ==============================
59
60 空間寄存器(用戶模式)
61 ----------------------
62
63 ========                        ============================
64 SR0                             臨時空間寄存器
65 SR1                             臨時空間寄存器
66 SR2                             保存Linux gateway page的空間
67 SR3                             在內核中保存用戶地址空間的值
68 SR4-SR7                         定義了用戶/內核的短地址空間
69 ========                        ============================
70
71
72 處理器狀態字
73 ------------
74
75 ======================          ================================================
76 W (64位地址)                  0
77 E (小尾端)                    0
78 S (安全間隔計時器)            0
79 T (產生分支陷阱)              0
80 H (高特權級陷阱)              0
81 L (低特權級陷阱)              0
82 N (撤銷下一條指令)            被C代碼使用
83 X (數據存儲中斷禁用)          0
84 B (產生分支)                  被C代碼使用
85 C (代碼地址轉譯)              1, 在執行實模式代碼時爲0
86 V (除法步長校正)              被C代碼使用
87 M (HPMC 掩碼)                 0, 在執行HPMC操作*時爲1
88 C/B (進/借 位)                被C代碼使用
89 O (有序引用)                  1*
90 F (性能監視器)                0
91 R (回收計數器陷阱)            0
92 Q (收集中斷狀態)              1 (在rfi之前的代碼中爲0)
93 P (保護標識符)                1*
94 D (數據地址轉譯)              1, 在執行實模式代碼時爲0
95 I (外部中斷掩碼)              由cli()/sti()宏使用。
96 ======================          ================================================
97
98 “隱形”寄存器(影子寄存器)
99 ---------------------------
100
101 =============                   ===================
102 PSW W 默認值                    0
103 PSW E 默認值                    0
104 影子寄存器                      被中斷處理代碼使用
105 TOC啓用位                       1
106 =============                   ===================
107
108 ----------------------------------------------------------
109
110 PA-RISC架構定義了7個寄存器作爲“影子寄存器”。這些寄存器在
111 RETURN FROM INTERRUPTION AND RESTORE指令中使用,通過消
112 除中斷處理程序中對一般寄存器(GR)的保存和恢復的需要來減
113 少狀態保存和恢復時間。影子寄存器是GRs 1, 8, 9, 16, 17,
114 24和25。
115
116 -------------------------------------------------------------------------
117
118 寄存器使用說明,最初由John Marvin提供,並由Randolph Chung提供一些補充說明。
119
120 對於通用寄存器:
121
122 r1,r2,r19-r26,r28,r29 & r31可以在不保存它們的情況下被使用。當然,如果你
123 關心它們,在調用另一個程序之前,你也需要保存它們。上面的一些寄存器確實
124 有特殊的含義,你應該注意一下:
125
126     r1:
127        addil指令是硬性規定將其結果放在r1中,所以如果你使用這條指令要
128        注意這點。
129
130     r2:
131        這就是返回指針。一般來說,你不想使用它,因爲你需要這個指針來返
132        回給你的調用者。然而,它與這組寄存器組合在一起,因爲調用者不能
133        依賴你返回時的值是相同的,也就是說,你可以將r2複製到另一個寄存
134        器,並在作廢r2後通過該寄存器返回,這應該不會給調用程序帶來問題。
135
136     r19-r22:
137        這些通常被認爲是臨時寄存器。
138        請注意,在64位中它們是arg7-arg4。
139
140     r23-r26:
141        這些是arg3-arg0,也就是說,如果你不再關心傳入的值,你可以使用
142        它們。
143
144     r28,r29:
145        這倆是ret0和ret1。它們是你傳入返回值的地方。r28是主返回值。當返回
146        小結構體時,r29也可以用來將數據傳回給調用程序。
147
148     r30:
149        棧指針
150
151     r31:
152        ble指令將返回指針放在這裏。
153
154
155     r3-r18,r27,r30需要被保存和恢復。r3-r18只是一般用途的寄存器。
156     r27是數據指針,用來使對全局變量的引用更容易。r30是棧指針。
157