| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | idt: mm: move idt and vectors also to upper memory | Tianhao Wang | 2024-06-11 |
| | | |||
| * | chore: add v2p and p2v conversion wrt. id mapping | Tianhao Wang | 2024-06-11 |
| | | | | | Also renamed a few symbols to avoid confusion. | ||
| * | chore: cleanup | Tianhao Wang | 2024-06-11 |
| | | | | | Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | chore: remove unused deps | Tianhao Wang | 2024-06-11 |
| | | |||
| * | mm: fully map the kernel to high memory | Tianhao Wang | 2024-06-11 |
| | | |||
| * | mm: provide high memory kernel mapping in asm code. | Tianhao Wang | 2024-06-11 |
| | | | | | | | | | | | | | | | | | | we use the first pml4 entry (+one pdp table) to map phy 0~512G to virt 0~512G for init code. This doesn't change. For the kernel to work in higher half memory, we also need to create mapping for it. We take the 256th entry of pml4 entry (hence one additional pdp table). Entry 0~63 are mapped to to the physical memory (with offset 0xffff_8000_0000_0000) Entry 64~127 are not used Entry 128~191 are mapped to the kernel image (text and code) (with offset 0xffff_8020_0000_0000) details in docs/mem_layout.txt | ||
| * | mm: add basic paging infra from x86_64 crate | Tianhao Wang | 2024-06-11 |
| | | | | | | | | | | | the x86_64 crate is pretty solid and has a permissive license (Apache/MIT), but I want to make this myself in the future to "experience" the unsafe rust further....Also it has too many abstractions, which is justified as a library, but not ideal for a from sctrach toy OS as it hides the lower end. Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | mm: fix Range type and addr rounding | Tianhao Wang | 2024-06-11 |
| | | | | | Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | mm: add stack based PMA | Tianhao Wang | 2024-06-11 |
| | | | | | | | | use 8MiB reserved array to manage up to 4GiB of physical memory (4K Pages only) Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | multiboot: docs and cleanup | Tianhao Wang | 2024-06-11 |
| | | | | | Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | multiboot: parse mmap blocks | Tianhao Wang | 2024-06-11 |
| | | | | | Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | multiboot: get memory info from MB info | Tianhao Wang | 2024-06-11 |
| | | | | | Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | multiboot: basic support for multiboot info | Tianhao Wang | 2024-06-11 |
| | | | | | | | | | well, it's not trivial to use bios function because thanks to grub + multiboot, we are already in protected mode when the startup code takes control. Also the MB info is easier to play with than BIOS (or ACPI) Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | keyboard: pad key translation table | Tianhao Wang | 2024-06-11 |
| | | | | | | | | | some keys such as the Win key has larger scancode, causing out-of-bound read in the translation table. As a temp fix pad the tables with 0 up to 100 chars. Signed-off-by: Tianhao Wang <shrik3@mailbox.org> | ||
| * | fix io blocking bug in kbdctl | Tianhao Wang | 2024-06-11 |
| | | |||
| * | cgascr: refactoring | Tianhao Wang | 2024-06-11 |
| | | |||
| * | move io.rs into submodule | Tianhao Wang | 2024-06-11 |
| | | |||
| * | chore | Tianhao Wang | 2024-06-11 |
| | | |||
| * | rename wraper -> vector | Tianhao Wang | 2024-06-11 |
| | | |||
| * | chore | Tianhao Wang | 2024-06-11 |
| | | |||
| * | linker: "optimize" section arrangements | Tianhao Wang | 2024-06-11 |
| | | | | | | | | 1. throw vectors in a custom ".reserved" section 2. throw idt in a NOLOAD ".reserved_0" section: save some binary size (like .bss) since we don't care for its initial value. 3. squash all ".data.*" sections from rust into ".data" | ||
| * | interrupt: add rust binding for idt | Tianhao Wang | 2024-06-11 |
| | | |||
| * | formatting code | Tianhao Wang | 2024-06-11 |
| | | |||
| * | split idt and vectors from startup code | Tianhao Wang | 2024-06-11 |
| | | |||
| * | chore | Tianhao Wang | 2024-06-11 |
| | | |||
| * | interrupt: rename `guardian` to `interrupt_gate` | Tianhao Wang | 2024-06-11 |
| | | |||
| * | mask keyboard interrupt while polling key | Tianhao Wang | 2024-06-11 |
| | | |||
| * | mask interrupt during handler routine | Tianhao Wang | 2024-06-11 |
| | | |||
| * | remove plugbox module | Tianhao Wang | 2024-06-11 |
| | | |||
| * | pic: initialize with rust code | Tianhao Wang | 2024-06-11 |
| | | |||
| * | chore linting | Tianhao Wang | 2024-06-11 |
| | | |||
| * | cgascr: init cursor in rust code | Tianhao Wang | 2024-06-11 |
| | | |||
| * | re-organize code | Tianhao Wang | 2024-06-11 |
| | | |||
| * | keyboard: implement leds and reboot | Tianhao Wang | 2024-06-11 |
| | | | | | works on qemu, untested on real machine | ||
| * | thredding 1/? | Tianhao Wang | 2024-06-11 |
| | | |||
| * | fix bug in cga driver | Tianhao Wang | 2024-06-11 |
| | | |||
| * | paging: add basic bitmap frame allocator | Tianhao Wang | 2024-06-11 |
| | | |||
| * | chore: make clippy happy | Tianhao Wang | 2024-06-11 |
| | | |||
| * | define memory layout (if there was a layout) | Tianhao Wang | 2024-06-11 |
| | | |||
| * | add mm and ds modules (yet empty) | Tianhao Wang | 2024-06-11 |
| | | |||
| * | MM: add modules for memory management | Tianhao Wang | 2024-06-11 |
| | | |||
| * | PS/2 Keyboard controller: read and decode key | Tianhao Wang | 2024-06-11 |
| | | |||
| * | PS/2 Keyboard controller: baseline | Tianhao Wang | 2024-06-11 |
| | | |||
| * | add IOPort struct | Tianhao Wang | 2024-06-11 |
| | | | | | So that device IO can be be synchronized. | ||
| * | keyctl: use bitflags for key modifiers | Tianhao Wang | 2024-06-11 |
| | | | | | Merge key modifier getters and setters | ||
| * | make device_io a arch independent interface. | Tianhao Wang | 2024-06-11 |
| | | | | | | In arm we will be using MMIO instead of the IO instructions. However the peripherals should use the same interface for IOs. | ||
| * | basic interrupt/PIC support | Tianhao Wang | 2024-06-11 |
| | | |||
| * | pub(crate) use for println macros | Tianhao Wang | 2024-06-11 |
| | | | | | | | The println! and print! macros are defined in submodule "io", I have to add this trick to make it work across the crate. Maybe there is a better way... | ||
| * | add println! and panic! macro | Tianhao Wang | 2024-02-01 |
| | | | | | | The rust lazy_static requires interior mutability. I have to include a Mutex impl (spin::Mutex). But I'd like to implement my own primitives. | ||
| * | use inline asm for x86 IO instr | Tianhao Wang | 2024-02-01 |
| | | |||
