aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-11-08 00:17:58 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-11-08 00:17:58 +0800
commit7cedda09fc22abc03f5b2e2507c87cc7c480a6a2 (patch)
tree9f8740b34be7ec512caffa75e5d51848c0b814c2
parenta1dc82e274cd760aa51b6d618b7b15acc43196d6 (diff)
downloadrcc-project-7cedda09fc22abc03f5b2e2507c87cc7c480a6a2.tar.gz
rcc-project-7cedda09fc22abc03f5b2e2507c87cc7c480a6a2.tar.xz
[mubios] Write mubios reset entry point
Signed-off-by: Richard Qin <richard.qin.x@gmail.com>
-rw-r--r--mubios/.gitignore3
-rw-r--r--mubios/arch/reset.S61
2 files changed, 63 insertions, 1 deletions
diff --git a/mubios/.gitignore b/mubios/.gitignore
index 0f293b7..2a594d5 100644
--- a/mubios/.gitignore
+++ b/mubios/.gitignore
@@ -1 +1,2 @@
-*.qcow2 \ No newline at end of file
+*.qcow2
+build*
diff --git a/mubios/arch/reset.S b/mubios/arch/reset.S
new file mode 100644
index 0000000..b3dbde2
--- /dev/null
+++ b/mubios/arch/reset.S
@@ -0,0 +1,61 @@
+# RCC-Project
+#
+# Copyright (C) 2026 Richard Qin
+#
+# This file is part of RCC-Project.
+#
+# RCC-Project is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3 of the License, or (at your option) any
+# later version.
+#
+# RCC-Project is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# RCC-Project; see the file COPYING. If not see
+# <http://www.gnu.org/licenses/>.
+
+ .intel_syntax noprefix
+ .code16
+
+ .section .text16, "ax"
+
+ .global reset_entry
+ .type reset_entry, @function
+
+reset_entry:
+ cli
+ cld
+
+ xor ax, ax
+ mov ds, ax
+ mov es, ax
+ mov ss, ax
+ mov sp, 0x8000
+
+reset_halt:
+ hlt
+ jmp reset_halt
+
+ .section .reset, "ax"
+
+ .global reset_vector
+
+reset_vector:
+ cli
+
+ /*
+ * The linker places .text16 at physical address 0xF0000.
+ * F000:0000 therefore reaches the first 16-bit entry.
+ */
+ .byte 0xEA
+ .word 0x0000
+ .word 0xF000
+
+ .fill 16 - (. - reset_vector), 1, 0x90
+
+
+
+