.. 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是棧指é‡ã€‚