9792aa512d
vm: use vm_memory_mode() to determine which model to initialise
2023-02-08 21:28:47 +00:00
b0b557d919
x86_64: add temporary serial driver for printk
2023-02-08 21:28:20 +00:00
56578dda38
build: x86_64: write printk output to file via qemu serial port
2023-02-08 21:27:47 +00:00
6c6ca6920b
vm: handle null vm_pages and empty zones in zone init
2023-02-08 20:26:51 +00:00
b32791ade7
vm: zero sector array; perform overflow checks
2023-02-08 20:26:18 +00:00
a595b3040a
vm: remove debug message from get_or_create_page
2023-02-08 20:25:52 +00:00
a9f8069aab
vm: add sparse mm support to vm_page functions
2023-02-08 20:25:24 +00:00
cb6b400fae
x86_64: build: add rule to debug using ncurses
2023-02-08 20:24:49 +00:00
5e10f566a4
x86_64: add basic interrupt handling
2023-02-08 20:24:40 +00:00
18c5b34923
build: create copy of kernel binary with debug symbols
2023-02-08 20:24:22 +00:00
e96da32cd5
x86_64: check for failure in alloc test
2023-02-08 18:48:01 +00:00
a7d4166c89
vm: implement a sparse memory model
2023-02-08 17:13:01 +00:00
6690572bf3
kernel: add utility math functions
2023-02-08 17:12:34 +00:00
b8eb88627a
vm: add huge page order size definitions
2023-02-08 17:11:08 +00:00
d56fc961fa
kernel: print log messages directly to the console if log_buffer is full
2023-02-08 17:10:13 +00:00
4c4178e170
build: stop make compile-db from having to call make clean
2023-02-08 16:46:59 +00:00
4edc7e308e
vm: refactor page_array and functions into a separate source file
2023-02-07 21:18:08 +00:00
b13907f3bc
x86_64: initialise vm subsystem
2023-02-07 16:00:45 +00:00
9879bbf646
vm: optimise page array size and initialisation.
...
* the page array now only extends up to the last non-reserved memory frame.
* rather than memset'ing the whole array to zero, we only initialise p_flags
for each page in vm_page_array_init, and then leave it to group_pages_into_block
to initialise the other parts of vm_page_t.
2023-02-07 16:00:28 +00:00
51ad3d48fd
memblock: mark bytes preceding an aligned allocation as reserved.
...
this prevents tiny holes of free memory appearing between
blocks of aligned allocations.
2023-02-07 15:57:18 +00:00
e9d4b60181
vm: print log messages during initialisation
2023-02-07 15:43:14 +00:00
bf0b4d412c
vm: use direct page mapping to convert virt/phys addresses
2023-02-07 15:40:06 +00:00
ad63f0b251
x86_64: pmap: map all of physical memory starting at VM_PAGEMAP_BASE
2023-02-07 15:38:18 +00:00
e939aae775
x86_64: pmap: fix typos
2023-02-07 12:10:12 +00:00
52c1ba89c4
x86_64: pmap: add null-pointer to check to delete_pdir
2023-02-07 12:10:05 +00:00
3ea1a28e5a
x86_64: pmap: fix make_pte not using PTE_NX for non-exec pages
2023-02-07 12:09:36 +00:00
15ddd2fe0b
x86_64: use e64patch to generate kernel binary for QEMU
2023-02-07 11:25:58 +00:00
2f69bfd4f0
build: add support for building tools targeting host machine
2023-02-07 11:25:33 +00:00
625eac9ca7
x86_64: implement bootstrap function for pmap interface
2023-02-06 20:50:38 +00:00
52b3a5d6a5
x86_64: enable hugepage support in QEMU
2023-02-06 20:50:38 +00:00
5e20bbe223
x86_64: use higher-half pointer for VGA framebuffer
2023-02-06 20:50:38 +00:00
0516ef06a3
vm: explicitly initialise kmalloc in vm_bootstrap
...
if kmalloc is called with count=N before vm_bootstrap is finished,
the request will be fulfilled using memblock_alloc.
if N is a power of 2, the returned pointer will be aligned to
an N-byte boundary.
2023-02-06 20:50:38 +00:00
fe0b7e043f
x86_64: move stack pointer to higher-half in start_64
2023-02-06 20:50:38 +00:00
5c7bde4fdf
vm: add alignment parameter to cache allocator
...
caches with object size N, where N is a power of two, will naturally
align their objects on N-byte boundaries.
all other caches will align to an 8-byte boundary by default.
2023-02-06 20:50:38 +00:00
109616ec30
vm: add memblock support to vm_virt_to_phys, add vm_phys_to_virt
2023-02-06 20:50:38 +00:00
998f05d337
memblock: add functions to convert allocated pointers between virt/phys
2023-02-06 20:50:38 +00:00
6afb3bd10d
memblock: add alignment parameter to alloc functions
2023-02-06 20:50:38 +00:00
a72117abcd
x86_64: move start_64 to .boot.text
2023-02-06 10:41:06 +00:00
b7f872bf3b
build: enable -Os flag
2023-02-05 11:08:22 +00:00
b9b3794aee
x86_64: initialise memblock using e820
2023-02-05 10:50:13 +00:00
21907010bd
memblock: return NULL on virtual alloc failure
2023-02-05 10:49:59 +00:00
58171df912
vm: move arch-specific definitions to arch/
2023-02-05 10:28:07 +00:00
72b2d8d525
x86_64: re-implement ml_halt_cpu() in pure assembly
2023-02-05 10:27:29 +00:00
2b2c5a24da
x86_64: fix broken multiboot pointer boot arg
2023-02-05 10:26:47 +00:00
1abc7a4f6c
x86_64: move non-ML headers to include/arch/
2023-02-05 09:45:17 +00:00
17b90a484a
kernel: print version banner on boot
2023-02-04 19:19:48 +00:00
49d2b0a847
x86_64: make vgacon clear the display on init
2023-02-04 19:19:37 +00:00
dee639968b
x86_64: remove vga functions from start_32 and start_64
2023-02-04 19:18:25 +00:00
31cb7aab8b
kernel: add basic console registration system and printk()
2023-02-04 19:03:45 +00:00
d0a431c860
kernel: add basic spinlocks
2023-02-04 19:03:30 +00:00