/* * Copyright (c) 2026, Chloe M. * Provided under the BSD-3 clause. * * Description: Fucks and knots the kernel * Author: Chloe M. */ .text .globl KeKnot KeKnot: /* * When we are called here, the kernel is to be fucked with * the most love and care we can put out before we knot it * and fill it with warm cum... */ cli /* Don't get interrupted */ cld /* Just in case */ /* * We don't want another processor to attempt to fuck the kernel * while we are already knotting it to avoid it becoming too * cumdrunk and misbehaving further. If another processor attempts * to do so, knot and lock them hard, because that's what needy * cores get :3 */ mov $1, %rax /* Prepare the lock */ xchg %rax, MpLock /* Ah!~ Fuck~ @.@ */ or %rax, %rax /* Are we another core? */ jnz 1f /* * The kernel is being extra needy and may or may not have * kicked its paws into its stack. It's okay little kernel, * we'll give you a new stack that's safe and cozy to lay in * before the knotting begins! */ lea KnotStackTop(%rip), %rsp call KiKnot /* Enter the main knot handler */ 1: mfence /* Drain those caches~ */ .Lock: cli /* Don't get interrupted */ hlt /* Get knotted >:3 */ jmp .Lock .section .data MpLock: .quad 0 KnotStack: .fill 4096, 1, 0 KnotStackTop: