From 11c151b60e5605b5ba5c193fbf8e312a8cfa6eac Mon Sep 17 00:00:00 2001 From: Ali Mashtizadeh Date: Wed, 12 Feb 2014 13:47:13 -0800 Subject: [PATCH] Initial commit --- SConstruct | 135 +++++++ include/stdarg.h | 24 ++ include/stddef.h | 10 + include/stdint.h | 22 ++ include/stdlib.h | 10 + pxelinux/castor | Bin 0 -> 51138 bytes pxelinux/castor.log | 554 +++++++++++++++++++++++++++ pxelinux/ldlinux.c32 | Bin 0 -> 122044 bytes pxelinux/libcom32.c32 | Bin 0 -> 186444 bytes pxelinux/libutil.c32 | Bin 0 -> 24156 bytes pxelinux/mboot.c32 | Bin 0 -> 10700 bytes pxelinux/menu.c32 | Bin 0 -> 26568 bytes pxelinux/pxelinux.0 | Bin 0 -> 46545 bytes pxelinux/pxelinux.cfg/default | 15 + pxelinux/run-castor | 4 + pxelinux/run-castor-dbg | 4 + pxelinux/vesamenu.c32 | Bin 0 -> 27076 bytes sys/SConscript | 39 ++ sys/amd64/amd64.h | 183 +++++++++ sys/amd64/amd64op.h | 329 ++++++++++++++++ sys/amd64/asm.h | 10 + sys/amd64/ioapic.c | 76 ++++ sys/amd64/lapic.c | 123 ++++++ sys/amd64/machine.c | 86 +++++ sys/amd64/mbentry.c | 214 +++++++++++ sys/amd64/multiboot.S | 117 ++++++ sys/amd64/multiboot.h | 265 +++++++++++++ sys/amd64/trap.c | 127 +++++++ sys/amd64/trap.h | 74 ++++ sys/amd64/trapentry.S | 196 ++++++++++ sys/dev/console.h | 14 + sys/dev/x86/ioport.h | 101 +++++ sys/dev/x86/sercons.c | 0 sys/dev/x86/sercons.h | 0 sys/dev/x86/vgacons.c | 159 ++++++++ sys/dev/x86/vgacons.h | 46 +++ sys/include/cdefs.h | 13 + sys/include/kassert.h | 15 + sys/include/kconfig.h | 11 + sys/include/queue.h | 694 ++++++++++++++++++++++++++++++++++ sys/kern/libc.c | 51 +++ sys/kern/malloc.c | 42 ++ sys/kern/palloc.c | 53 +++ sys/kern/printf.c | 186 +++++++++ sys/kern/salloc.c | 30 ++ sys/kern/string.c | 42 ++ 46 files changed, 4074 insertions(+) create mode 100644 SConstruct create mode 100644 include/stdarg.h create mode 100644 include/stddef.h create mode 100644 include/stdint.h create mode 100644 include/stdlib.h create mode 100755 pxelinux/castor create mode 100644 pxelinux/castor.log create mode 100644 pxelinux/ldlinux.c32 create mode 100644 pxelinux/libcom32.c32 create mode 100644 pxelinux/libutil.c32 create mode 100644 pxelinux/mboot.c32 create mode 100644 pxelinux/menu.c32 create mode 100644 pxelinux/pxelinux.0 create mode 100644 pxelinux/pxelinux.cfg/default create mode 100755 pxelinux/run-castor create mode 100755 pxelinux/run-castor-dbg create mode 100644 pxelinux/vesamenu.c32 create mode 100644 sys/SConscript create mode 100644 sys/amd64/amd64.h create mode 100644 sys/amd64/amd64op.h create mode 100644 sys/amd64/asm.h create mode 100644 sys/amd64/ioapic.c create mode 100644 sys/amd64/lapic.c create mode 100644 sys/amd64/machine.c create mode 100644 sys/amd64/mbentry.c create mode 100644 sys/amd64/multiboot.S create mode 100644 sys/amd64/multiboot.h create mode 100644 sys/amd64/trap.c create mode 100644 sys/amd64/trap.h create mode 100644 sys/amd64/trapentry.S create mode 100644 sys/dev/console.h create mode 100644 sys/dev/x86/ioport.h create mode 100644 sys/dev/x86/sercons.c create mode 100644 sys/dev/x86/sercons.h create mode 100644 sys/dev/x86/vgacons.c create mode 100644 sys/dev/x86/vgacons.h create mode 100644 sys/include/cdefs.h create mode 100644 sys/include/kassert.h create mode 100644 sys/include/kconfig.h create mode 100644 sys/include/queue.h create mode 100644 sys/kern/libc.c create mode 100644 sys/kern/malloc.c create mode 100644 sys/kern/palloc.c create mode 100644 sys/kern/printf.c create mode 100644 sys/kern/salloc.c create mode 100644 sys/kern/string.c diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000..ed7b765 --- /dev/null +++ b/SConstruct @@ -0,0 +1,135 @@ +import sys +import os +import multiprocessing +import SCons.Util + +## Configuration + +opts = Variables('Local.sc') + +opts.AddVariables( + ("CC", "C Compiler"), + ("CXX", "C++ Compiler"), + ("AS", "Assembler"), + ("LINK", "Linker"), + ("BUILDTYPE", "Build type (RELEASE, DEBUG, or PERF)", "RELEASE"), + ("VERBOSE", "Show full build information (0 or 1)", "0"), + ("NUMCPUS", "Number of CPUs to use for build (0 means auto).", "0"), + ("WITH_GPROF", "Include gprof profiling (0 or 1).", "0"), + ("PREFIX", "Installation target directory.", "#pxelinux"), + ("ARCH", "Target Architecture", "amd64") +) + +env = Environment(options = opts, + tools = ['default'], + ENV = os.environ) +Help(opts.GenerateHelpText(env)) + +# Copy environment variables +if os.environ.has_key('CC'): + env["CC"] = os.getenv('CC') +if os.environ.has_key('CXX'): + env["CXX"] = os.getenv('CXX') +if os.environ.has_key('AS'): + env["AS"] = os.getenv('AS') +if os.environ.has_key('LD'): + env["LINK"] = os.getenv('LD') +if os.environ.has_key('CFLAGS'): + env.Append(CCFLAGS = SCons.Util.CLVar(os.environ['CFLAGS'])) +if os.environ.has_key('CPPFLAGS'): + env.Append(CPPFLAGS = SCons.Util.CLVar(os.environ['CPPFLAGS'])) +if os.environ.has_key('CXXFLAGS'): + env.Append(CXXFLAGS = SCons.Util.CLVar(os.environ['CXXFLAGS'])) +if os.environ.has_key('LDFLAGS'): + env.Append(LINKFLAGS = SCons.Util.CLVar(os.environ['LDFLAGS'])) + +#env.Append(CPPFLAGS = [ "-Wall", "-Wformat=2", "-Wextra", "-Wwrite-strings", +# "-Wno-unused-parameter", "-Wmissing-format-attribute", +# "-Werror" ]) +#env.Append(CFLAGS = [ "-Wmissing-prototypes", "-Wmissing-declarations", +# "-Wshadow", "-Wbad-function-cast", "-Werror" ]) +#env.Append(CXXFLAGS = [ "-Wno-non-template-friend", "-Woverloaded-virtual", +# "-Wcast-qual", "-Wcast-align", "-Wconversion", +# "-Weffc++", "-std=c++0x", "-Werror" ]) + +if env["WITH_GPROF"] == "1": + env.Append(CPPFLAGS = [ "-pg" ]) + env.Append(LINKFLAGS = [ "-pg" ]) + +if env["BUILDTYPE"] == "DEBUG": + env.Append(CPPFLAGS = [ "-g", "-DDEBUG", "-Wall", + "-Wno-deprecated-declarations" ]) + env.Append(LINKFLAGS = [ "-g", "-rdynamic" ]) +elif env["BUILDTYPE"] == "PERF": + env.Append(CPPFLAGS = [ "-g", "-DNDEBUG", "-Wall", "-O2"]) + env.Append(LDFLAGS = [ "-g", "-rdynamic" ]) +elif env["BUILDTYPE"] == "RELEASE": + env.Append(CPPFLAGS = ["-DNDEBUG", "-Wall", "-O2"]) +else: + print "Error BUILDTYPE must be RELEASE or DEBUG" + sys.exit(-1) + +if env["ARCH"] != "amd64": + print "Unsupported architecture: " + env["ARCH"] + sys.exit(-1) + +try: + hf = open(".git/HEAD", 'r') + head = hf.read() + if head.startswith("ref: "): + if head.endswith("\n"): + head = head[0:-1] + with open(".git/" + head[5:]) as bf: + branch = bf.read() + if branch.endswith("\n"): + branch = branch[0:-1] + env.Append(CPPFLAGS = [ "-DGIT_VERSION=\\\"" + branch + "\\\""]) +except IOError: + pass + +if env["VERBOSE"] == "0": + env["CCCOMSTR"] = "Compiling $SOURCE" + env["CXXCOMSTR"] = "Compiling $SOURCE" + env["SHCCCOMSTR"] = "Compiling $SOURCE" + env["SHCXXCOMSTR"] = "Compiling $SOURCE" + env["ARCOMSTR"] = "Creating library $TARGET" + env["RANLIBCOMSTR"] = "Indexing library $TARGET" + env["LINKCOMSTR"] = "Linking $TARGET" + +def GetNumCPUs(env): + if env["NUMCPUS"] != "0": + return int(env["NUMCPUS"]) + return 2*multiprocessing.cpu_count() + +env.SetOption('num_jobs', GetNumCPUs(env)) + +# XXX: Hack to support clang static analyzer +def CheckFailed(): + if os.getenv('CCC_ANALYZER_OUTPUT_FORMAT') != None: + return + Exit(1) + +# Configuration +conf = env.Configure() + +if not conf.CheckCC(): + print 'Your C compiler and/or environment is incorrectly configured.' + CheckFailed() + +if not conf.CheckCXX(): + print 'Your C++ compiler and/or environment is incorrectly configured.' + CheckFailed() + +conf.Finish() + +Export('env') + +# Debugging Tools + +# Build Targets +SConscript('sys/SConscript', variant_dir='build/sys') + +# Install Targets +env.Install('$PREFIX/','build/sys/castor') +env.Alias('install','$PREFIX') + diff --git a/include/stdarg.h b/include/stdarg.h new file mode 100644 index 0000000..af05822 --- /dev/null +++ b/include/stdarg.h @@ -0,0 +1,24 @@ +#ifndef __STDARG_H_ +#define __STDARG_H_ + +#ifndef _VA_LIST_DECLARED +#define _VA_LIST_DECLARED +typedef __builtin_va_list va_list; +#endif + +#define va_start(ap, last) \ + __builtin_va_start((ap), (last)) + +#define va_arg(ap, type) \ + __builtin_va_arg((ap), type) + +#define __va_copy(dest, src) \ + __builtin_va_copy((dest), (src)) + +#define va_copy(dest, src) \ + __va_copy(dest, src) + +#define va_end(ap) \ + __builtin_va_end(ap) + +#endif /* __STDARG_H_ */ diff --git a/include/stddef.h b/include/stddef.h new file mode 100644 index 0000000..43f38f5 --- /dev/null +++ b/include/stddef.h @@ -0,0 +1,10 @@ + +#ifndef __STDDEF_H__ +#define __STDDEF_H__ + +#ifndef NULL +#define NULL ((void *)0) +#endif + +#endif /* __STDDEF_H__ */ + diff --git a/include/stdint.h b/include/stdint.h new file mode 100644 index 0000000..824cf1b --- /dev/null +++ b/include/stdint.h @@ -0,0 +1,22 @@ + +#ifndef _STDINT_H_ +#define _STDINT_H_ + +typedef signed char int8_t; +typedef signed short int16_t; +typedef signed int int32_t; +typedef signed long long int64_t; + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; + +typedef int64_t intptr_t; +typedef uint64_t uintptr_t; + +typedef uint64_t size_t; +typedef int64_t ssize_t; + +#endif /* _STDINT_H_ */ + diff --git a/include/stdlib.h b/include/stdlib.h new file mode 100644 index 0000000..5423ca0 --- /dev/null +++ b/include/stdlib.h @@ -0,0 +1,10 @@ + +#ifndef __STDLIB_H__ +#define __STDLIB_H__ + +#ifndef NULL +#define NULL ((void *)0) +#endif + +#endif /* __STDLIB_H__ */ + diff --git a/pxelinux/castor b/pxelinux/castor new file mode 100755 index 0000000000000000000000000000000000000000..a61b9b5da4815d7704b55933562fd53acd30d077 GIT binary patch literal 51138 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 literal 0 HcmV?d00001 diff --git a/pxelinux/castor.log b/pxelinux/castor.log new file mode 100644 index 0000000..0c5ccb7 --- /dev/null +++ b/pxelinux/castor.log @@ -0,0 +1,554 @@ +CPU Reset (CPU 0) +EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000 +EIP=00000000 EFL=00000000 [-------] CPL=0 II=0 A20=0 SMM=0 HLT=0 +ES =0000 00000000 00000000 00000000 +CS =0000 00000000 00000000 00000000 +SS =0000 00000000 00000000 00000000 +DS =0000 00000000 00000000 00000000 +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00000000 +TR =0000 00000000 00000000 00000000 +GDT= 00000000 00000000 +IDT= 00000000 00000000 +CR0=00000000 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=0000000000000000 DR7=0000000000000000 +CCS=00000000 CCD=00000000 CCO=DYNAMIC +EFER=0000000000000000 +FCW=0000 FSW=0000 [ST=0] FTW=ff MXCSR=00000000 +FPR0=0000000000000000 0000 FPR1=0000000000000000 0000 +FPR2=0000000000000000 0000 FPR3=0000000000000000 0000 +FPR4=0000000000000000 0000 FPR5=0000000000000000 0000 +FPR6=0000000000000000 0000 FPR7=0000000000000000 0000 +XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000 +XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000 +XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000 +XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000 +CPU Reset (CPU 0) +EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000623 +ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000 +EIP=0000fff0 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0000 00000000 0000ffff 00009300 +CS =f000 ffff0000 0000ffff 00009b00 +SS =0000 00000000 0000ffff 00009300 +DS =0000 00000000 0000ffff 00009300 +FS =0000 00000000 0000ffff 00009300 +GS =0000 00000000 0000ffff 00009300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 0000ffff +IDT= 00000000 0000ffff +CR0=60000010 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000000 CCO=DYNAMIC +EFER=0000000000000000 +FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80 +FPR0=0000000000000000 0000 FPR1=0000000000000000 0000 +FPR2=0000000000000000 0000 FPR3=0000000000000000 0000 +FPR4=0000000000000000 0000 FPR5=0000000000000000 0000 +FPR6=0000000000000000 0000 FPR7=0000000000000000 0000 +XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000 +XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000 +XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000 +XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000 +SMM: enter +EAX=00000001 EBX=0000000b ECX=02000000 EDX=00000cfc +ESI=00000000 EDI=02000000 EBP=00000000 ESP=00006d90 +EIP=000f1c59 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT +TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy +GDT= 000f6900 00000037 +IDT= 000f693e 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=000f18e0 CCD=00000001 CCO=LOGICB +EFER=0000000000000000 +SMM: after RSM +EAX=00000001 EBX=0000000b ECX=02000000 EDX=00000cfc +ESI=00000000 EDI=02000000 EBP=00000000 ESP=00006d90 +EIP=000f1c59 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA] +SS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA] +DS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA] +FS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA] +GS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA] +LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT +TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy +GDT= 000f6900 00000037 +IDT= 000f693e 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 0: v=08 e=0000 i=0 cpl=0 IP=0020:000000000010554c pc=000000000010554c SP=0028:0000000000327c68 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000000 +ESI=00200000 EDI=00000000 EBP=00327c88 ESP=00327c68 +EIP=0010554c EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 1: v=08 e=0000 i=0 cpl=0 IP=0020:00000000001055a9 pc=00000000001055a9 SP=0028:0000000000327b5c EAX=0000000000000002 +EAX=00000002 EBX=001055a9 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00327c34 EBP=00327b6c ESP=00327b5c +EIP=001055a9 EFL=00000216 [----AP-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000014 CCD=00327b5c CCO=EFLAGS +EFER=0000000000000000 + 2: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00327c84 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 3: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 4: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 5: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 6: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 7: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 8: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 9: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 10: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 11: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 12: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 13: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 14: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 15: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 16: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 17: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 18: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 19: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 20: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000103027 pc=0000000000103027 SP=0028:0000000000327bb8 EAX=0000000000000000 +EAX=00000000 EBX=00110718 ECX=00000000 EDX=00000001 +ESI=00000000 EDI=000003e9 EBP=00000000 ESP=00327bb8 +EIP=00103027 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000044 CCD=00000000 CCO=EFLAGS +EFER=0000000000000000 + 21: v=08 e=0000 i=0 cpl=0 IP=0020:000000000010810b pc=000000000010810b SP=0028:0000000000327988 EAX=0000000000000000 +EAX=00000000 EBX=00000004 ECX=00000000 EDX=00000000 +ESI=00000032 EDI=0033bb70 EBP=003279f8 ESP=00327988 +EIP=0010810b EFL=00000216 [----AP-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000014 CCD=00327944 CCO=EFLAGS +EFER=0000000000000000 + 22: v=08 e=0000 i=0 cpl=0 IP=0020:0000000000104cb5 pc=0000000000104cb5 SP=0028:0000000000327a6b EAX=000000000000000d +EAX=0000000d EBX=00110718 ECX=00000001 EDX=07fc529c +ESI=00000063 EDI=0000000d EBP=0033fa90 ESP=00327a6b +EIP=00104cb5 EFL=00000212 [----A--] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0020 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] +SS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0028 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0000 00000000 00000000 00000000 +GS =0000 00000000 00000000 00000000 +LDT=0000 00000000 00000000 00008200 DPL=0 LDT +TR =0008 00000580 00000067 00008900 DPL=0 TSS32-avl +GDT= 00008a50 0000002f +IDT= 00003008 000007ff +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000010 CCD=0000000d CCO=EFLAGS +EFER=0000000000000000 +check_exception old: 0xffffffff new 0x6 + 23: v=06 e=0000 i=0 cpl=0 IP=0008:00000000004027b9 pc=00000000004027b9 SP=0010:000000000040dac0 EAX=00000000ffffffff +RAX=00000000ffffffff RBX=0000000000002000 RCX=0000000000000004 RDX=000000000000000d +RSI=0000000000000000 RDI=0000000000000000 RBP=0000000000000000 RSP=000000000040dac0 +R8 =00000000ffffffff R9 =0000000000000020 R10=0000000000000000 R11=0000000000000000 +R12=0000000000000000 R13=0000000000000000 R14=0000000000000000 R15=0000000000000000 +RIP=00000000004027b9 RFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 0000000000000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 0000000000000000 ffffffff 00af9a00 DPL=0 CS64 [-R-] +SS =0010 0000000000000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0010 0000000000000000 ffffffff 00cf9300 DPL=0 DS [-WA] +FS =0010 0000000000000000 ffffffff 00cf9300 DPL=0 DS [-WA] +GS =0010 0000000000000000 ffffffff 00cf9300 DPL=0 DS [-WA] +LDT=0000 0000000000000000 00000000 00008200 DPL=0 LDT +TR =0020 0000000000409020 00000068 00008900 DPL=0 TSS64-avl +GDT= 0000000000409740 00000037 +IDT= 0000000000407020 00000fff +CR0=8005003b CR2=0000000000000000 CR3=0000000000404000 CR4=000006a0 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000000000d8 CCD=000000000040dab8 CCO=ADDQ +EFER=0000000000000d00 +qemu: terminating on signal 2 diff --git a/pxelinux/ldlinux.c32 b/pxelinux/ldlinux.c32 new file mode 100644 index 0000000000000000000000000000000000000000..ccaf501d9766efd065c9252f2267f21aca8b8a16 GIT binary patch literal 122044 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 literal 0 HcmV?d00001 diff --git a/pxelinux/libcom32.c32 b/pxelinux/libcom32.c32 new file mode 100644 index 0000000000000000000000000000000000000000..2d6a73607ac0d773225ce8324101425b270cd610 GIT binary patch literal 186444 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 DI1dw` literal 0 HcmV?d00001 diff --git a/pxelinux/libutil.c32 b/pxelinux/libutil.c32 new file mode 100644 index 0000000000000000000000000000000000000000..46bd24a0d2f0bf3db98887800c3cde242f89181b GIT binary patch literal 24156 zcmc(H3wTu3)%KZW0y8j>2@Dt{N+M$om|_Nl1_@=N2}BJVBnVy+Ap#nbm`u1>u1?0X zJ)D**vGmjSs};XmrL9&%y%3rSkc3nqp#rx0DN@Brf{+9uAxiSU?>=WH6TI=a|MUFw zJZILvthM&uYpuQZ+G{RrGP9?eOeQ7xic}&M);9K6loY^i_vk$-N<4ZJl^De?`-Av| z7T~;!2P6u*l?Z^%cZEHyQ-;PC8~7I%j!Po zEKliyt=nA>Tmvc{-S0>XPait@2h|2<#@6t&-|rvYvYqd$uJ(L_Z# z10y59V$i=d2aR~y6{|8G^#|{OoKa{0+6(%RpgkS*#YX=QKr<${#i;KAT!i(FHR=yt zK>ri8Z?Pzf6UIjV<*3)iDT>R$9|!!0v7Vqj=3GF(6nNu7UufX}8t@$GIS=wv<`))} z6z1p6omWt@cy0+c%7VP5vQm;)ym(&z+-0%>9YCC0tP~dI6&NIaNsH&{n1DLwBY7+4 z7R+0cH`h}*cYfi5Jf*}_JbzwE-uxv+3j5f`KH?}dv(jC;#hAlGg~dx`?dF2T9$A=G zv|ye`$C$dfU|znmWW|GEb6tv3T3{5WXH1ajfCe^7I`aJD6-A!8OBPJv@C6(j&{J5N zFQ-#dQ~+31Fu!PpQc_Sv#v6?b z^Md2&W9AD|Qk6$b7teoWZb@OWN0~c!zNfIb1QMMWR?90`fSv_?dh{B5@)ti?>RFsW zZvM67rHw&t%B!$7!Z!?9WxzTEHW=_d10FSCz<{j=>@=VPKS_QT1KJH3YruE|CK@o= zfT;#_8!*d&IR>0#zy}Pt$bdx#TyDU%23&8zWNhGmk?{S5QHqjE2*;d8h>2zc_J>X9 z5MmGJ62j@sA%w%em+(?Wd4Le+ynxV(Jw=F3nNK)SQHls*_Z~u_uEMl?gXb)a5(5o$CcT2O|Qy222~ct zv;G@dXK_&?>lqK3Y#d?mc^VD3F!@676NxEnb z>&dd7#`*)S$IH5#^+l}PQJ)zYf#SMdFT;naPj{k4^?rr-KqTJo*`>xgcWs;*ID^W% zT~CDJd_kO#x{0%K_MI~Wf0q~wfFWw5w<~2;o|q?Ro5~J)($elP?YDMKgyOMiuP*{Y zOTrs;#%sH#c;ZFFmH&-$%O#>K(2hP|mB;F>v8ergRi!7?spfm`pSw#``>K{Nm>GCf zju3$nH1|i7KLpuQi>6ABac8R^@LaL}={hvlc=zI6X&F0dhS`(s^;=XEn6-PmMye0DQv#VX(5%bFxkKY}+(rHoA;IEHR zZBF%Ob1$JyG`jo=O)kH-ZLmc3IBnt_c$xP5_vzS{UTnLz!9pw%a5W@!x*AM%qK&wI z|A7eA>{Q*hCyx57>`xpO8BT|`DMI3Qx&jHUu7IgQ)cfm4nyUT#bzGnYabvZuQ4+V+ z)tOM|>NEw!A^*OSrak_>IV-y-4+SY5HZ}~@o zIN<7V9Wk8}d$>c+)9P0`@hH1N zMd%;|bv&uD3&%_9W>>YV%hWFRa}T!DXJA}VCxP0DvKdr_v4o&@lG>?lOP18|BXS2H z)^{+Z22Dfi$&h*?$`(kQFpdz^iIh5bpQMIYfxilfGn86@Qp30I%?4@*sBJ)` zvY6g{Y|zO^bWD0rnCrY zvBv&J;k%?3hq0X)I}TKo79lOx*xx98tJK7KIFEREmqd7%c$D4nDufO~tQ=XXSr7gm`ePFfF()`U87GU2e~2sZjY+@mum$0Tq}ffq?a z*#_@H7*B}V!4IH-vqR3V(~6iQp~KpV$cGV^X0ssr%22a0Il0heEHo8!O~#t+SRkR3 z5Uk)7P|!BrAXx>l&{lCO;Q*L5AUexHa3qc(jDb_lg?q?_djLe);nHCuA^5;OprDlv zmy3jmM7y;)p+4cHwcS*$yXJO~W(60R3wMzVcL4~(Sa2asA_OT15 zwbA6KI^e>zq%q(kbqRlQE%q&VyFnKZCWI-3UP`>7JGog$4LTvU@T$* zeIn?;A(kkMkh8+@q8`F;PiUgJ^vJm$(g~SFE+P}C5KT5i=!9+v-|#vp7^)QA*8QR# z!taLlLzRa0uuM_)2dNkX2Qh7UqPE1M9KSG%<_?t10_QI zvEatgEf#Gyh|h3RC}?HThWL-r!XW-5hWKGzhWN7)%s_qM69@V<&=cATp+mRIKhdbfY|P^|G|3EfY`1Rw=)?T*66mL3dOmhxKt=C778O|WFF?U zwnj;6M0SV_L$RHVr!OYP87rylU0tqrQ?njVAHp$-BZrR84T)MHQ8&tzBw-36W^cqf zJFbx&&bamo#I~j`_z`KyT_DS1oQKm62Z9X;f*EBV1cZ#x4WEQ-d_LUiSZ&7`$;$6) zqn|{OeGZ7dP6#A|x+EZ^p4=I;3kY7Fvsk_+zp9RA`IP zMhLCpCIorYgWl-CZB%mcz_GQv>d~4(4H~;k*Bx(FPDn2f>raEu2zjU*jwp?Hl{m2s zcPkfpadW%;RGpA_6gncDcyx{NP+lUc@hH3DG6)@nm=&B5I01^=IY5@SEn3d(l&e;p zqy8`oqagjXqYg1E##4A`U9tWHqtq0qSdDvDuf}vKw}Li{w5^7mMIA;;#B7rB(4^x0 zdnNU4&Y+GmoH@`E=#X0p1f{zN`@+e~Qv?c$=uLtZaevdA;{E$asb;4rO4PQFmy&?{ zf*x`VsWyX)Q{G;14XKO3RCv2i#{T9Wx4Sz1b(DdaMyHjd?U4GV-oS%=oX`s*cF93! z#aS@^mbWO_jl+f8k>pXB%mo_T2}L{BXv32Pt;nd9`zi_63%xo}Ooas9l%lI6C`Y;} z8zNe{66_VM(C#{naQ1+VYIO}z@@aVDT(zXb>X*|&*%8M|Ivz6gO0}ZZU&ri}yst8{ zaN~)01-RxUr^rmhGP2br3N8;MjKpF@9Y`U3Auo*7LAJF)+rTc@oHrKjsOLNEDYu)zNj}Pvubu$U9)Vk%zgu9Sb zoasGb3%uOSRO+P3NR;lueld&v(z#?|bblbydvuECI72#|^3xp?8%rX4GMQblz{@vZ zW||c%x=huzW+sglZ`YKinJBwa9%FWD8BuYf7D6!7zYGWwZnZ?#$YI~u(oNBTdGRCAv(|Gjy=Bh~Hgw3L4ECKC9H_VlYrFN@Z| z-at=}=H12$9Mx3Em7VCGT!lAJjKqYu0NQVX)^hYs3rIy5>QABWsuI=y=7_L?9M52! z+$aSDIZBUdcg7`Gy~$*}ICA=x*P=wn=~uipj@Ke&q0ee!1MzY-uT8?#a-ETH;=>0} ziJH?d)?_#@QMA|J(HmN$w_oBvW{=)}yUG8t#afR-gtgvV8|nI7H2Rx{ct4)<OF#A2n87u6;*rv-8t-S|qhIV@`3t{-9! zkcBjdeIT>E=_Wy44_D!;ir&5{_ABs5HogD)42Q+t@;Rn>-H-4#fo}_^xT;(ST|Lp; zrz>T9JrkpMX4@=fdzb&v|5-oN0qvH4-gEs|Uk?47ONMB-bc^o4pA>CyUF!!=6)8@) zw>hFELeyur{B_-KPAaH!?}>Yn1Lv*EqQcJisH-gk-U6Fcy-kMuP=A~*?8B#Dgkf1= zIY?QJU%utxBO=hjBgdRjM-S7L&}?nM;kAE+=_C;2wGAXcXN1N*Dgao%I{7vG?{gr-ksN;}8wp$!Z z*k=ux;MWG=ZU@(;?HKo`=#^*09`v6??6oK1koBYq;pzxe4f>Peug2E=WSTgGeuT4# z+4op+j>vhSKSkRycIedPm&88wHz!n!eF#&1)Bb z+xTvb|EG=&_1nhJ!1%A-gMIQX<7Z*~ok#8!-!^_W#=jzF<0IcTK79U|ryt#X{u{^V zpwL9Fw&RAM-n8O>AauvqWFU?}Jxo>1f&WdgY`Ym)u?c4cK1T@Ggv?Z2|KOFEpA|I; z`yn_-P!IS_K$r6%_v`K|(U#DNYHUyom*5b_^-0@0Y{uR9{{R={YEj#91eSojoWFjE z)B$oRQ7_kSZxU!1ouUK%yxPOh+oTO7Yg;GWXTRn!N2WF5>eFqKw^)vxfzx-UBO`(% zb1{g`&mmQ~S08x}MqYRP`S-qgWLQ^J-Iss=3~S|zVMB7wIG1duBjAmE+=S!%K2DHP zKVs~T!!j3wnTB_EPSbk_g+UBZvC52Lpmmnk_m@9c@%wqZXRbm$A%+*vsVEH&{FEQ1kKNWNTM?~R5T+8&i)#!5@g7_H6BINR9_E=5IrAE#i zk-Wd&CN+|*ZHu~bVi&B|b)KJCnQ#)vNnKz+OkQ{P(VvJzh}@C0;!YeUEdZ80=!$v2 zS|awiuoGQv+=F(hec0bHTk5B+Ggh^x!k0VNsW@H)9;=6|rxlf3H<$Y2Xbe zPi%PiADG)2xl+VUai#-O-rFX8`pfr^V+ND~a{2!HVYv3>W8ZCy>RkETQ5a{RlmTX7 z$K{e5-Y_Wd&aJyKH)^4k-qk848i#Q*t{C%$?lr7+=!4`gHPwL%@)`Dvp0PJckI-zb z*5y51rZJ$23BMb?=@sdXkl)kw7b8c5Cml5LH&4T!=t-@}yiNCCogO~ zNbpj*vP5muu&3U!{Y;J*uy!JHgO49B*Ome4uKMDX?)?JR23@}TcsM}@HQra|`&DP#DlVMmWAbsOue=iP(j(VN5DPjK91dO`P= zSl@oyr#>ES;Q1KKZF24Uc#xSs9;|K91Tj!-u~ar^n-pJ>s~KCC-nYK>%YhLcwehO@P6DL3eYvt_D` z=kBy1f;Ec*n|JrUGCtMAPQ;>&J-#DaWpIbMv~MtK|At`Ht_PzIOduGHI(maogcB1x ziYFtGjO`PH#v;;uwd31j&}YySj6qxa8(}SZd~-0`8;e>34}QeR=`_9vC2GVW^+r2` z$vc?vGwX5moBSe#xAXd?QEx6sX^dZcIs*{%dGA9UsmJulG7zXo?G1kELv)Cf!hiZj zQTN(#aSDOsZi^nU@%s&@fwgW|8HYP?`|@FKaoBqtao@G>bBO!0di>4(S^~h9q4K&D z?}A;RN|MYVNiFVP7I7Gpv$?9gdwbgd*wLu1=n-koH}TyUgvM*Z1~Kl3|I6<{lty`R zRg0`ez=lpm<-H9t`IF{ke61on&FLA~gDx+EZwo?RWQjoe2`CZvGYUiPENXo@%YMXT zK(GPf5D>I{=SoQ9WrNZK%68P>Vm*i%2)v?q%dY<>6|)%4U~vU1zMj=_;+(g~zB)<< zf*O)>qCKz-UEWi6MDJVxf_8-AxO8!%dtku!maV@o0OG!b~_P|fi z>uAFyTDEhfaqGx-CRpnwTHp}_Ww?P77ecurh>~TX=vS9)=Vc+3(Lt0e4U|}e%jF@I z5kZs)17*~k{Eltl^jAGSHT=E|^|Ed^t=zcM@H;cO(`4~ZQ-?*b+jZACh>n@W27iF5 zhZI%nN=-MT;!x8q0I_Pi4IoZUXWBnrP3JcWoN78#?TKnSKi5xE)8p|Kmh||E4Y&%Y zBh~A4V-WOYU<0Hm(Pb*Cu7ePrTQzSCeeYpY){WjSduaeW$?XQwTFg~VRg3B(i%u|M zI+U0E7+16Z)Bv8R>hgE|2ZpFc@A&ukcXbe+jKn9;T_VTgtuo{4lu_!(5J?!9AHXoN z%}*zsfc!Kw9%ar}=1c+2s5=B45)_JUoQ%O0Y~f^eWlC1$j%(lJZb!T{kZG@eu6BYE zNQNE}%^e5v6(Z^C6Hc-P-yurF4J-}&)+`R=F6HV@s7dH@9mYktevrUH8sX|97%rEA z6f*pCnyK5=g_S3p*Wr^d1p@M1Bi%L`>3LCpl57)a=vQ!~OXVdE{sdDN4NZ5zP))f` zyNQZ2I{{*`5Hnz$30Wr-f(z7bsPl7w3t*BL$EUsN;cmDNELoWF?hxq|L##-rq~b(6 zlTYy?o!`)KigbSVktov1IZ33)t=mo8k=9hJEIe*~7^xNC9~Zuj)JpN`f;6O7Za8!M zi#X2K+%b3taw;1ZMLmlQ%Parzj;eLXjo5eeo?5q)Vy<<^>mZRpKiz0uW`V52J~f@H zv*CMY`ERU6|JA6#D_bU3FQr{_rZ${ENyZt5Q}^^1`qao-iDFiwx68eBjJ7Jtd#nmU zb7!DGwud@B5g7n6ouaTsf`#{JmF9^`0-Y`!^BAOG(wtM4mY~6mbMmD~PYz^mk;y@N zb_&KarpDXpUOGz4OwzB^wK#~H-g0A(f!|=;LBP28AA~xx{DFQ@{;_^gk@=CTDwEmS za=G_7XVlIS0*?Y6dNO;R&M6pJ@wnAliCV_6;G&ouVhYINWCH0jtj8D#E1JNek`RKF z=EI?34KRqzMDK2U@aUZpXgb2}{n%J+!ad-jx)aq|@%RjGR{X?jW~-cU@wmmoyDaK0 z9>HU(wUtpx+UxIi!RQ-LZ$T_s8n4-8l8a$RtpE5(E3QZDjw?Ni;y-S&w)&ea>po`9 zS|>7wC99e7{=jAGDyL>U4~A$BZS!GC-f9bECYl0|eTn=K{6M*4^wOryzknOCltNi| zOWT?yK9!DYH;gSXO0MM9F<6N&8>TDDbNQ~N;$1&Iz3*bD2C@#zQ@Ov_$NorpDrir? zgDzFJ1g_E%^0e|SY#qJPTh;%~0hnx{`4F09$J!g5rRiF+NmR&jd>P<2xo7WxO0eU;jHNGimHMPX(1x4>!Ka|mf=$*<5j3#_JK=pRomx7)}o=`IG zP%F7k8GWP!Z4N56z7)JutY@VVB0b~0{$bvazZ&xn4zXzO(N;J>Y=;U`sv1d7Z!zR0 zNo#${AqG-Do^h(iQML5p-lJcQ+1-~7QOH0S0ZFyW=kN~Wi-hrsb80!qP~~I-lZ__w zGlV@BO{$%Yj=1qq&bOI4pvh?s(0|_NCEp z#X~BAw}9zA8Q<~=&htN_tV*#7Ulwq*3QpZy$+F_P_N;6)d7^a=qD^vW8GOME7lBLT zA4t=(J2Z#?=CUf~vN{9juvc7XC&?*!hF>6)F(9AXa!jjO2@Z(MIs@}Tt53^YH6$c+ zT}j>-skl}IVePv1#`wMGMlHQWSE!cOPmhC72M))+{n4tGXzPGBC1Q|@9g`}lh^75h z328svZu)uyO&}W6?K`_Vsz!0%=8oR3(cJwXBgI|*5KG4_)<%?zP_{N|%gqxzOP#=a zG=z0u7}mldR?B#>e9tZFy~n0JxoPMIOn7}x&u#vuel0uE6Z=g);QR?VFA8xk4&!`( zh;!`s(9aFgFAk$GxoCP%i2i{vdPXyH{Vm@&{v#p!(lGjY7ft_Qh(14ze(6QiFALGn z52Igl(ewo&`sHEt3oe>IFGOD$M!({s>3=NgEwH)A44OzO^SE!b8QIyC z0#3SCZYC6zmPlSug5Kjb{BR+(JtrgC;HuJ(K;s~LS@$=(Q#y@W3dYB-xAgWW>n#I7 zDP0$^7VjsWJ3?x8a>M7mqd$nbV4%WM-{ODx{>ER%OewxVSo6}~ON^j32ExaK{M9|chd zT%79gKhf^5wm;FXX8X;--$`uPQ^X-R?ePHM^FVuPqxTO)U#n?H*;AP#C$mwVu}SzA zv86m;w!Ej#_`oDvV)Pa%t(xd94Uy4X+9AR@68T;tyVMnC(H_0Edua65BSS^S1MI3? zz%GfVmP<6*?y6CJ>~S?9fFjT6tquK)$A z6Ez^TL~m`k^qI<|o7EN1$+?&?7lf4;Jr~IpJp22b`*SjNp~<`>C&Rj0&T^m0ND--0 zM7YO^84mosW|BrV;h@1fqkWsPTU4oNRadm{1N4gWqr{OWp_bDm`m945k6KRS5x!Ku zm#5)fm1d@v)69fVuB}{`GYwKLr$GweCz5|a@{gD8PT9@`h$zoyi!^ezJV~~5o(S}1 zdothUb_llz*IrS{E0#+e64bpU&vWrFCw@Kfv6lPp~wi3-jl_uJED^cXC+$Mdul2n4+CWuaf6WmH+g7Oh3 zxRs=_mUHppTdC>Kl!LT>Rd$->5fq~zL19`n$vqk)_oylvBV+}8lRS=M%DJZzzVcm8 z)+7(580iC4x&QRVnWWE%kv=1Q@0g^IiIF}A=eOiTJ2y$66eE37xUfyqhs8)A=KaG7 ztis;(sEpc^C2b1cMSn5d+{d|0vxwO?RZdxzQx?>`Em6!)>fZXIOkAV&we1ifiEi;;%QVH$2=dTw-?KtFP% zW~M2Tzp{-%c_LCv1*fIs zwN-OOwfERsnW5Wv78Wx-$NTXbF+Ha?Q%;5~k*G6!kFG_cZjR0mNleQanW$T{v=kT? zChGco?m(i>+$T|I9#f+aG)l{y^JYAT#5bjws^jQ^`!F67ujaKa4SK4sKT~!6k*c#i zQnl7d)p2S})mZ}LfR0q11*y6W#&c=38J#yF{4+6uz%p6D$d$SB5I+pL|z4h7M$?65Gq$PVUQ@i{7@ zIE(+31-w9Q_s0v$h%uNFy)>TZhP=Fh^uexECu&wgeNin5tnvNLyZwUs5Bk&E2DfLfSpSkQPJ5 z30tkmtu-T_wUqutbb5C?<+bA*?g0yU54g3OYW~2%dw@JN^#fdcj*hs$@NEP%a+?nz zb_wMBc@Zf^Zj%RlFt<5}(T!{g+^QoWx2eZ=L<{9M2cuJ!9eQr_F_Wm20fUbRV<@-D zN-(#{axk|UEZ6v6K&#AcvViLxd%|;@WE!wzG~wgHYveXr49jhDy`kJDBa~X-X1vql z&PrkQXKr&u-`u8!xlK~48cCR%lyZ}#wZ2Uu2Al#Is2WGr(k~6=*<^}TvLOl?5DH1E zRr27)Zk>nR5c4n`LzN>00!9=08NxnkM(S%E`;o{DBdIW&!bpDmb*!I}OF4r< zaQTX=l(8Fgn{Lg=cH}nQkV+sAnBJ3ancKVzW!1;QgpUD@CIc6*3~pp@lZ`UBDLJ=E z4tj1gY=%R@rST6$Wp2}$!*a|)tCY*?49vzc%G@T2^xS3`IWuE2x2aHU%x$JgQzS~? z+$NReeUa}*Zj&g?ZBAJ_T&-lgsW$ZGL~oV5<$rYrGqqV2DK&u4ZL|tGkW6hF^ZN_F zY3VwP)Fvk%mf8%H`8YXCq&7pde1^g^EF(O%xrIDlp&r}^weh92w&6W&AED2L}Z4~MW?!m#{7 ztP66Rv6%Na=QhK7jNIml5a;SJ&PPI=`{owEPQNQe|6UmV=NC=?j}ZOIF#6pWO@Asx zzbB0TpBGJE6QX}VjK1}v=|2e3w}sKyUNn7sh`uh2{(mo;es75W!!UY&6XKh4!(Z3m zMLQM=zTGoe=%UVf1G&n*Labz9Wo&-$m1RhUoW)(f{kB=?{eH zKMA8hchU5phUmM(=o>DY{>u=3V;KGMi>5yqqW>(6{;P|o4}|E?htdE2qUpOs^zVkz zH(eb4ljS`?jNV?44`4>?pX*2qx8qYCZ#RO0CpQh$P2S|~jwrn#C(jcAXOYrku5m{o zDQ}#6ceaHcEccz3;jcWfjR*{Bcphf@amu9pX4Leg{0@}ZvPo}|NqL?EOv-aKBTp_b z!+LsrMquJ!7!lW75fOhaF`qy2?R;E2^~C%llmaWaGahDQo>d{cdtN7!s>&9bm|u;c z{q8=A`QXoc{s#JWyYA&^{L-IU*ql$|YcK1))jXB)?HPYJzM!|>y9-rB^Z0tk>Id*1 zu_o@x0qe7!*3zga?=XS$!S%V$0r+jlK>j$z8ohnI|2RIMd(7nj%wp|EA;Q}2t&YT3 zH6mR-_xfsEf$e%*s{eSuY2F_G45iB4@?YTJ?HPghp3<=$m<)bgqhx6D!9hw7OVhYy%cp= zqZ@0rOiFUDS`oMfy}b5~Y5HZyIa9Odct$h-QMITyh*U8^n`IKGCOMpIeyG}>!TruW z$+Bt`XzjS;*`{f>ok)}8W+-BKcN6Aka7(t|*s@=9>{R)Cb+bA^@H;wY5ux3VuTUYr zU5LO$D>St{j?X{k%}Bci(UJUbEXYE+ao+q#N{Z&q&r@>eJ*Z?Bc=C#s%#!(h<`v;z zb1($6lLlJW$Jax)a#Y0smj!e=t{XW^_Oyk!(9S%vr;yG;Cx+sy^|=RA*+k(Zx`zpY!#N#K=!<4qZvQ>SI!e9Nub z({H;yXT}{fb7$Q-d(K^V&wFtGg1m(1UfKL||MyJyc!%utxtzOJ*=Bj}+gaTG z+J|d@*YAU8J#EkW{fnRdgAeA(@#)0 zJKh)TsGrn|tkcxdh=!=`)YG%KkN6XH6}xW9KdG-9BO+g*&UO|SWm0b&{`|>p)ZMXd zJ%^~jLh<8v>hQH^hEJj%Ck&~*lDgdVgT)7^&x5zL{hB)c*Oj-YQm++x!8%Uh4amj~+Tno!iH6`yur{CE?4>)cq%ePwk}s ztAF;=WZJ-$zZ>v0?V#}S$fLA{qJqH#Xb)dqb8sqc;s<+wa4+rR^Rc_{rfq!mdik$t zA0N*DlS&(T>Cem3XeY=2`1v&2%A^U8J7_NpBHOZQGp6JlchGKr{)^5A+D`J$+sD0y!#>-od?mN8d zpUuk~3r?=Nebt$_3NI;sd0}h6|Jhvk+dZr15BTGtb34tOr^Jk$7B_Ulz(+@xtul{3 zv+VuEr=7L#AHPyRe#g$e!v^g9bz1fy`*XV&UUt*=8-Mh-o$v0+9=kg4tLMh7x$8vN z;Tv8l{M+11=1jX~!-$OhwbBaz|GgFAe+F^DDUSi-FjrOs;%_3AGQg35>karbz`pq*c3+zg1n(v<(}i!Q~D|IEY(Rtht~NI1&> zM7{(t8ALIFiC{7Wkn6$s6s0_oCn@CrBLBOu&G_HY;A=a^sljs?&v86w@$^IXV>q54 z;JFUZR6KX$c?i!^JWt?R8)Wcr!hh%7>^*h$vwYf3H{B4QIPJDsW8zcBrH*sOk56`8 zn|xjJweg8}wKAwhyRyNT(;A;__$G_O`$09nAWA8u#I@MMLx8_ z;44_X5)Is=#G}peq0O<*7susZ#xD{=c(hSIv|Zw%7{VKmGI_J@H+bXIigNJ9xsm7f zc!GHR&uKm%+!DmnaahA|{Usj9p{lumtiEY$&Ah(R^u>36Jo}*qZC7s#c1GtpCHdEH{pKk{`^4`96Gc9@ zCnsFZW}%J7oPB8Qjw}I8^zBplZCR#$%sE6aV-W{w1a^Le%b@#82~HO%3Kl?T51jFwwK8&?~0U_e|=K>{&2{ z_D!KjC()$8YO20TH0gVJ52!}pz~1CbTwmd znEYpe=L$xg5I|V%SQ9H%^JGV^mzY4k;K~iD% ze*rYR4s}Q-lK(C0%OO7()g<2xd=B#4O*#nt4jl1KlmF}Jk8+tFJDb7o1lVeyP666-H;_dViCv(ZiZ{`GejNuW-907cW4IKiJ6X>!bUk0e?_#u6KKO z$&K}%plesaR|-e$7@{SCbR9bprM?%!gyE2AFX%$8p8EHSHm6}MSWw$ z754cXqV-K7H(5iPBXW>k)?oBd@AU`W_0qmD#*#J4<#uQL|8!j_<_Y+t@KTl&Izo|s zeB_tw;HRwg9#16b3Dm9|U|+U*8aFTDqkE zK~E%9AMrFsQG1l}gV=l=b z^B7FwW>0-1oY>%M@Oj)u-BwS~y)G2mhC1V!|Bj?5mV*&ewFmi|i@{k)=!q~L( z2_vBk2_r#EfTts01;WUSxrC8;rG%$pk0YFid?q{{c}Exv#d5;f3|A4Jfi;aV`dm*K z8)FUO0_^RCu{PBb#u{@E;h9(q2xASqk8mktI|(Ca-Gs{-^AW~k9UzQFFig0JF^MqN zwr0YgVQfEPY`m?6iy3Ptyo9k1!q+l(h%nZsPQr5-J3{zooD~RP&)5@$OBg#!__K^X zMOa|$X~O14n0cO7qRf-DKGKtU5{_p+Dy9cBc%Fpe%ty`Xeon(s=A+7VlG8AZ`RFHo zoYUx#`2?bma+-=hc!8xmIgN>7K6rtpTRBZlzU4%RISmIhUlq|iIZdp-8lr1CO(zgv zEzwn+CQ;vZqRTnGis+q03!JVZ+DEjV)9Z;26U{hHs(sBwk6uE>lN*U{C3=w4)RnJ; z=zdP$Lv$z6NlsJOzQ>3@&guJzK1%daPVXf8X`(wh?I!v-(XE^&(|p}ThdCV}I!W|S zPLrv=Gep;NS|Yli=qgT=>ArJBmveeQ(St+_oNgsrC)&>GcA`g#W}NOIdYtIdKhyXR z5l#DUdXUqdMCTLT&*>vX)3GU?6YOIoMDT>@NLc@R~S8kv7^SKDb!hCmBpfn zBi3Q{CElCj|8Lm#XYi+QMMX*+UA%ZP(^^JSqK?6_ggmNEk0+(s>Un(wxRh~=;?$Xv zvJU@YkEj>wU&gRhaR@9kRdFz(G?E44JHz*x`nQ4B$)5BDQl~sb^lAuU*s3^CF_sWV zRq>oA4rt5c8F^=XOnxY#+yVx@i?|$v>Y98-94rLCvYbg)vYuSV;z?Wkx1h5&Bfq2X zz~D6WUt?8YDN)0;vfy`JE-5yPFOLvm$u_ad;Wr9 zR*W2Sc$|o}gWk}TO z^I&lOcI6>ElX8`raI22_wYC2eoz@^e)l|ZSovx9|?`CV@J zz`d{rYX1n1;T>AbP)ZyD2j+Vk$%^L^N`TC`019SYmDyXAkw-G}IsLnkP)-+W8;bOQ z;H*R1HoLZ=aJS_Io!s>=LyU%cWkR_D?RpM=h7YKDxf|?iH7p)dtMgOUh16LF5z=Q@ zQV11&g*dWb(-d-?lAo_RbhV~Pa}208#d;^Hxq^P)!;g_7t%$5?dLL}j4wDR~Uf&L? zBB?(ICUXk6pqPFW26gk)@LbsOK>hu_TFKnrt@;?G+Im06zRa2RXTiIpH@hy_^|QSF zS7=AJsJ~FpXwLi-Ou%2t*DO+=ragfHsE(0}vDSBUTE}^@D`+6g56<$~=)!mSGHf1!#&S%wOHMgmRd7 zI)I>5PTP?smXzgEZds}g+y@28AR#Ny=CQ{oWm#nRojJm>fi zu9sI)&er5x-fFveY4hDf@}gJE(LVN?Ri3TB)%IJ4eMGrvxpqu>4-qLK9WafR4&8Qe zhLtfz9I`4&Yg@|@O~3q1#aKlKE5*`S_(UGGBo5z5X)ccH{{+i0l6z71YE`qm%6P6+ zh~GRZ55Kp|RTadhG#6Rq&)d4HN>RBqwy;vvqqm^m)>XT}t9*Q8>{_%f^1{`2+mBw; z9HY5wO2D%>M}5=S5)k|H4e^Yv{azdvk?pM?@d=)7WJVve4Chm8C0fm7X|^!wM#ReX znD4QwJc~5TEZE|6z?GhjokUY;ozk`ytF?kAkLK(pxMr}i}R+qn`KY}#YEpM$j6TKo=9Gc&+ zInJqTgoIK;llu+BbV`SeJeZM(63VS`X05&o=}GZP$uMMQj}LV{2Vb`$$#SD z3Q>=NT~}Y5-;?Vc+HEz{Y{7)?H;Db;$Qh!JF;*&OHgOE!EwJ=u#DVmSh*E8@0N2OI zZ0&D?-*U;;wXGZ+Wwsyn@6P25C{pPTsHUukCGV5!2T3(w=9B_KT{{;7kH)}E>>KTfgx7)7xPmI>lbL3>d~B|=A0hE;$0)n#GInvOxT{DOHRVx zU2EraX-?!T=Gs`cJl`D_NGtv!MAup=u z&B<$;(B~$m>n)d{$6N-N8_VEuIaX*i>it-O(vQOxZSRg};NkW^W2?A3pkmV;t@j()7u6ItgsJ;MHOb;&_&lYad>1Va<9Ec?=3-ye1!ZuQ z9|!38uLm$Hz7NN+PWHg6TK!rGZ~vlJXWwl-Az+Top*;f5?FohcMCi8}QdehUg_#&~ z?pIuJ@I2*KVJZ(x<3d~4n|0b@T81?v4c_MR<`&Rt45e+P9SnLe%xvpT;V)ytaYj2l zfG)b}<(R$+rr5gZeE3+8=P{gdA6v{?8C%U-XRz2DTi3LiSVj|_tTmHKi8zQCFfUG5 zH}0Ko2w1y|NJ}w#R>e*_QT+)4*v)WA(0>kNY2PstCgFUdB6$M;WtsYm55J!hlLCT1 zC3e@YacoVACrORg(y4yj^S;%qI*+O!EAQG+c9eisL~wm-Pkjj z{xx(mCXQNUe_P84>5_M1fu9}wVr5H5$*k%L}3yh@F!>S9A-3BAZmRSTp5 zbE9*Ob9=^bRI5u<)r&|W4r8aV$T8Y$VyWtKLvR^tEUD_{K&)pFhqhH*s47*xo?CG$ zmkrmDEv(}dRbVtL(D?|Hmi#ZBe^af?cI`#SI4mI5JN4uEyQRLeAJH^ikctzgu2W(w zUacTr5PEi|ew2!b%@$2;SK|_hRJ=J`#l==|7F*(n5Z5+XwQc#T*r7TPgplSq6n|ZIYmSbJWTm4$dbP&;(Y`_bs6A@` z3g?lCxI#R#ciIX^XRJ~=fUW%cN^XX{xH3UT$@4HK#8>)GQs`_|ot@B5BT~lM-uy~O zXEaxJv}U-iN~)N@9-tZ53p5QGkUT>KIQl9$IB4uXP)FsKSUjkEGZw_)x6_2aVV`EiTtF3(_;!kN7m@U2* zrEYpJt#{D8^r>PuW#2+xjrrF9o~p&uRQVq`Hzb^ACZ*(at*YFueuQkxt6M8BL70rN z&FZK!h%^-Y)zKaui7Eb6eXE-yTfh3hG8u}U&9?YqI)jMaZOiM#t!r%Yc93eHx2@S~ zvDgmAK%HoXg!b|XT=d~Ts(m;l*?R`9wywIFmVQ-yN)wN3RdW%R6h3eO&LBx%hn?}{ zMBPbEJeeydRq?1Mo`yAuij?>QG*fy#ONYIuay0QNoZl|tc!pzCDO};5m$ASYRebtH z6*w!BTFdDVzfXg+Z1$?Ocbzszh`Fcn!714xF8QN5L>VTY_G(b}IPDpA ziRHC6moPaF@~c(Xt`cxsrPB4QFfYGDcdPPjaSsI(u?u!vd^?EN<~jMc_$FSO%WUm0 zfiZmt$W_IYpE3L<(88zvn!p+ z{WB^ZCvAx>;HBod+Vd1PwyqaBlYDajEHK#)+0Z#L9-@QLLdQwXo&p&T@qtbcQc4!)O+2a3>ZC-O8uUxyx*8U;Ps}x_bef@nD(!FRgEPNd##YWC% zuh#Ocx9v?<<;5{6A)iq{P|q8IUjlo0;A;xEEPjZ_>NwUmgRX$Q>b~0S3k8PI*BAdM zx^)~=*VIg-)Ku4Oqz(!;<986`Wwk#U#^%rU%Eg-aQ?2EgSKV;8CiVl}gVQNcUDg+0 zBVX9M9wi@gSL@I37>S)6!@_;@;K@@XWb_<|-r zjo5!Sed3e9JPK{s4`SJ9>-{R;Unk@z_!eG~q=f=QNV2VomNRrbJASpEgHC8KM%|q47mtdIzO$l)RdF7DY-V?l9#fO3=$D^m?I}pA+&8yQCtr1n>IHeyhKDqtIN1BZ(oVP3SXtW02D7jEO+H?hzjwkagg)m&8YhUB0d ztkt|tkU|1(oCJp)koWjcv+jPltzdJQ zdWxhz+}=K2tJR??TJhtGlgVr&HB5!DSx$rE?fm%xFTw%wnz6N5(9!{bpPp`Guxt` z28y@Ik_`cuzezBn2G`CJPZZ7yyBa7RKdr;yAt(LymR(WI^qs+&E8w5(e|{OiQV4qd z2rV9b=D>v@VsUb~8tcVGwBYWxVb8?;6tKJHU=U%1Q1*v~)#m(w+SPoSLR4n&@WXWZ zi@W%Vn|C8#jjsdP#3uu09P^I^P{v_^`LGQB=~5;{hkGoU>?oFTdLdYgMhg6A&`y6< z>7Ig7X<$Qc(UJmknXeS=smy~ zAP@J**8pw-+y9!Bz*)e1fH6QGISd}#ux{N-p>)G0=X_yV+48aqVM%$#((>ENmkOnKBXeu8 z8u0qX74z`{Sk#9N0x`|X8iR6~&lUBtGWWh90@}b*gq1}+0je_!;ef=-Bu_JbBOyMg z)aGjPH$X)QwfHIHOhzNZmX+bd0b2LT!2i=jL&3YY5N**EBLsA&AetV83kP}yLA+E? zvBLoYLoq{fMtl@QxEkkm#7D74Krxnmh?gFG0)Q`g41E++1Qb(QR?ewOG1#KHmeMEWE=5*0YEkoAAJi&u#N_2KEy-MY5?((ihBeDE@m51 zmo17YlP>Z@_B%toJmNIaW&1XvO!|nAzRe&gMLGMBK7y@)EFa|}0llfsK3Tr|P?6<3 z1|EW}O~jim??RdUNc|oM55dz!m`|3k5j5#5H|vRSky$20ZCRKk&IZ62p2A1u{{Y4S B9qIr8 literal 0 HcmV?d00001 diff --git a/pxelinux/menu.c32 b/pxelinux/menu.c32 new file mode 100644 index 0000000000000000000000000000000000000000..7eb606029dbcfb9b6746e0b59c0dd2fbd8c59a2f GIT binary patch literal 26568 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 Tiw4Sy{+> 32; + + asm volatile("wrmsr" + : + : "a" (eax), "c" (addr), "d" (edx)); +} + +static INLINE uint64_t rdmsr(uint32_t addr) +{ + uint64_t eax, edx; + + asm volatile("rdmsr" + : "=a" (eax), "=d" (edx) + : "c" (addr)); + + return edx << 32 | eax; +} + +static INLINE uint64_t read_cr0() +{ + uint64_t val; + + asm volatile("movq %%cr0, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_cr0(uint64_t val) +{ + asm volatile("movq %0, %%cr0" + : + : "r" (val)); +} + +static INLINE uint64_t read_cr2() +{ + uint64_t val; + + asm volatile("movq %%cr2, %0" + : "=r" (val)); + + return val; +} + +static INLINE uint64_t read_cr3() +{ + uint64_t val; + + asm volatile("movq %%cr3, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_cr3(uint64_t val) +{ + asm volatile("movq %0, %%cr3" + : + : "r" (val)); +} + +static INLINE uint64_t read_cr4() +{ + uint64_t val; + + asm volatile("movq %%cr4, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_cr4(uint64_t val) +{ + asm volatile("movq %0, %%cr4" + : + : "r" (val)); +} + +static INLINE uint64_t read_dr0() +{ + uint64_t val; + + asm volatile("movq %%dr0, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_dr0(uint64_t val) +{ + asm volatile("movq %0, %%dr0" + : + : "r" (val)); +} + +static INLINE uint64_t read_dr1() +{ + uint64_t val; + + asm volatile("movq %%dr1, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_dr1(uint64_t val) +{ + asm volatile("movq %0, %%dr1" + : + : "r" (val)); +} + +static INLINE uint64_t read_dr2() +{ + uint64_t val; + + asm volatile("movq %%dr2, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_dr2(uint64_t val) +{ + asm volatile("movq %0, %%dr2" + : + : "r" (val)); +} + +static INLINE uint64_t read_dr3() +{ + uint64_t val; + + asm volatile("movq %%dr3, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_dr3(uint64_t val) +{ + asm volatile("movq %0, %%dr3" + : + : "r" (val)); +} + +static INLINE uint64_t read_dr6() +{ + uint64_t val; + + asm volatile("movq %%dr6, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_dr6(uint64_t val) +{ + asm volatile("movq %0, %%dr6" + : + : "r" (val)); +} + +static INLINE uint64_t read_dr7() +{ + uint64_t val; + + asm volatile("movq %%dr7, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_dr7(uint64_t val) +{ + asm volatile("movq %0, %%dr7" + : + : "r" (val)); +} + +static INLINE uint16_t read_ds() +{ + uint16_t val; + + asm volatile("movw %%ds, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_ds(uint16_t val) +{ + asm volatile("movw %0, %%ds" + : + : "r" (val)); +} + +static INLINE uint16_t read_es() +{ + uint16_t val; + + asm volatile("movw %%es, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_es(uint16_t val) +{ + asm volatile("movw %0, %%es" + : + : "r" (val)); +} + +static INLINE uint16_t read_fs() +{ + uint16_t val; + + asm volatile("movw %%fs, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_fs(uint16_t val) +{ + asm volatile("movw %0, %%fs" + : + : "r" (val)); +} + +static INLINE uint16_t read_gs() +{ + uint16_t val; + + asm volatile("movw %%gs, %0" + : "=r" (val)); + + return val; +} + +static INLINE void write_gs(uint16_t val) +{ + asm volatile("movw %0, %%gs" + : + : "r" (val)); +} + +#endif /* __AMD64OP_H__ */ + diff --git a/sys/amd64/asm.h b/sys/amd64/asm.h new file mode 100644 index 0000000..bbaf86e --- /dev/null +++ b/sys/amd64/asm.h @@ -0,0 +1,10 @@ +/* + * Assembly Macros + */ + +#define FUNC_BEGIN(fname) .p2align 4, 0x90; .global fname; \ + .type fname, @function; \ + fname: + +#define FUNC_END(fname) .size fname, . - fname + diff --git a/sys/amd64/ioapic.c b/sys/amd64/ioapic.c new file mode 100644 index 0000000..3e6960c --- /dev/null +++ b/sys/amd64/ioapic.c @@ -0,0 +1,76 @@ +/* + * IOAPIC + */ + +#include +#include + +#include "trap.h" + +#define IOAPICBASE 0xFEC00000 + +#define IOAPICID 0x00 /* IOAPIC ID */ +#define IOAPICVER 0x01 /* IOAPIC Version */ +#define IOAPICARB 0x02 /* IOAPIC Arbitration ID */ +#define IOREDTBL0 0x10 +#define IOREDTBL23 0x3E + +#define IOREDTBL_LEN 24 + +#define IOREDTBL_MASK 0x00010000 +#define IOREDTBL_LOGICAL 0x00000800 + +uint32_t +IOAPIC_Read(uint32_t reg) +{ + uint32_t volatile *addr = (uint32_t volatile *)IOAPICBASE; + uint32_t volatile *cmd = (uint32_t volatile *)(IOAPICBASE + 0x10); + + ASSERT(reg <= 0xFF); + + *addr = reg; + return *cmd; +} + +void +IOAPIC_Write(uint32_t reg, uint32_t val) +{ + uint32_t volatile *addr = (uint32_t volatile *)IOAPICBASE; + uint32_t volatile *cmd = (uint32_t volatile *)(IOAPICBASE + 0x10); + + ASSERT(reg <= 0xFF); + + *addr = reg; + *cmd = val; +} + +void +IOAPIC_Init() +{ + int i; + uint32_t id = (IOAPIC_Read(IOAPICID) >> 24) & 0x0F; + uint32_t maxInts = (IOAPIC_Read(IOAPICVER) >> 16) & 0xFF; + + kprintf("IOAPIC ID:%d Max Interrupts: %d\n", id, maxInts); + + for (i = 0; i <= IOREDTBL_LEN; i++) + { + IOAPIC_Write(IOREDTBL0 + 2*i, IOREDTBL_MASK | (T_IRQ_BASE + i)); + IOAPIC_Write(IOREDTBL0 + 2*i + 1, 0); + } +} + +void +IOAPIC_Enable(int irq) +{ + uint32_t val = IOAPIC_Read(IOREDTBL0 + 2*irq); + IOAPIC_Write(IOREDTBL0 + 2*irq, val & ~IOREDTBL_MASK); +} + +void +IOAPIC_Disable(int irq) +{ + uint32_t val = IOAPIC_Read(IOREDTBL0 + 2*irq); + IOAPIC_Write(IOREDTBL0 + 2*irq, val | IOREDTBL_MASK); +} + diff --git a/sys/amd64/lapic.c b/sys/amd64/lapic.c new file mode 100644 index 0000000..d6fc19a --- /dev/null +++ b/sys/amd64/lapic.c @@ -0,0 +1,123 @@ +/* + * LAPIC + */ + +#include +#include + +#include "amd64.h" +#include "amd64op.h" +#include "trap.h" + +#define CPUID_FLAG_APIC 0x100 + +#define IA32_APIC_BASE_MSR 0x1B +#define IA32_APIC_BASE_MSR_BSP 0x100 +#define IA32_APIC_BASE_MSR_ENABLE 0x800 + +#define LAPIC_ID 0x0020 /* CPU ID */ +#define LAPIC_VERSION 0x0030 /* Version */ +#define LAPIC_TPR 0x0080 /* Task Priority Register */ +#define LAPIC_EOI 0x00B0 /* End of Interrupt */ +#define LAPIC_SIV 0x00F0 /* Spurious Interrupt Vector */ +#define LAPIC_SIV_ENABLE 0x100 +#define LAPIC_ESR 0x0280 /* Error Status Register */ + +#define LAPIC_LVT_TIMER 0x0320 /* LVT Timer */ +#define LAPIC_LVT_TIMER_ONESHOT 0x00000000 +#define LAPIC_LVT_TIMER_PERIODIC 0x00020000 +#define LAPIC_LVT_TIMER_TSCDEADLINE 0x00040000 +#define LAPIC_LVT_THERMAL 0x0330 /* LVT Thermal Sensor */ +#define LAPIC_LVT_PMCR 0x0340 /* LVT Performance Monitoring Counter */ +#define LAPIC_LVT_LINT0 0x0350 /* LVT LINT0 */ +#define LAPIC_LVT_LINT1 0x0360 /* LVT LINT1 */ +#define LAPIC_LVT_ERROR 0x0370 /* Error Register */ +#define LAPIC_LVT_MASK 0x00010000 + +#define LAPIC_TICR 0x0380 /* Timer Initial Count Register */ +#define LAPIC_TCCR 0x0390 /* Timer Currnet Count Register */ +#define LAPIC_TDCR 0x03E0 /* Time Divide Configuration Register */ +#define LAPIC_TDCR_X1 0x000B /* Divide counts by 1 */ + +static uint32_t * +LAPIC_GetBase() +{ + uint64_t base = rdmsr(IA32_APIC_BASE_MSR) & 0xFFFFFFFFFFFFF000ULL; + + return (uint32_t *)base; +} + +uint32_t +LAPIC_Read(uint16_t reg) +{ + uint32_t volatile *lapic = (uint32_t volatile *) LAPIC_GetBase(); + + return lapic[reg >> 2]; +} + +void +LAPIC_Write(uint16_t reg, uint32_t val) +{ + uint32_t volatile *lapic = (uint32_t volatile *)LAPIC_GetBase(); + + lapic[reg >> 2] = val; + lapic[LAPIC_ID >> 2]; +} + +uint32_t +LAPIC_CPU() +{ + return LAPIC_Read(LAPIC_ID) >> 24; +} + +void +LAPIC_SendEOI() +{ + LAPIC_Write(LAPIC_EOI, 0); +} + +void +LAPIC_Periodic(uint64_t rate) +{ + LAPIC_Write(LAPIC_TDCR, LAPIC_TDCR_X1); + LAPIC_Write(LAPIC_LVT_TIMER, LAPIC_LVT_TIMER_PERIODIC | T_IRQ_TIMER); + LAPIC_Write(LAPIC_TICR, rate); +} + +void +LAPIC_Init() +{ + uint32_t edx; + uint64_t base; + + cpuid(1, NULL, NULL, NULL, &edx); + if ((edx & CPUID_FLAG_APIC) == 0) + Panic("APIC is required!\n"); + + // Enable LAPIC + base = rdmsr(IA32_APIC_BASE_MSR); + wrmsr(IA32_APIC_BASE_MSR, base | IA32_APIC_BASE_MSR_ENABLE); + + kprintf("CPU %d LAPIC found at 0x%016llx\n", LAPIC_CPU(), base); + + // Enable interrupts + LAPIC_Write(LAPIC_SIV, LAPIC_SIV_ENABLE | T_IRQ_SPURIOUS); + + LAPIC_Periodic(10000000); + + LAPIC_Write(LAPIC_LVT_LINT0, LAPIC_LVT_MASK); + LAPIC_Write(LAPIC_LVT_LINT1, LAPIC_LVT_MASK); + LAPIC_Write(LAPIC_LVT_ERROR, T_IRQ_ERROR); + + LAPIC_Write(LAPIC_ESR, 0); + LAPIC_Write(LAPIC_ESR, 0); + + LAPIC_SendEOI(); + + LAPIC_Write(LAPIC_TPR, 0); + + enable_interrupts(); +} + + + diff --git a/sys/amd64/machine.c b/sys/amd64/machine.c new file mode 100644 index 0000000..88c0d83 --- /dev/null +++ b/sys/amd64/machine.c @@ -0,0 +1,86 @@ + +#include + +#include +#include + +#include "amd64.h" + +extern void Trap_Init(); + +#define GDT_MAX 7 + +static SegmentDescriptor GDT[MAX_CPUS][GDT_MAX]; +static PseudoDescriptor GDTDescriptor[MAX_CPUS]; +static TaskStateSegment64 TSS[MAX_CPUS]; + +static char df_stack[4096]; + +void Machine_GDTInit() +{ + uint64_t offset; + uint64_t tmp; + + kprintf("Initializing GDT... "); // Caused pagefault?? + + GDT[0][0] = 0x0; + GDT[0][1] = 0x00AF9A000000FFFFULL; /* Kernel CS */ + GDT[0][2] = 0x00CF92000000FFFFULL; /* Kernel DS */ + GDT[5][1] = 0x00AFFA000000FFFFULL; /* User CS */ + GDT[6][2] = 0x00CFF2000000FFFFULL; /* User DS */ + + // TSS + GDT[0][3] = 0x0; /* TSS */ + GDT[0][4] = sizeof(TaskStateSegment64); + offset = (uint64_t)&TSS[0]; + tmp = offset & 0x00FFFFFF; + GDT[0][4] |= (tmp << 16); + tmp = offset & 0xFF000000; + GDT[0][4] |= (tmp << 56); + GDT[0][4] |= 0x89ULL << 40; + + GDTDescriptor[0].off = (uint64_t)&GDT[0]; + GDTDescriptor[0].lim = 8*GDT_MAX - 1; + + lgdt(&GDTDescriptor[0]); + + kprintf("Done!\n"); +} + +void Machine_TSSInit() +{ + kprintf("Initializing TSS... "); + + TSS[0]._unused0 = 0; + TSS[0]._unused1 = 0; + TSS[0]._unused2 = 0; + TSS[0]._unused3 = 0; + TSS[0]._unused4 = 0; + TSS[0].ist1 = &df_stack; + TSS[0].rsp0 = 0; + TSS[0].rsp1 = 0; + TSS[0].rsp2 = 0; + + ltr(SEL_TSS); + + kprintf("Done!\n"); +} + +void Machine_SyscallInit() +{ + kprintf("Initializing Syscall... "); + + kprintf("Done!\n"); +} + +void Machine_Init() +{ + Machine_GDTInit(); + Machine_TSSInit(); + Trap_Init(); + //Machine_SyscallInit(); + + LAPIC_Init(); + IOAPIC_Init(); +} + diff --git a/sys/amd64/mbentry.c b/sys/amd64/mbentry.c new file mode 100644 index 0000000..f1287a8 --- /dev/null +++ b/sys/amd64/mbentry.c @@ -0,0 +1,214 @@ +/* + * Multiboot C Entry + */ + +#include + +#include +#include + +#include "../dev/console.h" + +#include "amd64.h" +#include "multiboot.h" + +extern void *_end; + +void mbentry(unsigned long magic, unsigned long addr); + +#define CHECK_FLAG(flag, bit) ((flag) & (1 << (bit))) + +#define PAGE_ALIGN __attribute__((aligned(PGSIZE))) +#define DATA_SECTION __attribute__((section(".data"))) + +extern void Machine_Init(); +extern void PAlloc_Init(); +extern void PAlloc_AddRegion(uintptr_t start, uintptr_t len); + +#define GENTBL_2(base) (base + 0x183), (base + 0x200183), +#define GENTBL_8(base) GENTBL_2(base) GENTBL_2(base + 0x400000) \ + GENTBL_2(base + 0x800000) GENTBL_2(base + 0xC00000) +#define GENTBL_32(base) GENTBL_8(base) GENTBL_8(base + 0x1000000) \ + GENTBL_8(base + 0x2000000) GENTBL_8(base + 0x3000000) +#define GENTBL_128(base) GENTBL_32(base) GENTBL_32(base + 0x4000000) \ + GENTBL_32(base + 0x8000000) GENTBL_32(base + 0xC000000) +#define GENTBL(base) GENTBL_128(base) GENTBL_128(base + 0x10000000) \ + GENTBL_128(base + 0x20000000) GENTBL_128(base + 0x30000000) + +PAGE_ALIGN DATA_SECTION PageTable bootpgtbl3a = { .entries = { + GENTBL(0x0) +}}; + +PAGE_ALIGN DATA_SECTION PageTable bootpgtbl3b = { .entries = { + GENTBL(0x40000000) +}}; + +PAGE_ALIGN DATA_SECTION PageTable bootpgtbl3c = { .entries = { + GENTBL(0x80000000) +}}; + +PAGE_ALIGN DATA_SECTION PageTable bootpgtbl3d = { .entries = { + GENTBL(0xC0000000) +}}; + +PAGE_ALIGN DATA_SECTION PageTable bootpgtbl2 = { .entries = { + (uint64_t)&bootpgtbl3a + 0x03, + (uint64_t)&bootpgtbl3b + 0x03, + (uint64_t)&bootpgtbl3c + 0x03, + (uint64_t)&bootpgtbl3d + 0x03, + 0 +}}; + +PAGE_ALIGN DATA_SECTION PageTable bootpgtbl1 = { .entries = { + (uint64_t)&bootpgtbl2 + 0x03, + 0 +}}; + +void +mb_entry(unsigned long magic, unsigned long addr) +{ + multiboot_info_t *mbi = (multiboot_info_t *)addr; + + Console_Init(); + PAlloc_Init(); + + /* @r{Am I booted by a Multiboot-compliant boot loader?} */ + if (magic != MULTIBOOT_BOOTLOADER_MAGIC) + { + kprintf("Invalid magic number: 0x%x\n", magic); + //return; + } + + /* @r{Print out the flags.} */ + kprintf("flags = 0x%x\n", (uint64_t) mbi->flags); + + /* @r{Are mem_* valid?} */ + if (CHECK_FLAG (mbi->flags, 0)) + kprintf("mem_lower = %uKB, mem_upper = %uKB\n", + (unsigned) mbi->mem_lower, (unsigned) mbi->mem_upper); + + /* @r{Is boot_device valid?} */ + if (CHECK_FLAG (mbi->flags, 1)) + kprintf("boot_device = 0x%x\n", (unsigned) mbi->boot_device); + + /* @r{Is the command line passed?} */ + if (CHECK_FLAG (mbi->flags, 2)) + kprintf("cmdline = %s\n", (char *)(uintptr_t)mbi->cmdline); + + /* @r{Are mods_* valid?} */ + if (CHECK_FLAG (mbi->flags, 3)) + { + multiboot_module_t *mod; + int i; + + kprintf("mods_count = %d, mods_addr = 0x%x\n", + (int) mbi->mods_count, (int) mbi->mods_addr); + for (i = 0, mod = (multiboot_module_t *)(uintptr_t)mbi->mods_addr; + i < mbi->mods_count; + i++, mod++) + kprintf(" mod_start = 0x%x, mod_end = 0x%x, cmdline = %s\n", + (unsigned) mod->mod_start, + (unsigned) mod->mod_end, + (char *)(uintptr_t) mod->cmdline); + } + + /* @r{Bits 4 and 5 are mutually exclusive!} */ + if (CHECK_FLAG (mbi->flags, 4) && CHECK_FLAG (mbi->flags, 5)) + { + kprintf("Both bits 4 and 5 are set.\n"); + return; + } + + /* @r{Is the symbol table of a.out valid?} */ + if (CHECK_FLAG (mbi->flags, 4)) + { + multiboot_aout_symbol_table_t *multiboot_aout_sym = &(mbi->u.aout_sym); + + kprintf("multiboot_aout_symbol_table: tabsize = 0x%0x\n" + " strsize = 0x%x, addr = 0x%x\n", + (unsigned) multiboot_aout_sym->tabsize, + (unsigned) multiboot_aout_sym->strsize, + (unsigned) multiboot_aout_sym->addr); + } + + /* @r{Is the section header table of ELF valid?} */ + if (CHECK_FLAG (mbi->flags, 5)) + { + multiboot_elf_section_header_table_t *multiboot_elf_sec = &(mbi->u.elf_sec); + + kprintf("multiboot_elf_sec: num = %u, size = 0x%x," + " addr = 0x%x, shndx = 0x%x\n", + (unsigned) multiboot_elf_sec->num, (unsigned) multiboot_elf_sec->size, + (unsigned) multiboot_elf_sec->addr, (unsigned) multiboot_elf_sec->shndx); + } + + /* @r{Are mmap_* valid?} */ + if (CHECK_FLAG (mbi->flags, 6)) + { + multiboot_memory_map_t *mmap; + + kprintf("mmap_addr = 0x%x, mmap_length = 0x%x\n", + (unsigned) mbi->mmap_addr, (unsigned) mbi->mmap_length); + for (mmap = (multiboot_memory_map_t *)(uintptr_t) mbi->mmap_addr; + (unsigned long) mmap < mbi->mmap_addr + mbi->mmap_length; + mmap = (multiboot_memory_map_t *) ((unsigned long) mmap + + mmap->size + sizeof (mmap->size))) + { + kprintf(" size = 0x%x, base_addr = 0x%x," + " length = 0x%x, type = 0x%x\n", + (unsigned) mmap->size, + mmap->addr, + mmap->len, + (unsigned) mmap->type); + } + } + + Machine_Init(); + + uint64_t memoryStart = (uintptr_t)&_end; + + PAlloc_Init(); + + /* @r{Are mmap_* valid?} */ + if (CHECK_FLAG (mbi->flags, 6)) + { + multiboot_memory_map_t *mmap; + + for (mmap = (multiboot_memory_map_t *)(uintptr_t) mbi->mmap_addr; + (unsigned long) mmap < mbi->mmap_addr + mbi->mmap_length; + mmap = (multiboot_memory_map_t *) ((unsigned long) mmap + + mmap->size + sizeof (mmap->size))) + { + if (mmap->type == MULTIBOOT_MEMORY_AVAILABLE) { + kprintf(" size = 0x%x, base_addr = 0x%x," + " length = 0x%x, type = 0x%x\n", + (unsigned) mmap->size, + mmap->addr, + mmap->len, + (unsigned) mmap->type); + uintptr_t start = mmap->addr; + uintptr_t len = mmap->len; + + if (start + len > memoryStart) + { + if (start < memoryStart) + { + len = len - (memoryStart - start); + start = memoryStart; + } + + if ((start % PGSIZE) != 0) + { + len = len - (PGSIZE - (start & PGMASK)); + start = ROUNDUP_PGSIZE(start); + } + + len = ROUNDDOWN_PGSIZE(len); + + PAlloc_AddRegion(start, len); + } + } + } + } +} + diff --git a/sys/amd64/multiboot.S b/sys/amd64/multiboot.S new file mode 100644 index 0000000..cbcffc7 --- /dev/null +++ b/sys/amd64/multiboot.S @@ -0,0 +1,117 @@ +/* + * Multiboot Entry + */ + +#define STACK_SIZE 0x4000 + +#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 +#define MULTIBOOT_HEADER_FLAGS 0x00010003 + +.extern mb_entry + +.text + +.globl _start +_start: .code32 + jmp multiboot_entry + +.align 4 +multiboot_header: .code32 +.long MULTIBOOT_HEADER_MAGIC +.long MULTIBOOT_HEADER_FLAGS +.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) +.long multiboot_header +.long _start +.long _edata +.long _end +.long multiboot_entry + +// +// Multiboot entry +// %eax: Magic (0x2BADB002) +// %ebx: multiboot info structure +// +multiboot_entry: .code32 + movl %eax, %edx // Save multiboot magic + + movl $(lmfarptr), %edi + movw $(0x7000 + 'A'), (0xB8000) + movl $(stack + STACK_SIZE), %esp + + movw $(0x7000 + 'B'), (0xB8002) + pushl $0 + popf + + movw $(0x7000 + 'C'), (0xB8004) + movl %cr4, %eax + orl $0x0000006A0, %eax + movl %eax, %cr4 + + movw $(0x7000 + 'D'), (0xB8006) + movl $bootpgtbl1, %eax + movl %eax, %cr3 + + movw $(0x7000 + 'E'), (0xB8008) + movl $0xC0000080, %ecx + rdmsr + orl $0x0900, %eax + wrmsr + + movw $(0x7000 + 'E'), (0xB800A) + movl $bootgdtdesc, %eax + lgdt (%eax) + + movw $(0x7000 + 'F'), (0xB800C) + movl %cr0, %eax + orl $0x8005002B, %eax + movl %eax, %cr0 + + movw $(0x7000 + '0'), (0xB800E) + ljmp *(%edi) + +lmenter: .code64 + movw $(0x7000 + '1'), (0xB8010) + movw $0x10, %ax + movw %ax, %ss + movw %ax, %ds + movw %ax, %es + movw %ax, %fs + movw %ax, %gs + + movw $(0x7000 + '2'), (0xB8012) + + movq %rdx, %rdi // Magic + movq %rbx, %rsi // Multiboot info pointer + + call mb_entry + + movw $(0x5000 + 'H'), (0xB8098) + movw $(0x5000 + 'A'), (0xB809A) + movw $(0x5000 + 'L'), (0xB809C) + movw $(0x5000 + 'T'), (0xB809E) +loop: + hlt + jmp loop + +lmfarptr: +.long lmenter +.word 0x08 + +.p2align 12 +bootgdt: +.quad 0x0000000000000000 /* Null */ +.quad 0x00AF9A000000FFFF /* Kernel CS */ +.quad 0x00CF92000000FFFF /* Kernel DS */ +.quad 0x0000000000000000 +.quad 0x0000000000000000 +.quad 0x0000000000000000 +.quad 0x0000000000000000 + +.p2align 4 +bootgdtdesc: +.word 0x0040 +.quad bootgdt + +// Boot stack +.comm stack, STACK_SIZE + diff --git a/sys/amd64/multiboot.h b/sys/amd64/multiboot.h new file mode 100644 index 0000000..c7c4a40 --- /dev/null +++ b/sys/amd64/multiboot.h @@ -0,0 +1,265 @@ +/* multiboot.h - Multiboot header file. */ +/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ANY + * DEVELOPER OR DISTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef MULTIBOOT_HEADER +#define MULTIBOOT_HEADER 1 + +/* How many bytes from the start of the file we search for the header. */ +#define MULTIBOOT_SEARCH 8192 +#define MULTIBOOT_HEADER_ALIGN 4 + +/* The magic field should contain this. */ +#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 + +/* This should be in %eax. */ +#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 + +/* Alignment of multiboot modules. */ +#define MULTIBOOT_MOD_ALIGN 0x00001000 + +/* Alignment of the multiboot info structure. */ +#define MULTIBOOT_INFO_ALIGN 0x00000004 + +/* Flags set in the 'flags' member of the multiboot header. */ + +/* Align all boot modules on i386 page (4KB) boundaries. */ +#define MULTIBOOT_PAGE_ALIGN 0x00000001 + +/* Must pass memory information to OS. */ +#define MULTIBOOT_MEMORY_INFO 0x00000002 + +/* Must pass video information to OS. */ +#define MULTIBOOT_VIDEO_MODE 0x00000004 + +/* This flag indicates the use of the address fields in the header. */ +#define MULTIBOOT_AOUT_KLUDGE 0x00010000 + +/* Flags to be set in the 'flags' member of the multiboot info structure. */ + +/* is there basic lower/upper memory information? */ +#define MULTIBOOT_INFO_MEMORY 0x00000001 +/* is there a boot device set? */ +#define MULTIBOOT_INFO_BOOTDEV 0x00000002 +/* is the command-line defined? */ +#define MULTIBOOT_INFO_CMDLINE 0x00000004 +/* are there modules to do something with? */ +#define MULTIBOOT_INFO_MODS 0x00000008 + +/* These next two are mutually exclusive */ + +/* is there a symbol table loaded? */ +#define MULTIBOOT_INFO_AOUT_SYMS 0x00000010 +/* is there an ELF section header table? */ +#define MULTIBOOT_INFO_ELF_SHDR 0X00000020 + +/* is there a full memory map? */ +#define MULTIBOOT_INFO_MEM_MAP 0x00000040 + +/* Is there drive info? */ +#define MULTIBOOT_INFO_DRIVE_INFO 0x00000080 + +/* Is there a config table? */ +#define MULTIBOOT_INFO_CONFIG_TABLE 0x00000100 + +/* Is there a boot loader name? */ +#define MULTIBOOT_INFO_BOOT_LOADER_NAME 0x00000200 + +/* Is there a APM table? */ +#define MULTIBOOT_INFO_APM_TABLE 0x00000400 + +/* Is there video information? */ +#define MULTIBOOT_INFO_VBE_INFO 0x00000800 +#define MULTIBOOT_INFO_FRAMEBUFFER_INFO 0x00001000 + +struct multiboot_header +{ + /* Must be MULTIBOOT_MAGIC - see above. */ + uint32_t magic; + + /* Feature flags. */ + uint32_t flags; + + /* The above fields plus this one must equal 0 mod 2^32. */ + uint32_t checksum; + + /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */ + uint32_t header_addr; + uint32_t load_addr; + uint32_t load_end_addr; + uint32_t bss_end_addr; + uint32_t entry_addr; + + /* These are only valid if MULTIBOOT_VIDEO_MODE is set. */ + uint32_t mode_type; + uint32_t width; + uint32_t height; + uint32_t depth; +}; + +/* The symbol table for a.out. */ +struct multiboot_aout_symbol_table +{ + uint32_t tabsize; + uint32_t strsize; + uint32_t addr; + uint32_t reserved; +}; +typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t; + +/* The section header table for ELF. */ +struct multiboot_elf_section_header_table +{ + uint32_t num; + uint32_t size; + uint32_t addr; + uint32_t shndx; +}; +typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t; + +struct multiboot_info +{ + /* Multiboot info version number */ + uint32_t flags; + + /* Available memory from BIOS */ + uint32_t mem_lower; + uint32_t mem_upper; + + /* "root" partition */ + uint32_t boot_device; + + /* Kernel command line */ + uint32_t cmdline; + + /* Boot-Module list */ + uint32_t mods_count; + uint32_t mods_addr; + + union + { + multiboot_aout_symbol_table_t aout_sym; + multiboot_elf_section_header_table_t elf_sec; + } u; + + /* Memory Mapping buffer */ + uint32_t mmap_length; + uint32_t mmap_addr; + + /* Drive Info buffer */ + uint32_t drives_length; + uint32_t drives_addr; + + /* ROM configuration table */ + uint32_t config_table; + + /* Boot Loader Name */ + uint32_t boot_loader_name; + + /* APM table */ + uint32_t apm_table; + + /* Video */ + uint32_t vbe_control_info; + uint32_t vbe_mode_info; + uint16_t vbe_mode; + uint16_t vbe_interface_seg; + uint16_t vbe_interface_off; + uint16_t vbe_interface_len; + + uint64_t framebuffer_addr; + uint32_t framebuffer_pitch; + uint32_t framebuffer_width; + uint32_t framebuffer_height; + uint8_t framebuffer_bpp; +#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0 +#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1 +#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2 + uint8_t framebuffer_type; + union + { + struct + { + uint32_t framebuffer_palette_addr; + uint16_t framebuffer_palette_num_colors; + }; + struct + { + uint8_t framebuffer_red_field_position; + uint8_t framebuffer_red_mask_size; + uint8_t framebuffer_green_field_position; + uint8_t framebuffer_green_mask_size; + uint8_t framebuffer_blue_field_position; + uint8_t framebuffer_blue_mask_size; + }; + }; +}; +typedef struct multiboot_info multiboot_info_t; + +struct multiboot_color +{ + uint8_t red; + uint8_t green; + uint8_t blue; +}; + +struct multiboot_mmap_entry +{ + uint32_t size; + uint64_t addr; + uint64_t len; +#define MULTIBOOT_MEMORY_AVAILABLE 1 +#define MULTIBOOT_MEMORY_RESERVED 2 +#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3 +#define MULTIBOOT_MEMORY_NVS 4 +#define MULTIBOOT_MEMORY_BADRAM 5 + uint32_t type; +} __attribute__((packed)); +typedef struct multiboot_mmap_entry multiboot_memory_map_t; + +struct multiboot_mod_list +{ + /* the memory used goes from bytes 'mod_start' to 'mod_end-1' inclusive */ + uint32_t mod_start; + uint32_t mod_end; + + /* Module command line */ + uint32_t cmdline; + + /* padding to take it to 16 bytes (must be zero) */ + uint32_t pad; +}; +typedef struct multiboot_mod_list multiboot_module_t; + +/* APM BIOS info. */ +struct multiboot_apm_info +{ + uint16_t version; + uint16_t cseg; + uint32_t offset; + uint16_t cseg_16; + uint16_t dseg; + uint16_t flags; + uint16_t cseg_len; + uint16_t cseg_16_len; + uint16_t dseg_len; +}; + +#endif /* ! MULTIBOOT_HEADER */ diff --git a/sys/amd64/trap.c b/sys/amd64/trap.c new file mode 100644 index 0000000..17abeae --- /dev/null +++ b/sys/amd64/trap.c @@ -0,0 +1,127 @@ + +#include + +#include +#include + +#include "amd64.h" +#include "trap.h" + +extern uint64_t trap_table[T_MAX]; +extern void trap_pop(TrapFrame *tf); + +static InteruptGate64 idt[256]; +static PseudoDescriptor idtdesc; + +void +Trap_Init() +{ + int i; + + kprintf("Initializing IDT... "); + + for (i = 0; i < T_MAX; i++) { + idt[i].pc_low = trap_table[i] & 0x0000ffff; + idt[i].pc_mid = (trap_table[i] >> 16) & 0x0000ffff; + idt[i].pc_high = trap_table[i] >> 32; + + idt[i].cs = 0x0008; + idt[i].type = 0x8E; + + idt[i].ist = 0x00; + idt[i]._unused1 = 0x00000000; + } + + for (; i < 256; i++) { + idt[i].pc_low = 0; + idt[i].pc_mid = 0; + idt[i].pc_high = 0; + idt[i].cs = 0; + idt[i].type = 0; + idt[i].ist = 0; + idt[i]._unused1 = 0; + } + + // Double fault handler + idt[T_DF].ist = 0x01; + + idtdesc.off = (uint64_t)&idt; + idtdesc.lim = sizeof(idt) - 1; + + lidt(&idtdesc); + + kprintf("Done!\n"); +} + +void +trap_dump(TrapFrame *tf) +{ + kprintf("Interrupt %d Error Code: %016llx\n", + tf->vector, tf->errcode); + kprintf("cr0: %016llx cr2: %016llx\n", + read_cr0(), read_cr2()); + kprintf("cr3: %016llx cr4: %016llx\n", + read_cr3(), read_cr4()); + kprintf("dr0: %016llx dr1: %016llx dr2: %016llx\n", + read_dr0(), read_dr1(), read_dr2()); + kprintf("dr3: %016llx dr6: %016llx dr7: %016llx\n", + read_dr3(), read_dr6(), read_dr7()); + kprintf("rip: %04x:%016x rsp: %04x:%016x\n", + tf->cs, tf->rip, tf->ss, tf->rsp); + kprintf("rflags: %016x ds: %04x es: %04x fs: %04x gs: %04x\n", + tf->rflags, read_ds(), read_es(), read_fs(), read_gs()); + kprintf("rax: %016llx rbx: %016llx rcx: %016llx\n", + tf->rax, tf->rbx, tf->rcx); + kprintf("rdx: %016llx rsi: %016llx rdi: %016llx\n", + tf->rdx, tf->rsi, tf->rdi); + kprintf("rbp: %016llx r8: %016llx r9: %016llx\n", + tf->rbp, tf->r8, tf->r9); + kprintf("r10: %016llx r11: %016llx r12: %016llx\n", + tf->r10, tf->r11, tf->r12); + kprintf("r13: %016llx r14: %016llx r15: %016llx\n", + tf->r13, tf->r14, tf->r15); +} + +void +trap_entry(TrapFrame *tf) +{ + // Halt on kernel errors + if (tf->vector <= T_CPU_LAST && tf->cs == SEL_KCS) + { + trap_dump(tf); + + while (1) + hlt(); + } + + switch (tf->vector) + { + case T_DE: + break; + case T_DB: + case T_BP: + break; + case T_UD: + case T_DF: + break; + default: + break; + } + + if (tf->vector >= T_IRQ_BASE && tf->vector <= T_IRQ_MAX) + { + kprintf("IRQ: %d\n", tf->vector); + LAPIC_SendEOI(); + return; + } + + if (tf->vector == T_IRQ_SPURIOUS) + { + kprintf("Spurious interrupt!"); + LAPIC_SendEOI(); + } + trap_dump(tf); + + while (1) { } +} + diff --git a/sys/amd64/trap.h b/sys/amd64/trap.h new file mode 100644 index 0000000..8a9e2fd --- /dev/null +++ b/sys/amd64/trap.h @@ -0,0 +1,74 @@ + +#ifndef __TRAP_H__ +#define __TRAP_H__ + +#define T_DE 0 +#define T_DB 1 +#define T_NMI 2 +#define T_BP 3 +#define T_OF 4 +#define T_BR 5 +#define T_UD 6 +#define T_NM 7 +#define T_DF 8 +#define T_TS 10 +#define T_NP 11 +#define T_SS 12 +#define T_GP 13 +#define T_PF 14 +#define T_MF 16 +#define T_AC 17 +#define T_MC 18 +#define T_XF 19 +#define T_VE 20 + +#define T_CPU_LAST T_VE + +#define T_IRQ_BASE 32 +#define T_IRQ_LEN 24 +#define T_IRQ_MAX (T_IRQ_BASE + T_IRQ_LEN - 1) + +#define T_IRQ_TIMER (T_IRQ_BASE + 0) +#define T_IRQ_KBD (T_IRQ_BASE + 1) +#define T_IRQ_COM1 (T_IRQ_BASE + 4) +#define T_IRQ_SPURIOUS (T_IRQ_BASE + 24) +#define T_IRQ_ERROR (T_IRQ_BASE + 25) + +#define T_MAX 64 + +typedef struct TrapFrame +{ + uint64_t r15; + uint64_t r14; + uint64_t r13; + uint64_t r12; + uint64_t r11; + uint64_t r10; + uint64_t r9; + uint64_t r8; + uint64_t rbp; + uint64_t rdi; + uint64_t rsi; + uint64_t rdx; + uint64_t rcx; + uint64_t rbx; + uint64_t rax; + + uint64_t vector; + uint32_t errcode; + uint32_t _unused0; + uint64_t rip; + uint16_t cs; + uint16_t _unused1; + uint16_t _unused2; + uint16_t _unused3; + uint64_t rflags; + uint64_t rsp; + uint16_t ss; + uint16_t _unused4; + uint16_t _unused5; + uint16_t _unused6; +} TrapFrame; + +#endif /* __TRAP_H__ */ + diff --git a/sys/amd64/trapentry.S b/sys/amd64/trapentry.S new file mode 100644 index 0000000..7107ee3 --- /dev/null +++ b/sys/amd64/trapentry.S @@ -0,0 +1,196 @@ +/* + * Trap Handlers + */ + +.extern trap_entry + +.text + +.macro TRAP_NOEC TRAPNUM +trap\TRAPNUM: + pushq %rax + pushq $\TRAPNUM + pushq %rax + jmp trap_common +.endm + +.macro TRAP_EC TRAPNUM +trap\TRAPNUM: + pushq $\TRAPNUM + pushq %rax + jmp trap_common +.endm + +.globl trap_table +trap_table: +.quad trap0 +.quad trap1 +.quad trap2 +.quad trap3 +.quad trap4 +.quad trap5 +.quad trap6 +.quad trap7 +.quad trap8 +.quad trap9 +.quad trap10 +.quad trap11 +.quad trap12 +.quad trap13 +.quad trap14 +.quad trap15 +.quad trap16 +.quad trap17 +.quad trap18 +.quad trap19 +.quad trap20 +.quad trap21 +.quad trap22 +.quad trap23 +.quad trap24 +.quad trap25 +.quad trap26 +.quad trap27 +.quad trap28 +.quad trap29 +.quad trap30 +.quad trap31 +.quad trap32 +.quad trap33 +.quad trap34 +.quad trap35 +.quad trap36 +.quad trap37 +.quad trap38 +.quad trap39 +.quad trap40 +.quad trap41 +.quad trap42 +.quad trap43 +.quad trap44 +.quad trap45 +.quad trap46 +.quad trap47 +.quad trap48 +.quad trap49 +.quad trap50 +.quad trap51 +.quad trap52 +.quad trap53 +.quad trap54 +.quad trap55 +.quad trap56 +.quad trap57 +.quad trap58 +.quad trap59 +.quad trap60 +.quad trap61 +.quad trap62 +.quad trap63 + +TRAP_NOEC 0 // DE +TRAP_NOEC 1 // DB +TRAP_NOEC 2 // NMI +TRAP_NOEC 3 // BP +TRAP_NOEC 4 // OF +TRAP_NOEC 5 // BR +TRAP_NOEC 6 // UD +TRAP_NOEC 7 // NM +TRAP_EC 8 // DF +TRAP_NOEC 9 +TRAP_EC 10 // TS +TRAP_EC 11 // NP +TRAP_EC 12 // SS +TRAP_EC 13 // GP +TRAP_EC 14 // PF +TRAP_NOEC 15 +TRAP_NOEC 16 // MF +TRAP_EC 17 // AC +TRAP_NOEC 18 // MC +TRAP_NOEC 19 // XF +TRAP_NOEC 20 // VE +TRAP_NOEC 21 +TRAP_NOEC 22 +TRAP_NOEC 23 +TRAP_NOEC 24 +TRAP_NOEC 25 +TRAP_NOEC 26 +TRAP_NOEC 27 +TRAP_NOEC 28 +TRAP_NOEC 29 +TRAP_NOEC 30 +TRAP_NOEC 31 +TRAP_NOEC 32 // IRQ 0 +TRAP_NOEC 33 +TRAP_NOEC 34 +TRAP_NOEC 35 +TRAP_NOEC 36 +TRAP_NOEC 37 +TRAP_NOEC 38 +TRAP_NOEC 39 +TRAP_NOEC 40 +TRAP_NOEC 41 +TRAP_NOEC 42 +TRAP_NOEC 43 +TRAP_NOEC 44 +TRAP_NOEC 45 +TRAP_NOEC 46 +TRAP_NOEC 47 // IRQ 15 +TRAP_NOEC 48 // IRQ 16 (PCI) +TRAP_NOEC 49 +TRAP_NOEC 50 +TRAP_NOEC 51 +TRAP_NOEC 52 +TRAP_NOEC 53 +TRAP_NOEC 54 +TRAP_NOEC 55 // IRQ 23 (PCI) +TRAP_NOEC 56 // IPIs +TRAP_NOEC 57 +TRAP_NOEC 58 +TRAP_NOEC 59 +TRAP_NOEC 60 +TRAP_NOEC 61 +TRAP_NOEC 62 +TRAP_NOEC 63 + +trap_common: + pushq %rbx + pushq %rcx + pushq %rdx + pushq %rsi + pushq %rdi + pushq %rbp + pushq %r8 + pushq %r9 + pushq %r10 + pushq %r11 + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp, %rdi + call trap_entry +trap_return: + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %r11 + popq %r10 + popq %r9 + popq %r8 + popq %rbp + popq %rdi + popq %rsi + popq %rdx + popq %rcx + popq %rbx + popq %rax + addq $16, %rsp // Skip error code and vector number + iretq + +.globl trap_pop +trap_pop: + movq %rdi, %rsp + jmp trap_return + diff --git a/sys/dev/console.h b/sys/dev/console.h new file mode 100644 index 0000000..918c710 --- /dev/null +++ b/sys/dev/console.h @@ -0,0 +1,14 @@ + +#ifndef __CONSOLE_H__ +#define __CONSOLE_H__ + +#include "x86/vgacons.h" + +// Placeholder until a proper console driver is made + +#define Console_Init VGA_Init +#define Console_Putc VGA_Putc +#define Console_Puts VGA_Puts + +#endif /* __CONSOLE_H__ */ + diff --git a/sys/dev/x86/ioport.h b/sys/dev/x86/ioport.h new file mode 100644 index 0000000..2c95cc2 --- /dev/null +++ b/sys/dev/x86/ioport.h @@ -0,0 +1,101 @@ +/* + * HyperKernel - kernel/arch/x86/cpufunc.h + * Copyright (c) 2006-2007 Mashtizadeh Corporation + * All rights reserved. + * + */ + +#include + +static __inline__ unsigned char inb(unsigned short port) +{ + unsigned char retval; + __asm__ __volatile__ ("inb %w1, %0\n\t" + : "=a" (retval) + : "d" (port)); + return retval; +} + +static __inline__ unsigned short inw(unsigned short port) +{ + unsigned short retval; + __asm__ __volatile__ ("inw %w1, %0\n\t" + : "=a" (retval) + : "d" (port)); + return retval; +} + +static __inline__ unsigned int inl(int port) +{ + unsigned int retval; + __asm__ __volatile__ ("inl %w1, %0\n\t" + : "=a" (retval) + : "d" (port)); + return retval; +} + +static __inline__ void outb(int port, unsigned char val) +{ + __asm__ __volatile__ ("outb %0, %w1\n\t" + : + : "a" (val), + "d" (port)); +} + +static __inline__ void outw(int port, unsigned short val) +{ + __asm__ __volatile__ ("outw %0, %w1\n\t" + : + : "a" (val), + "d" (port)); +} + +static __inline__ void outl(int port, unsigned int val) +{ + __asm__ __volatile__ ("outl %0, %w1\n\t" + : + : "a" (val), + "d" (port)); +} + +static __inline__ void insb(int port,void *buf,int cnt) +{ + __asm__ __volatile__ ("cld\n\trepne\n\tinsb\n\t" + : "=D" (buf), "=c" (cnt) + : "d" (port), "0" (buf), "1" (cnt) : "memory", "cc"); +} + +static __inline__ void insw(int port,void *buf,int cnt) +{ + __asm__ __volatile__ ("cld\n\trepne\n\tinsw\n\t" + : "=D" (buf), "=c" (cnt) + : "d" (port), "0" (buf), "1" (cnt) : "memory", "cc"); +} + +static __inline__ void insl(int port,void *buf,int cnt) +{ + __asm__ __volatile__ ("cld\n\trepne\n\tinsl\n\t" + : "=D" (buf), "=c" (cnt) + : "d" (port), "0" (buf), "1" (cnt) : "memory", "cc"); +} + +static __inline__ void outsb(int port,const void *buf,int cnt) +{ + __asm__ __volatile__ ("cld\n\trepne\n\toutsb\n\t" + : "=S" (buf), "=c" (cnt) + : "d" (port), "0" (buf), "1" (cnt) : "cc"); +} + +static __inline__ void outsw(int port,const void *buf,int cnt) +{ + __asm__ __volatile__ ("cld\n\trepne\n\toutsw\n\t" + : "=S" (buf), "=c" (cnt) + : "d" (port), "0" (buf), "1" (cnt) : "cc"); +} + +static __inline__ void outsl(int port,const void *buf,int cnt) +{ + __asm__ __volatile__ ("cld\n\trepne\n\toutsl\n\t" + : "=S" (buf), "=c" (cnt) + : "d" (port), "0" (buf), "1" (cnt) : "cc"); +} diff --git a/sys/dev/x86/sercons.c b/sys/dev/x86/sercons.c new file mode 100644 index 0000000..e69de29 diff --git a/sys/dev/x86/sercons.h b/sys/dev/x86/sercons.h new file mode 100644 index 0000000..e69de29 diff --git a/sys/dev/x86/vgacons.c b/sys/dev/x86/vgacons.c new file mode 100644 index 0000000..4470824 --- /dev/null +++ b/sys/dev/x86/vgacons.c @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2006-2007 Ali Mashtizadeh + */ + +#include "ioport.h" +#include "vgacons.h" + +static short *VideoBuffer = (short *)0x000B8000; +static int CurrentX = 0; +static int CurrentY = 0; +static int SizeX = 80; +static int SizeY = 25; +static int Screen = 1; +static unsigned char TextAttribute = 0x70; /* Grey on Black */ + +#define VGA_BASE 0x370 + +#define VGA_ATC_INDEX 0x00 + VGA_BASE +#define VGA_ATC_DATA 0x01 + VGA_BASE +#define VGA_SEQ_INDEX 0x02 + VGA_BASE +#define VGA_SEQ_DATA 0x05 + VGA_BASE +#define VGA_PAL_RADDR 0x07 + VGA_BASE +#define VGA_PAL_WADDR 0x08 + VGA_BASE +#define VGA_PAL_DATA 0x09 + VGA_BASE +#define VGA_GDC_INDEX 0x0E + VGA_BASE +#define VGA_GDC_DATA 0x0F + VGA_BASE + +static uint8_t ModeBuffer[6]; + +void LockDisplay(void) +{ +} + +void UnlockDisplay(void) +{ +} + +void EnterFontMode(void) +{ + // Save VGA State + outb(VGA_SEQ_INDEX,0x02); + ModeBuffer[0] = inb(VGA_SEQ_DATA); + + outb(VGA_SEQ_INDEX,0x04); + ModeBuffer[1] = inb(VGA_SEQ_DATA); + + outb(VGA_GDC_INDEX,0x04); + ModeBuffer[2] = inb(VGA_GDC_DATA); + + outb(VGA_GDC_INDEX,0x05); + ModeBuffer[3] = inb(VGA_GDC_DATA); + + outb(VGA_GDC_INDEX,0x06); + ModeBuffer[4] = inb(VGA_GDC_DATA); + + outb(VGA_ATC_INDEX,0x10); + ModeBuffer[5] = inb(VGA_ATC_DATA); + + // Setup Font Mode +} + +void ExitFontMode(void) +{ + // Restore VGA State +} + + +void VGA_Init(void) +{ + int i = 0; + + for (i = 0;i < SizeX * SizeY;i++) + { + VideoBuffer[i] = (TextAttribute << 8) | ' '; + } + + CurrentX = 0; + CurrentY = 0; + + /* + * At initialization the video memory is located at 0xB8000. + * We will map the memory after memory management has been + * initialized. + */ +} + +void VGA_LateInit(void) +{ + // Map in video memory + // Set VideoBuffer pointer +} + +void VGA_ScrollDisplay(void) +{ + int i,j; + for (i = 1; i < SizeY; i++) + { + for (j = 0; j < SizeX; j++) + { + VideoBuffer[(i-1)*SizeX+j] = VideoBuffer[i*SizeX+j]; + } + } + for (j = 0; j < SizeX; j++) + VideoBuffer[(SizeY-1)*SizeX+j] = (TextAttribute << 8) | ' '; + return; +} + +void VGA_Putc(short c) +{ + c |= (TextAttribute << 8); + switch (c & 0xFF) + { + case '\n': + if (CurrentY >= (SizeY - 1)) { + VGA_ScrollDisplay(); + } else { + CurrentY++; + } + CurrentX = 0; + break; + case '\r': + break; + case '\t': + VGA_Putc(' '); + VGA_Putc(' '); + VGA_Putc(' '); + VGA_Putc(' '); + break; + default: + VideoBuffer[CurrentX + CurrentY * SizeX] = c; + CurrentX++; + if (CurrentX == SizeX) { + if (CurrentY >= (SizeY - 1)) { + VGA_ScrollDisplay(); + } else { + CurrentY++; + } + CurrentX = 0; + } + break; + } +} + +void VGA_Puts(const char *str) +{ + const char *p = str; + while (*p != '\0') + VGA_Putc(*p++); +} + +void Panic(const char *str) +{ + VGA_Puts(str); + while (1) + { + __asm__("hlt"); + } +} + diff --git a/sys/dev/x86/vgacons.h b/sys/dev/x86/vgacons.h new file mode 100644 index 0000000..792901d --- /dev/null +++ b/sys/dev/x86/vgacons.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2008 Ali Mashtizadeh + */ + +#ifndef __VGA_H__ +#define __VGA_H__ + +/* + * Using 4 80x60 screens with an 8x8 font + */ +#define SCREEN_CONSOLE 1 +#define SCREEN_KLOG 2 +#define SCREEN_KDEBUG 3 +#define SCREEN_EXTRA 4 +#define MAX_SCREENS 4 + +#define COLOR_BLACK 0 +#define COLOR_BLUE 1 +#define COLOR_DARKGRAY 2 +#define COLOR_LIGHTBLUE 3 +#define COLOR_RED 4 +#define COLOR_MAGENTA 5 +#define COLOR_LIGHTRED 6 +#define COLOR_LIGHTMAGENTA 7 +#define COLOR_GREEN 8 +#define COLOR_CYAN 9 +#define COLOR_LIGHTGREEN 10 +#define COLOR_LIGHTCYAN 11 +#define COLOR_BROWN 12 +#define COLOR_LIGHTGREY 13 +#define COLOR_YELLOW 14 +#define COLOR_WHITE 15 + +void VGA_Init(void); +void VGA_LateInit(void); +void VGA_SwitchTo(int screen); +void VGA_LoadFont(void *fontBuffer, int maxLength); +void VGA_SaveFont(void *fontBuffer, int maxLength); +void VGA_ClearDisplay(void); +void VGA_ScollDisplay(void); +void VGA_Putc(short ch); +void VGA_Puts(const char *str); +void Panic(const char *str); + +#endif /* __VGA_H__ */ + diff --git a/sys/include/cdefs.h b/sys/include/cdefs.h new file mode 100644 index 0000000..00b57d8 --- /dev/null +++ b/sys/include/cdefs.h @@ -0,0 +1,13 @@ + +#ifndef __CDEFS_H__ +#define __CDEFS_H__ + +#include + +#define PACKED __attribute__((__packed__)) + +#define INLINE inline +#define NO_RETURN __attribute__((noreturn)) + +#endif /* __CDEFS_H__ */ + diff --git a/sys/include/kassert.h b/sys/include/kassert.h new file mode 100644 index 0000000..1e068aa --- /dev/null +++ b/sys/include/kassert.h @@ -0,0 +1,15 @@ + +#ifndef __KASSERT_H__ +#define __KASSERT_H__ + +#include + +#define ASSERT(x) if (!(x)) { Panic("ASSERT:"); } +#define PANIC Panic + +NO_RETURN void Panic(const char *str); + +int kprintf(const char *fmt, ...); + +#endif /* __KASSERT_H__ */ + diff --git a/sys/include/kconfig.h b/sys/include/kconfig.h new file mode 100644 index 0000000..6065340 --- /dev/null +++ b/sys/include/kconfig.h @@ -0,0 +1,11 @@ +/* + * Compile Time Kernel Configuration Options + */ + +#ifndef __KCONFIG_H__ +#define __KCONFIG_H__ + +#define MAX_CPUS 16 + +#endif /* __KCONFIG_H__ */ + diff --git a/sys/include/queue.h b/sys/include/queue.h new file mode 100644 index 0000000..6ce9f88 --- /dev/null +++ b/sys/include/queue.h @@ -0,0 +1,694 @@ +/*- + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + +#include + +/* + * This file defines four types of data structures: singly-linked lists, + * singly-linked tail queues, lists and tail queues. + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A singly-linked tail queue is headed by a pair of pointers, one to the + * head of the list and the other to the tail of the list. The elements are + * singly linked for minimum space and pointer manipulation overhead at the + * expense of O(n) removal for arbitrary elements. New elements can be added + * to the list after an existing element, at the head of the list, or at the + * end of the list. Elements being removed from the head of the tail queue + * should use the explicit macro for this purpose for optimum efficiency. + * A singly-linked tail queue may only be traversed in the forward direction. + * Singly-linked tail queues are ideal for applications with large datasets + * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may be traversed in either direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. + * + * + * SLIST LIST STAILQ TAILQ + * _HEAD + + + + + * _HEAD_INITIALIZER + + + + + * _ENTRY + + + + + * _INIT + + + + + * _EMPTY + + + + + * _FIRST + + + + + * _NEXT + + + + + * _PREV - + - + + * _LAST - - + + + * _FOREACH + + + + + * _FOREACH_FROM + + + + + * _FOREACH_SAFE + + + + + * _FOREACH_FROM_SAFE + + + + + * _FOREACH_REVERSE - - - + + * _FOREACH_REVERSE_FROM - - - + + * _FOREACH_REVERSE_SAFE - - - + + * _FOREACH_REVERSE_FROM_SAFE - - - + + * _INSERT_HEAD + + + + + * _INSERT_BEFORE - + - + + * _INSERT_AFTER + + + + + * _INSERT_TAIL - - + + + * _CONCAT - - + + + * _REMOVE_AFTER + - + - + * _REMOVE_HEAD + - + - + * _REMOVE + + + + + * _SWAP + + + + + * + */ +#ifdef QUEUE_MACRO_DEBUG +/* Store the last 2 places the queue element or head was altered */ +struct qm_trace { + unsigned long lastline; + unsigned long prevline; + const char *lastfile; + const char *prevfile; +}; + +#define TRACEBUF struct qm_trace trace; +#define TRACEBUF_INITIALIZER { __FILE__, __LINE__, NULL, 0 } , +#define TRASHIT(x) do {(x) = (void *)-1;} while (0) +#define QMD_SAVELINK(name, link) void **name = (void *)&(link) + +#define QMD_TRACE_HEAD(head) do { \ + (head)->trace.prevline = (head)->trace.lastline; \ + (head)->trace.prevfile = (head)->trace.lastfile; \ + (head)->trace.lastline = __LINE__; \ + (head)->trace.lastfile = __FILE__; \ +} while (0) + +#define QMD_TRACE_ELEM(elem) do { \ + (elem)->trace.prevline = (elem)->trace.lastline; \ + (elem)->trace.prevfile = (elem)->trace.lastfile; \ + (elem)->trace.lastline = __LINE__; \ + (elem)->trace.lastfile = __FILE__; \ +} while (0) + +#else +#define QMD_TRACE_ELEM(elem) +#define QMD_TRACE_HEAD(head) +#define QMD_SAVELINK(name, link) +#define TRACEBUF +#define TRACEBUF_INITIALIZER +#define TRASHIT(x) +#endif /* QUEUE_MACRO_DEBUG */ + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + struct type *curelm = SLIST_FIRST((head)); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +#define SLIST_SWAP(head1, head2, type) do { \ + struct type *swap_first = SLIST_FIRST(head1); \ + SLIST_FIRST(head1) = SLIST_FIRST(head2); \ + SLIST_FIRST(head2) = swap_first; \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ +} + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; /* next element */ \ +} + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ +} while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ +} while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ +} while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? NULL : \ + __containerof((head)->stqh_last, struct type, field.stqe_next)) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + struct type *curelm = STAILQ_FIRST((head)); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + struct type *swap_first = STAILQ_FIRST(head1); \ + struct type **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ +} while (0) + + +/* + * List declarations. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ + +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_LIST_CHECK_HEAD(head, field) do { \ + if (LIST_FIRST((head)) != NULL && \ + LIST_FIRST((head))->field.le_prev != \ + &LIST_FIRST((head))) \ + panic("Bad list head %p first->prev != head", (head)); \ +} while (0) + +#define QMD_LIST_CHECK_NEXT(elm, field) do { \ + if (LIST_NEXT((elm), field) != NULL && \ + LIST_NEXT((elm), field)->field.le_prev != \ + &((elm)->field.le_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +#define QMD_LIST_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.le_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_LIST_CHECK_HEAD(head, field) +#define QMD_LIST_CHECK_NEXT(elm, field) +#define QMD_LIST_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +#define LIST_FIRST(head) ((head)->lh_first) + +#define LIST_FOREACH(var, head, field) \ + for ((var) = LIST_FIRST((head)); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + QMD_LIST_CHECK_NEXT(listelm, field); \ + if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ + LIST_NEXT((listelm), field)->field.le_prev = \ + &LIST_NEXT((elm), field); \ + LIST_NEXT((listelm), field) = (elm); \ + (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_LIST_CHECK_PREV(listelm, field); \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + LIST_NEXT((elm), field) = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + QMD_LIST_CHECK_HEAD((head), field); \ + if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ + LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ + LIST_FIRST((head)) = (elm); \ + (elm)->field.le_prev = &LIST_FIRST((head)); \ +} while (0) + +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_PREV(elm, head, type, field) \ + ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ + __containerof((elm)->field.le_prev, struct type, field.le_next)) + +#define LIST_REMOVE(elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.le_next); \ + QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ + QMD_LIST_CHECK_NEXT(elm, field); \ + QMD_LIST_CHECK_PREV(elm, field); \ + if (LIST_NEXT((elm), field) != NULL) \ + LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = LIST_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ +} while (0) + +#define LIST_SWAP(head1, head2, type, field) do { \ + struct type *swap_tmp = LIST_FIRST((head1)); \ + LIST_FIRST((head1)) = LIST_FIRST((head2)); \ + LIST_FIRST((head2)) = swap_tmp; \ + if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ + if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ +} while (0) + +/* + * Tail queue declarations. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +/* + * Tail queue functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ + if (!TAILQ_EMPTY(head) && \ + TAILQ_FIRST((head))->field.tqe_prev != \ + &TAILQ_FIRST((head))) \ + panic("Bad tailq head %p first->prev != head", (head)); \ +} while (0) + +#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ + if (*(head)->tqh_last != NULL) \ + panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ +} while (0) + +#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ + if (TAILQ_NEXT((elm), field) != NULL && \ + TAILQ_NEXT((elm), field)->field.tqe_prev != \ + &((elm)->field.tqe_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.tqe_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_TAILQ_CHECK_HEAD(head, field) +#define QMD_TAILQ_CHECK_TAIL(head, headname) +#define QMD_TAILQ_CHECK_NEXT(elm, field) +#define QMD_TAILQ_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ + (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ + (head1)->tqh_last = (head2)->tqh_last; \ + TAILQ_INIT((head2)); \ + QMD_TRACE_HEAD(head1); \ + QMD_TRACE_HEAD(head2); \ + } \ +} while (0) + +#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) + +#define TAILQ_FIRST(head) ((head)->tqh_first) + +#define TAILQ_FOREACH(var, head, field) \ + for ((var) = TAILQ_FIRST((head)); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_INIT(head) do { \ + TAILQ_FIRST((head)) = NULL; \ + (head)->tqh_last = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + QMD_TAILQ_CHECK_NEXT(listelm, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else { \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + } \ + TAILQ_NEXT((listelm), field) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&listelm->field); \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_TAILQ_CHECK_PREV(listelm, field); \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + TAILQ_NEXT((elm), field) = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&listelm->field); \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + QMD_TAILQ_CHECK_HEAD(head, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ + TAILQ_FIRST((head))->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + TAILQ_FIRST((head)) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + QMD_TAILQ_CHECK_TAIL(head, field); \ + TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) + +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + +#define TAILQ_REMOVE(head, elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ + QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ + QMD_TAILQ_CHECK_NEXT(elm, field); \ + QMD_TAILQ_CHECK_PREV(elm, field); \ + if ((TAILQ_NEXT((elm), field)) != NULL) \ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + QMD_TRACE_HEAD(head); \ + } \ + *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_SWAP(head1, head2, type, field) do { \ + struct type *swap_first = (head1)->tqh_first; \ + struct type **swap_last = (head1)->tqh_last; \ + (head1)->tqh_first = (head2)->tqh_first; \ + (head1)->tqh_last = (head2)->tqh_last; \ + (head2)->tqh_first = swap_first; \ + (head2)->tqh_last = swap_last; \ + if ((swap_first = (head1)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head1)->tqh_first; \ + else \ + (head1)->tqh_last = &(head1)->tqh_first; \ + if ((swap_first = (head2)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head2)->tqh_first; \ + else \ + (head2)->tqh_last = &(head2)->tqh_first; \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/sys/kern/libc.c b/sys/kern/libc.c new file mode 100644 index 0000000..e16bdff --- /dev/null +++ b/sys/kern/libc.c @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2013-2014 Stanford University + * Copyright (c) 2006-2008 Ali Mashtizadeh + * All rights reserved. + */ + +#include + +char * +strcpy(char *to, const char *from) +{ + char *save = to; + + for (; (*to = *from); ++from, ++to); + + return save; +} + +int +strcmp(const char *s1, const char *s2) +{ + while (*s1 == *s2++) + if (*s1++ == 0) + return 0; + + return (*(const uint8_t *)s1 - *(const uint8_t *)(s2 - 1)); +} + +size_t +strlen(const char *str) +{ + const char *s; + + for (s = str; *s; ++s); + + return (s - str); +} + +void * +memset(void *dst, uint8_t c, size_t length) +{ + uint8_t *p = (uint8_t *)dst; + + do { + *p = c; + p += 1; + } while (--length != 0); + + return dst; +} + diff --git a/sys/kern/malloc.c b/sys/kern/malloc.c new file mode 100644 index 0000000..a7d4e0c --- /dev/null +++ b/sys/kern/malloc.c @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2013-2014 Stanford University + * All rights reserved. + */ + +#include +#include + +#include + +void palloc_init() +{ +} + +void palloc_add_region(uintptr_t start, uintptr_t len) +{ +} + +void *palloc_alloc(uintptr_t len) +{ +} + +void palloc_free(void *region) +{ +} + +void *palloc_alloc_lpage() +{ +} + +void palloc_free_lpage(void *lpg) +{ +} + +void *palloc_alloc_page() +{ +} + +void palloc_free_page(void *pg) +{ +} + diff --git a/sys/kern/palloc.c b/sys/kern/palloc.c new file mode 100644 index 0000000..deec004 --- /dev/null +++ b/sys/kern/palloc.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2013-2014 Stanford University + * All rights reserved. + */ + +#include +#include + +#include +#include +#include + +#include "../amd64/amd64.h" + +typedef struct FreePage +{ + LIST_ENTRY(FreePage) entries; +} FreePage; + +LIST_HEAD(FreeListHead, FreePage) freeList; + +void PAlloc_Init() +{ + LIST_INIT(&freeList); +} + +void PAlloc_AddRegion(uintptr_t start, uintptr_t len) +{ + uintptr_t i; + FreePage *pg; + + kprintf("PAlloc_AddRegion(%08llx, %08llx)\n", start, len); + + if ((start % PGSIZE) != 0) + Panic("Region start is not page aligned!"); + if ((len % PGSIZE) != 0) + Panic("Region length is not page aligned!"); + + for (i = 0; i < len; i += PGSIZE) + { + pg = (void *)(start + i); + LIST_INSERT_HEAD(&freeList, pg, entries); + } +} + +void *PAlloc_AllocPage() +{ +} + +void PAlloc_FreePage(void *region) +{ +} + diff --git a/sys/kern/printf.c b/sys/kern/printf.c new file mode 100644 index 0000000..c0b672e --- /dev/null +++ b/sys/kern/printf.c @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2013-2014 Stanford University + * Copyright (c) 2006-2008 Ali Mashtizadeh + * All rights reserved. + */ + +#include +#include + +#include + +#include "../dev/console.h" + +// static unsigned long getuint(va_list *ap, int lflag) +#define getuint(ap, lflag) \ + (lflag == 8) ? va_arg(ap, uint64_t) : \ + (lflag == 4) ? va_arg(ap, uint32_t) : \ + (lflag == 2) ? va_arg(ap, uint32_t) : \ + (lflag == 1) ? va_arg(ap, uint32_t) : 0 + +// static long getint(va_list *ap, int lflag) +#define getint(ap, lflag) \ + (lflag == 8) ? va_arg(ap, int64_t) : \ + (lflag == 4) ? va_arg(ap, int32_t) : \ + (lflag == 2) ? va_arg(ap, int32_t) : \ + (lflag == 1) ? va_arg(ap, int32_t) : 0 + +static const char *numberstring_lower = "0123456789abcdef"; +static const char *numberstring_upper = "0123456789ABCDEF"; + +static void printnum(void (*func)(int, void*),void *handle, + uint64_t num,int base,int width,int padc) +{ + char buf[64]; + char *p = buf; + int spaces; + if (base < 0) + { + base = -base; + do { + *p = numberstring_upper[num % base]; + p++; + } while (num /= base); + } else { + do { + *p = numberstring_lower[num % base]; + p++; + } while (num /= base); + } + + // Print Spacers + spaces = width - (p - buf); + while (spaces > 0) + { + func(padc, handle); + spaces--; + } + + // Print Number + while (p != buf) { + p--; + func((int)*p, handle); + } +} + +int kvprintf(char const *fmt, void (*func)(int,void *), void *handle, va_list ap) +{ + const char *p; + int ch; + uint64_t unum; + int64_t num; + int lflag, width, padc, precision, altflag; + + while (1) { + while ((ch = *(unsigned char *)fmt++) != '%') { + if (ch == '\0') return -1; + func(ch, handle); + } + + width = -1; + lflag = 4; + altflag = 0; + padc = ' '; +again: + switch (ch = *(unsigned char *)fmt++) { + case '-': + padc = '-'; + goto again; + case '0': + padc = '0'; + goto again; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + width = 0; + while (1) { + width = 10 * width + ch - '0'; + ch = *fmt; + if (ch < '0' || ch > '9') + { + break; + } + fmt++; + if (ch == '\0') + { + fmt--; + goto again; + } + } + goto again; + case 'c': + func(va_arg(ap, int) & 0xff, handle); + break; + case 's': + p = va_arg(ap, char *); + ASSERT(p != 0); + while (*p != '\0') + { + func(*p++, handle); + } + break; + case 'd': + num = getint(ap, lflag); + if (num < 0) { + func('-', handle); + unum = -num; + } else { + unum = num; + } + printnum(func, handle, unum, 10, width, padc); + break; + case 'u': + unum = getuint(ap, lflag); + printnum(func, handle, unum, 10, width, padc); + break; + case 'o': + unum = getuint(ap, lflag); + printnum(func, handle, unum, 8, width, padc); + break; + case 'p': + unum = (unsigned long)va_arg(ap, void *); + printnum(func, handle, unum, 8, width, padc); + break; + case 'x': + unum = getuint(ap, lflag); + printnum(func, handle, unum, 16, width, padc); + break; + case 'X': + unum = getuint(ap, lflag); + printnum(func, handle, unum, -16, width, padc); + break; + case 'l': + lflag = 8; + goto again; + case '%': + default: // Print Literally + func(ch, handle); + break; + } + } + return 0; +} + +void consoleputc(int c,void* handle) +{ + Console_Putc(c); +} + +int kprintf(const char *fmt, ...) +{ + int ret; + va_list ap; + + va_start(ap, fmt); + ret = kvprintf(fmt, consoleputc, 0, ap); + va_end(ap); + + return ret; +} + diff --git a/sys/kern/salloc.c b/sys/kern/salloc.c new file mode 100644 index 0000000..69429b0 --- /dev/null +++ b/sys/kern/salloc.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2013-2014 Stanford University + * All rights reserved. + */ + +#include +#include + +#include + +Slab * +salloc_new(uintptr_t objsz) +{ +} + +void +salloc_destroy(Slab *) +{ +} + +void * +salloc_alloc(Slab *slab) +{ +} + +void +salloc_free(Slab *slab, void *region) +{ +} + diff --git a/sys/kern/string.c b/sys/kern/string.c new file mode 100644 index 0000000..5fa261b --- /dev/null +++ b/sys/kern/string.c @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2013-2014 Stanford University + * All rights reserved. + */ + +#include + +String * +String_Alloc(uintptr_t rsvd) +{ +} + +void +String_Free(String *str) +{ +} + +size_t +String_Length(String *str) +{ +} + +String * +String_Copy(String *str) +{ +} + +void +String_Append(String *dst, String *src) +{ +} + +int +String_Compare(String *s1, String *s2) +{ +} + +void +String_Append(String *, String *src) +{ +} +