xref: /linux/Documentation/translations/zh_TW/arch/loongarch/introduction.rst (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
1f949cb75SHu Haowen.. SPDX-License-Identifier: GPL-2.0
2f949cb75SHu Haowen
3f949cb75SHu Haowen.. include:: ../../disclaimer-zh_TW.rst
4f949cb75SHu Haowen
5f949cb75SHu Haowen:Original: Documentation/arch/loongarch/introduction.rst
6f949cb75SHu Haowen:Translator: Huacai Chen <chenhuacai@loongson.cn>
7f949cb75SHu Haowen
8f949cb75SHu Haowen=============
9f949cb75SHu HaowenLoongArch介紹
10f949cb75SHu Haowen=============
11f949cb75SHu Haowen
12f949cb75SHu HaowenLoongArch是一種新的RISC ISA,在一定程度上類似於MIPS和RISC-V。LoongArch指令集
13f949cb75SHu Haowen包括一個精簡32位版(LA32R)、一個標準32位版(LA32S)、一個64位版(LA64)。
14f949cb75SHu HaowenLoongArch定義了四個特權級(PLV0~PLV3),其中PLV0是最高特權級,用於內核;而PLV3
15f949cb75SHu Haowen是最低特權級,用於應用程序。本文檔介紹了LoongArch的寄存器、基礎指令集、虛擬內
16f949cb75SHu Haowen存以及其他一些主題。
17f949cb75SHu Haowen
18f949cb75SHu Haowen寄存器
19f949cb75SHu Haowen======
20f949cb75SHu Haowen
21f949cb75SHu HaowenLoongArch的寄存器包括通用寄存器(GPRs)、浮點寄存器(FPRs)、向量寄存器(VRs)
22f949cb75SHu Haowen和用於特權模式(PLV0)的控制狀態寄存器(CSRs)。
23f949cb75SHu Haowen
24f949cb75SHu Haowen通用寄存器
25f949cb75SHu Haowen----------
26f949cb75SHu Haowen
27f949cb75SHu HaowenLoongArch包括32個通用寄存器( ``$r0`` ~ ``$r31`` ),LA32中每個寄存器爲32位寬,
28f949cb75SHu HaowenLA64中每個寄存器爲64位寬。 ``$r0`` 的內容總是固定爲0,而其他寄存器在體系結構層面
29f949cb75SHu Haowen沒有特殊功能。( ``$r1`` 算是一個例外,在BL指令中固定用作鏈接返回寄存器。)
30f949cb75SHu Haowen
31f949cb75SHu Haowen內核使用了一套LoongArch寄存器約定,定義在LoongArch ELF psABI規範中,詳細描述參見
32f949cb75SHu Haowen:ref:`參考文獻 <loongarch-references-zh_TW>`:
33f949cb75SHu Haowen
34f949cb75SHu Haowen================= =============== =================== ==========
35f949cb75SHu Haowen寄存器名          別名            用途                跨調用保持
36f949cb75SHu Haowen================= =============== =================== ==========
37f949cb75SHu Haowen``$r0``           ``$zero``       常量0               不使用
38f949cb75SHu Haowen``$r1``           ``$ra``         返回地址            否
39f949cb75SHu Haowen``$r2``           ``$tp``         TLS/線程信息指針    不使用
40f949cb75SHu Haowen``$r3``           ``$sp``         棧指針              是
41f949cb75SHu Haowen``$r4``-``$r11``  ``$a0``-``$a7`` 參數寄存器          否
42f949cb75SHu Haowen``$r4``-``$r5``   ``$v0``-``$v1`` 返回值              否
43f949cb75SHu Haowen``$r12``-``$r20`` ``$t0``-``$t8`` 臨時寄存器          否
44f949cb75SHu Haowen``$r21``          ``$u0``         每CPU變量基地址     不使用
45f949cb75SHu Haowen``$r22``          ``$fp``         幀指針              是
46f949cb75SHu Haowen``$r23``-``$r31`` ``$s0``-``$s8`` 靜態寄存器          是
47f949cb75SHu Haowen================= =============== =================== ==========
48f949cb75SHu Haowen
49f949cb75SHu Haowen.. note::
50f949cb75SHu Haowen    注意: ``$r21`` 寄存器在ELF psABI中保留未使用,但是在Linux內核用於保
51f949cb75SHu Haowen    存每CPU變量基地址。該寄存器沒有ABI命名,不過在內核中稱爲 ``$u0`` 。在
52f949cb75SHu Haowen    一些遺留代碼中有時可能見到 ``$v0`` 和 ``$v1`` ,它們是 ``$a0`` 和
53f949cb75SHu Haowen    ``$a1`` 的別名,屬於已經廢棄的用法。
54f949cb75SHu Haowen
55f949cb75SHu Haowen浮點寄存器
56f949cb75SHu Haowen----------
57f949cb75SHu Haowen
58f949cb75SHu Haowen當系統中存在FPU時,LoongArch有32個浮點寄存器( ``$f0`` ~ ``$f31`` )。在LA64
59f949cb75SHu Haowen的CPU核上,每個寄存器均爲64位寬。
60f949cb75SHu Haowen
61f949cb75SHu Haowen浮點寄存器的使用約定與LoongArch ELF psABI規範的描述相同:
62f949cb75SHu Haowen
63f949cb75SHu Haowen================= ================== =================== ==========
64f949cb75SHu Haowen寄存器名          別名               用途                跨調用保持
65f949cb75SHu Haowen================= ================== =================== ==========
66f949cb75SHu Haowen``$f0``-``$f7``   ``$fa0``-``$fa7``  參數寄存器          否
67f949cb75SHu Haowen``$f0``-``$f1``   ``$fv0``-``$fv1``  返回值              否
68f949cb75SHu Haowen``$f8``-``$f23``  ``$ft0``-``$ft15`` 臨時寄存器          否
69f949cb75SHu Haowen``$f24``-``$f31`` ``$fs0``-``$fs7``  靜態寄存器          是
70f949cb75SHu Haowen================= ================== =================== ==========
71f949cb75SHu Haowen
72f949cb75SHu Haowen.. note::
73f949cb75SHu Haowen    注意:在一些遺留代碼中有時可能見到 ``$fv0`` 和 ``$fv1`` ,它們是
74f949cb75SHu Haowen    ``$fa0`` 和 ``$fa1`` 的別名,屬於已經廢棄的用法。
75f949cb75SHu Haowen
76f949cb75SHu Haowen
77f949cb75SHu Haowen向量寄存器
78f949cb75SHu Haowen----------
79f949cb75SHu Haowen
80f949cb75SHu HaowenLoongArch現有兩種向量擴展:
81f949cb75SHu Haowen
82f949cb75SHu Haowen- 128位向量擴展LSX(全稱Loongson SIMD eXtention),
83f949cb75SHu Haowen- 256位向量擴展LASX(全稱Loongson Advanced SIMD eXtention)。
84f949cb75SHu Haowen
85f949cb75SHu HaowenLSX使用 ``$v0`` ~ ``$v31`` 向量寄存器,而LASX則使用 ``$x0`` ~ ``$x31`` 。
86f949cb75SHu Haowen
87f949cb75SHu Haowen浮點寄存器和向量寄存器是複用的,比如:在一個實現了LSX和LASX的核上, ``$x0`` 的
88f949cb75SHu Haowen低128位與 ``$v0`` 共用, ``$v0`` 的低64位與 ``$f0`` 共用,其他寄存器依此類推。
89f949cb75SHu Haowen
90f949cb75SHu Haowen控制狀態寄存器
91f949cb75SHu Haowen--------------
92f949cb75SHu Haowen
93f949cb75SHu Haowen控制狀態寄存器只能在特權模式(PLV0)下訪問:
94f949cb75SHu Haowen
95f949cb75SHu Haowen================= ==================================== ==========
96f949cb75SHu Haowen地址              全稱描述                             簡稱
97f949cb75SHu Haowen================= ==================================== ==========
98f949cb75SHu Haowen0x0               當前模式信息                         CRMD
99f949cb75SHu Haowen0x1               異常前模式信息                       PRMD
100f949cb75SHu Haowen0x2               擴展部件使能                         EUEN
101f949cb75SHu Haowen0x3               雜項控制                             MISC
102f949cb75SHu Haowen0x4               異常配置                             ECFG
103f949cb75SHu Haowen0x5               異常狀態                             ESTAT
104f949cb75SHu Haowen0x6               異常返回地址                         ERA
105f949cb75SHu Haowen0x7               出錯(Faulting)虛擬地址               BADV
106f949cb75SHu Haowen0x8               出錯(Faulting)指令字                 BADI
107f949cb75SHu Haowen0xC               異常入口地址                         EENTRY
108f949cb75SHu Haowen0x10              TLB索引                              TLBIDX
109f949cb75SHu Haowen0x11              TLB表項高位                          TLBEHI
110f949cb75SHu Haowen0x12              TLB表項低位0                         TLBELO0
111f949cb75SHu Haowen0x13              TLB表項低位1                         TLBELO1
112f949cb75SHu Haowen0x18              地址空間標識符                       ASID
113f949cb75SHu Haowen0x19              低半地址空間頁全局目錄基址           PGDL
114f949cb75SHu Haowen0x1A              高半地址空間頁全局目錄基址           PGDH
115f949cb75SHu Haowen0x1B              頁全局目錄基址                       PGD
116f949cb75SHu Haowen0x1C              頁表遍歷控制低半部分                 PWCL
117f949cb75SHu Haowen0x1D              頁表遍歷控制高半部分                 PWCH
118f949cb75SHu Haowen0x1E              STLB頁大小                           STLBPS
119f949cb75SHu Haowen0x1F              縮減虛地址配置                       RVACFG
120f949cb75SHu Haowen0x20              CPU編號                              CPUID
121f949cb75SHu Haowen0x21              特權資源配置信息1                    PRCFG1
122f949cb75SHu Haowen0x22              特權資源配置信息2                    PRCFG2
123f949cb75SHu Haowen0x23              特權資源配置信息3                    PRCFG3
124f949cb75SHu Haowen0x30+n (0≤n≤15)   數據保存寄存器                       SAVEn
125f949cb75SHu Haowen0x40              定時器編號                           TID
126f949cb75SHu Haowen0x41              定時器配置                           TCFG
127f949cb75SHu Haowen0x42              定時器值                             TVAL
128f949cb75SHu Haowen0x43              計時器補償                           CNTC
129f949cb75SHu Haowen0x44              定時器中斷清除                       TICLR
130f949cb75SHu Haowen0x60              LLBit相關控制                        LLBCTL
131f949cb75SHu Haowen0x80              實現相關控制1                        IMPCTL1
132f949cb75SHu Haowen0x81              實現相關控制2                        IMPCTL2
133f949cb75SHu Haowen0x88              TLB重填異常入口地址                  TLBRENTRY
134f949cb75SHu Haowen0x89              TLB重填異常出錯(Faulting)虛地址      TLBRBADV
135f949cb75SHu Haowen0x8A              TLB重填異常返回地址                  TLBRERA
136f949cb75SHu Haowen0x8B              TLB重填異常數據保存                  TLBRSAVE
137f949cb75SHu Haowen0x8C              TLB重填異常表項低位0                 TLBRELO0
138f949cb75SHu Haowen0x8D              TLB重填異常表項低位1                 TLBRELO1
139f949cb75SHu Haowen0x8E              TLB重填異常表項高位                  TLBEHI
140f949cb75SHu Haowen0x8F              TLB重填異常前模式信息                TLBRPRMD
141f949cb75SHu Haowen0x90              機器錯誤控制                         MERRCTL
142f949cb75SHu Haowen0x91              機器錯誤信息1                        MERRINFO1
143f949cb75SHu Haowen0x92              機器錯誤信息2                        MERRINFO2
144f949cb75SHu Haowen0x93              機器錯誤異常入口地址                 MERRENTRY
145f949cb75SHu Haowen0x94              機器錯誤異常返回地址                 MERRERA
146f949cb75SHu Haowen0x95              機器錯誤異常數據保存                 MERRSAVE
147f949cb75SHu Haowen0x98              高速緩存標籤                         CTAG
148f949cb75SHu Haowen0x180+n (0≤n≤3)   直接映射配置窗口n                    DMWn
149f949cb75SHu Haowen0x200+2n (0≤n≤31) 性能監測配置n                        PMCFGn
150f949cb75SHu Haowen0x201+2n (0≤n≤31) 性能監測計數器n                      PMCNTn
151f949cb75SHu Haowen0x300             內存讀寫監視點整體控制               MWPC
152f949cb75SHu Haowen0x301             內存讀寫監視點整體狀態               MWPS
153f949cb75SHu Haowen0x310+8n (0≤n≤7)  內存讀寫監視點n配置1                 MWPnCFG1
154f949cb75SHu Haowen0x311+8n (0≤n≤7)  內存讀寫監視點n配置2                 MWPnCFG2
155f949cb75SHu Haowen0x312+8n (0≤n≤7)  內存讀寫監視點n配置3                 MWPnCFG3
156f949cb75SHu Haowen0x313+8n (0≤n≤7)  內存讀寫監視點n配置4                 MWPnCFG4
157f949cb75SHu Haowen0x380             取指監視點整體控制                   FWPC
158f949cb75SHu Haowen0x381             取指監視點整體狀態                   FWPS
159f949cb75SHu Haowen0x390+8n (0≤n≤7)  取指監視點n配置1                     FWPnCFG1
160f949cb75SHu Haowen0x391+8n (0≤n≤7)  取指監視點n配置2                     FWPnCFG2
161f949cb75SHu Haowen0x392+8n (0≤n≤7)  取指監視點n配置3                     FWPnCFG3
162f949cb75SHu Haowen0x393+8n (0≤n≤7)  取指監視點n配置4                     FWPnCFG4
163f949cb75SHu Haowen0x500             調試寄存器                           DBG
164f949cb75SHu Haowen0x501             調試異常返回地址                     DERA
165f949cb75SHu Haowen0x502             調試數據保存                         DSAVE
166f949cb75SHu Haowen================= ==================================== ==========
167f949cb75SHu Haowen
168f949cb75SHu HaowenERA,TLBRERA,MERRERA和DERA有時也分別稱爲EPC,TLBREPC,MERREPC和DEPC。
169f949cb75SHu Haowen
170f949cb75SHu Haowen基礎指令集
171f949cb75SHu Haowen==========
172f949cb75SHu Haowen
173f949cb75SHu Haowen指令格式
174f949cb75SHu Haowen--------
175f949cb75SHu Haowen
176f949cb75SHu HaowenLoongArch的指令字長爲32位,一共有9種基本指令格式(以及一些變體):
177f949cb75SHu Haowen
178f949cb75SHu Haowen=========== ==========================
179f949cb75SHu Haowen格式名稱    指令構成
180f949cb75SHu Haowen=========== ==========================
181f949cb75SHu Haowen2R          Opcode + Rj + Rd
182f949cb75SHu Haowen3R          Opcode + Rk + Rj + Rd
183f949cb75SHu Haowen4R          Opcode + Ra + Rk + Rj + Rd
184f949cb75SHu Haowen2RI8        Opcode + I8 + Rj + Rd
185f949cb75SHu Haowen2RI12       Opcode + I12 + Rj + Rd
186f949cb75SHu Haowen2RI14       Opcode + I14 + Rj + Rd
187f949cb75SHu Haowen2RI16       Opcode + I16 + Rj + Rd
188f949cb75SHu Haowen1RI21       Opcode + I21L + Rj + I21H
189f949cb75SHu HaowenI26         Opcode + I26L + I26H
190f949cb75SHu Haowen=========== ==========================
191f949cb75SHu Haowen
192f949cb75SHu HaowenOpcode是指令操作碼,Rj和Rk是源操作數(寄存器),Rd是目標操作數(寄存器),Ra是
193f949cb75SHu Haowen4R-type格式特有的附加操作數(寄存器)。I8/I12/I14/I16/I21/I26分別是8位/12位/14位/
194f949cb75SHu Haowen16位/21位/26位的立即數。其中較長的21位和26位立即數在指令字中被分割爲高位部分與低位
195f949cb75SHu Haowen部分,所以你們在這裏的格式描述中能夠看到I21L/I21HI26L/I26H這樣帶後綴的表述。
196f949cb75SHu Haowen
197f949cb75SHu Haowen指令列表
198f949cb75SHu Haowen--------
199f949cb75SHu Haowen
200f949cb75SHu Haowen爲了簡便起見,我們在此只羅列一下指令名稱(助記符),需要詳細信息請閱讀
201f949cb75SHu Haowen:ref:`參考文獻 <loongarch-references-zh_TW>` 中的文檔。
202f949cb75SHu Haowen
203f949cb75SHu Haowen1. 算術運算指令::
204f949cb75SHu Haowen
205f949cb75SHu Haowen    ADD.W SUB.W ADDI.W ADD.D SUB.D ADDI.D
206f949cb75SHu Haowen    SLT SLTU SLTI SLTUI
207f949cb75SHu Haowen    AND OR NOR XOR ANDN ORN ANDI ORI XORI
208f949cb75SHu Haowen    MUL.W MULH.W MULH.WU DIV.W DIV.WU MOD.W MOD.WU
209f949cb75SHu Haowen    MUL.D MULH.D MULH.DU DIV.D DIV.DU MOD.D MOD.DU
210f949cb75SHu Haowen    PCADDI PCADDU12I PCADDU18I
211f949cb75SHu Haowen    LU12I.W LU32I.D LU52I.D ADDU16I.D
212f949cb75SHu Haowen
213f949cb75SHu Haowen2. 移位運算指令::
214f949cb75SHu Haowen
215f949cb75SHu Haowen    SLL.W SRL.W SRA.W ROTR.W SLLI.W SRLI.W SRAI.W ROTRI.W
216f949cb75SHu Haowen    SLL.D SRL.D SRA.D ROTR.D SLLI.D SRLI.D SRAI.D ROTRI.D
217f949cb75SHu Haowen
218f949cb75SHu Haowen3. 位域操作指令::
219f949cb75SHu Haowen
220f949cb75SHu Haowen    EXT.W.B EXT.W.H CLO.W CLO.D SLZ.W CLZ.D CTO.W CTO.D CTZ.W CTZ.D
221f949cb75SHu Haowen    BYTEPICK.W BYTEPICK.D BSTRINS.W BSTRINS.D BSTRPICK.W BSTRPICK.D
222f949cb75SHu Haowen    REVB.2H REVB.4H REVB.2W REVB.D REVH.2W REVH.D BITREV.4B BITREV.8B BITREV.W BITREV.D
223f949cb75SHu Haowen    MASKEQZ MASKNEZ
224f949cb75SHu Haowen
225f949cb75SHu Haowen4. 分支轉移指令::
226f949cb75SHu Haowen
227f949cb75SHu Haowen    BEQ BNE BLT BGE BLTU BGEU BEQZ BNEZ B BL JIRL
228f949cb75SHu Haowen
229f949cb75SHu Haowen5. 訪存讀寫指令::
230f949cb75SHu Haowen
231f949cb75SHu Haowen    LD.B LD.BU LD.H LD.HU LD.W LD.WU LD.D ST.B ST.H ST.W ST.D
232f949cb75SHu Haowen    LDX.B LDX.BU LDX.H LDX.HU LDX.W LDX.WU LDX.D STX.B STX.H STX.W STX.D
233f949cb75SHu Haowen    LDPTR.W LDPTR.D STPTR.W STPTR.D
234f949cb75SHu Haowen    PRELD PRELDX
235f949cb75SHu Haowen
236f949cb75SHu Haowen6. 原子操作指令::
237f949cb75SHu Haowen
238f949cb75SHu Haowen    LL.W SC.W LL.D SC.D
239f949cb75SHu Haowen    AMSWAP.W AMSWAP.D AMADD.W AMADD.D AMAND.W AMAND.D AMOR.W AMOR.D AMXOR.W AMXOR.D
240f949cb75SHu Haowen    AMMAX.W AMMAX.D AMMIN.W AMMIN.D
241f949cb75SHu Haowen
242f949cb75SHu Haowen7. 柵障指令::
243f949cb75SHu Haowen
244f949cb75SHu Haowen    IBAR DBAR
245f949cb75SHu Haowen
246f949cb75SHu Haowen8. 特殊指令::
247f949cb75SHu Haowen
248f949cb75SHu Haowen    SYSCALL BREAK CPUCFG NOP IDLE ERTN(ERET) DBCL(DBGCALL) RDTIMEL.W RDTIMEH.W RDTIME.D
249f949cb75SHu Haowen    ASRTLE.D ASRTGT.D
250f949cb75SHu Haowen
251f949cb75SHu Haowen9. 特權指令::
252f949cb75SHu Haowen
253f949cb75SHu Haowen    CSRRD CSRWR CSRXCHG
254f949cb75SHu Haowen    IOCSRRD.B IOCSRRD.H IOCSRRD.W IOCSRRD.D IOCSRWR.B IOCSRWR.H IOCSRWR.W IOCSRWR.D
255f949cb75SHu Haowen    CACOP TLBP(TLBSRCH) TLBRD TLBWR TLBFILL TLBCLR TLBFLUSH INVTLB LDDIR LDPTE
256f949cb75SHu Haowen
257f949cb75SHu Haowen虛擬內存
258f949cb75SHu Haowen========
259f949cb75SHu Haowen
260f949cb75SHu HaowenLoongArch可以使用直接映射虛擬內存和分頁映射虛擬內存。
261f949cb75SHu Haowen
262f949cb75SHu Haowen直接映射虛擬內存通過CSR.DMWn(n=0~3)來進行配置,虛擬地址(VA)和物理地址(PA)
263f949cb75SHu Haowen之間有簡單的映射關係::
264f949cb75SHu Haowen
265f949cb75SHu Haowen VA = PA + 固定偏移
266f949cb75SHu Haowen
267f949cb75SHu Haowen分頁映射的虛擬地址(VA)和物理地址(PA)有任意的映射關係,這種關係記錄在TLB和頁
268f949cb75SHu Haowen表中。LoongArch的TLB包括一個全相聯的MTLB(Multiple Page Size TLB,多樣頁大小TLB)
269f949cb75SHu Haowen和一個組相聯的STLB(Single Page Size TLB,單一頁大小TLB)。
270f949cb75SHu Haowen
271f949cb75SHu Haowen缺省狀態下,LA32的整個虛擬地址空間配置如下:
272f949cb75SHu Haowen
273f949cb75SHu Haowen============ =========================== ===========================
274f949cb75SHu Haowen區段名       地址範圍                    屬性
275f949cb75SHu Haowen============ =========================== ===========================
276f949cb75SHu Haowen``UVRANGE``  ``0x00000000 - 0x7FFFFFFF`` 分頁映射, 可緩存, PLV0~3
277f949cb75SHu Haowen``KPRANGE0`` ``0x80000000 - 0x9FFFFFFF`` 直接映射, 非緩存, PLV0
278f949cb75SHu Haowen``KPRANGE1`` ``0xA0000000 - 0xBFFFFFFF`` 直接映射, 可緩存, PLV0
279f949cb75SHu Haowen``KVRANGE``  ``0xC0000000 - 0xFFFFFFFF`` 分頁映射, 可緩存, PLV0
280f949cb75SHu Haowen============ =========================== ===========================
281f949cb75SHu Haowen
282f949cb75SHu Haowen用戶態(PLV3)只能訪問UVRANGE,對於直接映射的KPRANGE0和KPRANGE1,將虛擬地址的第
283f949cb75SHu Haowen30~31位清零就等於物理地址。例如:物理地址0x00001000對應的非緩存直接映射虛擬地址
284f949cb75SHu Haowen是0x80001000,而其可緩存直接映射虛擬地址是0xA0001000。
285f949cb75SHu Haowen
286f949cb75SHu Haowen缺省狀態下,LA64的整個虛擬地址空間配置如下:
287f949cb75SHu Haowen
288f949cb75SHu Haowen============ ====================== ==================================
289f949cb75SHu Haowen區段名       地址範圍               屬性
290f949cb75SHu Haowen============ ====================== ==================================
291f949cb75SHu Haowen``XUVRANGE`` ``0x0000000000000000 - 分頁映射, 可緩存, PLV0~3
292f949cb75SHu Haowen             0x3FFFFFFFFFFFFFFF``
293f949cb75SHu Haowen``XSPRANGE`` ``0x4000000000000000 - 直接映射, 可緩存 / 非緩存, PLV0
294f949cb75SHu Haowen             0x7FFFFFFFFFFFFFFF``
295f949cb75SHu Haowen``XKPRANGE`` ``0x8000000000000000 - 直接映射, 可緩存 / 非緩存, PLV0
296f949cb75SHu Haowen             0xBFFFFFFFFFFFFFFF``
297f949cb75SHu Haowen``XKVRANGE`` ``0xC000000000000000 - 分頁映射, 可緩存, PLV0
298f949cb75SHu Haowen             0xFFFFFFFFFFFFFFFF``
299f949cb75SHu Haowen============ ====================== ==================================
300f949cb75SHu Haowen
301f949cb75SHu Haowen用戶態(PLV3)只能訪問XUVRANGE,對於直接映射的XSPRANGE和XKPRANGE,將虛擬地址的第
302f949cb75SHu Haowen60~63位清零就等於物理地址,而其緩存屬性是通過虛擬地址的第60~61位配置的(0表示強序
303f949cb75SHu Haowen非緩存,1表示一致可緩存,2表示弱序非緩存)。
304f949cb75SHu Haowen
305f949cb75SHu Haowen目前,我們僅用XKPRANGE來進行直接映射,XSPRANGE保留給以後用。
306f949cb75SHu Haowen
307f949cb75SHu Haowen此處給出一個直接映射的例子:物理地址0x00000000_00001000的強序非緩存直接映射虛擬地址
308f949cb75SHu Haowen(在XKPRANGE中)是0x80000000_00001000,其一致可緩存直接映射虛擬地址(在XKPRANGE中)
309f949cb75SHu Haowen是0x90000000_00001000,而其弱序非緩存直接映射虛擬地址(在XKPRANGE中)是0xA0000000_
310f949cb75SHu Haowen00001000。
311f949cb75SHu Haowen
312f949cb75SHu HaowenLoongson與LoongArch的關係
313f949cb75SHu Haowen=========================
314f949cb75SHu Haowen
315f949cb75SHu HaowenLoongArch是一種RISC指令集架構(ISA),不同於現存的任何一種ISA,而Loongson(即龍
316f949cb75SHu Haowen芯)是一個處理器家族。龍芯包括三個系列:Loongson-1(龍芯1號)是32位處理器系列,
317f949cb75SHu HaowenLoongson-2(龍芯2號)是低端64位處理器系列,而Loongson-3(龍芯3號)是高端64位處理
318f949cb75SHu Haowen器系列。舊的龍芯處理器基於MIPS架構,而新的龍芯處理器基於LoongArch架構。以龍芯3號
319f949cb75SHu Haowen爲例:龍芯3A1000/3B1500/3A2000/3A3000/3A4000都是兼容MIPS的,而龍芯3A5000(以及將
320f949cb75SHu Haowen來的型號)都是基於LoongArch的。
321f949cb75SHu Haowen
322f949cb75SHu Haowen.. _loongarch-references-zh_TW:
323f949cb75SHu Haowen
324f949cb75SHu Haowen參考文獻
325f949cb75SHu Haowen========
326f949cb75SHu Haowen
327f949cb75SHu HaowenLoongson官方網站(龍芯中科技術股份有限公司):
328f949cb75SHu Haowen
329f949cb75SHu Haowen  http://www.loongson.cn/
330f949cb75SHu Haowen
331f949cb75SHu HaowenLoongson與LoongArch的開發者網站(軟件與文檔資源):
332f949cb75SHu Haowen
333f949cb75SHu Haowen  http://www.loongnix.cn/
334f949cb75SHu Haowen
335f949cb75SHu Haowen  https://github.com/loongson/
336f949cb75SHu Haowen
337f949cb75SHu Haowen  https://loongson.github.io/LoongArch-Documentation/
338f949cb75SHu Haowen
339f949cb75SHu HaowenLoongArch指令集架構的文檔:
340f949cb75SHu Haowen
341f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.02-CN.pdf (中文版)
342f949cb75SHu Haowen
343f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.02-EN.pdf (英文版)
344f949cb75SHu Haowen
345f949cb75SHu HaowenLoongArch的ELF psABI文檔:
346f949cb75SHu Haowen
347f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-CN.pdf (中文版)
348f949cb75SHu Haowen
349f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-EN.pdf (英文版)
350f949cb75SHu Haowen
351f949cb75SHu HaowenLoongson與LoongArch的Linux內核源碼倉庫:
352f949cb75SHu Haowen
353f949cb75SHu Haowen  https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git
354f949cb75SHu Haowen
355