Changeset 2
- Timestamp:
- 02/20/08 19:17:43 (4 years ago)
- Location:
- Whitix/trunk
- Files:
-
- 1 removed
- 6 modified
-
CdRoot/Boot/isoboot (modified) (previous)
-
CdRoot/kern.bin (modified) (previous)
-
Makefile (modified) (1 diff)
-
arch/i386/mm/init.c (modified) (5 diffs)
-
include/i386/physical.h (modified) (1 diff)
-
out.txt (modified) (5 diffs)
-
user/glib (deleted)
Legend:
- Unmodified
- Added
- Removed
-
Whitix/trunk/Makefile
r1 r2 9 9 10 10 #Change to N to produce a smaller kernel if debug functionality is not required 11 CONFIG_ALLSYMS = N11 CONFIG_ALLSYMS = Y 12 12 13 13 #Make sure all makefiles can see everything -
Whitix/trunk/arch/i386/mm/init.c
r1 r2 21 21 #include <console.h> 22 22 23 /* All 3 methods are formatted into this */ 24 struct E820Entry entries[32]; 25 int entryCount=0; 26 27 /* Function needs cleanup */ 28 29 static int CleanupE820() 30 { 31 /* 0x504 contains number of entries, and 0x508 is the array of E820 entries */ 32 int numEntries=*(int*)0x504; 33 struct E820Entry* memEntries=(struct E820Entry*)0x508; 23 /*** GLOBALS ***/ 24 25 struct E820Entry entries[32]; /* All three methods copy data into this entry array ... */ 26 int entryCount=0; /* ... and set this count variable */ 27 28 /*********************************************************************** 29 * 30 * FUNCTION: PrintE820 31 * 32 * DESCRIPTION: Print the list of E820Entrys. Called by ReadE820. 33 * 34 * PARAMETERS: None. 35 * 36 * RETURNS: None. 37 * 38 ***********************************************************************/ 39 40 static void PrintE820() 41 { 42 struct E820Entry* currEntry; 34 43 int i; 35 44 36 struct ChangeMember 37 { 38 struct E820Entry* pBios; 39 QWORD addr; 40 }; 41 42 struct ChangeMember changePointList[64]; 43 struct ChangeMember* changePoint[64]; 44 struct E820Entry* overlapList[32]; 45 int changeIndex=0; 46 int changeNum; 47 int stillChanging; 48 49 if (numEntries <= 1) 50 return 0; /* No need to reshuffle if there's only one */ 51 52 /* Debug code */ 53 for (i=0; i<numEntries; i++) 54 { 55 if (memEntries[i].base + memEntries[i].length < memEntries[i].base) 56 { 57 printf("Weird E820 entry. Index is %d\n",i); 58 return 1; 59 } 60 } 61 62 /* 63 * Now order them, getting rid of gaps and overlap. 64 * The idea behind this code is from Linux 65 */ 66 67 for (i=0; i<2*numEntries; i++) 68 changePoint[i]=&changePointList[i]; 69 70 for (i=0; i<numEntries; i++) 71 if (memEntries[i].length) 72 { 73 changePoint[changeIndex]->addr=memEntries[i].base; 74 changePoint[changeIndex++]->pBios=&memEntries[i]; 75 changePoint[changeIndex]->addr=memEntries[i].base+memEntries[i].length; 76 changePoint[changeIndex++]->pBios=&memEntries[i]; 77 } 78 79 changeNum=changeIndex; 80 81 /* Sort the memory map from low to high */ 82 83 stillChanging=1; 84 while (stillChanging) 85 { 86 stillChanging=0; 87 for (i=1; i<changeNum; i++) 88 { 89 if ((changePoint[i]->addr < changePoint[i-1]->addr) || 90 ((changePoint[i]->addr == changePoint[i-1]->addr) && 91 (changePoint[i]->addr == changePoint[i]->pBios->base) && 92 (changePoint[i-1]->addr != changePoint[i-1]->pBios->base))) 93 { 94 struct ChangeMember* changeTemp; 95 changeTemp=changePoint[i]; 96 changePoint[i]=changePoint[i-1]; 97 changePoint[i-1]=changeTemp; 98 stillChanging=1; 99 } 100 } 101 } 102 103 int overlapCount=0,currentType=0,lastType=0,lastAddr=0; 104 105 /* Now with that sorted, create a new E820 memory map */ 106 107 for (changeIndex=0; changeIndex<changeNum; changeIndex++) 108 { 109 /* Detect overlapping BIOS entries */ 110 if (changePoint[changeIndex]->addr == changePoint[changeIndex]->pBios->base) 111 { 112 overlapList[overlapCount++]=changePoint[changeIndex]->pBios; 113 }else{ 114 for (i=0; i<overlapCount; i++) 115 { 116 if (overlapList[i] == changePoint[changeIndex]->pBios) 117 overlapList[i]=overlapList[overlapCount-1]; 118 } 119 overlapCount--; 120 } 121 122 /* Now deal with those overlapping BIOS entries */ 123 124 currentType=0; 125 for (i=0; i<overlapCount; i++) 126 { 127 if (overlapList[i]->rangeType > currentType) 128 currentType=overlapList[i]->rangeType; 129 } 130 131 if (currentType != lastType) 132 { 133 if (lastType) 134 { 135 //printf("entryCount = %u\n",entryCount); 136 entries[entryCount].length=changePoint[changeIndex]->addr-lastAddr; 137 if (entries[entryCount].length) 138 if (++entryCount >= 32) 139 break; 140 } 141 142 if (currentType) 143 { 144 entries[entryCount].base=changePoint[changeIndex]->addr; 145 entries[entryCount].rangeType=currentType; 146 lastAddr=changePoint[changeIndex]->addr; 147 } 148 149 lastType=currentType; 150 } 151 } 152 153 /* Finished! :) Now print the new list of entries */ 154 155 printf("Number of E820 entries = %u\n",entryCount); 156 157 struct E820Entry* currEntry; 45 printf("PHYS: Number of E820 entries = %u\n",entryCount); 158 46 159 47 for (i=0; i<entryCount; i++) … … 180 68 } 181 69 } 70 } 71 72 /*********************************************************************** 73 * 74 * FUNCTION: ReadE820 75 * 76 * DESCRIPTION: Read data from the E820 BIOS call, and convert it to an 77 * array of E820Entrys. 78 * 79 * PARAMETERS: None. 80 * 81 * RETURNS: 1 on error (for errornous E820 entries), 0 otherwise. 82 * 83 ***********************************************************************/ 84 85 /* Function needs cleanup */ 86 87 static int ReadE820() 88 { 89 /* 0x504 contains number of entries, and 0x508 is the array of E820 entries */ 90 int numEntries=*(int*)MINFO_COUNT; 91 struct E820Entry* memEntries=(struct E820Entry*)MINFO_START; 92 int i; 93 94 struct ChangeMember 95 { 96 struct E820Entry* pBios; 97 QWORD addr; 98 }; 99 100 struct ChangeMember changePointList[64]; 101 struct ChangeMember* changePoint[64]; 102 struct E820Entry* overlapList[32]; 103 int changeIndex=0; 104 int changeNum; 105 int stillChanging; 106 107 if (numEntries <= 1) 108 return 0; /* No need to reshuffle if there's only one entry */ 109 110 /* Debug code */ 111 for (i=0; i<numEntries; i++) 112 { 113 if (memEntries[i].base + memEntries[i].length < memEntries[i].base) 114 { 115 printf("Weird E820 entry. Index is %d\n",i); 116 return 1; 117 } 118 } 119 120 /* 121 * Now order them, getting rid of gaps and overlap. 122 * The idea behind this code is from Linux 123 */ 124 125 for (i=0; i<2*numEntries; i++) 126 changePoint[i]=&changePointList[i]; 127 128 for (i=0; i<numEntries; i++) 129 if (memEntries[i].length) 130 { 131 changePoint[changeIndex]->addr=memEntries[i].base; 132 changePoint[changeIndex++]->pBios=&memEntries[i]; 133 changePoint[changeIndex]->addr=memEntries[i].base+memEntries[i].length; 134 changePoint[changeIndex++]->pBios=&memEntries[i]; 135 } 136 137 changeNum=changeIndex; 138 139 /* Sort the memory map from low to high */ 140 stillChanging=1; 141 while (stillChanging) 142 { 143 stillChanging=0; 144 for (i=1; i<changeNum; i++) 145 { 146 if ((changePoint[i]->addr < changePoint[i-1]->addr) || 147 ((changePoint[i]->addr == changePoint[i-1]->addr) && 148 (changePoint[i]->addr == changePoint[i]->pBios->base) && 149 (changePoint[i-1]->addr != changePoint[i-1]->pBios->base))) 150 { 151 struct ChangeMember* changeTemp; 152 changeTemp=changePoint[i]; 153 changePoint[i]=changePoint[i-1]; 154 changePoint[i-1]=changeTemp; 155 stillChanging=1; 156 } 157 } 158 } 159 160 int overlapCount=0,currentType=0,lastType=0,lastAddr=0; 161 162 /* Now with that sorted, create a new E820 memory map */ 163 164 for (changeIndex=0; changeIndex<changeNum; changeIndex++) 165 { 166 /* Detect overlapping BIOS entries */ 167 if (changePoint[changeIndex]->addr == changePoint[changeIndex]->pBios->base) 168 { 169 overlapList[overlapCount++]=changePoint[changeIndex]->pBios; 170 }else{ 171 for (i=0; i<overlapCount; i++) 172 { 173 if (overlapList[i] == changePoint[changeIndex]->pBios) 174 overlapList[i]=overlapList[overlapCount-1]; 175 } 176 overlapCount--; 177 } 178 179 /* Now deal with those overlapping BIOS entries */ 180 181 currentType=0; 182 for (i=0; i<overlapCount; i++) 183 { 184 if (overlapList[i]->rangeType > currentType) 185 currentType=overlapList[i]->rangeType; 186 } 187 188 if (currentType != lastType) 189 { 190 if (lastType) 191 { 192 entries[entryCount].length=changePoint[changeIndex]->addr-lastAddr; 193 if (entries[entryCount].length) 194 if (++entryCount >= 32) 195 break; 196 } 197 198 if (currentType) 199 { 200 entries[entryCount].base=changePoint[changeIndex]->addr; 201 entries[entryCount].rangeType=currentType; 202 lastAddr=changePoint[changeIndex]->addr; 203 } 204 205 lastType=currentType; 206 } 207 } 208 209 /* Print completed entries to screen */ 210 PrintE820(); 182 211 183 212 return 0; 184 213 } 185 214 186 static void CleanupE801() 215 /*********************************************************************** 216 * 217 * FUNCTION: ReadE801 218 * 219 * DESCRIPTION: Read data from MINFO_COUNT, from BIOS call 0xE801. 220 * 221 * PARAMETERS: None. 222 * 223 * RETURNS: None. 224 * 225 ***********************************************************************/ 226 227 static void ReadE801() 187 228 { 188 229 /* Memory, in kilobytes, is at 0x504 */ 189 DWORD numKs=*(DWORD*) 0x504;230 DWORD numKs=*(DWORD*)MINFO_COUNT; 190 231 191 232 /* Two entries - the usual memory below 1mb, and all the way to xmb */ … … 201 242 /*********************************************************************** 202 243 * 203 * FUNCTION: Cleanup88h244 * FUNCTION: Read88h 204 245 * 205 246 * DESCRIPTION: Clean up the data (i.e. convert it to an E820 table) from … … 208 249 * PARAMETERS: None. 209 250 * 210 * RETURNS: None. 211 * 212 ***********************************************************************/ 213 214 static void Cleanup88h() 215 { 216 WORD numKs=*(WORD*)0x504; 217 /* 0x504 contains the number of kilobytes above 1mb */ 251 * RETURNS: None. 252 * 253 ***********************************************************************/ 254 255 static void Read88h() 256 { 257 WORD numKs=*(WORD*)MINFO_COUNT; 258 259 /* MINFO_COUNT contains the number of kilobytes above 1mb */ 218 260 entryCount=2; 219 261 entries[0].base=0x0; … … 318 360 { 319 361 case 0: 320 Cleanup88h();362 Read88h(); 321 363 break; 322 364 case 1: 323 CleanupE801();365 ReadE801(); 324 366 break; 325 367 case 2: 326 CleanupE820();368 ReadE820(); 327 369 break; 328 370 } -
Whitix/trunk/include/i386/physical.h
r1 r2 35 35 #define E820_FREE 1 36 36 37 /* Memory address defines */ 38 #define MINFO_COUNT 0x504 39 #define MINFO_START 0x508 40 37 41 #endif -
Whitix/trunk/out.txt
r1 r2 32 32 00000000000i[ ] USB support: yes 33 33 00000000000i[ ] VGA extension support: vbe 34 00000000000i[MEM0 ] allocated memory at 0xb5d d7008. after alignment, vector=0xb5dd800034 00000000000i[MEM0 ] allocated memory at 0xb5d19008. after alignment, vector=0xb5d1a000 35 35 00000000000i[MEM0 ] 32.00MB 36 36 00000000000i[MEM0 ] rom at 0xffff0000/65536 ('/usr/share/bochs/BIOS-bochs-latest') … … 39 39 00000000000i[APIC0] 80686 40 40 00000000000i[APIC0] local apic in CPU apicid=00 initializing 41 00000000000i[ ] lt_dlhandle is 0x82fd4b 841 00000000000i[ ] lt_dlhandle is 0x82fd4b0 42 42 00000000000i[PLGIN] loaded plugin libbx_unmapped.la 43 00000000000i[ ] lt_dlhandle is 0x82fd5 3043 00000000000i[ ] lt_dlhandle is 0x82fd528 44 44 00000000000i[PLGIN] loaded plugin libbx_biosdev.la 45 00000000000i[ ] lt_dlhandle is 0x82fded 845 00000000000i[ ] lt_dlhandle is 0x82fded0 46 46 00000000000i[PLGIN] loaded plugin libbx_cmos.la 47 00000000000i[ ] lt_dlhandle is 0x82fe4 9047 00000000000i[ ] lt_dlhandle is 0x82fe488 48 48 00000000000i[PLGIN] loaded plugin libbx_dma.la 49 00000000000i[ ] lt_dlhandle is 0x82fe9 e049 00000000000i[ ] lt_dlhandle is 0x82fe9d8 50 50 00000000000i[PLGIN] loaded plugin libbx_pic.la 51 00000000000i[ ] lt_dlhandle is 0x82febd 851 00000000000i[ ] lt_dlhandle is 0x82febd0 52 52 00000000000i[PLGIN] loaded plugin libbx_vga.la 53 00000000000i[ ] lt_dlhandle is 0x82ff 50053 00000000000i[ ] lt_dlhandle is 0x82ff4f8 54 54 00000000000i[PLGIN] loaded plugin libbx_floppy.la 55 00000000000i[ ] lt_dlhandle is 0x82ff57 855 00000000000i[ ] lt_dlhandle is 0x82ff570 56 56 00000000000i[PLGIN] loaded plugin libbx_harddrv.la 57 00000000000i[ ] lt_dlhandle is 0x82ffe b057 00000000000i[ ] lt_dlhandle is 0x82ffea8 58 58 00000000000i[PLGIN] loaded plugin libbx_keyboard.la 59 00000000000i[ ] lt_dlhandle is 0x831198 859 00000000000i[ ] lt_dlhandle is 0x8311980 60 60 00000000000i[PLGIN] loaded plugin libbx_serial.la 61 00000000000i[ ] lt_dlhandle is 0x8312ad 861 00000000000i[ ] lt_dlhandle is 0x8312ad0 62 62 00000000000i[PLGIN] loaded plugin libbx_parallel.la 63 00000000000i[ ] lt_dlhandle is 0x8312c5 863 00000000000i[ ] lt_dlhandle is 0x8312c50 64 64 00000000000i[PLGIN] loaded plugin libbx_extfpuirq.la 65 00000000000i[ ] lt_dlhandle is 0x831351 865 00000000000i[ ] lt_dlhandle is 0x8313510 66 66 00000000000i[PLGIN] loaded plugin libbx_gameport.la 67 00000000000i[ ] lt_dlhandle is 0x8313a 2067 00000000000i[ ] lt_dlhandle is 0x8313a18 68 68 00000000000i[PLGIN] loaded plugin libbx_speaker.la 69 00000000000i[ ] lt_dlhandle is 0x8313f 1069 00000000000i[ ] lt_dlhandle is 0x8313f08 70 70 00000000000i[PLGIN] loaded plugin libbx_pci.la 71 00000000000i[ ] lt_dlhandle is 0x83146a 871 00000000000i[ ] lt_dlhandle is 0x83146a0 72 72 00000000000i[PLGIN] loaded plugin libbx_pci2isa.la 73 00000000000i[ ] lt_dlhandle is 0x8314c d073 00000000000i[ ] lt_dlhandle is 0x8314cc8 74 74 00000000000i[PLGIN] loaded plugin libbx_pci_ide.la 75 75 00000000000i[IOAP ] initializing I/O APIC … … 77 77 00000000000i[MEM0 ] Register memory access handlers: fec00000-fec00fff 78 78 00000000000i[CMOS ] Using local time for initial clock 79 00000000000i[CMOS ] Setting initial clock to: Mon Feb 18 11:22:09 2008 (time0=1203333729)79 00000000000i[CMOS ] Setting initial clock to: Wed Feb 20 19:16:37 2008 (time0=1203534997) 80 80 00000000000i[DMA ] channel 4 used by cascade 81 81 00000000000i[DMA ] channel 2 used by Floppy Drive … … 101 101 00000000000i[CD ] Opening image file cd.iso as a cd. 102 102 00000000000i[HD ] Media present in CD-ROM drive 103 00000000000i[HD ] Capacity is 1898 sectors (3.71MB)103 00000000000i[HD ] Capacity is 3737 sectors (7.30 MB) 104 104 00000000000i[HD ] Using boot sequence cdrom, none, none 105 105 00000000000i[HD ] Floppy boot signature check is enabled … … 152 152 00001066129i[HD ] READ(10) with transfer length <= 0, ok (0) 153 153 00001120000i[XGUI ] charmap update. Font Height is 16 154 00001155472i[BIOS ] KBD: unsupported int 16h function 03 155 00077214000i[XGUI ] system RESET callback 156 00077214000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called 157 00077214000i[APIC0] local apic in CPU 0 initializing 158 00077214000i[PLGIN] reset of 'harddrv' plugin device by virtual method 159 00077214000i[PLGIN] reset of 'keyboard' plugin device by virtual method 160 00077214000i[PLGIN] reset of 'serial' plugin device by virtual method 161 00077214000i[PLGIN] reset of 'parallel' plugin device by virtual method 162 00077214000i[PLGIN] reset of 'extfpuirq' plugin device by virtual method 163 00077214000i[PLGIN] reset of 'gameport' plugin device by virtual method 164 00077214000i[PLGIN] reset of 'speaker' plugin device by virtual method 165 00077214000i[PLGIN] reset of 'pci_ide' plugin device by virtual method 166 00077214000i[CPU0 ] handleAsyncEvent: reset detected in HLT state 167 00077217740i[BIOS ] $Revision: 1.166 $ $Date: 2006/08/11 17:34:12 $ 168 00077532057i[KBD ] reset-disable command received 169 00077657898i[VBIOS] 170 VGABios $Id: vgabios.c,v 1.66 2006/07/10 07:47:51 vruppert Exp $ 171 00077657969i[VGA ] VBE known Display Interface b0c0 172 00077658001i[VGA ] VBE known Display Interface b0c4 173 00077660926i[VBIOS] VBE Bios $Id: vbe.c,v 1.58 2006/08/19 09:39:43 vruppert Exp $ 174 00077760000i[XGUI ] charmap update. Font Height is 16 175 00078240000i[XGUI ] charmap update. Font Height is 16 176 00078280129i[HD ] READ(10) with transfer length <= 0, ok (0) 177 00078320000i[XGUI ] charmap update. Font Height is 16 178 00078369472i[BIOS ] KBD: unsupported int 16h function 03 179 00232904000i[XGUI ] system RESET callback 180 00232904000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called 181 00232904000i[APIC0] local apic in CPU 0 initializing 182 00232904000i[PLGIN] reset of 'harddrv' plugin device by virtual method 183 00232904000i[PLGIN] reset of 'keyboard' plugin device by virtual method 184 00232904000i[PLGIN] reset of 'serial' plugin device by virtual method 185 00232904000i[PLGIN] reset of 'parallel' plugin device by virtual method 186 00232904000i[PLGIN] reset of 'extfpuirq' plugin device by virtual method 187 00232904000i[PLGIN] reset of 'gameport' plugin device by virtual method 188 00232904000i[PLGIN] reset of 'speaker' plugin device by virtual method 189 00232904000i[PLGIN] reset of 'pci_ide' plugin device by virtual method 190 00232904000i[CPU0 ] handleAsyncEvent: reset detected in HLT state 191 00232907740i[BIOS ] $Revision: 1.166 $ $Date: 2006/08/11 17:34:12 $ 192 00233222057i[KBD ] reset-disable command received 193 00233347898i[VBIOS] 194 VGABios $Id: vgabios.c,v 1.66 2006/07/10 07:47:51 vruppert Exp $ 195 00233347969i[VGA ] VBE known Display Interface b0c0 196 00233348001i[VGA ] VBE known Display Interface b0c4 197 00233350926i[VBIOS] VBE Bios $Id: vbe.c,v 1.58 2006/08/19 09:39:43 vruppert Exp $ 198 00233440000i[XGUI ] charmap update. Font Height is 16 199 00233920000i[XGUI ] charmap update. Font Height is 16 200 00233970129i[HD ] READ(10) with transfer length <= 0, ok (0) 201 00234000000i[XGUI ] charmap update. Font Height is 16 202 00234059472i[BIOS ] KBD: unsupported int 16h function 03 203 00267272000i[XGUI ] system RESET callback 204 00267272000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called 205 00267272000i[APIC0] local apic in CPU 0 initializing 206 00267272000i[PLGIN] reset of 'harddrv' plugin device by virtual method 207 00267272000i[PLGIN] reset of 'keyboard' plugin device by virtual method 208 00267272000i[PLGIN] reset of 'serial' plugin device by virtual method 209 00267272000i[PLGIN] reset of 'parallel' plugin device by virtual method 210 00267272000i[PLGIN] reset of 'extfpuirq' plugin device by virtual method 211 00267272000i[PLGIN] reset of 'gameport' plugin device by virtual method 212 00267272000i[PLGIN] reset of 'speaker' plugin device by virtual method 213 00267272000i[PLGIN] reset of 'pci_ide' plugin device by virtual method 214 00267272000i[CPU0 ] handleAsyncEvent: reset detected in HLT state 215 00267275740i[BIOS ] $Revision: 1.166 $ $Date: 2006/08/11 17:34:12 $ 216 00267590057i[KBD ] reset-disable command received 217 00267715898i[VBIOS] 218 VGABios $Id: vgabios.c,v 1.66 2006/07/10 07:47:51 vruppert Exp $ 219 00267715969i[VGA ] VBE known Display Interface b0c0 220 00267716001i[VGA ] VBE known Display Interface b0c4 221 00267718926i[VBIOS] VBE Bios $Id: vbe.c,v 1.58 2006/08/19 09:39:43 vruppert Exp $ 222 00267760000i[XGUI ] charmap update. Font Height is 16 223 00267840000i[XGUI ] charmap update. Font Height is 16 224 00268320000i[XGUI ] charmap update. Font Height is 16 225 00268338129i[HD ] READ(10) with transfer length <= 0, ok (0) 226 00268400000i[XGUI ] charmap update. Font Height is 16 227 00268427472i[BIOS ] KBD: unsupported int 16h function 03 228 00351660000p[XGUI ] >>PANIC<< POWER button turned off. 229 00351660000i[SYS ] Last time is 1203333903 230 00351660000i[XGUI ] Exit. 231 00351660000i[CPU0 ] protected mode 232 00351660000i[CPU0 ] CS.d_b = 32 bit 233 00351660000i[CPU0 ] SS.d_b = 32 bit 234 00351660000i[CPU0 ] EFER = 0x00000000 235 00351660000i[CPU0 ] | RAX=0000000000027bc0 RBX=0000000000000000 236 00351660000i[CPU0 ] | RCX=00000000c00020cc RDX=00000000c0002044 237 00351660000i[CPU0 ] | RSP=000000000002a4a0 RBP=0000000000000034 238 00351660000i[CPU0 ] | RSI=0000000000001197 RDI=0000000000031dc8 239 00351660000i[CPU0 ] | R8=0000000000000000 R9=0000000000000000 240 00351660000i[CPU0 ] | R10=0000000000000000 R11=0000000000000000 241 00351660000i[CPU0 ] | R12=0000000000000000 R13=0000000000000000 242 00351660000i[CPU0 ] | R14=0000000000000000 R15=0000000000000000 243 00351660000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df IF tf sf zf AF PF cf 244 00351660000i[CPU0 ] | SEG selector base limit G D 245 00351660000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D 246 00351660000i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 000fffff 1 1 247 00351660000i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 000fffff 1 1 248 00351660000i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 000fffff 1 1 249 00351660000i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 000fffff 1 1 250 00351660000i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 000fffff 1 1 251 00351660000i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 000fffff 1 1 252 00351660000i[CPU0 ] | MSR_FS_BASE:0000000000000000 253 00351660000i[CPU0 ] | MSR_GS_BASE:0000000000000000 254 00351660000i[CPU0 ] | RIP=0000000000018502 (0000000000018502) 255 00351660000i[CPU0 ] | CR0=0x80000019 CR1=0x0 CR2=0x000000000080c050 256 00351660000i[CPU0 ] | CR3=0x01fb6000 CR4=0x00000000 257 00351660000i[CPU0 ] >> jmp .+0xfffffffc (0x00018500) : EBFC 258 00351660000i[ ] restoring default signal behavior 259 00351660000i[CTRL ] quit_sim called with exit code 1 154 00001160080i[BIOS ] KBD: unsupported int 16h function 03 155 00019662000p[XGUI ] >>PANIC<< POWER button turned off. 156 00019662000i[SYS ] Last time is 1203535006 157 00019662000i[XGUI ] Exit. 158 00019662000i[CPU0 ] protected mode 159 00019662000i[CPU0 ] CS.d_b = 32 bit 160 00019662000i[CPU0 ] SS.d_b = 32 bit 161 00019662000i[CPU0 ] EFER = 0x00000000 162 00019662000i[CPU0 ] | RAX=0000000000027bc0 RBX=0000000000000000 163 00019662000i[CPU0 ] | RCX=00000000c00020cc RDX=00000000c0002044 164 00019662000i[CPU0 ] | RSP=000000000002a4a0 RBP=000000000000003d 165 00019662000i[CPU0 ] | RSI=0000000000001197 RDI=0000000000031dc8 166 00019662000i[CPU0 ] | R8=0000000000000000 R9=0000000000000000 167 00019662000i[CPU0 ] | R10=0000000000000000 R11=0000000000000000 168 00019662000i[CPU0 ] | R12=0000000000000000 R13=0000000000000000 169 00019662000i[CPU0 ] | R14=0000000000000000 R15=0000000000000000 170 00019662000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df IF tf sf zf AF PF cf 171 00019662000i[CPU0 ] | SEG selector base limit G D 172 00019662000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D 173 00019662000i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 000fffff 1 1 174 00019662000i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 000fffff 1 1 175 00019662000i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 000fffff 1 1 176 00019662000i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 000fffff 1 1 177 00019662000i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 000fffff 1 1 178 00019662000i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 000fffff 1 1 179 00019662000i[CPU0 ] | MSR_FS_BASE:0000000000000000 180 00019662000i[CPU0 ] | MSR_GS_BASE:0000000000000000 181 00019662000i[CPU0 ] | RIP=0000000000018562 (0000000000018562) 182 00019662000i[CPU0 ] | CR0=0x80000019 CR1=0x0 CR2=0x000000000080c050 183 00019662000i[CPU0 ] | CR3=0x01f90000 CR4=0x00000000 184 00019662000i[CPU0 ] >> jmp .+0xfffffffc (0x00018560) : EBFC 185 00019662000i[ ] restoring default signal behavior 186 00019662000i[CTRL ] quit_sim called with exit code 1
