1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-23 00:16:17 +04:00
Commit Graph

548 Commits

Author SHA1 Message Date
WangRunji
70a950bf40 fix struct stat to match Linux ABI 2019-02-26 16:21:55 +08:00
WangRunji
cab19688d5 rename File to FileHandle. impl create for sys_open. 2019-02-26 01:44:13 +08:00
WangRunji
6d78206f77 impl finding free area for mmap 2019-02-26 00:46:25 +08:00
Jiajie Chen
dd61ce30ba Implement reading pci memory address 2019-02-25 21:18:09 +08:00
Jiajie Chen
197bebb1d2 Implement pci bus probing and fix a bug in virtio_mmio 2019-02-25 19:12:41 +08:00
WangRunji
05310dcd7d refactor GDT mod 2019-02-25 00:44:22 +08:00
WangRunji
4404982a55 impl sys_arch_prctl set fs 2019-02-25 00:20:37 +08:00
WangRunji
7a704673d7 save fsbase to TrapFrame on x86_64 2019-02-25 00:17:16 +08:00
WangRunji
a224e85c8d split scheduler mod, make Scheduler Sync
biscuit: fix argc, argv
2019-02-23 19:28:38 +08:00
WangRunji
e678186b3d support idle for rcore-thread, remove idle thread in kernel 2019-02-23 16:54:02 +08:00
WangRunji
fc98719559 impl sys_mmap for annonymous 2019-02-23 00:07:28 +08:00
WangRunji
6e8a0e20ab fix device compile error, update crate pc_keyboard 2019-02-22 21:15:05 +08:00
WangRunji
08c8d89974 update SFS to new rcore-fs 2019-02-22 17:10:57 +08:00
WangRunji
ca45f8f152 fix check user ptr in syscalls 2019-02-22 16:30:56 +08:00
WangRunji
d26a1bc617 split syscall mod 2019-02-22 14:10:24 +08:00
WangRunji
2cf7e7bd87 fix File in Process 2019-02-22 13:09:42 +08:00
WangRunji
cf9ac9ccfd split fs mod 2019-02-22 13:08:40 +08:00
WangRunji
7927c7c168 Merge branch 'thread' into biscuit
# Conflicts:
#	kernel/src/process/mod.rs
#	kernel/src/process/structs.rs
#	kernel/src/syscall.rs
2019-02-22 12:06:21 +08:00
WangRunji
e1dacb28ef auto open stdin/out/err for new proc. pass biscuit hello,cat,echo ... 2019-02-22 11:44:48 +08:00
WangRunji
c69386fbc2 add rcore-user submodule 2019-02-21 18:35:10 +08:00
WangRunji
67e8bef0f5 modify syscall ids to match Linux 64. fix fork file bug. 2019-02-21 00:44:14 +08:00
WangRunji
8a1a38853e support 'syscall' instruction by handling invalid opcode exception 2019-02-18 22:34:44 +08:00
WangRunji
a6b0da0c2f rename x86_64 exception consts 2019-02-18 22:26:05 +08:00
WangRunji
32e7f0ed52 fix process startup stack for musl libc 2019-02-18 21:46:12 +08:00
WangRunji
a33d7632d6 rename 'KERN_VA_BASE' to 'KERNEL_OFFSET'. fix compile error 2019-02-18 14:42:25 +08:00
Jiajie Chen
fbf9409db2 Convert frame buffer to pa in virtio_gpu as well 2019-02-16 19:15:24 +08:00
Jiajie Chen
f399805196 Use KERN_VA_BASE and MEMORY_OFFSET to convert between kern va and pa 2019-02-16 18:06:32 +08:00
Jiajie Chen
8313b8854e cherry-pick virtio improvement from lab8-rv32
Move mandelbrot to test mod, cleanup virtio feature negotiation and add addr2line script to Makefile

Implement full virtqueue operations, virtio input driver

Use new virtqueue implementation for virtio net driver

Implement virtio blk device support and use it instead of memory sfs when available

