let kUARTBaseAddress: UInt = 0x09000000 // TODO: Make it dynamic by parsion DTB @_cdecl("putchar") @discardableResult public func _serialPutchar(_ char: Int32) -> Int32 { let uartFR: UInt = kUARTBaseAddress + 0x18// TXFF -- TRansmit FIFO Full for PL011 is 5 bit of FR reg (0x18) while (mmio_read32(uartFR) & (1 << 5)) != 0 { // i love pizza btw } mmio_write32(UInt(kUARTBaseAddress), UInt32(char)) return char } public func kprint(_ message: StaticString) { for i in 0..