Revert support for Linux backend
authorJonas Hvid <mail@johv.dk>
Fri, 9 Oct 2020 21:12:36 +0000 (23:12 +0200)
committerJonas Hvid <mail@johv.dk>
Fri, 9 Oct 2020 21:13:29 +0000 (23:13 +0200)
Now that we're implementing UEFI-related words directly in Forth, it doesn't
make much sense to provide an alternative Linux backend. That was a dead end.

.gitignore
Makefile
impl.asm
main.asm
os/linux.asm [deleted file]
os/uefi.asm

index cef30779d2b7def610aebed370b993658eb7202c..5557c762e3873e91cb01d4cca24df6bcc8110247 100644 (file)
@@ -1,4 +1,3 @@
 /out
-/main
 /OVMF_CODE.fd
 /OVMF_VARS.fd
index 4b8184f3c5e0ec58c5d5f747d9aaee5d5c19e8d2..058cbf5a0a800f345696541d781149d5a6615801 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -22,9 +22,6 @@ out/startup.nsh:
        mkdir -p out
        echo 'fs0:main' >out/startup.nsh
 
-main: main.asm impl.asm bootstrap.asm sys.f os/linux.asm
-       OS_INCLUDE=os/linux.asm fasm $< $@
-
 .PHONY: clean
 clean:
        rm -rf out OVMF_CODE.fd OVMF_VARS.fd
index 67d11b57ac02a3b7378c6f87d6b0276d39c91b19..6267b3e133980579a94bc8dacaf6654add18962e 100644 (file)
--- a/impl.asm
+++ b/impl.asm
@@ -1,4 +1,4 @@
-os_code_section
+section '.text' code readable executable
 
 macro printlen msg, len {
   push rsi
@@ -184,7 +184,7 @@ parse_number:
   mov rax, 100
   call os_terminate
 
-os_data_section
+section '.data' readable writable
 
 find.search_length dq ?
 find.search_buffer dq ?
index e510410a5069b239621a1c14edb58893bce05dac..5f63d849b92f156a1a66e0e3b7fa1819c35280ac 100644 (file)
--- a/main.asm
+++ b/main.asm
@@ -1,16 +1,5 @@
-;; vim: syntax=fasm
-
-;; At compile-time we load the module given by the environment variable
-;; OS_INCLUDE. All of the following these procedures should preserve the value
-;; of RSI and RSP. They may use other registers as they like.
-;;
-;; The module should provide the following:
-;;
-;; os_code_section
-;;   Macro to start the text segment.
-;;
-;; os_data_section
-;;   Macro to start the data segment.
+;; The UEFI module defines the following functions. Each of these functions
+;; preserve the value of RSI and RSP. They may use other registers as they like.
 ;;
 ;; os_initialize
 ;;   Called at initialization.
@@ -25,7 +14,7 @@
 ;;
 ;; os_terminate
 ;;   Shut down the system, returning the error code given in RAX.
-include '%OS_INCLUDE%'
+include 'os/uefi.asm'
 
 ;; The code in this macro is placed at the end of each Forth word. When we are
 ;; executing a definition, this code is what causes execution to resume at the
@@ -84,11 +73,11 @@ macro forth_asm label, name, immediate {
 .start:
 }
 
+section '.text' code readable executable
+
 include "impl.asm"      ; Misc. subroutines
 include "bootstrap.asm" ; Forth words encoded in Assembly
 
-os_code_section
-
 main:
   cld                        ; Clear direction flag so LODSQ does the right thing.
   mov rbp, return_stack_top  ; Initialize return stack
@@ -678,7 +667,7 @@ forth INPUT_LENGTH, 'INPUT-LENGTH'
   dq LIT, input_buffer_length
   dq EXIT
 
-os_data_section
+section '.data' readable writable
 
 ;; The LATEST variable holds a pointer to the word that was last added to the
 ;; dictionary. This pointer is updated as new words are added, and its value is
diff --git a/os/linux.asm b/os/linux.asm
deleted file mode 100644 (file)
index 2ea3d16..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-format ELF64 executable
-entry main
-
-macro os_code_section {
-  segment readable executable
-}
-
-macro os_data_section {
-  segment readable writable
-}
-
-os_code_section
-
-os_initialize:
-  ret
-
-os_print_string:
-  push rsi
-  mov rax, 1
-  mov rdi, 1
-  mov rsi, rcx
-  syscall
-  pop rsi
-  ret
-
-os_read_char:
-  push rsi
-  mov rax, 0
-  mov rdi, 0
-  mov rsi, .buffer
-  mov rdx, 1
-  syscall
-  pop rsi
-  movzx rax, byte [.buffer]
-  ret
-
-os_terminate:
-  mov rdi, rax
-  mov rax, $3C
-  syscall
-
-os_data_section
-
-os_read_char.buffer db ?
-
index 10c7627ffbe9042937d76ce73c55b483a06903bd..16fc85d589fd8f147d0187352fc35cf5cdfe1826 100644 (file)
@@ -58,14 +58,6 @@ struct EFI_INPUT_KEY
 
 ;; }}}
 
-macro os_code_section {
-  section '.text' code readable executable
-}
-
-macro os_data_section {
-  section '.data' readable writable
-}
-
 section '.text' code executable readable
 
 os_initialize: