A post continuing implementation of an NS16550A UART driver in RISC-V assembly. Function prologues are explained in depth and implemented for uart_get_char and uart_put_char, diagramming changes to the stack and registers instruction-by-instruction. Topics such as ABIs, calling conventions, stack frames, and more are also discussed.| twilco’s blog
A post that discusses what RISC-V is and why it’s important, teaches readers how to install the GNU RISC-V toolchain, and walks through building and running a simple C program on emulated RISC-V hardware.| twilco’s blog
A detailed account of bug fixes I made in WebKit’s CSS variables implementation.| twilco’s blog
A quick retrospective on the browser-related things I worked on in 2020, and what I have planned for 2021.| twilco’s blog
An overview of my new 3900x PC build. Compilation benchmarks of WebKit are performed for my new system vs. my old system. System temperatures under RealBench and Prime95 load are tested with and without a 120mm Noctua NF-F12 rear exhaust fan.| twilco’s blog
A case study on web compatibility featuring the serialization of the background CSS shorthand property. Learn about the CSS standards process and web platform tests (WPTs) along the way.| twilco’s blog
A post beginning implementation of a NS16550A UART driver for the QEMU virt machine, discussing the basics of UART functionality and doing additional linker script and devicetree layout exploration along the way.| twilco’s blog
A post describing how C programs get to the main function. Devicetree layouts, linker scripts, minimal C runtimes, GDB and QEMU, basic RISC-V assembly, and other topics are reviewed along the way.| twilco’s blog