fix dirty hack for virtio_blk
2019-02-16 16:52:11 +08:00
WangRunji
95dfb7684f update kflash.py, fix build k210 2019-02-16 14:31:47 +08:00
WangRunji
2766f49986 update README, Travis, Makefile 2019-02-15 16:10:24 +08:00
WangRunji
2303a8099b update Rust compiler to support riscv64 2019-02-15 14:54:42 +08:00
WangRunji
ac0c19cdb0 support Sv39
To test: make run arch=riscv64 board=u540
2019-02-01 01:09:23 +08:00
WangRunji
fc8888db72 update for new paging mechanism on riscv. move kernel va to 0x(ffffffff)c0000000. 2019-01-31 23:20:21 +08:00
WangRunji
1ceb7ae12d use #[repr(C)] instead of #[repr(packed)] to avoid warning 2019-01-31 18:07:15 +08:00
WangRunji
847a1c7576 use core::sync::atomic::fence 2019-01-29 16:08:00 +08:00
WangRunji
66c84b4599 update to x86_64 0.4 2019-01-28 14:24:56 +08:00
WangRunji
0ec5ad8056 split Process and Thread 2019-01-25 23:28:48 +08:00
WangRunji
5bffce787b rename 'process' crate to 'thread' 2019-01-24 19:03:45 +08:00
WangRunji
238de1b282 fix compile for rv64 2019-01-24 12:31:28 +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
Jiajie Chen
b1d01928c3 Use core::mem::size_of instead of core:intrinsics::size_of. Thanks @wangrunji0408 2019-01-08 22:10:51 +08:00
Jiajie Chen
6e887d5505 Replace hardcoded instruction length with size_of in backtrace 2019-01-08 19:08:17 +08:00
Jiajie Chen
5350ecb09f Add addr2line tool for annotating backtrace 2019-01-08 19:04:34 +08:00
Jiajie Chen
e3262698be Fix aarch64 toolchain detection and add missing compiler_builtins v0.1.5 2019-01-08 13:49:49 +08:00
Jiajie Chen
4beb865d32 Update toolchain location and detection 2019-01-08 12:57:24 +08:00
Jiajie Chen
090796d3f0 Implement backtrace support for RISCV32 2019-01-08 12:05:29 +08:00
Jiajie Chen
7d6856ceab Implement backtrace support for RISCV64 2019-01-08 11:33:31 +08:00
Jiajie Chen
d8edd1a7db Implement backtrace support for AArch64 2019-01-08 11:05:28 +08:00
dzy
61eda6b19e Add 0.1.4 compiler_builtins. Git ignore llc. 2019-01-06 20:17:35 +08:00
WangRunji
0965d24083 fix map_kernel on riscv32 2019-01-05 15:29:27 +08:00
WangRunji
2d5178d0b7 rename ucore to rcore 2019-01-03 21:26:50 +08:00
WangRunji
f0ea48126d fix sys_wait arg type: isize -> i32 2019-01-03 18:37:27 +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
equation314
dfb2d49cd6 aarch64/doc: add console driver 2019-01-02 19:15:47 +08:00
equation314
1aa8436d71 aarch64/doc: add interruption & timer drivers 2019-01-01 20:47:19 +08:00
equation314
7fda4e360f aarch64/doc: add GPIO, mini UART, mailbox drivers 2019-01-01 01:56:22 +08:00
WangRunji
e46b6c7b0c move target json. add kflash.py 2019-01-01 01:53:33 +08:00
WangRunji
190711fbc2 yet another riscv atomic fix 2019-01-01 01:40:34 +08:00
equation314
e1d0d2a020 aarch64/doc: add overview of AArch64 2018-12-31 22:51:13 +08:00
WangRunji
5d7e97d9e9 fix interrupt in process crate 2018-12-31 22:49:28 +08:00
WangRunji
681a90657a let Makefile support riscv64 2018-12-28 23:35:50 +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
WangRunji
92ae57b251 fix user program memory layout on NoMMU 2018-12-27 22:44:01 +08:00
WangRunji
daee1e9f94 fix bugs on K210 2018-12-27 22:43:48 +08:00
WangRunji
b3a8e95d78 merge interrupt & context switch for rv32 & rv64 2018-12-27 19:48:08 +08:00
WangRunji
de24f6673c remove '\r' 2018-12-27 15:56:20 +08:00
WangRunji
0d957ff1a6 fix getchar on K210 2018-12-26 23:53:14 +08:00
dzy
4b17055f30 running user program. 2018-12-26 21:07:36 +08:00
dzy
e74f749ff3 fix context change bug. user sh is running!!! 2018-12-26 16:10:00 +08:00
dzy
6f2d059ba5 implement map_kernel, now enters the kernel well 2018-12-26 15:42:08 +08:00
dzy
bf3a67a7e4 remap_kernel runs fine 2018-12-26 15:03:35 +08:00
dzy
21adebb203 run until ms.token() 2018-12-26 14:56:13 +08:00
dzy
ccee527272 runs without pagefault but does not reach end of remap_kernel 2018-12-26 14:04:11 +08:00
dzy
a4348428a6 can run until update 2018-12-26 13:58:08 +08:00
dzy
d67a224494 add wrj's 704af94 patch 2018-12-26 11:55:27 +08:00
dzy
ed3fb6d423 another temporary 2018-12-26 09:54:14 +08:00
dzy
0dbffbc0fa temporary 2018-12-26 00:12:10 +08:00
WangRunji
af6d533cb5 fix trap return on M-Mode 2018-12-25 00:56:25 +08:00
WangRunji
3de76885fa llc build for rv64imc 2018-12-25 00:33:29 +08:00
WangRunji
020e3505ee enable timer interrupt for K210 2018-12-25 00:30:21 +08:00
dzy
b7e124930d fix compilation errors 2018-12-24 21:36:33 +08:00
dzy
3910f71521 preliminary support for riscv64, not tested.
riscv32 runs fine.
2018-12-24 20:52:54 +08:00
WangRunji
3a4b8f5dac fix trap for rv64 2018-12-24 20:28:42 +08:00
WangRunji
8529d9fe4e fix const, linker, build for K210 2018-12-23 03:33:05 +08:00
WangRunji
9ab4fd40ea fix atomic for K210. enable print mutex again 2018-12-23 03:30:01 +08:00
WangRunji
70b6db4282 make clear_bss faster 2018-12-23 03:10:59 +08:00
dzy
1d1d4109c3 Make script easily support both rv32 and rv64. 2018-12-22 17:58:17 +08:00
dzy
98c94a0d83 Fix register size (4->XLEN) in trap handling. 2018-12-22 17:41:47 +08:00
WangRunji
45b91fbcad update rv64 build script. print hello on QEMU! 2018-12-22 15:54:03 +08:00
WangRunji
d3ef0252ac move setup_page_table to BBL 2018-12-22 15:40:47 +08:00
WangRunji
3ea104da97 Merge remote-tracking branch 'dzy/rust-rv64' into rust-rv64
# Conflicts:
#	kernel/Cargo.toml
2018-12-21 19:22:56 +08:00
WangRunji
0af9776dbd add .stack section. clear bss 2018-12-21 19:19:55 +08:00
WangRunji
7240198a54 fix newline: '\r\n' 2018-12-21 19:02:50 +08:00
Ben Pig Chu
5135fb0c0e the shell that is able to fork-exec-wait 2018-12-21 14:18:23 +08:00
WangRunji
62b931d576 print hello on K210 2018-12-21 01:50:52 +08:00
equation314
aa5bd3041b Merge branch 'master' into arch-aarch64 2018-12-20 23:07:16 +08:00
Ben Pig Chu
364497e379 use the error code specified in ucore_os_lab instead of ucore_plus 2018-12-20 19:36:19 +08:00
equation314
a55f3b61e6 add Makefile option graphic & cargo feature nographic 2018-12-20 19:05:19 +08:00
dzy
a75e52691d port to newer riscv crate supporting rv64 2018-12-20 18:21:58 +08:00
Ben Pig Chu
6e8c80d328 panicless default fs implement 2018-12-20 17:13:00 +08:00
equation314
09c2b6e7b7 aarch64/fb: add ANSI escape sequences parser 2018-12-20 15:45:17 +08:00
Ben Pig Chu
113a33e575 translate FsError to SysError 2018-12-20 14:03:11 +08:00
Ben Pig Chu
f8533442f2 return error code from syscall, not always -1 2018-12-20 13:20:00 +08:00
Ben Pig Chu
fa03f7b112 use the simple-filesystem crate with FsError 2018-12-20 12:27:21 +08:00
WangRunji
d4b6cc1082 compile rv64 pass on macOS 2018-12-20 01:13:42 +08:00
WangRunji
02bd2b2317 remove arch/riscv64 directory 2018-12-20 01:08:40 +08:00
equation314
6c717905d7 aarch64/fb: add foreground & background color 2018-12-19 14:49:15 +08:00
equation314
9dda78d2e3 aarch64/fb: improve the performance of ConsoleBuffer::new_line() 2018-12-18 22:53:20 +08:00
Ben Pig Chu
d737b1e7ba maually remove warning, pt6 2018-12-18 21:39:19 +08:00
equation314
7b8359eeef aarch64/fb: add 8x16 font 2018-12-18 17:51:22 +08:00
Ben Pig Chu
6eb49a0106 maually remove warning, pt5 2018-12-18 16:29:09 +08:00
Ben Pig Chu
7eb9f7abcf maually remove warning, pt4 2018-12-18 15:16:30 +08:00
Ben Pig Chu
935c595083 maually remove warning, pt3 2018-12-18 13:32:05 +08:00
Ben Pig Chu
07b8a063ec maually remove warning, pt2 2018-12-18 12:53:56 +08:00
equation314
b47c4758bf aarch64/fb: add basic console driver 2018-12-18 00:16:56 +08:00
Ben Pig Chu
1ca2bde069 maually remove warning, pt1 2018-12-17 23:54:13 +08:00
dzy
f954c2fd6a Completely get rid of cargo-generated target/ 2018-12-17 16:48:46 +08:00
dzy
61a3beb8ba Start porting for rv64 2018-12-17 14:58:16 +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
6ba9e34f77 aarch64/fb: add framebuffer initialization 2018-12-16 20:55:04 +08:00
WangRunji
9b0b0064d0 Merge remote-tracking branch 'equation314/arch-aarch64' into dev
# Conflicts:
#	kernel/src/arch/aarch64/memory.rs
#	kernel/src/arch/aarch64/paging.rs
#	kernel/src/process/context.rs
2018-12-15 20:33:25 +08:00
WangRunji
d20d22b85b add hint for user shell. detect cores through 'SMP' env. 2018-12-15 20:17:02 +08:00
WangRunji
fbf59396b2 use 'ucore_*.img' by default 2018-12-15 20:04:22 +08:00
equation314
d7511d8120 aarch64/fb: add mailbox property interfaces 2018-12-14 21:19:44 +08:00
WangRunji
6952f008e0 rename ContextImpl to Process 2018-12-14 02:37:51 +08:00
WangRunji
557f021c08 fix DelayHandler & MemoryAttr 2018-12-14 02:31:46 +08:00
WangRunji
704af94211 fix rv32 entry editing 2018-12-14 02:25:30 +08:00
equation314
f76a604b78 aarch64: add driver interfaces 2018-12-13 18:49:54 +08:00
equation314
81af2c82fd aarch64: reduce some warnings, config system/generic timer in Makefile 2018-12-11 16:58:04 +08:00
equation314
5a165178cc aarch64: implement IRQ register & serial IRQ 2018-12-11 15:07:13 +08:00
WangRunji
ff806d4465 move common codes to InactivePageTable trait 2018-12-08 12:50:50 +08:00
WangRunji
102866bcf9 introduce MemoryHandler and refactor MemorySet. temporary disable swap.
This is a manual rebase of LCY's code
2018-12-08 00:29:55 +08:00
WangRunji
96a76290b6 fix rv32 __mulsi3 add overflow 2018-12-07 23:48:27 +08:00
dzy
7b0ac1b84e Script to allow rustc-only builds without cargo. 2018-12-07 20:50:39 +08:00
dzy
25ccdf6731 Update and cleanup makefile.
* Change few places from riscv64 to riscv32. Previously it was rv64
  because the code author does not have a 32bit toolchain and used a
  64bit one instead.

