From bcf1875165fb1921ceabdf281c0502932d9b8d61 Mon Sep 17 00:00:00 2001 From: Morten Delenk Date: Sat, 21 May 2016 18:18:20 +0000 Subject: [PATCH] Added paging support --- err | 878 +++++++++++++++++++++++++++ kernel/hal/x86/asm/snippets.S | 13 + kernel/hal/x86/include/base.hpp | 4 +- kernel/hal/x86/include/pmm.hpp | 2 +- kernel/hal/x86/include/vmm3.hpp | 17 + kernel/hal/x86/init/Multitasking.cpp | 6 +- kernel/hal/x86/init/init.cpp | 4 +- kernel/hal/x86/mm/pmm.cpp | 1 + kernel/hal/x86/mm/vmm3.cpp | 25 + mtgos.old | Bin 102792 -> 0 bytes test.elf | Bin 10124 -> 0 bytes 11 files changed, 943 insertions(+), 7 deletions(-) create mode 100644 err create mode 100644 kernel/hal/x86/include/vmm3.hpp create mode 100644 kernel/hal/x86/mm/vmm3.cpp delete mode 100755 mtgos.old delete mode 100755 test.elf diff --git a/err b/err new file mode 100644 index 0000000..b5746ae --- /dev/null +++ b/err @@ -0,0 +1,878 @@ +SMM: enter +EAX=00000001 EBX=0000000b ECX=02000000 EDX=02000628 +ESI=00000000 EDI=02000000 EBP=07fac630 ESP=00006d6c +EIP=000ef136 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= 000f71a0 00000037 +IDT= 000f71de 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00007113 CCD=00000001 CCO=LOGICB +EFER=0000000000000000 +SMM: after RSM +EAX=00000001 EBX=0000000b ECX=02000000 EDX=02000628 +ESI=00000000 EDI=02000000 EBP=07fac630 ESP=00006d6c +EIP=000ef136 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= 000f71a0 00000037 +IDT= 000f71de 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 +SMM: enter +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=00006cb0 EBP=00006c70 ESP=00006c70 +EIP=00008fab EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 008f9300 +CS =f000 000f0000 ffffffff 008f9b00 +SS =0000 00000000 ffffffff 008f9300 +DS =0000 00000000 ffffffff 008f9300 +FS =0000 00000000 ffffffff 008f9300 +GS =0000 00000000 ffffffff 008f9300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00006c70 CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=00006cb0 EBP=00006c70 ESP=00006c70 +EIP=000f8fac 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= 000f71a0 00000037 +IDT= 000f71de 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 +SMM: enter +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=000edfa0 +ESI=07fbded1 EDI=000edfa0 EBP=00006c70 ESP=00006c70 +EIP=000f8fc5 EFL=00000006 [-----P-] 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= 000f71a0 00000037 +IDT= 000f71de 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000004 CCD=00006c5c CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=000edfa0 +ESI=07fbded1 EDI=000edfa0 EBP=00006c70 ESP=00006c70 +EIP=00008fc6 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =0000 00000000 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 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 +SMM: enter +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=00006992 EBP=00006952 ESP=00006952 +EIP=00008fab EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 008f9300 +CS =f000 000f0000 ffffffff 008f9b00 +SS =0000 00000000 ffffffff 008f9300 +DS =0000 00000000 ffffffff 008f9300 +FS =0000 00000000 ffffffff 008f9300 +GS =c980 000c9800 ffffffff 008f9300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00006952 CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=00006992 EBP=00006952 ESP=00006952 +EIP=000f8fac 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= 000f71a0 00000037 +IDT= 000f71de 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 +SMM: enter +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=00000000 +ESI=07fbded1 EDI=00000000 EBP=00006952 ESP=00006952 +EIP=000f8fc5 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= 000f71a0 00000037 +IDT= 000f71de 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=0000693e CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=00000000 +ESI=07fbded1 EDI=00000000 EBP=00006952 ESP=00006952 +EIP=00008fc6 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 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 +SMM: enter +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=0000698c EBP=0000694c ESP=0000694c +EIP=00008fab EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=0000694c CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=0000698c EBP=0000694c ESP=0000694c +EIP=000f8fac 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= 000f71a0 00000037 +IDT= 000f71de 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 +SMM: enter +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=07f945d0 +ESI=07fbded1 EDI=07f945d0 EBP=0000694c ESP=0000694c +EIP=000f8fc5 EFL=00000012 [----A--] 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= 000f71a0 00000037 +IDT= 000f71de 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000010 CCD=00006938 CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=07f945d0 +ESI=07fbded1 EDI=07f945d0 EBP=0000694c ESP=0000694c +EIP=00008fc6 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 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 +SMM: enter +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=00006992 EBP=00006952 ESP=00006952 +EIP=00008fab EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00006952 CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=00006992 EBP=00006952 ESP=00006952 +EIP=000f8fac 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= 000f71a0 00000037 +IDT= 000f71de 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 +SMM: enter +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=00000000 +ESI=07fbded1 EDI=00000000 EBP=00006952 ESP=00006952 +EIP=000f8fc5 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= 000f71a0 00000037 +IDT= 000f71de 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=0000693e CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=00000000 +ESI=07fbded1 EDI=00000000 EBP=00006952 ESP=00006952 +EIP=00008fc6 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 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 +SMM: enter +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=0000698c EBP=0000694c ESP=0000694c +EIP=00008fab EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=0000694c CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=000f8fac ECX=00001234 EDX=0000df00 +ESI=07fbded1 EDI=0000698c EBP=0000694c ESP=0000694c +EIP=000f8fac 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= 000f71a0 00000037 +IDT= 000f71de 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 +SMM: enter +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=07ef45d0 +ESI=07fbded1 EDI=07ef45d0 EBP=0000694c ESP=0000694c +EIP=000f8fc5 EFL=00000012 [----A--] 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= 000f71a0 00000037 +IDT= 000f71de 00000000 +CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000010 CCD=00006938 CCO=EFLAGS +EFER=0000000000000000 +SMM: after RSM +EAX=000000b5 EBX=00008fc6 ECX=00005678 EDX=07ef45d0 +ESI=07fbded1 EDI=07ef45d0 EBP=0000694c ESP=0000694c +EIP=00008fc6 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =df00 000df000 ffffffff 00809300 +CS =f000 000f0000 ffffffff 00809b00 +SS =0000 00000000 ffffffff 00809300 +DS =0000 00000000 ffffffff 00809300 +FS =0000 00000000 ffffffff 00809300 +GS =c980 000c9800 ffffffff 00809300 +LDT=0000 00000000 0000ffff 00008200 +TR =0000 00000000 0000ffff 00008b00 +GDT= 00000000 00000000 +IDT= 00000000 000003ff +CR0=00000010 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=20 e=0000 i=0 cpl=0 IP=0008:0000000000104047 pc=0000000000104047 SP=0010:000000000010a014 env->regs[R_EAX]=0000000000000000 +EAX=00000000 EBX=00009500 ECX=0010a004 EDX=00000000 +ESI=00000000 EDI=00131000 EBP=0010a03c ESP=0010a014 +EIP=00104047 EFL=00000206 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=00000000 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000004 CCD=0010a014 CCO=EFLAGS +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xd + 1: v=0d e=0000 i=0 cpl=0 IP=0008:0000000000103272 pc=0000000000103272 SP=0010:0000000000800ff8 env->regs[R_EAX]=0000000000000000 +EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00000000 ESP=00800ff8 +EIP=00103272 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0023 00000000 ffffffff 00cff300 DPL=3 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +DS =0023 00000000 ffffffff 00cff300 DPL=3 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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=00000000 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000008 CCD=00800ff8 CCO=ADDL +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 2: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800f34 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800f4c ESP=00800f34 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 3: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800e70 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800e88 ESP=00800e70 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 4: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800dac CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800dc4 ESP=00800dac +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 5: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800ce8 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800d00 ESP=00800ce8 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 6: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800c24 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800c3c ESP=00800c24 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 7: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800b60 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800b78 ESP=00800b60 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 8: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800a9c CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800ab4 ESP=00800a9c +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 9: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:00000000008009d8 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=008009f0 ESP=008009d8 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 10: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800914 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=0080092c ESP=00800914 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 11: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800850 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800868 ESP=00800850 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 12: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:000000000080078c CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=008007a4 ESP=0080078c +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 13: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:00000000008006c8 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=008006e0 ESP=008006c8 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 14: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800604 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=0080061c ESP=00800604 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 15: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800540 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800558 ESP=00800540 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 16: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:000000000080047c CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800494 ESP=0080047c +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 17: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:00000000008003b8 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=008003d0 ESP=008003b8 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 18: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:00000000008002f4 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=0080030c ESP=008002f4 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 19: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:0000000000800230 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800248 ESP=00800230 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 20: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:000000000080016c CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=00800184 ESP=0080016c +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 21: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:00000000008000a8 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=008000c0 ESP=008000a8 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +check_exception old: 0xffffffff new 0xe + 22: v=0e e=0009 i=0 cpl=0 IP=0008:000000000010155d pc=000000000010155d SP=0010:00000000007fffe4 CR2=00000000f000ff53 +EAX=f000ff53 EBX=f000ff53 ECX=00000000 EDX=00000000 +ESI=00000000 EDI=00000000 EBP=007ffffc ESP=007fffe4 +EIP=0010155d EFL=00000006 [-----P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 +ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA] +CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-] +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 =0028 0010e940 00000080 0000e900 DPL=3 TSS32-avl +GDT= 0010e900 00000037 +IDT= 0010a0e0 000007ff +CR0=80000011 CR2=f000ff53 CR3=00005000 CR4=00000010 +DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 +DR6=00000000ffff0ff0 DR7=0000000000000400 +CCS=00000000 CCD=00000053 CCO=LOGICB +EFER=0000000000000000 +qemu-system-x86_64: terminating on signal 2 diff --git a/kernel/hal/x86/asm/snippets.S b/kernel/hal/x86/asm/snippets.S index 6f20f37..0661c68 100644 --- a/kernel/hal/x86/asm/snippets.S +++ b/kernel/hal/x86/asm/snippets.S @@ -19,6 +19,19 @@ loadIDT: mov 0x4(%esp), %eax lidt (%eax) ret +.global enterPaging +//void _stdcall enterPaging(uint32** pd); +enterPaging: + mov 0x4(%esp), %eax + mov %eax, %cr3 + mov %cr4, %eax + or $0x10, %eax + mov %eax, %cr4 + mov %cr0, %eax + or $0x80000000, %eax + mov %eax, %cr0 + mov (%esp), %eax + ret //Handle interrupts .macro intr_stub nr diff --git a/kernel/hal/x86/include/base.hpp b/kernel/hal/x86/include/base.hpp index affce63..231f524 100644 --- a/kernel/hal/x86/include/base.hpp +++ b/kernel/hal/x86/include/base.hpp @@ -12,7 +12,7 @@ namespace MTGosHAL { class Multitasking; class BlockDevice; class Task; - class PMM; + class VMM3; enum class BG_color: uint16_t; enum class FG_color: uint16_t; extern Serial debug; @@ -23,6 +23,6 @@ namespace MTGosHAL { extern IDT idt; extern Multitasking tasks; extern BlockDevice disk; - extern PMM mm; + extern VMM3 mm; } #endif diff --git a/kernel/hal/x86/include/pmm.hpp b/kernel/hal/x86/include/pmm.hpp index 862df9a..6bb47d2 100644 --- a/kernel/hal/x86/include/pmm.hpp +++ b/kernel/hal/x86/include/pmm.hpp @@ -12,8 +12,8 @@ struct malloc_t { class PMM { private: malloc_t *head; - PMM2 pmm2; public: + PMM2 pmm2; PMM(); auto init(struct multiboot_info*) -> void; auto alloc(uint32_t length) -> void *; diff --git a/kernel/hal/x86/include/vmm3.hpp b/kernel/hal/x86/include/vmm3.hpp new file mode 100644 index 0000000..87a9209 --- /dev/null +++ b/kernel/hal/x86/include/vmm3.hpp @@ -0,0 +1,17 @@ +#include +#include +#define virtualptr * +#define physicalptr * +// This is the class that activates paging and does general handling of pages +namespace MTGosHAL { +class VMM3 { +private: + uint32_t **pd; +public: + PMM pmm; + VMM3(); + auto init(struct multiboot_info*) -> void; + auto alloc(uint32_t length) -> void*; + auto free(void* ptr) -> bool; +}; +} diff --git a/kernel/hal/x86/init/Multitasking.cpp b/kernel/hal/x86/init/Multitasking.cpp index 52896f5..cb413b3 100644 --- a/kernel/hal/x86/init/Multitasking.cpp +++ b/kernel/hal/x86/init/Multitasking.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include auto schedule(struct cpu_state* cpu) -> struct cpu_state* { return MTGosHAL::tasks.schedule(cpu); } @@ -27,7 +27,9 @@ Multitasking::Multitasking(): curr_task(nullptr), first_task(nullptr) } auto Multitasking::initTask(void(* entry)()) -> struct cpu_state* { - uint8_t *stack=(uint8_t*)mm.alloc(4096), *user_stack=(uint8_t*)mm.alloc(4096); + void* tmp1, *tmp2; + mm.pmm.pmm2 >> tmp1 >> tmp2; + uint8_t *stack=(uint8_t*)tmp1, *user_stack=(uint8_t*)tmp2; struct cpu_state new_state = { 0, //EAX 0, //EBX diff --git a/kernel/hal/x86/init/init.cpp b/kernel/hal/x86/init/init.cpp index c0945f7..5ff6b7c 100644 --- a/kernel/hal/x86/init/init.cpp +++ b/kernel/hal/x86/init/init.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include extern "C" void intr_stub_0(void); void main(void ** programs); namespace MTGosHAL { @@ -20,7 +20,7 @@ namespace MTGosHAL { GDT gdt; Multitasking tasks; BlockDevice disk; - PMM mm; + VMM3 mm; void main(int eax, struct multiboot_info* ebx) { out << BG_color::BLACK << FG_color::WHITE << "Loading MTGos...\n"; err << BG_color::BLACK << FG_color::RED; diff --git a/kernel/hal/x86/mm/pmm.cpp b/kernel/hal/x86/mm/pmm.cpp index 176ac2b..595ba58 100644 --- a/kernel/hal/x86/mm/pmm.cpp +++ b/kernel/hal/x86/mm/pmm.cpp @@ -1,5 +1,6 @@ #include #include +#include extern "C" const int kernel_start; extern "C" const int kernel_end; //those are voids actually void *operator new(size_t size) { diff --git a/kernel/hal/x86/mm/vmm3.cpp b/kernel/hal/x86/mm/vmm3.cpp new file mode 100644 index 0000000..1cc7147 --- /dev/null +++ b/kernel/hal/x86/mm/vmm3.cpp @@ -0,0 +1,25 @@ +#include +#include +extern "C" void enterPaging(uint32_t **pd); +namespace MTGosHAL { +VMM3::VMM3(): pmm() { +} +auto VMM3::init(struct multiboot_info* mb_info) -> void { + pmm.init(mb_info); + void* tmp; + pmm.pmm2 >> tmp; + pd=(uint32_t**)tmp; + uint32_t ent=0x87; + for(int i=0;i<1024;i++) { + pd[i]=(uint32_t*)ent; + ent+=0x1000*1024; + } + enterPaging(pd); +} +auto VMM3::alloc(uint32_t length) -> void* { + return pmm.alloc(length); +} +auto VMM3::free(void* ptr) -> bool { + return pmm.free(ptr); +} +} diff --git a/mtgos.old b/mtgos.old deleted file mode 100755 index 4668c9eab3745f5a18ac544b746909672a90b241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102792 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 diff --git a/test.elf b/test.elf deleted file mode 100755 index e8795eceabf4ea32f04b6aa5152f4a5779887c55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10124 zcmeHN-D_M$6hCwC-OZ+(ZZ>JbhA6$2lvW`(i48%jsU{%_EzyEDDk9u&b|wzq(K@;;#5ri+&5IqumOKk%}sT-H=%ON zqV?vnX~ZyK7%&VN1`Gp+0mFb{z%XDKFbo(53?H{*(Dn7V~nKHi)5`D9{ z$CExhx^r`{)9HM8&f31g%FYXWTVG9H|E_O+`@q)Xp4hswXI=f_=C}7%fumgD%bo)L z4?ahlf|jrDKKy;h8N1K5jTiGnA7zPXjh5^HXVZbo(e=~4B|EC!b zD@(lf5{b8SVsyZ9Zr~sKkHXLG`=2`yNEy88;8zM z1ztnzAO>h6AD~ZlNANp?fsfGf1S}irfCmQu1*vNBem-JfpZH z(P!%<@~l|5V(N1;^)RN~`y95>CC?hf9R@iXL}ExBFC5C-h0(&07|s?SLGm=&h12YKA9iE zqWH6uPgRWYLNx`fzkz1aW9WtWt#A;1@?ZnIA}E%v*ef#%OG=6y{)H^ZzQtYcE_#tY zm#v@aI$uqFNnf)pRJ&ZS$VMOoYSkK1?6$*Jy&B4j%iK-W5Sa+zm*GSZR~xN~c1uRI z{Nk#+Fg4}QcvIe_J06^R3SHa|D)f4GF>1Y09pT1n_a%U@6^_vqLZ(CR# zK9CSw@m<`vlNT&$Fo`EGR(kBdeVrAXu%|s@6Cca2*mR(4K(i^IzKu~{hju$j1`Npta!q{6csnt_o zZ^ix@@t0T5&(E#+=a-gVUcBI6n44c&^eNdkpLerGzQ6hOj8~Ph-z@uatsQQ7rA>vX zB#7RvmSIKZv6jZkYrPr7r8SIkl#Vs6#d0$yk9+U$C-N$#xI|vH5qr%`fXbS`9+d(~ zUPZ38tA0IPZ)m-=wie0D`&Lv6tFoodOZ9L+3A2+|ZUg~NGc)$DWE3b|()8UEXMk6| zS8Q^O{DIcwSE09_i+XLHgi+V~1I