aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Documentation/translations/zh_TW/arch/parisc/registers.rst
blob: 695acb21134a1fda7e593b488a22a0c056fa12dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
.. include:: ../../disclaimer-zh_TW.rst

:Original: Documentation/arch/parisc/registers.rst

:翻譯:

 司延騰 Yanteng Si <siyanteng@loongson.cn>

.. _tw_parisc_registers:

=========================
Linux/PA-RISC的寄存器用法
=========================

[ 用星號表示目前尚未實現的計劃用途。 ]

ABI約定的通用寄存器
===================

控制寄存器
----------

============================    =================================
CR 0 (恢復計數器)               用於ptrace
CR 1-CR 7(無定義)               未使用
CR 8 (Protection ID)            每進程值*
CR 9, 12, 13 (PIDS)             未使用
CR10 (CCR)                      FPU延遲保存*
CR11                            按照ABI的規定(SAR)
CR14 (中斷向量)                 初始化爲 fault_vector
CR15 (EIEM)                     所有位初始化爲1*
CR16 (間隔計時器)               讀取週期數/寫入開始時間間隔計時器
CR17-CR22                       中斷參數
CR19                            中斷指令寄存器
CR20                            中斷空間寄存器
CR21                            中斷偏移量寄存器
CR22                            中斷 PSW
CR23 (EIRR)                     讀取未決中斷/寫入清除位
CR24 (TR 0)                     內核空間頁目錄指針
CR25 (TR 1)                     用戶空間頁目錄指針
CR26 (TR 2)                     不使用
CR27 (TR 3)                     線程描述符指針
CR28 (TR 4)                     不使用
CR29 (TR 5)                     不使用
CR30 (TR 6)                     當前 / 0
CR31 (TR 7)                     臨時寄存器,在不同地方使用
============================    =================================

空間寄存器(內核模式)
----------------------

========                        ==============================
SR0                             臨時空間寄存器
SR4-SR7                         設置爲0
SR1                             臨時空間寄存器
SR2                             內核不應該破壞它
SR3                             用於用戶空間訪問(當前進程)
========                        ==============================

空間寄存器(用戶模式)
----------------------

========                        ============================
SR0                             臨時空間寄存器
SR1                             臨時空間寄存器
SR2                             保存Linux gateway page的空間
SR3                             在內核中保存用戶地址空間的值
SR4-SR7                         定義了用戶/內核的短地址空間
========                        ============================


處理器狀態字
------------

======================          ================================================
W (64位地址)                  0
E (小尾端)                    0
S (安全間隔計時器)            0
T (產生分支陷阱)              0
H (高特權級陷阱)              0
L (低特權級陷阱)              0
N (撤銷下一條指令)            被C代碼使用
X (數據存儲中斷禁用)          0
B (產生分支)                  被C代碼使用
C (代碼地址轉譯)              1, 在執行實模式代碼時爲0
V (除法步長校正)              被C代碼使用
M (HPMC 掩碼)                 0, 在執行HPMC操作*時爲1
C/B (進/借 位)                被C代碼使用
O (有序引用)                  1*
F (性能監視器)                0
R (回收計數器陷阱)            0
Q (收集中斷狀態)              1 (在rfi之前的代碼中爲0)
P (保護標識符)                1*
D (數據地址轉譯)              1, 在執行實模式代碼時爲0
I (外部中斷掩碼)              由cli()/sti()宏使用。
======================          ================================================

“隱形”寄存器(影子寄存器)
---------------------------

=============                   ===================
PSW W 默認值                    0
PSW E 默認值                    0
影子寄存器                      被中斷處理代碼使用
TOC啓用位                       1
=============                   ===================

----------------------------------------------------------

PA-RISC架構定義了7個寄存器作爲“影子寄存器”。這些寄存器在
RETURN FROM INTERRUPTION AND RESTORE指令中使用,通過消
除中斷處理程序中對一般寄存器(GR)的保存和恢復的需要來減
少狀態保存和恢復時間。影子寄存器是GRs 1, 8, 9, 16, 17,
24和25。

-------------------------------------------------------------------------

寄存器使用說明,最初由John Marvin提供,並由Randolph Chung提供一些補充說明。

對於通用寄存器:

r1,r2,r19-r26,r28,r29 & r31可以在不保存它們的情況下被使用。當然,如果你
關心它們,在調用另一個程序之前,你也需要保存它們。上面的一些寄存器確實
有特殊的含義,你應該注意一下:

    r1:
       addil指令是硬性規定將其結果放在r1中,所以如果你使用這條指令要
       注意這點。

    r2:
       這就是返回指針。一般來說,你不想使用它,因爲你需要這個指針來返
       回給你的調用者。然而,它與這組寄存器組合在一起,因爲調用者不能
       依賴你返回時的值是相同的,也就是說,你可以將r2複製到另一個寄存
       器,並在作廢r2後通過該寄存器返回,這應該不會給調用程序帶來問題。

    r19-r22:
       這些通常被認爲是臨時寄存器。
       請注意,在64位中它們是arg7-arg4。

    r23-r26:
       這些是arg3-arg0,也就是說,如果你不再關心傳入的值,你可以使用
       它們。

    r28,r29:
       這倆是ret0和ret1。它們是你傳入返回值的地方。r28是主返回值。當返回
       小結構體時,r29也可以用來將數據傳回給調用程序。

    r30:
       棧指針

    r31:
       ble指令將返回指針放在這裏。


    r3-r18,r27,r30需要被保存和恢復。r3-r18只是一般用途的寄存器。
    r27是數據指針,用來使對全局變量的引用更容易。r30是棧指針。