xref: /linux/Documentation/translations/zh_CN/arch/loongarch/introduction.rst (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
1f23b2259SHuacai Chen.. SPDX-License-Identifier: GPL-2.0
2f23b2259SHuacai Chen
351712e49SCosta Shulyupin.. include:: ../../disclaimer-zh_CN.rst
4f23b2259SHuacai Chen
551712e49SCosta Shulyupin:Original: Documentation/arch/loongarch/introduction.rst
6f23b2259SHuacai Chen:Translator: Huacai Chen <chenhuacai@loongson.cn>
7f23b2259SHuacai Chen
8f23b2259SHuacai Chen=============
9f23b2259SHuacai ChenLoongArch介绍
10f23b2259SHuacai Chen=============
11f23b2259SHuacai Chen
12f23b2259SHuacai ChenLoongArch是一种新的RISC ISA,在一定程度上类似于MIPS和RISC-V。LoongArch指令集
13f23b2259SHuacai Chen包括一个精简32位版(LA32R)、一个标准32位版(LA32S)、一个64位版(LA64)。
14f23b2259SHuacai ChenLoongArch定义了四个特权级(PLV0~PLV3),其中PLV0是最高特权级,用于内核;而PLV3
15f23b2259SHuacai Chen是最低特权级,用于应用程序。本文档介绍了LoongArch的寄存器、基础指令集、虚拟内
16f23b2259SHuacai Chen存以及其他一些主题。
17f23b2259SHuacai Chen
18f23b2259SHuacai Chen寄存器
19f23b2259SHuacai Chen======
20f23b2259SHuacai Chen
21f23b2259SHuacai ChenLoongArch的寄存器包括通用寄存器(GPRs)、浮点寄存器(FPRs)、向量寄存器(VRs)
22f23b2259SHuacai Chen和用于特权模式(PLV0)的控制状态寄存器(CSRs)。
23f23b2259SHuacai Chen
24f23b2259SHuacai Chen通用寄存器
25f23b2259SHuacai Chen----------
26f23b2259SHuacai Chen
27f23b2259SHuacai ChenLoongArch包括32个通用寄存器( ``$r0`` ~ ``$r31`` ),LA32中每个寄存器为32位宽,
28f23b2259SHuacai ChenLA64中每个寄存器为64位宽。 ``$r0`` 的内容总是固定为0,而其他寄存器在体系结构层面
29f23b2259SHuacai Chen没有特殊功能。( ``$r1`` 算是一个例外,在BL指令中固定用作链接返回寄存器。)
30f23b2259SHuacai Chen
31f23b2259SHuacai Chen内核使用了一套LoongArch寄存器约定,定义在LoongArch ELF psABI规范中,详细描述参见
32f23b2259SHuacai Chen:ref:`参考文献 <loongarch-references-zh_CN>`:
33f23b2259SHuacai Chen
34f23b2259SHuacai Chen================= =============== =================== ==========
35f23b2259SHuacai Chen寄存器名          别名            用途                跨调用保持
36f23b2259SHuacai Chen================= =============== =================== ==========
37f23b2259SHuacai Chen``$r0``           ``$zero``       常量0               不使用
38f23b2259SHuacai Chen``$r1``           ``$ra``         返回地址            否
39f23b2259SHuacai Chen``$r2``           ``$tp``         TLS/线程信息指针    不使用
40f23b2259SHuacai Chen``$r3``           ``$sp``         栈指针              是
41f23b2259SHuacai Chen``$r4``-``$r11``  ``$a0``-``$a7`` 参数寄存器          否
42f23b2259SHuacai Chen``$r4``-``$r5``   ``$v0``-``$v1`` 返回值              否
43f23b2259SHuacai Chen``$r12``-``$r20`` ``$t0``-``$t8`` 临时寄存器          否
44f23b2259SHuacai Chen``$r21``          ``$u0``         每CPU变量基地址     不使用
45f23b2259SHuacai Chen``$r22``          ``$fp``         帧指针              是
46f23b2259SHuacai Chen``$r23``-``$r31`` ``$s0``-``$s8`` 静态寄存器          是
47f23b2259SHuacai Chen================= =============== =================== ==========
48f23b2259SHuacai Chen
4903dfb4a3SYanteng Si.. note::
5003dfb4a3SYanteng Si    注意: ``$r21`` 寄存器在ELF psABI中保留未使用,但是在Linux内核用于保
5103dfb4a3SYanteng Si    存每CPU变量基地址。该寄存器没有ABI命名,不过在内核中称为 ``$u0`` 。在
5203dfb4a3SYanteng Si    一些遗留代码中有时可能见到 ``$v0`` 和 ``$v1`` ,它们是 ``$a0`` 和
5303dfb4a3SYanteng Si    ``$a1`` 的别名,属于已经废弃的用法。
54f23b2259SHuacai Chen
55f23b2259SHuacai Chen浮点寄存器
56f23b2259SHuacai Chen----------
57f23b2259SHuacai Chen
58f23b2259SHuacai Chen当系统中存在FPU时,LoongArch有32个浮点寄存器( ``$f0`` ~ ``$f31`` )。在LA64
59f23b2259SHuacai Chen的CPU核上,每个寄存器均为64位宽。
60f23b2259SHuacai Chen
61f23b2259SHuacai Chen浮点寄存器的使用约定与LoongArch ELF psABI规范的描述相同:
62f23b2259SHuacai Chen
63f23b2259SHuacai Chen================= ================== =================== ==========
64f23b2259SHuacai Chen寄存器名          别名               用途                跨调用保持
65f23b2259SHuacai Chen================= ================== =================== ==========
66f23b2259SHuacai Chen``$f0``-``$f7``   ``$fa0``-``$fa7``  参数寄存器          否
67f23b2259SHuacai Chen``$f0``-``$f1``   ``$fv0``-``$fv1``  返回值              否
68f23b2259SHuacai Chen``$f8``-``$f23``  ``$ft0``-``$ft15`` 临时寄存器          否
69f23b2259SHuacai Chen``$f24``-``$f31`` ``$fs0``-``$fs7``  静态寄存器          是
70f23b2259SHuacai Chen================= ================== =================== ==========
71f23b2259SHuacai Chen
7203dfb4a3SYanteng Si.. note::
73fa0e3812STiezhu Yang    注意:在一些遗留代码中有时可能见到 ``$fv0`` 和 ``$fv1`` ,它们是
74fa0e3812STiezhu Yang    ``$fa0`` 和 ``$fa1`` 的别名,属于已经废弃的用法。
75f23b2259SHuacai Chen
76f23b2259SHuacai Chen
77f23b2259SHuacai Chen向量寄存器
78f23b2259SHuacai Chen----------
79f23b2259SHuacai Chen
80f23b2259SHuacai ChenLoongArch现有两种向量扩展:
81f23b2259SHuacai Chen
82f23b2259SHuacai Chen- 128位向量扩展LSX(全称Loongson SIMD eXtention),
83f23b2259SHuacai Chen- 256位向量扩展LASX(全称Loongson Advanced SIMD eXtention)。
84f23b2259SHuacai Chen
85f23b2259SHuacai ChenLSX使用 ``$v0`` ~ ``$v31`` 向量寄存器,而LASX则使用 ``$x0`` ~ ``$x31`` 。
86f23b2259SHuacai Chen
87f23b2259SHuacai Chen浮点寄存器和向量寄存器是复用的,比如:在一个实现了LSX和LASX的核上, ``$x0`` 的
88f23b2259SHuacai Chen低128位与 ``$v0`` 共用, ``$v0`` 的低64位与 ``$f0`` 共用,其他寄存器依此类推。
89f23b2259SHuacai Chen
90f23b2259SHuacai Chen控制状态寄存器
91f23b2259SHuacai Chen--------------
92f23b2259SHuacai Chen
93f23b2259SHuacai Chen控制状态寄存器只能在特权模式(PLV0)下访问:
94f23b2259SHuacai Chen
95f23b2259SHuacai Chen================= ==================================== ==========
96f23b2259SHuacai Chen地址              全称描述                             简称
97f23b2259SHuacai Chen================= ==================================== ==========
98f23b2259SHuacai Chen0x0               当前模式信息                         CRMD
99f23b2259SHuacai Chen0x1               异常前模式信息                       PRMD
100f23b2259SHuacai Chen0x2               扩展部件使能                         EUEN
101f23b2259SHuacai Chen0x3               杂项控制                             MISC
102f23b2259SHuacai Chen0x4               异常配置                             ECFG
103f23b2259SHuacai Chen0x5               异常状态                             ESTAT
104f23b2259SHuacai Chen0x6               异常返回地址                         ERA
105f23b2259SHuacai Chen0x7               出错(Faulting)虚拟地址               BADV
106f23b2259SHuacai Chen0x8               出错(Faulting)指令字                 BADI
107f23b2259SHuacai Chen0xC               异常入口地址                         EENTRY
108f23b2259SHuacai Chen0x10              TLB索引                              TLBIDX
109f23b2259SHuacai Chen0x11              TLB表项高位                          TLBEHI
110f23b2259SHuacai Chen0x12              TLB表项低位0                         TLBELO0
111f23b2259SHuacai Chen0x13              TLB表项低位1                         TLBELO1
112f23b2259SHuacai Chen0x18              地址空间标识符                       ASID
113f23b2259SHuacai Chen0x19              低半地址空间页全局目录基址           PGDL
114f23b2259SHuacai Chen0x1A              高半地址空间页全局目录基址           PGDH
115f23b2259SHuacai Chen0x1B              页全局目录基址                       PGD
116f23b2259SHuacai Chen0x1C              页表遍历控制低半部分                 PWCL
117f23b2259SHuacai Chen0x1D              页表遍历控制高半部分                 PWCH
118f23b2259SHuacai Chen0x1E              STLB页大小                           STLBPS
119f23b2259SHuacai Chen0x1F              缩减虚地址配置                       RVACFG
120f23b2259SHuacai Chen0x20              CPU编号                              CPUID
121f23b2259SHuacai Chen0x21              特权资源配置信息1                    PRCFG1
122f23b2259SHuacai Chen0x22              特权资源配置信息2                    PRCFG2
123f23b2259SHuacai Chen0x23              特权资源配置信息3                    PRCFG3
124f23b2259SHuacai Chen0x30+n (0≤n≤15)   数据保存寄存器                       SAVEn
125f23b2259SHuacai Chen0x40              定时器编号                           TID
126f23b2259SHuacai Chen0x41              定时器配置                           TCFG
127f23b2259SHuacai Chen0x42              定时器值                             TVAL
128f23b2259SHuacai Chen0x43              计时器补偿                           CNTC
129f23b2259SHuacai Chen0x44              定时器中断清除                       TICLR
130f23b2259SHuacai Chen0x60              LLBit相关控制                        LLBCTL
131f23b2259SHuacai Chen0x80              实现相关控制1                        IMPCTL1
132f23b2259SHuacai Chen0x81              实现相关控制2                        IMPCTL2
133f23b2259SHuacai Chen0x88              TLB重填异常入口地址                  TLBRENTRY
134f23b2259SHuacai Chen0x89              TLB重填异常出错(Faulting)虚地址      TLBRBADV
135f23b2259SHuacai Chen0x8A              TLB重填异常返回地址                  TLBRERA
136f23b2259SHuacai Chen0x8B              TLB重填异常数据保存                  TLBRSAVE
137f23b2259SHuacai Chen0x8C              TLB重填异常表项低位0                 TLBRELO0
138f23b2259SHuacai Chen0x8D              TLB重填异常表项低位1                 TLBRELO1
139f23b2259SHuacai Chen0x8E              TLB重填异常表项高位                  TLBEHI
140f23b2259SHuacai Chen0x8F              TLB重填异常前模式信息                TLBRPRMD
141f23b2259SHuacai Chen0x90              机器错误控制                         MERRCTL
142f23b2259SHuacai Chen0x91              机器错误信息1                        MERRINFO1
143f23b2259SHuacai Chen0x92              机器错误信息2                        MERRINFO2
144f23b2259SHuacai Chen0x93              机器错误异常入口地址                 MERRENTRY
145f23b2259SHuacai Chen0x94              机器错误异常返回地址                 MERRERA
146f23b2259SHuacai Chen0x95              机器错误异常数据保存                 MERRSAVE
147f23b2259SHuacai Chen0x98              高速缓存标签                         CTAG
148f23b2259SHuacai Chen0x180+n (0≤n≤3)   直接映射配置窗口n                    DMWn
149f23b2259SHuacai Chen0x200+2n (0≤n≤31) 性能监测配置n                        PMCFGn
150f23b2259SHuacai Chen0x201+2n (0≤n≤31) 性能监测计数器n                      PMCNTn
151f23b2259SHuacai Chen0x300             内存读写监视点整体控制               MWPC
152f23b2259SHuacai Chen0x301             内存读写监视点整体状态               MWPS
153f23b2259SHuacai Chen0x310+8n (0≤n≤7)  内存读写监视点n配置1                 MWPnCFG1
154f23b2259SHuacai Chen0x311+8n (0≤n≤7)  内存读写监视点n配置2                 MWPnCFG2
155f23b2259SHuacai Chen0x312+8n (0≤n≤7)  内存读写监视点n配置3                 MWPnCFG3
156f23b2259SHuacai Chen0x313+8n (0≤n≤7)  内存读写监视点n配置4                 MWPnCFG4
157f23b2259SHuacai Chen0x380             取指监视点整体控制                   FWPC
158f23b2259SHuacai Chen0x381             取指监视点整体状态                   FWPS
159f23b2259SHuacai Chen0x390+8n (0≤n≤7)  取指监视点n配置1                     FWPnCFG1
160f23b2259SHuacai Chen0x391+8n (0≤n≤7)  取指监视点n配置2                     FWPnCFG2
161f23b2259SHuacai Chen0x392+8n (0≤n≤7)  取指监视点n配置3                     FWPnCFG3
162f23b2259SHuacai Chen0x393+8n (0≤n≤7)  取指监视点n配置4                     FWPnCFG4
163f23b2259SHuacai Chen0x500             调试寄存器                           DBG
164f23b2259SHuacai Chen0x501             调试异常返回地址                     DERA
165f23b2259SHuacai Chen0x502             调试数据保存                         DSAVE
166f23b2259SHuacai Chen================= ==================================== ==========
167f23b2259SHuacai Chen
168f23b2259SHuacai ChenERA,TLBRERA,MERRERA和DERA有时也分别称为EPC,TLBREPC,MERREPC和DEPC。
169f23b2259SHuacai Chen
170f23b2259SHuacai Chen基础指令集
171f23b2259SHuacai Chen==========
172f23b2259SHuacai Chen
173f23b2259SHuacai Chen指令格式
174f23b2259SHuacai Chen--------
175f23b2259SHuacai Chen
176f23b2259SHuacai ChenLoongArch的指令字长为32位,一共有9种基本指令格式(以及一些变体):
177f23b2259SHuacai Chen
178f23b2259SHuacai Chen=========== ==========================
179f23b2259SHuacai Chen格式名称    指令构成
180f23b2259SHuacai Chen=========== ==========================
181f23b2259SHuacai Chen2R          Opcode + Rj + Rd
182f23b2259SHuacai Chen3R          Opcode + Rk + Rj + Rd
183f23b2259SHuacai Chen4R          Opcode + Ra + Rk + Rj + Rd
184f23b2259SHuacai Chen2RI8        Opcode + I8 + Rj + Rd
185f23b2259SHuacai Chen2RI12       Opcode + I12 + Rj + Rd
186f23b2259SHuacai Chen2RI14       Opcode + I14 + Rj + Rd
187f23b2259SHuacai Chen2RI16       Opcode + I16 + Rj + Rd
188f23b2259SHuacai Chen1RI21       Opcode + I21L + Rj + I21H
189f23b2259SHuacai ChenI26         Opcode + I26L + I26H
190f23b2259SHuacai Chen=========== ==========================
191f23b2259SHuacai Chen
192f23b2259SHuacai ChenOpcode是指令操作码,Rj和Rk是源操作数(寄存器),Rd是目标操作数(寄存器),Ra是
19371535592STiezhu Yang4R-type格式特有的附加操作数(寄存器)。I8/I12/I14/I16/I21/I26分别是8位/12位/14位/
19471535592STiezhu Yang16位/21位/26位的立即数。其中较长的21位和26位立即数在指令字中被分割为高位部分与低位
195f23b2259SHuacai Chen部分,所以你们在这里的格式描述中能够看到I21L/I21HI26L/I26H这样带后缀的表述。
196f23b2259SHuacai Chen
197f23b2259SHuacai Chen指令列表
198f23b2259SHuacai Chen--------
199f23b2259SHuacai Chen
200f23b2259SHuacai Chen为了简便起见,我们在此只罗列一下指令名称(助记符),需要详细信息请阅读
201f23b2259SHuacai Chen:ref:`参考文献 <loongarch-references-zh_CN>` 中的文档。
202f23b2259SHuacai Chen
203f23b2259SHuacai Chen1. 算术运算指令::
204f23b2259SHuacai Chen
205f23b2259SHuacai Chen    ADD.W SUB.W ADDI.W ADD.D SUB.D ADDI.D
206f23b2259SHuacai Chen    SLT SLTU SLTI SLTUI
207f23b2259SHuacai Chen    AND OR NOR XOR ANDN ORN ANDI ORI XORI
208f23b2259SHuacai Chen    MUL.W MULH.W MULH.WU DIV.W DIV.WU MOD.W MOD.WU
209f23b2259SHuacai Chen    MUL.D MULH.D MULH.DU DIV.D DIV.DU MOD.D MOD.DU
210f23b2259SHuacai Chen    PCADDI PCADDU12I PCADDU18I
211f23b2259SHuacai Chen    LU12I.W LU32I.D LU52I.D ADDU16I.D
212f23b2259SHuacai Chen
213f23b2259SHuacai Chen2. 移位运算指令::
214f23b2259SHuacai Chen
215f23b2259SHuacai Chen    SLL.W SRL.W SRA.W ROTR.W SLLI.W SRLI.W SRAI.W ROTRI.W
216f23b2259SHuacai Chen    SLL.D SRL.D SRA.D ROTR.D SLLI.D SRLI.D SRAI.D ROTRI.D
217f23b2259SHuacai Chen
218f23b2259SHuacai Chen3. 位域操作指令::
219f23b2259SHuacai Chen
220f23b2259SHuacai Chen    EXT.W.B EXT.W.H CLO.W CLO.D SLZ.W CLZ.D CTO.W CTO.D CTZ.W CTZ.D
221f23b2259SHuacai Chen    BYTEPICK.W BYTEPICK.D BSTRINS.W BSTRINS.D BSTRPICK.W BSTRPICK.D
222f23b2259SHuacai Chen    REVB.2H REVB.4H REVB.2W REVB.D REVH.2W REVH.D BITREV.4B BITREV.8B BITREV.W BITREV.D
223f23b2259SHuacai Chen    MASKEQZ MASKNEZ
224f23b2259SHuacai Chen
225f23b2259SHuacai Chen4. 分支转移指令::
226f23b2259SHuacai Chen
227f23b2259SHuacai Chen    BEQ BNE BLT BGE BLTU BGEU BEQZ BNEZ B BL JIRL
228f23b2259SHuacai Chen
229f23b2259SHuacai Chen5. 访存读写指令::
230f23b2259SHuacai Chen
231f23b2259SHuacai Chen    LD.B LD.BU LD.H LD.HU LD.W LD.WU LD.D ST.B ST.H ST.W ST.D
232f23b2259SHuacai Chen    LDX.B LDX.BU LDX.H LDX.HU LDX.W LDX.WU LDX.D STX.B STX.H STX.W STX.D
233f23b2259SHuacai Chen    LDPTR.W LDPTR.D STPTR.W STPTR.D
234f23b2259SHuacai Chen    PRELD PRELDX
235f23b2259SHuacai Chen
236f23b2259SHuacai Chen6. 原子操作指令::
237f23b2259SHuacai Chen
238f23b2259SHuacai Chen    LL.W SC.W LL.D SC.D
239f23b2259SHuacai Chen    AMSWAP.W AMSWAP.D AMADD.W AMADD.D AMAND.W AMAND.D AMOR.W AMOR.D AMXOR.W AMXOR.D
240f23b2259SHuacai Chen    AMMAX.W AMMAX.D AMMIN.W AMMIN.D
241f23b2259SHuacai Chen
242f23b2259SHuacai Chen7. 栅障指令::
243f23b2259SHuacai Chen
244f23b2259SHuacai Chen    IBAR DBAR
245f23b2259SHuacai Chen
246f23b2259SHuacai Chen8. 特殊指令::
247f23b2259SHuacai Chen
248f23b2259SHuacai Chen    SYSCALL BREAK CPUCFG NOP IDLE ERTN(ERET) DBCL(DBGCALL) RDTIMEL.W RDTIMEH.W RDTIME.D
249f23b2259SHuacai Chen    ASRTLE.D ASRTGT.D
250f23b2259SHuacai Chen
251f23b2259SHuacai Chen9. 特权指令::
252f23b2259SHuacai Chen
253f23b2259SHuacai Chen    CSRRD CSRWR CSRXCHG
254f23b2259SHuacai Chen    IOCSRRD.B IOCSRRD.H IOCSRRD.W IOCSRRD.D IOCSRWR.B IOCSRWR.H IOCSRWR.W IOCSRWR.D
255f23b2259SHuacai Chen    CACOP TLBP(TLBSRCH) TLBRD TLBWR TLBFILL TLBCLR TLBFLUSH INVTLB LDDIR LDPTE
256f23b2259SHuacai Chen
257f23b2259SHuacai Chen虚拟内存
258f23b2259SHuacai Chen========
259f23b2259SHuacai Chen
260f23b2259SHuacai ChenLoongArch可以使用直接映射虚拟内存和分页映射虚拟内存。
261f23b2259SHuacai Chen
262f23b2259SHuacai Chen直接映射虚拟内存通过CSR.DMWn(n=0~3)来进行配置,虚拟地址(VA)和物理地址(PA)
263f23b2259SHuacai Chen之间有简单的映射关系::
264f23b2259SHuacai Chen
265f23b2259SHuacai Chen VA = PA + 固定偏移
266f23b2259SHuacai Chen
267f23b2259SHuacai Chen分页映射的虚拟地址(VA)和物理地址(PA)有任意的映射关系,这种关系记录在TLB和页
268f23b2259SHuacai Chen表中。LoongArch的TLB包括一个全相联的MTLB(Multiple Page Size TLB,多样页大小TLB)
269f23b2259SHuacai Chen和一个组相联的STLB(Single Page Size TLB,单一页大小TLB)。
270f23b2259SHuacai Chen
271f23b2259SHuacai Chen缺省状态下,LA32的整个虚拟地址空间配置如下:
272f23b2259SHuacai Chen
273f23b2259SHuacai Chen============ =========================== ===========================
274f23b2259SHuacai Chen区段名       地址范围                    属性
275f23b2259SHuacai Chen============ =========================== ===========================
276f23b2259SHuacai Chen``UVRANGE``  ``0x00000000 - 0x7FFFFFFF`` 分页映射, 可缓存, PLV0~3
277f23b2259SHuacai Chen``KPRANGE0`` ``0x80000000 - 0x9FFFFFFF`` 直接映射, 非缓存, PLV0
278f23b2259SHuacai Chen``KPRANGE1`` ``0xA0000000 - 0xBFFFFFFF`` 直接映射, 可缓存, PLV0
279f23b2259SHuacai Chen``KVRANGE``  ``0xC0000000 - 0xFFFFFFFF`` 分页映射, 可缓存, PLV0
280f23b2259SHuacai Chen============ =========================== ===========================
281f23b2259SHuacai Chen
282f23b2259SHuacai Chen用户态(PLV3)只能访问UVRANGE,对于直接映射的KPRANGE0和KPRANGE1,将虚拟地址的第
283f23b2259SHuacai Chen30~31位清零就等于物理地址。例如:物理地址0x00001000对应的非缓存直接映射虚拟地址
284f23b2259SHuacai Chen是0x80001000,而其可缓存直接映射虚拟地址是0xA0001000。
285f23b2259SHuacai Chen
286f23b2259SHuacai Chen缺省状态下,LA64的整个虚拟地址空间配置如下:
287f23b2259SHuacai Chen
288f23b2259SHuacai Chen============ ====================== ==================================
289f23b2259SHuacai Chen区段名       地址范围               属性
290f23b2259SHuacai Chen============ ====================== ==================================
291f23b2259SHuacai Chen``XUVRANGE`` ``0x0000000000000000 - 分页映射, 可缓存, PLV0~3
292f23b2259SHuacai Chen             0x3FFFFFFFFFFFFFFF``
293f23b2259SHuacai Chen``XSPRANGE`` ``0x4000000000000000 - 直接映射, 可缓存 / 非缓存, PLV0
294f23b2259SHuacai Chen             0x7FFFFFFFFFFFFFFF``
295f23b2259SHuacai Chen``XKPRANGE`` ``0x8000000000000000 - 直接映射, 可缓存 / 非缓存, PLV0
296f23b2259SHuacai Chen             0xBFFFFFFFFFFFFFFF``
297f23b2259SHuacai Chen``XKVRANGE`` ``0xC000000000000000 - 分页映射, 可缓存, PLV0
298f23b2259SHuacai Chen             0xFFFFFFFFFFFFFFFF``
299f23b2259SHuacai Chen============ ====================== ==================================
300f23b2259SHuacai Chen
301f23b2259SHuacai Chen用户态(PLV3)只能访问XUVRANGE,对于直接映射的XSPRANGE和XKPRANGE,将虚拟地址的第
302f23b2259SHuacai Chen60~63位清零就等于物理地址,而其缓存属性是通过虚拟地址的第60~61位配置的(0表示强序
303f23b2259SHuacai Chen非缓存,1表示一致可缓存,2表示弱序非缓存)。
304f23b2259SHuacai Chen
305f23b2259SHuacai Chen目前,我们仅用XKPRANGE来进行直接映射,XSPRANGE保留给以后用。
306f23b2259SHuacai Chen
307f23b2259SHuacai Chen此处给出一个直接映射的例子:物理地址0x00000000_00001000的强序非缓存直接映射虚拟地址
308f23b2259SHuacai Chen(在XKPRANGE中)是0x80000000_00001000,其一致可缓存直接映射虚拟地址(在XKPRANGE中)
309f23b2259SHuacai Chen是0x90000000_00001000,而其弱序非缓存直接映射虚拟地址(在XKPRANGE中)是0xA0000000_
310f23b2259SHuacai Chen00001000。
311f23b2259SHuacai Chen
312f23b2259SHuacai ChenLoongson与LoongArch的关系
313f23b2259SHuacai Chen=========================
314f23b2259SHuacai Chen
315f23b2259SHuacai ChenLoongArch是一种RISC指令集架构(ISA),不同于现存的任何一种ISA,而Loongson(即龙
316f23b2259SHuacai Chen芯)是一个处理器家族。龙芯包括三个系列:Loongson-1(龙芯1号)是32位处理器系列,
317f23b2259SHuacai ChenLoongson-2(龙芯2号)是低端64位处理器系列,而Loongson-3(龙芯3号)是高端64位处理
318f23b2259SHuacai Chen器系列。旧的龙芯处理器基于MIPS架构,而新的龙芯处理器基于LoongArch架构。以龙芯3号
319f23b2259SHuacai Chen为例:龙芯3A1000/3B1500/3A2000/3A3000/3A4000都是兼容MIPS的,而龙芯3A5000(以及将
320f23b2259SHuacai Chen来的型号)都是基于LoongArch的。
321f23b2259SHuacai Chen
322f23b2259SHuacai Chen.. _loongarch-references-zh_CN:
323f23b2259SHuacai Chen
324f23b2259SHuacai Chen参考文献
325f23b2259SHuacai Chen========
326f23b2259SHuacai Chen
327f23b2259SHuacai ChenLoongson官方网站(龙芯中科技术股份有限公司):
328f23b2259SHuacai Chen
329f23b2259SHuacai Chen  http://www.loongson.cn/
330f23b2259SHuacai Chen
331f23b2259SHuacai ChenLoongson与LoongArch的开发者网站(软件与文档资源):
332f23b2259SHuacai Chen
333f23b2259SHuacai Chen  http://www.loongnix.cn/
334f23b2259SHuacai Chen
335f23b2259SHuacai Chen  https://github.com/loongson/
336f23b2259SHuacai Chen
337f23b2259SHuacai Chen  https://loongson.github.io/LoongArch-Documentation/
338f23b2259SHuacai Chen
339f23b2259SHuacai ChenLoongArch指令集架构的文档:
340f23b2259SHuacai Chen
341*c517fd27SYanteng Si  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.10-CN.pdf (中文版)
342f23b2259SHuacai Chen
343*c517fd27SYanteng Si  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.10-EN.pdf (英文版)
344f23b2259SHuacai Chen
345f23b2259SHuacai ChenLoongArch的ELF psABI文档:
346f23b2259SHuacai Chen
347e74a6b7fSTiezhu Yang  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-CN.pdf (中文版)
348f23b2259SHuacai Chen
349e74a6b7fSTiezhu Yang  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.01-EN.pdf (英文版)
350f23b2259SHuacai Chen
351f23b2259SHuacai ChenLoongson与LoongArch的Linux内核源码仓库:
352f23b2259SHuacai Chen
353f23b2259SHuacai Chen  https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git
354