Signed-off-by: Harry Chen <i@harrychen.xyz>master
parent
d588a922ab
commit
34c3d139a1
@ -1,49 +0,0 @@
|
|||||||
/* Copy from bbl-ucore : https://ring00.github.io/bbl-ucore */
|
|
||||||
|
|
||||||
/* Simple linker script for the ucore kernel.
|
|
||||||
See the GNU ld 'info' manual ("info ld") to learn the syntax. */
|
|
||||||
|
|
||||||
OUTPUT_ARCH(riscv)
|
|
||||||
ENTRY(_start)
|
|
||||||
|
|
||||||
BASE_ADDRESS = 0xffffffffc0020000;
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Load the kernel at this address: "." means the current address */
|
|
||||||
. = BASE_ADDRESS;
|
|
||||||
start = .;
|
|
||||||
|
|
||||||
.text : {
|
|
||||||
stext = .;
|
|
||||||
*(.text.entry)
|
|
||||||
*(.text .text.*)
|
|
||||||
. = ALIGN(4K);
|
|
||||||
etext = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rodata : {
|
|
||||||
srodata = .;
|
|
||||||
*(.rodata .rodata.*)
|
|
||||||
. = ALIGN(4K);
|
|
||||||
erodata = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data : {
|
|
||||||
sdata = .;
|
|
||||||
*(.data .data.*)
|
|
||||||
edata = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stack : {
|
|
||||||
*(.bss.stack)
|
|
||||||
}
|
|
||||||
|
|
||||||
.bss : {
|
|
||||||
sbss = .;
|
|
||||||
*(.bss .bss.*)
|
|
||||||
ebss = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
PROVIDE(end = .);
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
use super::consts::KERNEL_OFFSET;
|
|
||||||
|
|
||||||
/// Mask all external interrupt except serial.
|
|
||||||
pub unsafe fn init_external_interrupt() {
|
|
||||||
const HART1_S_MODE_INTERRUPT_ENABLES: *mut u64 = (KERNEL_OFFSET + 0x0C00_2100) as *mut u64;
|
|
||||||
const SERIAL: u64 = 4;
|
|
||||||
HART1_S_MODE_INTERRUPT_ENABLES.write(1 << SERIAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Claim and complete external interrupt by reading and writing to
|
|
||||||
/// PLIC Interrupt Claim/Complete Register.
|
|
||||||
pub unsafe fn handle_external_interrupt() {
|
|
||||||
const HART1_S_MODE_INTERRUPT_CLAIM_COMPLETE: *mut u32 = (KERNEL_OFFSET + 0x0C20_2004) as *mut u32;
|
|
||||||
// claim
|
|
||||||
let source = HART1_S_MODE_INTERRUPT_CLAIM_COMPLETE.read();
|
|
||||||
// complete
|
|
||||||
HART1_S_MODE_INTERRUPT_CLAIM_COMPLETE.write(source);
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
/* Copy from bbl-ucore : https://ring00.github.io/bbl-ucore */
|
|
||||||
|
|
||||||
/* Simple linker script for the ucore kernel.
|
|
||||||
See the GNU ld 'info' manual ("info ld") to learn the syntax. */
|
|
||||||
|
|
||||||
OUTPUT_ARCH(riscv)
|
|
||||||
ENTRY(_start)
|
|
||||||
|
|
||||||
BASE_ADDRESS = 0xffffffffc0020000;
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Load the kernel at this address: "." means the current address */
|
|
||||||
. = BASE_ADDRESS;
|
|
||||||
start = .;
|
|
||||||
|
|
||||||
.text : {
|
|
||||||
stext = .;
|
|
||||||
*(.text.entry)
|
|
||||||
*(.text .text.*)
|
|
||||||
. = ALIGN(4K);
|
|
||||||
etext = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rodata : {
|
|
||||||
srodata = .;
|
|
||||||
*(.rodata .rodata.*)
|
|
||||||
. = ALIGN(4K);
|
|
||||||
erodata = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
.data : {
|
|
||||||
sdata = .;
|
|
||||||
*(.data .data.*)
|
|
||||||
edata = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stack : {
|
|
||||||
*(.bss.stack)
|
|
||||||
}
|
|
||||||
|
|
||||||
.bss : {
|
|
||||||
sbss = .;
|
|
||||||
*(.bss .bss.*)
|
|
||||||
ebss = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
PROVIDE(end = .);
|
|
||||||
}
|
|
Loading…
Reference in new issue