aboutsummaryrefslogtreecommitdiff
path: root/include/kern
Commit message (Collapse)AuthorAge
* Refactor the linker script to make more sense.broken_linkerJosh Rahm2022-12-09
| | | | | | | Specifically this moves the inits into the .text section. This also move the data and bss segments into sram2 to give the heap and stack more space to work with in sram1.
* Merge branch 'christmas' into HEADJosh Rahm2021-10-26
|\
| * Completed ws2812b 2020 Christmas Lights.ir_ledsJosh Rahm2021-09-27
| |
| * Added header files implementing a basic AVL tree and Map based off it.Josh Rahm2020-12-06
| | | | | | | | | | | | | | | | These headers take inspiration from the linked list and array list headers as a way to provide primitive templates in C. This time they implement an AVL tree and Map template (which uses the AVL tree). Included are relatively robust tests, though they could be improved.
| * Got a very basic external interrupt to work.Josh Rahm2020-12-05
| |
* | Fixed annoying bug with bootup when compiling with new GCC.Josh Rahm2021-10-26
|/ | | | | | | | | | | | | | The problem was the BSS segment was not aligned with size 4, thus the routine to clear the BSS segment was infinite looping, clobbering everything in it's wake until it ran off the memory edge and caused a hard fault. This commit does a couple of things. 1. Fixes the alignment issue in the linker script 2. Panics if the bss/data segments are not aligned properly 3. Makes the logging the _first_ thing to initialize. Much easier to debug that way!
* Added kernel-level abstraction over the spi interface.Josh Rahm2020-12-04
|
* Add systick/...Josh Rahm2020-12-04
|
* Some LED lights working. Not great. WIPJosh Rahm2020-11-28
|
* Fix kalloc bug.Josh Rahm2020-11-28
| | | | | | | | | | | | | | | | | | | | | | Bitfields are officially stupid. Bizzarre behavior was found in how the bitfields integers were overflowing and causing other members to change value, causing really screwy behavior. In addition, with the discovery of 48k being available to the heap, a 12-bit value was no longer sufficient to define the size. I rewrote parts of the kalloc code to allow a generic size for the kalloc header because now it'll require 2 words per block allocated, and who knows what size the header will be on different platforms with more memory. Unfortunately, the second word of the header consists only of the "used" bool. Because I wish to keep alignmennt with 32-bit words, 31 bits are "wasted." However, these bits are used as a canary value to detect heap corruption, so they're not completely wasted. Also, testing was broken since adding the huge amount of platform dependent code for doing system calls. These dependent parts were put under a macro guard so they don't interfere with the x86 testing.
* Primitive ability to call kernel code from userspace.Josh Rahm2020-11-25
|
* Add priv.h/c to allow switching to user mode. Change some things with the ↵Josh Rahm2020-11-25
| | | | MPU in main() to actually work.
* Add module for controlling the MPU.Josh Rahm2020-11-25
| | | | | | | The MPU is a module in arm chips which allow for memory access protection. They are more primitive than full MMUs, but can still provide at least basic access control between different process controls.
* Fix kalloc. Now the HEAP START and HEAP END globals are defined by the ↵Josh Rahm2020-11-24
| | | | linker script.
* Add better logging capabilities, including the ability to panic.Josh Rahm2020-11-24
|
* rename halloc to kallocJosh Rahm2020-11-24
|
* Moved action to top level.Josh Rahm2020-11-24
Removed old iterations of the project and moved the files from 02-usart to the root directory since that's the sole place where the action is and that subproject has outgrown its initial title.