WangRunji
66c84b4599
update to x86_64 0.4
2019-01-28 14:24:56 +08:00
WangRunji
047f4ffdcc
cherry-pick jiegec's work ( #3 ) from lab8-rv32: virtio drivers, network stack
...
Read and parse dtb upon boot
Implement virtio net device detection
Negotiate feature bits for virtio-net
Read MAC address from virtio-net device and detect virtqueues
Receiving from virtio net device is working for the first time
Implement driver interface and interrupt handling routines
Rearrange drivers into upper directory
Implement initial support for processing arp request and reply packet
Refactor MAC address and IPv4 address into structs, and implement ICMP echo reply
Fix typos
Implement initial support for virtio gpu driver
Complete first working version of virtio gpu driver with mandelbrot example
Use smoltcp and implement a udp and tcp server on top of it
Cleanup virtio net code
2019-01-23 22:28:45 +08:00
WangRunji
2d5178d0b7
rename ucore to rcore
2019-01-03 21:26:50 +08:00
WangRunji
61dfcb5558
Merge remote-tracking branch 'equation314/arch-aarch64' into merging
...
# Conflicts:
# kernel/Makefile
# kernel/src/arch/aarch64/board/raspi3/irq.rs
# kernel/src/arch/aarch64/memory.rs
# kernel/src/arch/riscv32/paging.rs
# kernel/src/arch/x86_64/paging.rs
2019-01-03 18:21:13 +08:00
WangRunji
259e7c842e
update Cargo.toml & Makefile
2018-12-28 18:18:14 +08:00
WangRunji
33eaded142
Merge remote-tracking branch 'bpc/user-lib-bin' into merge-1228
...
# Conflicts:
# kernel/src/arch/riscv32/compiler_rt.c
# kernel/src/arch/riscv32/consts.rs
# kernel/src/arch/riscv32/context.rs
# kernel/src/arch/riscv32/io.rs
# kernel/src/arch/riscv32/memory.rs
# kernel/src/arch/riscv32/paging.rs
# user/ucore-ulib/src/syscall.rs
2018-12-28 17:41:21 +08:00
WangRunji
c65b7357a4
use riscv crate from github
2018-12-28 17:00:59 +08:00
WangRunji
a852c96136
Merge branch 'master' into rust-rv64
...
# Conflicts:
# crate/memory/src/memory_set.rs
# kernel/src/arch/riscv32/compiler_rt.rs
# kernel/src/arch/riscv32/memory.rs
# kernel/src/arch/riscv32/paging.rs
# kernel/src/memory.rs
# kernel/src/process/mod.rs
2018-12-28 16:55:09 +08:00
dzy
0dbffbc0fa
temporary
2018-12-26 00:12:10 +08:00
dzy
a75e52691d
port to newer riscv crate supporting rv64
2018-12-20 18:21:58 +08:00
Ben Pig Chu
fa03f7b112
use the simple-filesystem crate with FsError
2018-12-20 12:27:21 +08:00
equation314
b5cc79d1b2
modify mmio() & set_mmio() in PageEntry
2018-12-17 14:28:51 +08:00
equation314
48cf25716f
aarch64/fb: flush data cache around mailbox accesses
...
can run on real raspi3
2018-12-17 01:34:44 +08:00
equation314
5987c2068b
aarch64/fb: remap framebuffer base address
2018-12-16 22:26:04 +08:00
equation314
d7511d8120
aarch64/fb: add mailbox property interfaces
2018-12-14 21:19:44 +08:00
equation314
81af2c82fd
aarch64: reduce some warnings, config system/generic timer in Makefile
2018-12-11 16:58:04 +08:00
equation314
6879c66e58
aarch64: set TTBR1 = TTBR0 in InactivePageTable::edit(), swap is OK
...
TODO: flush icache in the right place
2018-12-03 17:22:11 +08:00
WangRunji
b5ced136f7
fix merge compile error
2018-12-02 00:58:15 +08:00
WangRunji
fcf5074500
impl M-mode kernel for riscv32
2018-12-01 17:37:37 +08:00
WangRunji
18640b7537
impl NoMMU
2018-11-27 01:23:07 +08:00
WangRunji
2daf8c188d
Merge remote-tracking branch 'equation314/arch-aarch64' into dev
...
# Conflicts:
# .gitignore
# kernel/Cargo.lock
# kernel/Cargo.toml
# kernel/Makefile
# kernel/riscv32-blog_os.json
# kernel/src/consts.rs
# kernel/src/fs.rs
# kernel/src/lib.rs
# kernel/src/process/context.rs
# kernel/src/process/mod.rs
2018-11-20 00:15:19 +08:00
WangRunji
56fcad245a
update kernel to 2018 edition
2018-11-19 20:11:17 +08:00
WangRunji
c4935a1477
use pc-keyboard
crate and enable keyboard again for x86
2018-11-18 19:20:26 +08:00
WangRunji
205f90a264
Merge branch 'dev' into g4-merge
...
# Conflicts:
# crate/memory/src/cow.rs
# crate/memory/src/memory_set.rs
# crate/memory/src/paging/mod.rs
# crate/memory/src/swap/mod.rs
# crate/process/src/lib.rs
# crate/process/src/process_manager.rs
# crate/process/src/processor.rs
# crate/process/src/thread.rs
# crate/riscv
# kernel/Cargo.lock
# kernel/src/arch/riscv32/compiler_rt.rs
# kernel/src/arch/riscv32/consts.rs
# kernel/src/arch/riscv32/context.rs
# kernel/src/arch/riscv32/interrupt.rs
# kernel/src/arch/riscv32/memory.rs
# kernel/src/arch/riscv32/mod.rs
# kernel/src/arch/riscv32/paging.rs
# kernel/src/arch/x86_64/driver/ide.rs
# kernel/src/arch/x86_64/interrupt/handler.rs
# kernel/src/arch/x86_64/mod.rs
# kernel/src/console.rs
# kernel/src/consts.rs
# kernel/src/fs.rs
# kernel/src/lib.rs
# kernel/src/memory.rs
# kernel/src/process/context.rs
# kernel/src/process/mod.rs
# kernel/src/syscall.rs
# kernel/src/trap.rs
2018-11-16 18:58:29 +08:00
WangRunji
e06f6b8bc5
update Cargo.toml & Cargo.lock
2018-11-16 15:17:25 +08:00
WangRunji
b3e5d1987e
update Cargo.lock
2018-11-16 00:30:15 +08:00
WangRunji
beb6533059
impl sys_getdirentry. 'ls' ok.
2018-11-08 16:56:01 +08:00
WangRunji
16be828370
impl sys_fstat
2018-11-07 23:32:22 +08:00
WangRunji
e27aea47e1
impl file syscalls, without test
2018-11-07 13:35:59 +08:00
equation314
67b920cc16
aarch64: format paging.rs
2018-11-07 13:09:50 +08:00
koumingyang
a0b948fb53
add basic alloc
2018-11-07 12:00:57 +08:00
koumingyang
a13f39149b
add basic alloc
2018-11-07 10:44:24 +08:00
WangRunji
91bd411a8f
fit for multi-thread sfs
...
- use global root inode
- remove global IDE on x86
2018-11-07 02:00:40 +08:00
equation314
3e1d8c5827
aarch64: implement ARM generic timer, can work in qemu
2018-11-04 18:15:26 +08:00
chenqiuhao
2002ddd5fa
move processor from wrj
2018-11-03 21:45:03 +08:00
WangRunji
0a6b4fb8f2
Modify const. Update cargo.
2018-11-02 16:14:29 +08:00
WangRunji
7229b49eb8
Use rust-lld for RV32. Remove riscv git submodule.
2018-10-30 13:30:20 +08:00
lcy1996
edde416052
Finish swap for multi-user process
2018-10-30 12:45:09 +08:00
equation314
addf49ffdb
aarch64: add crate bcm2837, implement GPIO
2018-10-27 02:45:47 +08:00
WangRunji
438e290b6d
Fix PageTable::get_entry -> Option.
2018-10-26 23:43:12 +08:00
WangRunji
f7eb09e856
Multicore processing WORKS! Basically ...
...
- Rewrite processor.rs
Refactor to `Processor` & `ProcessManager`
- Use Box<dyn> instead of generic.
- Wait/sleep/wakeup is not supported yet.
I'm considering to implement them with WaitQueue.
2018-10-24 00:28:29 +08:00
WangRunji
f1771f8ef2
Finish x86 SMP startup. Support timer & IPI.
...
- Remove smp, apic mod.
Instead, use new bootloader & apic crate.
- Disable PIC & PIT.
Instead, use IOAPIC & APIC Timer.
2018-10-19 01:14:21 +08:00
WangRunji
7a9b746c68
x86_64 back to normal.
...
* Fix kernel stack P4E
* User programs: disk0 -> disk1
* IDE IRQ appears ??
2018-09-18 17:49:12 +08:00
WangRunji
0a9c294814
Fix x86_64 startup. TODO: higher half.
...
* Remove legacy boot, MP, ACPI.
* Disable SMP.
* Modify startup: boot -> arch::init -> kmain.
* Fix FrameAllocator on x86_64.
* Remove kernel remap.
* Alloc kernel heap at bss.
2018-09-09 02:35:32 +08:00
WangRunji
0437e5cb17
Make it compile for bootimage toolchain
...
* Revert to nightly-2018-08-27 due to its bug on macOS
* Not build C code
2018-09-07 12:44:40 +08:00
WangRunji
caeff9ad97
Update packages and fit for new Rust nightly
2018-09-04 13:19:23 +08:00
WangRunji
10e3cea340
Only use Rust toolchain to build for rv32. Set arch to rv32i. x86_64 broken.
2018-08-05 00:24:36 +08:00
WangRunji
b88648ff44
Fit for newest Rust nightly. x86_64 ok, riscv32 broken.
2018-08-04 16:20:25 +08:00
WangRunji
c8a9eaf3e6
Split process mod to extern crate
2018-07-17 01:56:28 +08:00
WangRunji
6b0556e135
Add Cargo.lock
2018-07-15 16:43:43 +08:00