kernel.c 341 B

1234567891011121314151617181920212223242526272829303132
  1. #define HANG() asm("hlt")
  2. void
  3. output(short port, unsigned char byte)
  4. {
  5. asm volatile("outb %1,%0"::"dN"(port), "a"(byte));
  6. }
  7. void
  8. ser_print(char *msg)
  9. {
  10. int i;
  11. for (i = 0; ; i++) {
  12. if (!msg[i]) {
  13. break;
  14. }
  15. output(0x03f8, msg[i]);
  16. }
  17. }
  18. void
  19. main(void)
  20. {
  21. ser_print("hello from C kernel\n\0");
  22. do { HANG(); } while (1);
  23. }