csrrw
lyszt.net csrrw और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।
विवरण
csrrw एक नियंत्रण रजिस्टर को एक सामान्य रजिस्टर के साथ विनिमय करता है। एक नियंत्रण और स्थिति रजिस्टर (CSR) एक विशेष रजिस्टर है जो प्रोसेसर स्थिति रखता है, जिसमें ट्रैप हैंडलर पता और क्या इंटरप्ट सक्षम हैं, शामिल हैं। एक CSR में 12-बिट संख्या होती है और आमतौर पर mtvec जैसा नाम होता है। केवल CSR निर्देश ही CSRs को एक्सेस कर सकते हैं, और lw या sw नहीं कर सकते। नाम का अर्थ है परमाणु पठन और लेखन CSR। परमाणु का अर्थ है कि पठन और लेखन एक एकल अविभाज्य चरण के रूप में होते हैं।
csrrw rd, csr, rs1
CSR का पुराना मान rd में लिखा जाता है, और rs1 का मान CSR में लिखा जाता है। नीचे दी गई पंक्ति t0 में पते को mtvec में संग्रहीत करती है और पिछले mtvec मान को t1 में छोड़ देती है।
csrrw t1, mtvec, t0
यदि rd zero है, तो पुराना मान त्याग दिया जाता है और CSR पढ़ा नहीं जाता। यह रूप csrw शॉर्टहैंड है। यदि rs1 zero है, तो CSR को 0 से अधिलेखित कर दिया जाता है।
यह सिम्युलेटर छह CSRs प्रदान करता है: mstatus, mie, mtvec, mepc, mcause और mip। mip में लेखन को अनदेखा किया जाता है क्योंकि हार्डवेयर इसे सेट करता है। कोई अन्य CSR संख्या 0 के रूप में पढ़ी जाती है और लेखन को अनदेखा करती है। पठन के लिए csrr देखें और एकल बिट्स को बदलने के लिए csrs और csrc देखें।
RISC-V मैनुअल कहता है कि rd=x0 के साथ, csrrw CSR को नहीं पढ़ता है, और यह कि rs1=x0 के साथ csrrw इसमें शून्य लिखने का प्रयास करता है।
उदाहरण
li t0, 0x100 csrrw t1, mtvec, t0 # mtvec = 0x100, t1 = old mtvec
