1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-27 02:03:29 +04:00
Commit Graph

669 Commits

Author SHA1 Message Date
Jiajie Chen
36292e6fcd Add dummy implementations for more syscalls 2019-02-28 07:34:45 +08:00
WangRunji
c7f9921e06 support TLS for musl. partial impl sys_exit_group. 2019-02-28 00:15:44 +08:00
WangRunji
f76374000e fix x86_64 syscall register (r10) 2019-02-28 00:12:59 +08:00
equation314
7a278cd421 Merge branch 'master' into biscuit 2019-02-27 14:59:30 +08:00
equation314
50a8de35bc aarch64: save current TTBR1_EL1 in context switch
fixed a bug: when the context switch occurs in InactivePageTable::edit() or InactivePageTable::with() which modify TTBR1_EL1 temporarily, TTBR1_EL1 can be restored to the unmodified value after context switch.
2019-02-27 14:49:32 +08:00
Jiajie Chen
671b7c7b54 Implement backtrace support for x86_64 2019-02-26 23:59:18 +08:00
Jiajie Chen
6f1953b977 Add document for e1000 driver 2019-02-26 23:03:04 +08:00
Jiajie Chen
af9a978a9d Fix a bug in e1000 driver, run net thread and update Makefile 2019-02-26 20:46:51 +08:00
Jiajie Chen
7a3c66a923 Receiving from e1000 driver works 2019-02-26 19:33:20 +08:00
WangRunji
85ae4b1ba1 impl sys_stat, sys_readv, sys_writev. not tested yet 2019-02-26 18:37:50 +08:00
WangRunji
4e146ec491 impl sys_lseek 2019-02-26 17:01:38 +08:00
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
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
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
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
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
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
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
681a90657a let Makefile support riscv64 2018-12-28 23:35:50 +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
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
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
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
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
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
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
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
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
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
equation314
f882a085d6 user: link created SFS image in kernel 2018-11-29 17:33:31 +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
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
9b3294a5f2 fix clear bss when load user program. 'sh' works! 2018-11-16 00:17:05 +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
lcy1996
4f03eff015 Use SpinNoIrqLock to replace the spin::mutex 2018-10-31 11:11:06 +08:00
lcy1996
504401355f Add expr3 report(not finiished. 2018-10-30 21:50:38 +08:00
equation314
8c19499112 aarch64: implement exception interface & synchronous exception handler 2018-10-30 20:44:54 +08:00
lcy1996
2c3de7b222 Merge branch 'OsTrain2018-g4' of github.com:oscourse-tsinghua/RustOS into lcy_issue1 2018-10-30 12:46:01 +08:00
lcy1996
edde416052 Finish swap for multi-user process 2018-10-30 12:45:09 +08:00
equation314
3386a793a5 aarch64: disable NEON 2018-10-29 23:05:16 +08:00
equation314
632baedabd aarch64: can run on the real raspi3 2018-10-29 18:53:14 +08:00
equation314
2e094d08bc common: add a logo 2018-10-29 13:41:25 +08:00
equation314
abf3418d24 aarch64: implement I/O by serial port 2018-10-29 13:38:27 +08:00
WangRunji
72dc3f62ad Remove kernel stack from MemorySet. 2018-10-27 15:17:15 +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
equation314
cc936ded35 aarch64: bootable in qemu 2018-10-26 22:02:24 +08:00
WangRunji
a42d6086c6 Simplify IDE code. 2018-10-26 18:18:11 +08:00
WangRunji
81196729e4 Fix RV32 atomic.
- Fix __atomic_compare_exchange_4().
- Add patch for core::sync::atomic.
- Revert kernel Mutex.
2018-10-26 15:22:03 +08:00
chenqiuhao
ede69959e4 debug for compare exchange 2018-10-26 15:03:20 +08:00
equation314
174e0da3b6 aarch64: basic framework 2018-10-26 11:22:22 +08:00
WangRunji
95ab9caba1 Add impl of atomic_fetch_* 2018-10-26 02:31:05 +08:00
WangRunji
0680023e35 Recover wait/sleep 2018-10-26 00:49:19 +08:00
WangRunji
85a1dca684 Use weak linkage to provide dependencies for process::thread. 2018-10-24 21:32:23 +08:00
WangRunji
80b161db98 Recover set_priority and fork 2018-10-24 21:29:41 +08:00
WangRunji
5db908b1c5 Separate ProcessManager to a mod. 2018-10-24 00:38:22 +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
6741ba399b Add arch::cpu::halt(). Halt when panic. 2018-10-24 00:23:40 +08:00
lcy1996
5f34cc54d8 Merge branch 'OsTrain2018-g4' of github.com:oscourse-tsinghua/RustOS into lcy_issue1 2018-10-23 00:00:27 +08:00
lcy1996
63349ade19 Finish add more comment for kernel and finish set user memory swappable. 2018-10-23 00:00:09 +08:00
chenqiuhao
9474ad7220 update atomic function and workaround the LLVM compiling bug(maybe) 2018-10-22 18:40:21 +08:00
WangRunji
5bc392f388 Enable RV32 IPI. 2018-10-21 21:47:17 +08:00
WangRunji
1b4edf3bb2 Merge branch 'rv32-smp-porting' into dev
# Conflicts:
#	kernel/Makefile
2018-10-19 23:36:15 +08:00
WangRunji
72e92c07f9 Switch to RV64 GNU toolchain. Simplify compiler_rt. 2018-10-19 23:35:38 +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
maoyuchaxue
f27fd37d82 replaced spin::Mutex with sync::SpinLock, now spinlock works well. 2018-10-17 21:34:15 +08:00
maoyuchaxue
f7b7b1bcd6 added workaround for atomic ops 2018-10-17 19:37:53 +08:00
maoyuchaxue
cfda03a0f2 trying to add atomic implementations in rv32, but still buggy 2018-10-17 00:21:18 +08:00
lcy1996
0a81014007 Add page handler for swap in/out in riscv32's pagefault 2018-10-16 21:51:17 +08:00
maoyuchaxue
49cd04dce3 added rv32 smp booting, with slight modification to bbl 2018-10-14 22:28:01 +08:00
maoyuchaxue
6cf0d6db23 fixed setting in riscv-pk to enable rv32ia, added smp option in Makefile 2018-10-14 13:50:59 +08:00
lcy1996
0a7ec18701 Add page fault handler to riscv 32. 2018-10-11 21:30:35 +08:00
lcy1996
96cdf37b15 Add some comment for paging and add proposal doc 2018-10-09 21:11:14 +08:00
lcy1996
cef2d792be Add part of comments for riscv32 module 2018-10-08 01:47:13 +08:00
lcy1996
2157e4bbcf Add comment for interrutp and trap code 2018-10-06 01:45:56 +08:00
lcy1996
91455d163d Finish comment riscv context. 2018-10-05 23:39:28 +08:00
lcy1996
5b4aefdb0d Add comment for riscv32 context 2018-10-05 19:38:14 +08:00
lcy1996
e4300d3515 Add more comment in kernel but not finished 2018-10-05 10:58:15 +08:00
lcy1996
4e0b510895 Finish comment for ristv boot. 2018-10-04 13:23:32 +08:00
WangRunji
924c061d64 Merge branch 'x86-boot'
# Conflicts:
#	crate/riscv
#	kernel/Makefile
2018-09-19 20:18:14 +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
7f00001fd1 Move to higher half 2018-09-18 17:04:55 +08:00
dzy
5a0ce1e464 Refactored RISC-V page table identity mapping into a function. 2018-09-14 21:44:25 +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
cbe7affc5d Merge riscv for QEMU & FPGA 2018-08-07 16:11:48 +08:00
WangRunji
ff8930a36c Make frame allocator smaller. Fix serial stupid bug. 2018-08-07 15:09:11 +08:00
WangRunji
3cf118ba67 Mul & div inst emulation 2018-08-07 14:53:35 +08:00
WangRunji
b99dc3d1cf Merge branch 'new-rv-toolchain' into board 2018-08-06 19:07:56 +08:00
WangRunji
640872d154 Use alloc API to fix stack overflow in release mode. 2018-08-06 19:04:18 +08:00
WangRunji
384f6a9c9c Change kernel heap to identity map 2018-08-06 18:07:42 +08:00
WangRunji
dc97b4b433 Fix atomic_compare_exchange 2018-08-06 18:03:21 +08:00
WangRunji
3d0d6e3d02 Merge branch 'new-rv-toolchain' into board
# Conflicts:
#	kernel/Makefile
#	kernel/src/arch/riscv32/boot/entry.asm
2018-08-05 18:52:13 +08:00
WangRunji
3d6fcb8d8c Fix x86_64. Not elegant. 2018-08-05 17:50:56 +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
7e5726845f Simple bootloader. Remove riscv-pk. 2018-08-03 19:27:38 +08:00
WangRunji
a2111a928f Move thread mod to ucore-process crate 2018-07-17 19:06:30 +08:00
WangRunji
776dc976c9 Fix for user 2018-07-17 12:07:21 +08:00
WangRunji
6022ec8efc Fix load user program out of range 2018-07-17 11:45:55 +08:00
WangRunji
52d3443e05 Recover idle process. Make shell wait for the user it spawned. 2018-07-17 10:47:05 +08:00
WangRunji
c8a9eaf3e6 Split process mod to extern crate 2018-07-17 01:56:28 +08:00
WangRunji
37a6df252f Refactor process mod 2018-07-17 00:23:02 +08:00
WangRunji
97b838981f Fix console 2018-07-16 22:02:03 +08:00
WangRunji
cf1a2d3450 Simple kernel shell 2018-07-16 17:31:29 +08:00
WangRunji
542a06d50e Set default log level to WARN 2018-07-16 17:28:15 +08:00
WangRunji
60c2a77ac1 Unify IO in arch 2018-07-16 09:48:58 +08:00
WangRunji
f1407dff7b Note the reason of double fault in x86_64 release mode. 2018-07-15 20:51:14 +08:00
WangRunji
1cb50c00ba Fit for SFS 2018-07-15 16:44:21 +08:00
WangRunji
0c9679b710 Fix fork and syscall return value. 2018-07-15 01:07:25 +08:00
WangRunji
27daa6d491 Fix user trap 2018-07-15 00:45:53 +08:00
WangRunji
69bc5caa81 Fix syscall return value, args. Pass hello. 2018-07-14 18:42:58 +08:00
WangRunji
76f5af7d30 Merge rust_main. Change the way to pass multiboot info address. 2018-07-14 17:58:33 +08:00
WangRunji
c768ec3e1e Recover fs for RV32. Add user-riscv.img
Now load user programs from SFS data linked at kernel.
2018-07-14 17:41:45 +08:00
WangRunji
3286fed36c Recover syscall for RV32 2018-07-14 12:28:55 +08:00
WangRunji
1ad3ed738e Can run user program in RV32 2018-07-14 11:56:55 +08:00
WangRunji
c0138c4c35 Fix linking user program binaries 2018-07-14 01:11:47 +08:00
WangRunji
4faa8a65ae Move kernel to a new directory 2018-07-13 12:25:39 +08:00