* Add new board type 'none', for running on qemu.
2018-12-07 20:48:44 +08:00
equation314
28d872064d Merge branch 'master' of https://github.com/wangrunji0408/RustOS into arch-aarch64 2018-12-07 11:35:07 +08:00
equation314
aa5e7a4e6f remove #![feature(extern_crate_item_prelude)] 2018-12-03 17:22:11 +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
equation314
d5a6eb2020 user: fix build error 2018-12-03 12:30:03 +08:00
Wang Runji
3f2beab52d
Merge branch 'master' into user-img 2018-12-02 22:39:59 +08:00
WangRunji
e7039945c1 move user img, remove useless files 2018-12-02 21:18:37 +08:00
WangRunji
acafe19e26 fix runtime error on aarch64
- InactivePageTable::activate should be separated for user & kernel (TTBR1/0)
- disable swappable for aarch64 (bug?)
- use polling getchar as serial interrupt is not implemented
2018-12-02 21:17:53 +08:00
equation314
66ac30d401 user: update make clean in kernel/ 2018-12-02 19:56:29 +08:00
equation314
710b6d1a28 user: update Makefiles 2018-12-02 19:51:52 +08:00
equation314
e86229cb71 user: user rust programs are runnable 2018-12-02 19:44:05 +08:00
WangRunji
b5ced136f7 fix merge compile error 2018-12-02 00:58:15 +08:00
WangRunji
2afe8c731e Merge remote-tracking branch 'equation314/arch-aarch64' into dev
# Conflicts:
#	crate/memory/src/memory_set.rs
#	kernel/Cargo.lock
#	kernel/src/arch/aarch64/interrupt/handler.rs
#	kernel/src/arch/aarch64/interrupt/mod.rs
#	kernel/src/arch/aarch64/memory.rs
#	kernel/src/arch/aarch64/mod.rs
#	kernel/src/arch/aarch64/paging.rs
#	kernel/src/consts.rs
#	kernel/src/fs.rs
#	kernel/src/lib.rs
#	kernel/src/memory.rs
#	kernel/src/process/context.rs
#	tools/riscv-pk/.gitignore
#	tools/riscv-pk/LICENSE
#	tools/riscv-pk/Makefile.in
#	tools/riscv-pk/README.md
#	tools/riscv-pk/aclocal.m4
#	tools/riscv-pk/bbl/bbl.ac
#	tools/riscv-pk/bbl/bbl.c
#	tools/riscv-pk/bbl/bbl.h
#	tools/riscv-pk/bbl/bbl.lds
#	tools/riscv-pk/bbl/bbl.mk.in
#	tools/riscv-pk/bbl/logo.c
#	tools/riscv-pk/bbl/payload.S
#	tools/riscv-pk/bbl/raw_logo.S
#	tools/riscv-pk/bbl/riscv_logo.txt
#	tools/riscv-pk/config.h.in
#	tools/riscv-pk/configure
#	tools/riscv-pk/configure.ac
#	tools/riscv-pk/dummy_payload/dummy_entry.S
#	tools/riscv-pk/dummy_payload/dummy_payload.lds
#	tools/riscv-pk/dummy_payload/dummy_payload.mk.in
#	tools/riscv-pk/machine/atomic.h
#	tools/riscv-pk/machine/bits.h
#	tools/riscv-pk/machine/disabled_hart_mask.h
#	tools/riscv-pk/machine/emulation.c
#	tools/riscv-pk/machine/emulation.h
#	tools/riscv-pk/machine/encoding.h
#	tools/riscv-pk/machine/fdt.c
#	tools/riscv-pk/machine/fdt.h
#	tools/riscv-pk/machine/finisher.c
#	tools/riscv-pk/machine/finisher.h
#	tools/riscv-pk/machine/flush_icache.c
#	tools/riscv-pk/machine/htif.c
#	tools/riscv-pk/machine/htif.h
#	tools/riscv-pk/machine/machine.ac
#	tools/riscv-pk/machine/machine.mk.in
#	tools/riscv-pk/machine/mcall.h
#	tools/riscv-pk/machine/mentry.S
#	tools/riscv-pk/machine/minit.c
#	tools/riscv-pk/machine/misaligned_ldst.c
#	tools/riscv-pk/machine/mtrap.c
#	tools/riscv-pk/machine/mtrap.h
#	tools/riscv-pk/machine/muldiv_emulation.c
#	tools/riscv-pk/machine/uart.c
#	tools/riscv-pk/machine/uart.h
#	tools/riscv-pk/machine/uart16550.c
#	tools/riscv-pk/machine/uart16550.h
#	tools/riscv-pk/machine/unprivileged_memory.h
#	tools/riscv-pk/machine/vm.h
#	tools/riscv-pk/scripts/config.guess
#	tools/riscv-pk/scripts/config.sub
#	tools/riscv-pk/scripts/install.sh
#	tools/riscv-pk/scripts/mk-install-dirs.sh
#	tools/riscv-pk/scripts/vcs-version.sh
#	tools/riscv-pk/util/snprintf.c
#	tools/riscv-pk/util/string.c
#	tools/riscv-pk/util/util.mk.in
2018-12-02 00:27:10 +08:00
equation314
7855b70bc0 aarch64: add origin raspberrypi config.txt 2018-12-01 23:30:53 +08:00
equation314
4f592336ff aarch64: remove test functions 2018-12-01 22:39:21 +08:00
equation314
163e092c29 Merge branch 'mmu' into arch-aarch64 2018-12-01 22:31:29 +08:00
equation314
75b039c924 aarch64/mmu: move crate aarch64 to remote 2018-12-01 22:26:55 +08:00
equation314
5a83d6a20f aarch64: add user program SFS image 2018-12-01 20:12:54 +08:00
equation314
a59a7fbe9a aarch64/mmu: simply handle page fault 2018-12-01 20:00:35 +08:00
equation314
d6a54496f0 arch64/mmu: invalidate all icaches in InactivePageTable::with() 2018-12-01 19:43:58 +08:00
equation314
0eb33b661f aarch64/mmu: fix some bugs 2018-12-01 19:31:46 +08:00
WangRunji
fcf5074500 impl M-mode kernel for riscv32 2018-12-01 17:37:37 +08:00
WangRunji
2f8cfabbca remove redundant nightly features 2018-11-29 22:00:35 +08:00
WangRunji
a74b893bd2 update Makefile 2018-11-29 21:39:43 +08:00
equation314
f882a085d6 user: link created SFS image in kernel 2018-11-29 17:33:31 +08:00
equation314
94bc8353f7 user: create SFS image in Makefile 2018-11-29 12:49:58 +08:00
WangRunji
02eb7d9125 update 'riscv-pk' to upstream submodule 2018-11-29 00:00:52 +08:00
WangRunji
6921e9018d fix NoMMU entry point 2018-11-27 11:26:37 +08:00
WangRunji
18640b7537 impl NoMMU 2018-11-27 01:23:07 +08:00
WangRunji
52fe93188d disable delay allocating frame, remove memory_set_record 2018-11-27 01:18:30 +08:00
WangRunji
2db453556d try to fix interrupt & deadlock on RV32 2018-11-26 16:58:45 +08:00
equation314
d30c7e59ca aarch64: minor modify 2018-11-25 20:01:13 +08:00
equation314
264600f145 aarch64/mmu: add io remap 2018-11-25 18:27:31 +08:00
equation314
a8b334123a aarch64/mmu: add memory region attribute config 2018-11-25 17:58:17 +08:00
equation314
f9e47b2fd8 aarch64/mmu: refactor PageTableFlags 2018-11-25 00:29:39 +08:00
equation314
de6354ddd3 aarch64/mmu: use ASID to avoid flush TLB frequently in context switch 2018-11-23 23:25:15 +08:00
equation314
55087fc5a2 aarch64/mmu: use both TTBR0_EL1 & TTBR1_EL1 2018-11-23 00:43:18 +08:00
WangRunji
46f0e85230 add ucore-i386-pic.img user programs. reorganize imgs. 2018-11-22 18:06:39 +08:00
equation314
bb1c1abaa4 aarch64/mmu: can run on the real raspi3 2018-11-21 20:02:34 +08:00
equation314
a9de99d3a9 aarch64/mmu: remap kernel memory ranges at the end of memory::init() 2018-11-21 01:50:34 +08:00
equation314
99c5b3c3f8 Merge branch 'arch-aarch64' into mmu 2018-11-20 18:36:23 +08:00
equation314
13be52133d aarch64: move kernel stack top to 0x100000 2018-11-20 18:32:26 +08:00
equation314
f398945ad3 aarch64: hard link user program 2018-11-20 18:29:51 +08:00
equation314
9e8124abbb aarch64/mmu: mmu enabled 2018-11-20 16:46:16 +08:00
WangRunji
b1bdac7d0f fix merge for aarch64. now it works! 2018-11-20 01:08:39 +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
lcy1996
76d2c6ec7b Fix the bug of active_table_swap() wrongly force unlock in pg fault handler 2018-11-17 23:17:42 +08:00
lcy1996
b2fec2b16b Fix a bug in context for smp 2018-11-17 21:34:21 +08:00
lcy1996
67035ac556 Fix a bug in pg fault handler caused by memory_set_record 2018-11-17 19:18:48 +08:00
lcy1996
00d0ea8a8b Modified the code in pgfault 2018-11-17 16:54:21 +08:00
lcy1996
9d803e87d9 replace some unwrap() and comment the cow pgfault handler 2018-11-17 16:25:24 +08:00
WangRunji
df485d506e simplify ProcessManager
- given that a proc can only be waited by its parent, wait_queue is no longer needed.
2018-11-17 12:58:40 +08:00
WangRunji
5478b9ba7b no longer show normal page fault 2018-11-17 12:42:19 +08:00
WangRunji
ef75c8a072 fix unwrap panic. now user shell is working. 2018-11-17 12:40:51 +08:00
WangRunji
da399dca96 remove Process struct 2018-11-16 22:27:03 +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
d27ac65df3 fix load program slice error 2018-11-16 01:33:25 +08:00
WangRunji
5ce7d0a9c0 use user shell by default. fix kernel shell removing user thread. 2018-11-16 01:22:59 +08:00
WangRunji
21b0bdcbca separate kernel shell to a mod, remove console mod 2018-11-16 00:49:42 +08:00
WangRunji
b3e5d1987e update Cargo.lock 2018-11-16 00:30:15 +08:00
WangRunji
9b3294a5f2 fix clear bss when load user program. 'sh' works! 2018-11-16 00:17:05 +08:00
WangRunji
40b099ed79 clean riscv-pk in Makefile 2018-11-15 23:42:44 +08:00
WangRunji
44bf3fb07a impl sys_exec 2018-11-15 23:41:22 +08:00
equation314
576ae1d911 add setup_page_table 2018-11-15 19:12:02 +08:00
lcy1996
f4305b382f Add comment and report for expr4 2018-11-15 16:29:24 +08:00
koumingyang
ef213d60bb mmu 2018-11-15 14:22:57 +08:00
lcy1996
eb00b2bfd3 merge conflict 2018-11-14 21:54:26 +08:00
lcy1996
a8da42d521 Add expr4 report and some trace for synctest 2018-11-14 21:45:56 +08:00
chenqiuhao
4d8d48cf4d repair some bugs and move child control to processmanager 2018-11-14 18:36:47 +08:00
lcy1996
65cd42028c Add illegal vma check in page fault hangler 2018-11-14 01:13:19 +08:00
lcy1996
c5499a62c5 Fix bug in swap in/out. Address ailign to 4K. 2018-11-14 00:32:59 +08:00
chenqiuhao
6652f8daf6 repair some bugs 2018-11-13 22:52:11 +08:00
chenqiuhao
8d6d3b7c37 debug for sleepkill 2018-11-13 19:56:17 +08:00
WangRunji
f97e8458b8 impl stdin & stdout as INode 2018-11-11 23:08:59 +08:00
lcy1996
5ee44588e0 Enlarge the physical and kernel heap memory. Fix the bug in map the kernel. 2018-11-09 11:08:45 +08:00
lcy1996
0b900b6f03 Code Transplanting: Blocking getchar 2018-11-08 19:40:28 +08:00
lcy1996
9adcea44d5 Code transplanting: Fix bugs. Pass test 'spin' 2018-11-08 19:21:13 +08:00
WangRunji
a589ae90f3 use SysError in syscalls 2018-11-08 17:33:13 +08:00
WangRunji
beb6533059 impl sys_getdirentry. 'ls' ok. 2018-11-08 16:56:01 +08:00
WangRunji
124a5e0d5d impl sys_dup
- Fix exit_code: i32
- Convert Box<File> to Arc<Mutex<File>> in Context
2018-11-08 00:21:20 +08:00
WangRunji
16be828370 impl sys_fstat 2018-11-07 23:32:22 +08:00
WangRunji
128257c395 impl argc & argv for user process 2018-11-07 23:28:07 +08:00
equation314
5610d0bdb0 aarch64: context switch is runnable! 2018-11-07 22:07:59 +08:00
WangRunji
e27aea47e1 impl file syscalls, without test 2018-11-07 13:35:59 +08:00
WangRunji
200a574a1f fix physical memory range on RV32 2018-11-07 13:16:52 +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
9fc13c8ebb aarch64: implement syscall 2018-11-07 01:05:55 +08:00
equation314
a91534e34d aarch64: implement context switch, but not tested 2018-11-06 21:44:12 +08:00
WangRunji
16fb733497 Blocking getchar 2018-11-05 22:55:59 +08:00
lcy1996
a145909998 Fix compile error after merge for the new processor. 2018-11-05 22:16:45 +08:00
lcy1996
fcdee71f9d Merge confilt 2018-11-05 21:31:04 +08:00
lcy1996
c8ea2cb0cf Fix bug and enable swap in/out and frame delayed allocating. 2018-11-05 20:37:05 +08:00
chenqiuhao
87506b000d debug for process 2018-11-05 19:31:45 +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
lcy1996
b1425a53f9 finish frame delayed allocating 2018-11-03 14:33:36 +08:00
WangRunji
0a6b4fb8f2 Modify const. Update cargo. 2018-11-02 16:14:29 +08:00
WangRunji
ba4a24ba3b Fix RV32 multi-core: Setup page table for other cores. 2018-11-02 16:13:58 +08:00
WangRunji
b7d6b2989d Fix bugs. Pass test 'spin'
- Fix ACK IRQ on x86.
- Add process exit handler.
2018-11-01 21:10:19 +08:00
WangRunji
ed20aa45fd Fix user process bug on RV32.
Set sstatus.SIE = 0 on the initial TrapFrame, to prevent interrupt on switching.
2018-11-01 19:53:30 +08:00
WangRunji
6fc23e1134 Ugly impl sys_wait(0) 2018-11-01 00:45:02 +08:00
WangRunji
74facd8e87 Use Vec to replace array in ProcessManager. 2018-11-01 00:16:32 +08:00
equation314
07aa9a0686 aarch64: implement IRQ & system timer, but don't work in qemu 2018-10-31 16:10:22 +08:00
WangRunji
182c595a20 Enable multi-core on RV32. 2018-10-31 11:46:50 +08:00
WangRunji
250f1385d3 Better debug print for TrapFrame on RV32 2018-10-31 11:39:42 +08:00