WangRunji
17e644e54e
unimportant changes
6 years ago
equation314
480bf0d14c
fix struct stat layout on non-x86 archs
6 years ago
equation314
eca05a1685
add non-x86 syscall ids
6 years ago
equation314
18626a2a19
Merge branch 'bootloader' into biscuit
6 years ago
WangRunji
5a619825bc
fix VGA and support keyboard escape char for rust/sh
6 years ago
Jiajie Chen
23b4c39ec7
Enlarge tcp send/recv buf for sys_accept() sockets
6 years ago
Jiajie Chen
755f820c41
Enable interrupt throttling, use spin before wait in sys_read and fix sys_bind, sys_poll for udp
6 years ago
WangRunji
c6c76147d6
impl custom syscall: sys_get_paddr
6 years ago
WangRunji
1c5effae04
move hard link user asm to Rust
6 years ago
Jiajie Chen
236c403f36
Enable ixgbe ip receive checksum
6 years ago
WangRunji
a3edd38046
fix VGA color on x86_64
6 years ago
WangRunji
e70cac58c8
refactor x86_64 VGA using console-traits crate
6 years ago
WangRunji
0f339fcbf8
fix compile on riscv
6 years ago
WangRunji
b304764fb5
fix VGA on x86_64
6 years ago
Jiajie Chen
0977814d34
Fix ixgbe and e1000 drivers by adding IFCS bit
6 years ago
Jiajie Chen
e7657356a2
Implement sys_map_pci_device call for mapping BAR into user space
6 years ago
Jiajie Chen
8860f1e4a3
Implement mapping from riscv to x86_64 syscall numbering
6 years ago
Jiajie Chen
cd23967f97
Fix riscv32 hartid saving
6 years ago
WangRunji
b8460e20d8
fix riscv syscall ABI. fix store user tp and kernel hartid
6 years ago
Jiajie Chen
a4c1d1231b
Use rust user shell instead of kernel shell and fix sys_exec
6 years ago
Jiajie Chen
543fb971ed
Fix input blocked when keyboard input is fast
6 years ago
Jiajie Chen
9dd576d6a1
Fix ixgbe transmitting
6 years ago
Jiajie Chen
e1bcbe7eb2
Initial ixgbe driver with transitting
6 years ago
Jiajie Chen
71808b49f5
Initial ixgbe driver capable of receiving frames
6 years ago
Jiajie Chen
a6bb042bd9
Support zero timeout in sys_select. Improve e1000 driver speed
6 years ago
Jiajie Chen
02a40b359b
Only remap device memory region lazily
6 years ago
Jiajie Chen
af63d937d6
Add udp remote endpoint state
6 years ago
Jiajie Chen
33ce72703b
Enlarge tcp send/recv buf, implement getsockopt for send/recv buf and add spin_and_wait
6 years ago
WangRunji
40ac510ecd
fix compile on riscv & aarch64
6 years ago
jiegec
09588d7a1f
Fix Sockaddr, implement sys_rusage and fix readv
6 years ago
equation314
681c0be801
aarch64: fix the potential memory overlapping bug of bootloader
6 years ago
Jiajie Chen
b7aee438db
Fix sys_kill and add killtest
6 years ago
Jiajie Chen
17c08ce26c
Fix sys_exit/sys_exit_group deadlock
6 years ago
Jiajie Chen
8dc7c7bd3c
Implement sys_reboot with isa-debug-exit and add test script using expect
6 years ago
WangRunji
9269a9856d
support fast syscall
6 years ago
WangRunji
98b3b12c96
continue refactoring process
6 years ago
Jiajie Chen
8cb11b7aa8
Implement tid/pid/ppid separation
6 years ago
Jiajie Chen
82457be2ec
Make time syscall more rustful
6 years ago
Jiajie Chen
cb0a51d28d
Use union to implement sockaddr, and eliminate many warnings
6 years ago
Jiajie Chen
d041884cc2
Fix sys_accept deadlock
6 years ago
Jiajie Chen
6697861860
Add is_listening to TcpSocketState, support sys_poll for listen
6 years ago
Jiajie Chen
6ed66d03d8
Fix sys_pipe
6 years ago
Jiajie Chen
d0d05acfd0
Implement Clone for SocketWrapper
6 years ago
equation314
f3d47f4b02
aarch64: move crate bcm2837 to remote
6 years ago
equation314
68b967b48e
aarch64: move crate `atags` into crate `bcm2837`
6 years ago
equation314
279f983786
aarch64: put the kernel in the top VA range
6 years ago
WangRunji
84c12ae6e1
rename functions. ignore readonly in mmap to avoid page fault.
6 years ago
WangRunji
ab63c933c2
fix sys_nanosleep
6 years ago
WangRunji
491353acfd
impl sys_futex. fix clear_child_tid for thread exit
6 years ago
WangRunji
84b2af3cdb
refactor sys_close_internal to SocketWrapper::drop
6 years ago
Jiajie Chen
1645451749
Implement memory_set splitting for munmap, add sys_sysinfo
6 years ago
WangRunji
dc55238989
fix sys_clone newtls
6 years ago
WangRunji
d51c52902d
minimal impl sys_clone
6 years ago
WangRunji
c3563192b5
fix SysResult::Ok(isize -> usize)
6 years ago
Jiajie Chen
b590545375
Implement sys_pwrite, sys_accept4 and dummy sys_chown, sys_epoll_create1. Allow recvfrom for tcp
6 years ago
WangRunji
fdc28724a3
fix sys_wait -1. update fs.
6 years ago
Jiajie Chen
0666a5a7ee
Implement sys_clock_gettime
6 years ago
Jiajie Chen
35dad6853f
Enable SSE and save FP registers in trapframe, implement sys_pread, sys_uname and sys_sched_getaffinity, support FIXED in mmap
6 years ago
WangRunji
f7f740a021
remove TLS setup code. fix check writable memory
6 years ago
Jiajie Chen
84e07a6d83
Implement sys_mprotect and move attr setting from page_fault_handler to map in Delay
6 years ago
Jiajie Chen
8809c6ca7f
Improve sys_wait and replace CR with LF
6 years ago
equation314
0e38439fb8
aarch64: enable MMU in bootloader
6 years ago
Jiajie Chen
6e7dc9e349
Minor fixes around thread pool, writev, fs and implement gettid
6 years ago
Jiajie Chen
2d77b89476
Infer phdr from elf loading address, skip the first page in sys_mmap and update user to musl-enabled biscuit programs
6 years ago
Jiajie Chen
cca53536d1
Implement sys_pipe, fix sys_chdir, add dummy sys_setuid, and set an ephermal port when binding port 0
6 years ago
Jiajie Chen
bf5e176176
Implement sys_shutdown
6 years ago
Jiajie Chen
026ee459ec
Fix sys_poll, implement sys_getpeername and dummy sys_access
6 years ago
WangRunji
bc6818e365
minor improvement of net syscalls
6 years ago
Jiajie Chen
a1576b12ad
Fix dup2 socket ref count and sys_accept, close sockets on sys_exit
6 years ago
Jiajie Chen
c5aa5922bd
Fix forking and sys_dup2, implement sys_getsockopt and update sys_exec
6 years ago
Jiajie Chen
781630e06d
Implement sys_select and nc is working
6 years ago
Jiajie Chen
8b9aecca1c
Fix a potential racing in park() and unpark(), fix sys_poll for a running telnet
6 years ago
WangRunji
9e6483f488
refactor driver: make (Net)Driver Sync. may help avoid deadlock?
6 years ago
WangRunji
1f2625e565
minor improvement of sys_poll
6 years ago
Jiajie Chen
42b02453a0
Implement basic version of sys_poll supporting stdin and socket, fix some deadlocks and introduce some others
6 years ago
Jiajie Chen
2683314c38
Allocate pages eagerly for Delay when forking. Implement sys_getsockname.
6 years ago
Jiajie Chen
3e6860ae8a
Fix lookup_inode for absolute path, and implement sys_accept for tcp
6 years ago
Jiajie Chen
a51b9dbd90
Implement tls setup code(not working yet), tcp sys_bind and sys_connect
6 years ago
equation314
8bb1e65ba7
load kernel elf in bootloader
6 years ago
Jiajie Chen
82e273df58
Implement sys_read for tcp
6 years ago
Jiajie Chen
0cf57be9e5
Tftp client is working by implement udp in some syscalls
6 years ago
Jiajie Chen
dcb1b51a5f
Improve time-related syscall precision and add some comment for MSI
6 years ago
Jiajie Chen
c6c89198cd
Add cmos rtc driver for x86
6 years ago
Jiajie Chen
1a1e39c960
Move socket set to iface, redesign NetDriver trait and implement blocking net syscalls
6 years ago
equation314
b94ba7759e
add aarch64 bootloader framework
6 years ago
WangRunji
738554386b
introduce VMError to simplify EFAULT error handling
6 years ago
Jiajie Chen
68167efd45
Merge remote-tracking branch 'origin/biscuit' into biscuit
6 years ago
Jiajie Chen
81176e5561
Implement raw socket for ping and add SocketWrapper struct
6 years ago
WangRunji
0fd24ff92e
impl sys_f(data)sync, sys_(f)truncate, sys_(un)link
6 years ago
WangRunji
451fe6b192
impl sys_chdir, sys_rename, sys_mkdir
6 years ago
WangRunji
2a6c4554d1
Merge remote-tracking branch 'course/biscuit' into biscuit
6 years ago
Jiajie Chen
687caf804d
Implement sys_getcwd
6 years ago
Jiajie Chen
e543449836
Implement basic version of sys_munmap and sys_time
6 years ago
WangRunji
a979b6b5ec
impl sys_getppid. fix checking pointer for process syscalls
6 years ago
WangRunji
132bc629fa
fix bad address error code to EFAULT
6 years ago
WangRunji
472dac5d09
fix sys_getdent64. pass ls in coreutils & busybox
6 years ago
WangRunji
b66c8811d1
update bootloader to fix multi-core boot bug on x86_64
6 years ago
WangRunji
8ab991ebe1
remove global ActivePageTable, because it's CPU local
6 years ago
Jiajie Chen
d8345e96c7
Fix typo
6 years ago
Jiajie Chen
d9e05012f0
Implement socket sys_close
6 years ago
WangRunji
1b104029ce
tiny refactor: convert 'get_file' & 'get_socket' to method
6 years ago
Jiajie Chen
6ea04c91b2
Fix line editing bug
6 years ago
Jiajie Chen
29865d7aaa
Add line editing function to user shell and refactor net syscall
6 years ago
Jiajie Chen
6124cd60fc
Add basic implementation for syscall: connect and write
6 years ago
Jiajie Chen
984df11971
Merge remote-tracking branch 'origin/biscuit' into biscuit
6 years ago
Jiajie Chen
71336aca5c
Redesign NetDriver trait and update drivers
6 years ago
WangRunji
344a537684
fix SysError to match Linux error code
6 years ago
Jiajie Chen
36292e6fcd
Add dummy implementations for more syscalls
6 years ago
WangRunji
c7f9921e06
support TLS for musl. partial impl sys_exit_group.
6 years ago
WangRunji
f76374000e
fix x86_64 syscall register (r10)
6 years ago
equation314
7a278cd421
Merge branch 'master' into biscuit
6 years ago
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.
6 years ago
Jiajie Chen
671b7c7b54
Implement backtrace support for x86_64
6 years ago
Jiajie Chen
6f1953b977
Add document for e1000 driver
6 years ago
Jiajie Chen
af9a978a9d
Fix a bug in e1000 driver, run net thread and update Makefile
6 years ago
Jiajie Chen
7a3c66a923
Receiving from e1000 driver works
6 years ago
WangRunji
85ae4b1ba1
impl sys_stat, sys_readv, sys_writev. not tested yet
6 years ago
WangRunji
4e146ec491
impl sys_lseek
6 years ago
WangRunji
70a950bf40
fix struct stat to match Linux ABI
6 years ago
WangRunji
cab19688d5
rename File to FileHandle. impl create for sys_open.
6 years ago
WangRunji
6d78206f77
impl finding free area for mmap
6 years ago
Jiajie Chen
dd61ce30ba
Implement reading pci memory address
6 years ago
Jiajie Chen
197bebb1d2
Implement pci bus probing and fix a bug in virtio_mmio
6 years ago
WangRunji
05310dcd7d
refactor GDT mod
6 years ago
WangRunji
4404982a55
impl sys_arch_prctl set fs
6 years ago
WangRunji
7a704673d7
save fsbase to TrapFrame on x86_64
6 years ago
WangRunji
a224e85c8d
split scheduler mod, make Scheduler Sync
...
biscuit: fix argc, argv
6 years ago
WangRunji
e678186b3d
support idle for rcore-thread, remove idle thread in kernel
6 years ago
WangRunji
fc98719559
impl sys_mmap for annonymous
6 years ago
WangRunji
6e8a0e20ab
fix device compile error, update crate pc_keyboard
6 years ago
WangRunji
08c8d89974
update SFS to new rcore-fs
6 years ago
WangRunji
ca45f8f152
fix check user ptr in syscalls
6 years ago
WangRunji
d26a1bc617
split syscall mod
6 years ago
WangRunji
2cf7e7bd87
fix File in Process
6 years ago
WangRunji
cf9ac9ccfd
split fs mod
6 years ago
WangRunji
7927c7c168
Merge branch 'thread' into biscuit
...
# Conflicts:
# kernel/src/process/mod.rs
# kernel/src/process/structs.rs
# kernel/src/syscall.rs
6 years ago
WangRunji
e1dacb28ef
auto open stdin/out/err for new proc. pass biscuit hello,cat,echo ...
6 years ago
WangRunji
c69386fbc2
add rcore-user submodule
6 years ago
WangRunji
67e8bef0f5
modify syscall ids to match Linux 64. fix fork file bug.
6 years ago
WangRunji
8a1a38853e
support 'syscall' instruction by handling invalid opcode exception
6 years ago
WangRunji
a6b0da0c2f
rename x86_64 exception consts
6 years ago
WangRunji
32e7f0ed52
fix process startup stack for musl libc
6 years ago
WangRunji
a33d7632d6
rename 'KERN_VA_BASE' to 'KERNEL_OFFSET'. fix compile error
6 years ago
Jiajie Chen
fbf9409db2
Convert frame buffer to pa in virtio_gpu as well
6 years ago
Jiajie Chen
f399805196
Use KERN_VA_BASE and MEMORY_OFFSET to convert between kern va and pa
6 years ago
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
6 years ago
WangRunji
95dfb7684f
update kflash.py, fix build k210
6 years ago
WangRunji
2766f49986
update README, Travis, Makefile
6 years ago
WangRunji
2303a8099b
update Rust compiler to support riscv64
6 years ago
WangRunji
ac0c19cdb0
support Sv39
...
To test: make run arch=riscv64 board=u540
6 years ago
WangRunji
fc8888db72
update for new paging mechanism on riscv. move kernel va to 0x(ffffffff)c0000000.
6 years ago
WangRunji
1ceb7ae12d
use #[repr(C)] instead of #[repr(packed)] to avoid warning
6 years ago
WangRunji
847a1c7576
use core::sync::atomic::fence
6 years ago
WangRunji
66c84b4599
update to x86_64 0.4
6 years ago
WangRunji
0ec5ad8056
split Process and Thread
6 years ago
WangRunji
5bffce787b
rename 'process' crate to 'thread'
6 years ago
WangRunji
238de1b282
fix compile for rv64
6 years ago
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
6 years ago
Jiajie Chen
b1d01928c3
Use core::mem::size_of instead of core:intrinsics::size_of. Thanks @wangrunji0408
6 years ago
Jiajie Chen
6e887d5505
Replace hardcoded instruction length with size_of in backtrace
6 years ago
Jiajie Chen
5350ecb09f
Add addr2line tool for annotating backtrace
6 years ago
Jiajie Chen
e3262698be
Fix aarch64 toolchain detection and add missing compiler_builtins v0.1.5
6 years ago
Jiajie Chen
4beb865d32
Update toolchain location and detection
6 years ago
Jiajie Chen
090796d3f0
Implement backtrace support for RISCV32
6 years ago
Jiajie Chen
7d6856ceab
Implement backtrace support for RISCV64
6 years ago
Jiajie Chen
d8edd1a7db
Implement backtrace support for AArch64
6 years ago
dzy
61eda6b19e
Add 0.1.4 compiler_builtins. Git ignore llc.
6 years ago
WangRunji
0965d24083
fix map_kernel on riscv32
6 years ago
WangRunji
2d5178d0b7
rename ucore to rcore
6 years ago
WangRunji
f0ea48126d
fix sys_wait arg type: isize -> i32
6 years ago
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
6 years ago
equation314
dfb2d49cd6
aarch64/doc: add console driver
6 years ago
equation314
1aa8436d71
aarch64/doc: add interruption & timer drivers
6 years ago
equation314
7fda4e360f
aarch64/doc: add GPIO, mini UART, mailbox drivers
6 years ago
WangRunji
e46b6c7b0c
move target json. add kflash.py
6 years ago
WangRunji
190711fbc2
yet another riscv atomic fix
6 years ago
equation314
e1d0d2a020
aarch64/doc: add overview of AArch64
6 years ago
WangRunji
5d7e97d9e9
fix interrupt in process crate
6 years ago
WangRunji
681a90657a
let Makefile support riscv64
6 years ago
WangRunji
259e7c842e
update Cargo.toml & Makefile
6 years ago
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
6 years ago
WangRunji
c65b7357a4
use riscv crate from github
6 years ago
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
6 years ago
WangRunji
92ae57b251
fix user program memory layout on NoMMU
6 years ago
WangRunji
daee1e9f94
fix bugs on K210
6 years ago
WangRunji
b3a8e95d78
merge interrupt & context switch for rv32 & rv64
6 years ago
WangRunji
de24f6673c
remove '\r'
6 years ago
WangRunji
0d957ff1a6
fix getchar on K210
6 years ago
dzy
4b17055f30
running user program.
6 years ago
dzy
e74f749ff3
fix context change bug. user sh is running!!!
6 years ago
dzy
6f2d059ba5
implement map_kernel, now enters the kernel well
6 years ago
dzy
bf3a67a7e4
remap_kernel runs fine
6 years ago
dzy
21adebb203
run until ms.token()
6 years ago
dzy
ccee527272
runs without pagefault but does not reach end of remap_kernel
6 years ago
dzy
a4348428a6
can run until update
6 years ago
dzy
d67a224494
add wrj's 704af94
patch
6 years ago
dzy
ed3fb6d423
another temporary
6 years ago
dzy
0dbffbc0fa
temporary
6 years ago
WangRunji
af6d533cb5
fix trap return on M-Mode
6 years ago
WangRunji
3de76885fa
llc build for rv64imc
6 years ago
WangRunji
020e3505ee
enable timer interrupt for K210
6 years ago
dzy
b7e124930d
fix compilation errors
6 years ago
dzy
3910f71521
preliminary support for riscv64, not tested.
...
riscv32 runs fine.
6 years ago
WangRunji
3a4b8f5dac
fix trap for rv64
6 years ago
WangRunji
8529d9fe4e
fix const, linker, build for K210
6 years ago
WangRunji
9ab4fd40ea
fix atomic for K210. enable print mutex again
6 years ago
WangRunji
70b6db4282
make clear_bss faster
6 years ago
dzy
1d1d4109c3
Make script easily support both rv32 and rv64.
6 years ago
dzy
98c94a0d83
Fix register size (4->XLEN) in trap handling.
6 years ago
WangRunji
45b91fbcad
update rv64 build script. print hello on QEMU!
6 years ago
WangRunji
d3ef0252ac
move setup_page_table to BBL
6 years ago
WangRunji
3ea104da97
Merge remote-tracking branch 'dzy/rust-rv64' into rust-rv64
...
# Conflicts:
# kernel/Cargo.toml
6 years ago
WangRunji
0af9776dbd
add .stack section. clear bss
6 years ago
WangRunji
7240198a54
fix newline: '\r\n'
6 years ago
Ben Pig Chu
5135fb0c0e
the shell that is able to fork-exec-wait
6 years ago
WangRunji
62b931d576
print hello on K210
6 years ago
equation314
aa5bd3041b
Merge branch 'master' into arch-aarch64
6 years ago
Ben Pig Chu
364497e379
use the error code specified in ucore_os_lab instead of ucore_plus
6 years ago
equation314
a55f3b61e6
add Makefile option `graphic` & cargo feature `nographic`
6 years ago
dzy
a75e52691d
port to newer riscv crate supporting rv64
6 years ago
Ben Pig Chu
6e8c80d328
panicless default fs implement
6 years ago
equation314
09c2b6e7b7
aarch64/fb: add ANSI escape sequences parser
6 years ago
Ben Pig Chu
113a33e575
translate FsError to SysError
6 years ago
Ben Pig Chu
f8533442f2
return error code from syscall, not always -1
6 years ago
Ben Pig Chu
fa03f7b112
use the simple-filesystem crate with FsError
6 years ago
WangRunji
d4b6cc1082
compile rv64 pass on macOS
6 years ago
WangRunji
02bd2b2317
remove arch/riscv64 directory
6 years ago
equation314
6c717905d7
aarch64/fb: add foreground & background color
6 years ago
equation314
9dda78d2e3
aarch64/fb: improve the performance of ConsoleBuffer::new_line()
6 years ago
Ben Pig Chu
d737b1e7ba
maually remove warning, pt6
6 years ago
equation314
7b8359eeef
aarch64/fb: add 8x16 font
6 years ago
Ben Pig Chu
6eb49a0106
maually remove warning, pt5
6 years ago
Ben Pig Chu
7eb9f7abcf
maually remove warning, pt4
6 years ago
Ben Pig Chu
935c595083
maually remove warning, pt3
6 years ago
Ben Pig Chu
07b8a063ec
maually remove warning, pt2
6 years ago
equation314
b47c4758bf
aarch64/fb: add basic console driver
6 years ago
Ben Pig Chu
1ca2bde069
maually remove warning, pt1
6 years ago
dzy
f954c2fd6a
Completely get rid of cargo-generated target/
6 years ago
dzy
61a3beb8ba
Start porting for rv64
6 years ago
equation314
b5cc79d1b2
modify mmio() & set_mmio() in PageEntry
6 years ago
equation314
48cf25716f
aarch64/fb: flush data cache around mailbox accesses
...
can run on real raspi3
6 years ago
equation314
5987c2068b
aarch64/fb: remap framebuffer base address
6 years ago
equation314
6ba9e34f77
aarch64/fb: add framebuffer initialization
6 years ago
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
6 years ago
WangRunji
d20d22b85b
add hint for user shell. detect cores through 'SMP' env.
6 years ago
WangRunji
fbf59396b2
use 'ucore_*.img' by default
6 years ago
equation314
d7511d8120
aarch64/fb: add mailbox property interfaces
6 years ago
WangRunji
6952f008e0
rename ContextImpl to Process
6 years ago
WangRunji
557f021c08
fix DelayHandler & MemoryAttr
6 years ago
WangRunji
704af94211
fix rv32 entry editing
6 years ago
equation314
f76a604b78
aarch64: add driver interfaces
6 years ago
equation314
81af2c82fd
aarch64: reduce some warnings, config system/generic timer in Makefile
6 years ago
equation314
5a165178cc
aarch64: implement IRQ register & serial IRQ
6 years ago
WangRunji
ff806d4465
move common codes to InactivePageTable trait
6 years ago
WangRunji
102866bcf9
introduce MemoryHandler and refactor MemorySet. temporary disable swap.
...
This is a manual rebase of LCY's code
6 years ago
WangRunji
96a76290b6
fix rv32 __mulsi3 add overflow
6 years ago
dzy
7b0ac1b84e
Script to allow rustc-only builds without cargo.
6 years ago
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.
6 years ago
equation314
28d872064d
Merge branch 'master' of https://github.com/wangrunji0408/RustOS into arch-aarch64
6 years ago
equation314
aa5e7a4e6f
remove #![feature(extern_crate_item_prelude)]
6 years ago
equation314
6879c66e58
aarch64: set TTBR1 = TTBR0 in InactivePageTable::edit(), swap is OK
...
TODO: flush icache in the right place
6 years ago
equation314
d5a6eb2020
user: fix build error
6 years ago
Wang Runji
3f2beab52d
Merge branch 'master' into user-img
6 years ago
WangRunji
e7039945c1
move user img, remove useless files
6 years ago
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
6 years ago
equation314
66ac30d401
user: update make clean in kernel/
6 years ago
equation314
710b6d1a28
user: update Makefiles
6 years ago
equation314
e86229cb71
user: user rust programs are runnable
6 years ago
WangRunji
b5ced136f7
fix merge compile error
6 years ago
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
6 years ago
equation314
7855b70bc0
aarch64: add origin raspberrypi config.txt
6 years ago
equation314
4f592336ff
aarch64: remove test functions
6 years ago
equation314
163e092c29
Merge branch 'mmu' into arch-aarch64
6 years ago
equation314
75b039c924
aarch64/mmu: move crate aarch64 to remote
6 years ago
equation314
5a83d6a20f
aarch64: add user program SFS image
6 years ago
equation314
a59a7fbe9a
aarch64/mmu: simply handle page fault
6 years ago
equation314
d6a54496f0
arch64/mmu: invalidate all icaches in InactivePageTable::with()
6 years ago
equation314
0eb33b661f
aarch64/mmu: fix some bugs
6 years ago
WangRunji
fcf5074500
impl M-mode kernel for riscv32
6 years ago
WangRunji
2f8cfabbca
remove redundant nightly features
6 years ago
WangRunji
a74b893bd2
update Makefile
6 years ago
equation314
f882a085d6
user: link created SFS image in kernel
6 years ago
equation314
94bc8353f7
user: create SFS image in Makefile
6 years ago
WangRunji
02eb7d9125
update 'riscv-pk' to upstream submodule
6 years ago
WangRunji
6921e9018d
fix NoMMU entry point
6 years ago
WangRunji
18640b7537
impl NoMMU
6 years ago
WangRunji
52fe93188d
disable delay allocating frame, remove `memory_set_record`
6 years ago
WangRunji
2db453556d
try to fix interrupt & deadlock on RV32
6 years ago
equation314
d30c7e59ca
aarch64: minor modify
6 years ago
equation314
264600f145
aarch64/mmu: add io remap
6 years ago
equation314
a8b334123a
aarch64/mmu: add memory region attribute config
6 years ago
equation314
f9e47b2fd8
aarch64/mmu: refactor PageTableFlags
6 years ago
equation314
de6354ddd3
aarch64/mmu: use ASID to avoid flush TLB frequently in context switch
6 years ago
equation314
55087fc5a2
aarch64/mmu: use both TTBR0_EL1 & TTBR1_EL1
6 years ago
WangRunji
46f0e85230
add `ucore-i386-pic.img` user programs. reorganize imgs.
6 years ago
equation314
bb1c1abaa4
aarch64/mmu: can run on the real raspi3
6 years ago
equation314
a9de99d3a9
aarch64/mmu: remap kernel memory ranges at the end of memory::init()
6 years ago
equation314
99c5b3c3f8
Merge branch 'arch-aarch64' into mmu
6 years ago
equation314
13be52133d
aarch64: move kernel stack top to 0x100000
6 years ago
equation314
f398945ad3
aarch64: hard link user program
6 years ago
equation314
9e8124abbb
aarch64/mmu: mmu enabled
6 years ago
WangRunji
b1bdac7d0f
fix merge for aarch64. now it works!
6 years ago
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
6 years ago
WangRunji
56fcad245a
update kernel to 2018 edition
6 years ago
WangRunji
c4935a1477
use `pc-keyboard` crate and enable keyboard again for x86
6 years ago
lcy1996
76d2c6ec7b
Fix the bug of active_table_swap() wrongly force unlock in pg fault handler
6 years ago
lcy1996
b2fec2b16b
Fix a bug in context for smp
6 years ago
lcy1996
67035ac556
Fix a bug in pg fault handler caused by memory_set_record
6 years ago
lcy1996
00d0ea8a8b
Modified the code in pgfault
6 years ago
lcy1996
9d803e87d9
replace some unwrap() and comment the cow pgfault handler
6 years ago
WangRunji
df485d506e
simplify ProcessManager
...
- given that a proc can only be waited by its parent, wait_queue is no longer needed.
6 years ago
WangRunji
5478b9ba7b
no longer show normal page fault
6 years ago
WangRunji
ef75c8a072
fix unwrap panic. now user shell is working.
6 years ago
WangRunji
da399dca96
remove Process struct
6 years ago
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
6 years ago
WangRunji
e06f6b8bc5
update Cargo.toml & Cargo.lock
6 years ago
WangRunji
d27ac65df3
fix load program slice error
6 years ago
WangRunji
5ce7d0a9c0
use user shell by default. fix kernel shell removing user thread.
6 years ago
WangRunji
21b0bdcbca
separate kernel shell to a mod, remove console mod
6 years ago
WangRunji
b3e5d1987e
update Cargo.lock
6 years ago
WangRunji
9b3294a5f2
fix clear bss when load user program. 'sh' works!
6 years ago
WangRunji
40b099ed79
clean riscv-pk in Makefile
6 years ago
WangRunji
44bf3fb07a
impl sys_exec
6 years ago
equation314
576ae1d911
add setup_page_table
6 years ago
lcy1996
f4305b382f
Add comment and report for expr4
6 years ago
koumingyang
ef213d60bb
mmu
6 years ago
lcy1996
eb00b2bfd3
merge conflict
6 years ago
lcy1996
a8da42d521
Add expr4 report and some trace for synctest
6 years ago
chenqiuhao
4d8d48cf4d
repair some bugs and move child control to processmanager
6 years ago
lcy1996
65cd42028c
Add illegal vma check in page fault hangler
6 years ago
lcy1996
c5499a62c5
Fix bug in swap in/out. Address ailign to 4K.
6 years ago
chenqiuhao
6652f8daf6
repair some bugs
6 years ago
chenqiuhao
8d6d3b7c37
debug for sleepkill
6 years ago
WangRunji
f97e8458b8
impl stdin & stdout as INode
6 years ago
lcy1996
5ee44588e0
Enlarge the physical and kernel heap memory. Fix the bug in map the kernel.
6 years ago
lcy1996
0b900b6f03
Code Transplanting: Blocking getchar
6 years ago
lcy1996
9adcea44d5
Code transplanting: Fix bugs. Pass test 'spin'
6 years ago
WangRunji
a589ae90f3
use SysError in syscalls
6 years ago
WangRunji
beb6533059
impl sys_getdirentry. 'ls' ok.
6 years ago
WangRunji
124a5e0d5d
impl sys_dup
...
- Fix exit_code: i32
- Convert Box<File> to Arc<Mutex<File>> in Context
6 years ago
WangRunji
16be828370
impl sys_fstat
6 years ago
WangRunji
128257c395
impl argc & argv for user process
6 years ago
equation314
5610d0bdb0
aarch64: context switch is runnable!
6 years ago
WangRunji
e27aea47e1
impl file syscalls, without test
6 years ago
WangRunji
200a574a1f
fix physical memory range on RV32
6 years ago
equation314
67b920cc16
aarch64: format paging.rs
6 years ago
koumingyang
a0b948fb53
add basic alloc
6 years ago
koumingyang
a13f39149b
add basic alloc
6 years ago
WangRunji
91bd411a8f
fit for multi-thread sfs
...
- use global root inode
- remove global IDE on x86
6 years ago
equation314
9fc13c8ebb
aarch64: implement syscall
6 years ago
equation314
a91534e34d
aarch64: implement context switch, but not tested
6 years ago
WangRunji
16fb733497
Blocking getchar
6 years ago
lcy1996
a145909998
Fix compile error after merge for the new processor.
6 years ago
lcy1996
fcdee71f9d
Merge confilt
6 years ago
lcy1996
c8ea2cb0cf
Fix bug and enable swap in/out and frame delayed allocating.
6 years ago
chenqiuhao
87506b000d
debug for process
6 years ago
equation314
3e1d8c5827
aarch64: implement ARM generic timer, can work in qemu
6 years ago
chenqiuhao
2002ddd5fa
move processor from wrj
6 years ago
lcy1996
b1425a53f9
finish frame delayed allocating
6 years ago
WangRunji
0a6b4fb8f2
Modify const. Update cargo.
6 years ago
WangRunji
ba4a24ba3b
Fix RV32 multi-core: Setup page table for other cores.
6 years ago
WangRunji
b7d6b2989d
Fix bugs. Pass test 'spin'
...
- Fix ACK IRQ on x86.
- Add process exit handler.
6 years ago
WangRunji
ed20aa45fd
Fix user process bug on RV32.
...
Set sstatus.SIE = 0 on the initial TrapFrame, to prevent interrupt on switching.
6 years ago
WangRunji
6fc23e1134
Ugly impl sys_wait(0)
6 years ago
WangRunji
74facd8e87
Use Vec to replace array in ProcessManager.
6 years ago
equation314
07aa9a0686
aarch64: implement IRQ & system timer, but don't work in qemu
6 years ago
WangRunji
182c595a20
Enable multi-core on RV32.
6 years ago
WangRunji
250f1385d3
Better debug print for TrapFrame on RV32
6 years ago
lcy1996
4f03eff015
Use SpinNoIrqLock to replace the spin::mutex
6 years ago
lcy1996
504401355f
Add expr3 report(not finiished.
6 years ago
equation314
8c19499112
aarch64: implement exception interface & synchronous exception handler
6 years ago
WangRunji
7229b49eb8
Use rust-lld for RV32. Remove riscv git submodule.
6 years ago
lcy1996
2c3de7b222
Merge branch 'OsTrain2018-g4' of github.com:oscourse-tsinghua/RustOS into lcy_issue1
6 years ago
lcy1996
edde416052
Finish swap for multi-user process
6 years ago
equation314
3386a793a5
aarch64: disable NEON
6 years ago
equation314
001254fd64
riscv32: change linker to rust-lld
6 years ago
equation314
ae5260db5c
aarch64: change linker to rust-lld
6 years ago
equation314
7746485861
aarch64: add target 'install' to Makefile
6 years ago
equation314
632baedabd
aarch64: can run on the real raspi3
6 years ago
equation314
2e094d08bc
common: add a logo
6 years ago
equation314
abf3418d24
aarch64: implement I/O by serial port
6 years ago
WangRunji
72dc3f62ad
Remove kernel stack from MemorySet.
6 years ago
equation314
addf49ffdb
aarch64: add crate bcm2837, implement GPIO
6 years ago
WangRunji
438e290b6d
Fix PageTable::get_entry -> Option.
6 years ago
equation314
cc936ded35
aarch64: bootable in qemu
6 years ago
WangRunji
a42d6086c6
Simplify IDE code.
6 years ago
WangRunji
81196729e4
Fix RV32 atomic.
...
- Fix __atomic_compare_exchange_4().
- Add patch for core::sync::atomic.
- Revert kernel Mutex.
6 years ago
chenqiuhao
ede69959e4
debug for compare exchange
6 years ago
equation314
174e0da3b6
aarch64: basic framework
6 years ago
equation314
1140d32aaa
add arch=aarch64 & board=raspi3 to Makefile
6 years ago
WangRunji
95ab9caba1
Add impl of atomic_fetch_*
6 years ago
WangRunji
0680023e35
Recover wait/sleep
6 years ago
WangRunji
85a1dca684
Use weak linkage to provide dependencies for process::thread.
6 years ago
WangRunji
80b161db98
Recover set_priority and fork
6 years ago
WangRunji
5db908b1c5
Separate ProcessManager to a mod.
6 years ago
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.
6 years ago
WangRunji
6741ba399b
Add arch::cpu::halt(). Halt when panic.
6 years ago
lcy1996
5f34cc54d8
Merge branch 'OsTrain2018-g4' of github.com:oscourse-tsinghua/RustOS into lcy_issue1
6 years ago
lcy1996
63349ade19
Finish add more comment for kernel and finish set user memory swappable.
6 years ago
chenqiuhao
9474ad7220
update atomic function and workaround the LLVM compiling bug(maybe)
6 years ago