首页 > 解决方案 > “riscv,plic0”中启用的中断布局取决于什么?

问题描述

我正在尝试用 risc-v 汇编语言编写与平台无关的辅助函数,以使用平台级中断控制器,在 SiFive FU540-C000 的设备树中标记为“riscv,plic0”。目标是能够禁用和启用外部中断。

在我下面的问题中,我特别提到了 SiFive FU540-C000,它由一个仅具有机器模式的内核和四个具有机器、主管和用户模式的内核组成。

SiFive FU540-C000 手册 v1p0的第 10.1 章中,所有硬件线程都占用了 0x100 字节的中断使能数组,但硬件线程 0 除外。硬件线程 0 的地址范围为 0x80 字节长。

考虑到硬件线程 0 只属于机器模式核心,我认为这可能与缺少主管、用户和潜在的管理程序模式有关。但是,由于地址范围的长度差异为 0x20 字节,因此没有合理的模式来分配这三种模式。

为什么中断使能中硬件线程 0 的地址范围正好比任何其他硬件线程的地址范围短 0x20 个字节?

已解决:我忘记了我正在使用十六进制十进制数,在这种情况下,0x80 是 0x100 的一半。因此,由于只支持一半的操作模式,硬件线程 0 的地址范围是任何其他硬件线程的一半。

标签: assemblyriscv

解决方案


推荐阅读