.. include:: ../../disclaimer-zh_CN.rst :Original: Documentation/arch/parisc/registers.rst :翻译: å¸å»¶è…¾ Yanteng Si <siyanteng@loongson.cn> .. _cn_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æ˜¯æ ˆæŒ‡é’ˆã€‚