通过Module读取寄存器的值

   1: int eax;
   2:  _asm_("nop":"=a"(eax)); 
   3: printk("Get Eax Value:\n"); 
   4: printk("0x%08X\n", eax); 
   5: printk("");
   1: int eax;
   2:  
   3: asm("mov %%cr0, %%eax;":"=a"(eax));
   4: printk("%08s:0x%08X\n", "cr0", eax);
   5:  
   6: asm("mov %%cr1, %%eax;":"=a"(eax));
   7: printk("%08s:0x%08X\n", "cr1", eax);
   8:  
   9: asm("mov %%cr2, %%eax;":"=a"(eax));
  10: printk("%08s:0x%08X\n", "cr2", eax);
  11:  
  12: asm("mov %%cr3, %%eax;":"=a"(eax));
  13: printk("%08s:0x%08X\n", "cr3", eax);
  14:  
  15: printk("\n");

下面是改进后的版本

   1: #include<linux/init.h>
   2: #include<linux/module.h>
   3: #include<linux/list.h>
   4: #include<linux/sched.h>
   5: #include<linux/proc_fs.h>
   6: #include<linux/mm_types.h>
   7: #include<linux/fs.h>
   8: #include<linux/path.h>
   9: #include<linux/dcache.h>
  10: #include<linux/mm.h>
  11: #include<linux/mmzone.h>
  12: #include<linux/vmalloc.h>
  13:  
  14: MODULE_LICENSE("GPL");
  15:  
  16: void printRawData(unsigned long size, const u_char* data)
  17: {
  18:     if (size == 0)
  19:     {
  20:         return;
  21:     }
  22:  
  23:     unsigned long i = 0;
  24:     for (i=0;i<16;i++)
  25:     {
  26:         printk("%4X", i);
  27:     }
  28:     printk("\n");
  29:     for (i=0;i<16;i++)
  30:     {
  31:         printk("%4s", "__");
  32:     }
  33:  
  34:     char lineSummary[17] = {0,};
  35:     unsigned long pos = 0;
  36:     for (i=0;i<size;i++)
  37:     {
  38:         if ((pos = i % 16) == 0)
  39:         {
  40:             if (i != 0)
  41:             {
  42:                 printk(" ---- %s\n", lineSummary);
  43:                 memset(lineSummary, 0, 17);
  44:             }
  45:             else
  46:             {
  47:                 printk("\n");
  48:             }        
  49:         }
  50:  
  51:         printk("  %02X", *(data + i));
  52:  
  53:         if (*(data + i) >= 0x20 && *(data + i) <= 0x7E)
  54:         {
  55:             lineSummary[pos] = *(data + i);
  56:         }
  57:         else
  58:         {
  59:             lineSummary[pos] = ' ';
  60:         }
  61:     }
  62:  
  63:     if (size % 16 != 0)
  64:     {
  65:         for (i=0;i<16 - (size%16);i++)
  66:         {
  67:             printk("    ");
  68:         }
  69:     }
  70:  
  71:     printk(" ---- %s\n", lineSummary);
  72:     printk("\n");    
  73: }
  74:  
  75: #define getNormalReg(reg, val) asm("movl %%"#reg",%0" : "=r" (val));
  76:  
  77: #define dumpNormalReg(reg) {u32 val;getNormalReg(reg, val); printk("%08s:0x%08X\n", ""#reg"", val);}
  78:  
  79: #define dumpLDT() {u32 val; asm("sldt %0" : "=r"(val)); printk("%08s:0x%08X\n", "ldt", val);}
  80: #define dumpTSS() {u32 val; asm("str %0" : "=r"(val));  printk("%08s:0x%08X\n", "tss", val);}
  81:  
  82: #define dumpGDT() {char gdt[6]; \
  83:     asm("sgdt %0" : "=m"(gdt)); \ 
  84:     printRawData(6, gdt); \
  85:     printk("%08s:0x%08X(0x%04X)\n", "gdt", *(u32*)(gdt + 2), *(u16*)(gdt));}
  86:  
  87: #define dumpIDT() {char idt[6]; \
  88:     asm("sidt %0" : "=m"(idt)); \ 
  89:     printRawData(6, idt); \
  90:     printk("%08s:0x%08X(0x%04X)\n", "idt", *(u32*)(idt + 2), *(u16*)(idt));}
  91:  
  92: static int pslist_init()
  93: {
  94:     // analyzeUMANode();
  95:     // analyzeProcesses();
  96:     
  97:     // asm("mov %%cr0, %%eax;":"=a"(eax));
  98:     // printk("%08s:0x%08X\n", "cr0", eax);
  99:  
 100:     printk("###################################################################\n");
 101:     dumpNormalReg(cr0);
 102:     dumpNormalReg(cr2);
 103:     dumpNormalReg(cr3);
 104:  
 105:     dumpNormalReg(eax);
 106:     dumpNormalReg(ebx);
 107:     dumpNormalReg(ecx);
 108:     dumpNormalReg(edx);
 109:  
 110:     dumpNormalReg(esp);
 111:     dumpNormalReg(ebp);
 112:     
 113:     dumpNormalReg(esi);
 114:     dumpNormalReg(edi);
 115:  
 116:     dumpTSS();
 117:     dumpLDT();
 118:  
 119:     dumpGDT();
 120:     dumpIDT();
 121:  
 122:  
 123:     return 0;
 124: }
 125:  
 126: static void pslist_exit()
 127: {
 128:     printk("###################################################################\n");
 129: }
 130:  
 131: module_init(pslist_init);
 132: module_exit(pslist_exit);

下面是输出的结果:

   1: [ 2452.866241] ###################################################################
   2: [ 2452.866244]      cr0:0x8005003B
   3: [ 2452.866245]      cr2:0xB7849000
   4: [ 2452.866246]      cr3:0x288D0000
   5: [ 2452.866247]      eax:0x00000026
   6: [ 2452.866247]      ebx:0x00000000
   7: [ 2452.866248]      ecx:0xFFFFFEEC
   8: [ 2452.866249]      edx:0x00000000
   9: [ 2452.866250]      esp:0xE8929F3C
  10: [ 2452.866250]      ebp:0xE8929F58
  11: [ 2452.866251]      esi:0x000003F2
  12: [ 2452.866252]      edi:0x00540918
  13: [ 2452.866253]      tss:0x00000080
  14: [ 2452.866253]      ldt:0x00000000
  15: [ 2452.866254]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  16: [ 2452.866257]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  17: [ 2452.866261]   FF  00  00  00  80  F5                                         ----       
  18: [ 2452.866264] 
  19: [ 2452.866265]      gdt:0xF5800000(0x00FF)
  20: [ 2452.866266]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  21: [ 2452.866271]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  22: [ 2452.866274]   FF  07  00  B0  75  C1                                         ----     u 
  23: [ 2452.866277] 
  24: [ 2452.866278]      idt:0xC175B000(0x07FF)
  25: [ 2452.866758] ###################################################################

更改其中的宏

   1: #define dumpGDT() {char gdt[6]; \     
   2:     asm("sgdt %0" : "=m"(gdt)); \      
   3:     printRawData(6, gdt); \     
   4:     printk("%08s:0x%08X(0x%04X)\n", "gdt", *(u32*)(gdt + 2), *(u16*)(gdt)); \      
   5:     printRawData(0x60, (u_char*)(*(u32*)(gdt + 2)));}  
   6:  
   7: #define dumpIDT() {char idt[6]; \     
   8:     asm("sidt %0" : "=m"(idt)); \      
   9:     printRawData(6, idt); \     
  10:     printk("%08s:0x%08X(0x%04X)\n", "idt", *(u32*)(idt + 2), *(u16*)(idt)); \      
  11:     printRawData(0x60, (u_char*)(*(u32*)(idt + 2)));}

结果如下:

   1: [ 2362.090908] ###################################################################
   2: [ 2362.090911]      cr0:0x8005003B
   3: [ 2362.090912]      cr2:0xB772E000
   4: [ 2362.090912]      cr3:0x2A3BC000
   5: [ 2362.090913]      eax:0x00000026
   6: [ 2362.090914]      ebx:0x00000000
   7: [ 2362.090915]      ecx:0xFFFFFEEC
   8: [ 2362.090915]      edx:0x00000000
   9: [ 2362.090916]      esp:0xE303BF3C
  10: [ 2362.090917]      ebp:0xE303BF58
  11: [ 2362.090917]      esi:0x000003F2
  12: [ 2362.090918]      edi:0x00741918
  13: [ 2362.090919]      tss:0x00000080
  14: [ 2362.090920]      ldt:0x00000000
  15: [ 2362.090920] Memory at 0xe303bf4e
  16: [ 2362.090921]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  17: [ 2362.090925]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  18: [ 2362.090928]   FF  00  00  00  80  F5                                         ----       
  19: [ 2362.090931] 
  20: [ 2362.090932]      gdt:0xF5800000(0x00FF)
  21: [ 2362.090933] Memory at 0xf5800000
  22: [ 2362.090934]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  23: [ 2362.090937]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  24: [ 2362.090940]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  25: [ 2362.090944]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  26: [ 2362.090948]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  27: [ 2362.090951]   FF  FF  D0  28  6F  F2  DF  B7  00  00  00  00  00  00  00  00 ----    (o           
  28: [ 2362.090955]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  29: [ 2362.090959]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  30: [ 2362.090963] 
  31: [ 2362.090963] Memory at 0xe303bf4e
  32: [ 2362.090964]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  33: [ 2362.090967]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  34: [ 2362.090970]   FF  07  00  B0  75  C1                                         ----     u 
  35: [ 2362.090974] 
  36: [ 2362.090974]      idt:0xC175B000(0x07FF)
  37: [ 2362.090975] Memory at 0xc175b000
  38: [ 2362.090976]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  39: [ 2362.090979]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  40: [ 2362.090982]   3C  CF  60  00  00  8E  52  C1  D4  CF  60  00  00  8E  52  C1 ---- < `   R   `   R 
  41: [ 2362.090986]   2C  D0  60  00  00  8E  52  C1  4C  D1  60  00  00  EE  52  C1 ---- , `   R L `   R 
  42: [ 2362.090990]   EC  CE  60  00  00  EE  52  C1  F8  CE  60  00  00  8E  52  C1 ----   `   R   `   R 
  43: [ 2362.090994]   04  CF  60  00  00  8E  52  C1  D8  CE  60  00  00  8E  52  C1 ----   `   R   `   R 
  44: [ 2362.090998]   00  00  F8  00  00  85  00  00  10  CF  60  00  00  8E  52  C1 ----           `   R 
  45: [ 2362.091002]   1C  CF  60  00  00  8E  52  C1  24  CF  60  00  00  8E  52  C1 ----   `   R $ `   R 
  46: [ 2362.091005] 
  47: [ 2362.097688] ###################################################################

对IDT和GDT指向的内存进一步的解析

   1: #include<linux/init.h>
   2: #include<linux/module.h>
   3: #include<linux/list.h>
   4: #include<linux/sched.h>
   5: #include<linux/proc_fs.h>
   6: #include<linux/mm_types.h>
   7: #include<linux/fs.h>
   8: #include<linux/path.h>
   9: #include<linux/dcache.h>
  10: #include<linux/mm.h>
  11: #include<linux/mmzone.h>
  12: #include<linux/vmalloc.h>
  13:  
  14: MODULE_LICENSE("GPL");
  15: void printRawData(unsigned long size, const u_char* data)
  16: {
  17:     if (size == 0)
  18:     {
  19:         return;
  20:     }
  21:  
  22:     printk("Memory at 0x%08x\n", (u32)data);
  23:     unsigned long i = 0;
  24:     for (i=0;i<16;i++)
  25:     {
  26:         printk("%4X", i);
  27:     }
  28:     printk("\n");
  29:     for (i=0;i<16;i++)
  30:     {
  31:         printk("%4s", "__");
  32:     }
  33:  
  34:     char lineSummary[17] = {0,};
  35:     unsigned long pos = 0;
  36:     for (i=0;i<size;i++)
  37:     {
  38:         if ((pos = i % 16) == 0)
  39:         {
  40:             if (i != 0)
  41:             {
  42:                 printk(" ---- %s\n", lineSummary);
  43:                 memset(lineSummary, 0, 17);
  44:             }
  45:             else
  46:             {
  47:                 printk("\n");
  48:             }        
  49:         }
  50:  
  51:         printk("  %02X", *(data + i));
  52:  
  53:         if (*(data + i) >= 0x20 && *(data + i) <= 0x7E)
  54:         {
  55:             lineSummary[pos] = *(data + i);
  56:         }
  57:         else
  58:         {
  59:             lineSummary[pos] = ' ';
  60:         }
  61:     }
  62:  
  63:     if (size % 16 != 0)
  64:     {
  65:         for (i=0;i<16 - (size%16);i++)
  66:         {
  67:             printk("    ");
  68:         }
  69:     }
  70:  
  71:     printk(" ---- %s\n", lineSummary);
  72:     printk("\n");    
  73: }
  74: void analyzeGDTEntry(char* buffer)
  75: {
  76:     u32 limit;
  77:     u32 base;
  78:     u8 type;
  79:     u8 dpl;
  80:     u8 granularity;
  81:     u8 systemFlag;
  82:     u8 present;
  83:     u8 dbFlag;
  84:  
  85:     granularity = ((*(u8*)(buffer + 6)) & 0x80) >> 7;
  86:     dbFlag = ((*(u8*)(buffer + 6)) & 0x40) >> 6;
  87:  
  88:     present = ((*(u8*)(buffer + 5)) & 0x80) >> 7;
  89:     systemFlag = ((*(u8*)(buffer + 5)) & 0x10) >> 4;
  90:  
  91:     dpl = ((*(u8*)(buffer + 5)) & 0x60) >> 5;
  92:     type = ((*(u8*)(buffer + 5)) & 0x0F);
  93:  
  94:     limit = *(u16*)buffer;
  95:     limit += ((*(u8*)(buffer + 6)) & 0x0F) << 16;
  96:  
  97:     if (granularity == 1)
  98:     {
  99:         limit = ((limit + 1) << 12) - 1;
 100:     }
 101:  
 102:     base = 0;
 103:     base += *(u16*)(buffer + 2);
 104:     base += (*(u8*)(buffer + 4)) << 16;
 105:     base += (*(u8*)(buffer + 7)) << 24;
 106:  
 107:     if (limit == 0)
 108:     {
 109:         printk("[null]\n");
 110:     }
 111:     else
 112:     {
 113:         printk("0x%08x : 0x%08x, ", base, base + limit);
 114:         printk("G[%d] ", granularity);
 115:         printk("D/B[%d] ", dbFlag);
 116:         printk("P[%d] ", present);
 117:         printk("DPL[%d] ", dpl);
 118:         printk("S[%d] ", systemFlag);
 119:         printk("Type[%d] ", type);
 120:         if (systemFlag == 1)
 121:         {
 122:             if ((type & 0x08) != 0 )
 123:             {
 124:                 // Code
 125:                 printk("Code[");
 126:                 if ((type & 0x04) != 0)
 127:                 {
 128:                     printk("Conforming ");
 129:                 }
 130:                 if ((type & 0x02) != 0)
 131:                 {
 132:                     printk("Read-Enable ");
 133:                 }
 134:                 if ((type & 0x01) != 0)
 135:                 {
 136:                     printk("Accessed ");
 137:                 }
 138:                 printk("]");
 139:             }
 140:             else
 141:             {
 142:                 // Data
 143:                 printk("Data[");
 144:                 if ((type & 0x04) != 0)
 145:                 {
 146:                     printk("Expand-Down ");
 147:                 }
 148:                 if ((type & 0x02) != 0)
 149:                 {
 150:                     printk("Write-Enable ");
 151:                 }
 152:                 if ((type & 0x01) != 0)
 153:                 {
 154:                     printk("Accessed ");
 155:                 }
 156:                 printk("]");
 157:             }
 158:         }
 159:         else
 160:         {
 161:             if (type == 0x02)
 162:             {
 163:                 printk("[LDT]");
 164:             }
 165:             else if (type == 0x05)
 166:             {
 167:                 printk("[Task Gate]");
 168:             }
 169:             else if (type == 0x09)
 170:             {
 171:                 printk("[32-Bit TSS(Available)]");
 172:             }
 173:             else if (type == 0x0B)
 174:             {
 175:                 printk("[32-Bit TSS(Busy)]");
 176:             }            
 177:             else if (type == 0x0C)
 178:             {
 179:                 printk("[32-Bit Call Gate]");
 180:             }
 181:             else if (type == 0x0E)
 182:             {
 183:                 printk("[32-Bit Interrupt Gate]");
 184:             }
 185:             else if (type == 0x0F)
 186:             {
 187:                 printk("[32-Bit Trap Gate]");
 188:             }
 189:         }
 190:         
 191:         printk("\n");
 192:     }
 193:  
 194:  
 195: }
 196:  
 197: void analyzeGDT(u32 size, char* buffer)
 198: {
 199:     int i;
 200:     for (i = 0; i < size; i += 8)
 201:     {
 202:         printk("[%4X] ", i/8);        
 203:         analyzeGDTEntry(buffer + i);
 204:     }
 205: }
 206:  
 207: void analyzeIDTEntry(char* buffer)
 208: {
 209:     u32 offset;
 210:     u32 selector;
 211:     u8 type;
 212:     u8 dpl;
 213:     u8 present;
 214:  
 215:     present = ((*(u8*)(buffer + 5)) & 0x80) >> 7;
 216:     dpl = ((*(u8*)(buffer + 5)) & 0x60) >> 5;
 217:     type = ((*(u8*)(buffer + 5)) & 0x1F);
 218:  
 219:     offset = *(u16*)buffer;
 220:     offset += (*(u16*)(buffer + 6)) << 16;
 221:  
 222:     selector = *(u16*)(buffer + 2);
 223:  
 224:     if (type == 0x0E)
 225:     {
 226:         // Interrupt Gate
 227:         printk("0x%08x : 0x%08x, ", selector, offset);
 228:         printk("P[%d] ", present);
 229:         printk("DPL[%d] ", dpl);
 230:         printk("Type[Interrupt Gate] ");
 231:         printk("selector[index=%04X, TI=%d, RPL=%d]", selector >> 3, selector&0x0004, selector&0x0003);
 232:         printk("\n");
 233:     }
 234:     else if (type == 0x0F)
 235:     {
 236:         // Trap Gate
 237:         printk("0x%08x : 0x%08x, ", selector, offset);
 238:         printk("P[%d] ", present);
 239:         printk("DPL[%d] ", dpl);
 240:         printk("Type[Trap Gate] ");
 241:         printk("selector[index=%04X, TI=%d, RPL=%d]", selector >> 3, selector&0x0004, selector&0x0003);
 242:         printk("\n");
 243:     }
 244:     else if (type == 0x05)
 245:     {
 246:         // Task Gate
 247:         printk("0x%08x : 0x%08x, ", selector, offset);
 248:         printk("P[%d] ", present);
 249:         printk("DPL[%d] ", dpl);
 250:         printk("Type[Task Gate] ");
 251:         printk("selector[index=%04X, TI=%d, RPL=%d]", selector >> 3, selector&0x0004, selector&0x0003);
 252:         printk("\n");
 253:     }
 254:     else
 255:     {
 256:         printk("[null]\n");
 257:     }
 258: }
 259:  
 260: void analyzeIDT(u32 size, char* buffer)
 261: {
 262:     int i;
 263:     for (i = 0; i < size; i += 8)
 264:     {
 265:         printk("[%4X] ", i/8);    
 266:         analyzeIDTEntry(buffer + i);
 267:     }
 268: }
 269:  
 270: #define getNormalReg(reg, val) asm("movl %%"#reg",%0" : "=r" (val));
 271:  
 272: #define dumpNormalReg(reg) {u32 val;getNormalReg(reg, val); printk("%08s:0x%08X\n", ""#reg"", val);}
 273:  
 274: #define dumpLDT() {u32 val; asm("sldt %0" : "=r"(val)); printk("%08s:0x%08X\n", "ldt", val);}
 275: #define dumpTSS() {u32 val; asm("str %0" : "=r"(val));  printk("%08s:0x%08X\n", "tss", val);}
 276:  
 277: #define dumpGDT() {char gdt[6]; \
 278:     asm("sgdt %0" : "=m"(gdt)); \ 
 279:     printRawData(6, gdt); \
 280:     printk("%08s:0x%08X(0x%04X)\n", "gdt", *(u32*)(gdt + 2), *(u16*)(gdt)); \ 
 281:     printRawData((*(u16*)(gdt) + 1), (u_char*)(*(u32*)(gdt + 2))); \ 
 282:     analyzeGDT((*(u16*)(gdt) + 1), (u_char*)(*(u32*)(gdt + 2)));}
 283:  
 284: #define dumpIDT() {char idt[6]; \
 285:     asm("sidt %0" : "=m"(idt)); \ 
 286:     printRawData(6, idt); \
 287:     printk("%08s:0x%08X(0x%04X)\n", "idt", *(u32*)(idt + 2), *(u16*)(idt)); \ 
 288:     printRawData((*(u16*)(idt) + 1), (u_char*)(*(u32*)(idt + 2))); \ 
 289:     analyzeIDT((*(u16*)(idt) + 1), (u_char*)(*(u32*)(idt + 2)));}
 290:  
 291: static int pslist_init()
 292: {
 293:     // analyzeUMANode();
 294:     // analyzeProcesses();
 295:     
 296:     // asm("mov %%cr0, %%eax;":"=a"(eax));
 297:     // printk("%08s:0x%08X\n", "cr0", eax);
 298:  
 299:     printk("###################################################################\n");
 300:     dumpNormalReg(cr0);
 301:     dumpNormalReg(cr2);
 302:     dumpNormalReg(cr3);
 303:  
 304:     dumpNormalReg(eax);
 305:     dumpNormalReg(ebx);
 306:     dumpNormalReg(ecx);
 307:     dumpNormalReg(edx);
 308:  
 309:     dumpNormalReg(esp);
 310:     dumpNormalReg(ebp);
 311:     
 312:     dumpNormalReg(esi);
 313:     dumpNormalReg(edi);
 314:  
 315:     dumpTSS();
 316:     dumpLDT();
 317:  
 318:     dumpGDT();
 319:     dumpIDT();
 320:  
 321:     return 0;
 322: }
 323:  
 324: static void pslist_exit()
 325: {
 326:     printk("###################################################################\n");
 327: }
 328:  
 329:  
 330:  
 331: module_init(pslist_init);
 332: module_exit(pslist_exit);

 

得到结果如下

   1: [10463.061988] ###################################################################
   2: [10463.061991]      cr0:0x8005003B
   3: [10463.061992]      cr2:0xB772E000
   4: [10463.061993]      cr3:0x2B80F000
   5: [10463.061994]      eax:0x00000026
   6: [10463.061995]      ebx:0x00000000
   7: [10463.061995]      ecx:0xFFFFFEEC
   8: [10463.061996]      edx:0x00000000
   9: [10463.061997]      esp:0xEC7DDF3C
  10: [10463.061998]      ebp:0xEC7DDF58
  11: [10463.061998]      esi:0x00000468
  12: [10463.061999]      edi:0x004F3918
  13: [10463.062000]      tss:0x00000080
  14: [10463.062000]      ldt:0x00000000
  15: [10463.062001] Memory at 0xec7ddf4e
  16: [10463.062002]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  17: [10463.062005]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  18: [10463.062009]   FF  00  00  00  80  F5                                         ----       
  19: [10463.062012] 
  20: [10463.062013]      gdt:0xF5800000(0x00FF)
  21: [10463.062014] Memory at 0xf5800000
  22: [10463.062015]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  23: [10463.062018]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  24: [10463.062021]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  25: [10463.062025]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  26: [10463.062029]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  27: [10463.062032]   FF  FF  D0  88  82  F2  DF  B7  00  00  00  00  00  00  00  00 ----                 
  28: [10463.062036]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  29: [10463.062040]   00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 ----                 
  30: [10463.062043]   FF  FF  00  00  00  9B  CF  00  FF  FF  00  00  00  93  CF  00 ----                 
  31: [10463.062047]   49  80  00  00  00  FB  C0  00  FF  FF  00  00  00  F3  CF  00 ---- I               
  32: [10463.062051]   6B  20  80  3B  80  8B  00  F5  00  00  00  00  00  00  00  00 ---- k  ;            
  33: [10463.062055]   FF  FF  00  00  00  9A  40  00  FF  FF  00  00  00  9A  00  00 ----       @         
  34: [10463.062058]   FF  FF  00  00  00  92  00  00  00  00  00  00  00  92  00  00 ----                 
  35: [10463.062062]   00  00  00  00  00  92  00  00  FF  FF  00  00  00  9A  40  00 ----               @ 
  36: [10463.062066]   FF  FF  00  00  00  9A  00  00  FF  FF  00  00  00  92  40  00 ----               @ 
  37: [10463.062070]   FF  FF  00  00  00  92  CF  00  FF  FF  00  D0  F9  93  8F  33 ----                3
  38: [10463.062073]   18  00  40  5D  80  91  40  F5  00  00  00  00  00  00  00  00 ----   @]  @         
  39: [10463.062077]   00  00  00  00  00  00  00  00  6B  20  00  B8  75  89  00  C1 ----         k   u   
  40: [10463.062081] 
  41: [10463.062081] [   0] [null]
  42: [10463.062082] [   1] [null]
  43: [10463.062083] [   2] [null]
  44: [10463.062084] [   3] [null]
  45: [10463.062084] [   4] [null]
  46: [10463.062085] [   5] [null]
  47: [10463.062086] [   6] 0xb78288d0 : 0xb78288cf, G[1] D/B[1] P[1] DPL[3] S[1] Type[2] Data[Write-Enable ]
  48: [10463.062090] [   7] [null]
  49: [10463.062091] [   8] [null]
  50: [10463.062091] [   9] [null]
  51: [10463.062092] [   A] [null]
  52: [10463.062093] [   B] [null]
  53: [10463.062093] [   C] 0x00000000 : 0xffffffff, G[1] D/B[1] P[1] DPL[0] S[1] Type[11] Code[Read-Enable Accessed ]
  54: [10463.062097] [   D] 0x00000000 : 0xffffffff, G[1] D/B[1] P[1] DPL[0] S[1] Type[3] Data[Write-Enable Accessed ]
  55: [10463.062100] [   E] 0x00000000 : 0x08049fff, G[1] D/B[1] P[1] DPL[3] S[1] Type[11] Code[Read-Enable Accessed ]
  56: [10463.062104] [   F] 0x00000000 : 0xffffffff, G[1] D/B[1] P[1] DPL[3] S[1] Type[3] Data[Write-Enable Accessed ]
  57: [10463.062107] [  10] 0xf5803b80 : 0xf5805beb, G[0] D/B[0] P[1] DPL[0] S[0] Type[11] [32-Bit TSS(Busy)]
  58: [10463.062110] [  11] [null]
  59: [10463.062111] [  12] 0x00000000 : 0x0000ffff, G[0] D/B[1] P[1] DPL[0] S[1] Type[10] Code[Read-Enable ]
  60: [10463.062114] [  13] 0x00000000 : 0x0000ffff, G[0] D/B[0] P[1] DPL[0] S[1] Type[10] Code[Read-Enable ]
  61: [10463.062117] [  14] 0x00000000 : 0x0000ffff, G[0] D/B[0] P[1] DPL[0] S[1] Type[2] Data[Write-Enable ]
  62: [10463.062121] [  15] [null]
  63: [10463.062121] [  16] [null]
  64: [10463.062122] [  17] 0x00000000 : 0x0000ffff, G[0] D/B[1] P[1] DPL[0] S[1] Type[10] Code[Read-Enable ]
  65: [10463.062125] [  18] 0x00000000 : 0x0000ffff, G[0] D/B[0] P[1] DPL[0] S[1] Type[10] Code[Read-Enable ]
  66: [10463.062128] [  19] 0x00000000 : 0x0000ffff, G[0] D/B[1] P[1] DPL[0] S[1] Type[2] Data[Write-Enable ]
  67: [10463.062131] [  1A] 0x00000000 : 0xffffffff, G[1] D/B[1] P[1] DPL[0] S[1] Type[2] Data[Write-Enable ]
  68: [10463.062134] [  1B] 0x33f9d000 : 0x33f9cfff, G[1] D/B[0] P[1] DPL[0] S[1] Type[3] Data[Write-Enable Accessed ]
  69: [10463.062138] [  1C] 0xf5805d40 : 0xf5805d58, G[0] D/B[1] P[1] DPL[0] S[1] Type[1] Data[Accessed ]
  70: [10463.062141] [  1D] [null]
  71: [10463.062142] [  1E] [null]
  72: [10463.062142] [  1F] 0xc175b800 : 0xc175d86b, G[0] D/B[0] P[1] DPL[0] S[0] Type[9] [32-Bit TSS(Available)]
  73: [10463.062145] Memory at 0xec7ddf4e
  74: [10463.062146]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  75: [10463.062149]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  76: [10463.062152]   FF  07  00  B0  75  C1                                         ----     u 
  77: [10463.062156] 
  78: [10463.062156]      idt:0xC175B000(0x07FF)
  79: [10463.062157] Memory at 0xc175b000
  80: [10463.062158]    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  81: [10463.062161]   __  __  __  __  __  __  __  __  __  __  __  __  __  __  __  __
  82: [10463.062164]   3C  CF  60  00  00  8E  52  C1  D4  CF  60  00  00  8E  52  C1 ---- < `   R   `   R 
  83: [10463.062168]   2C  D0  60  00  00  8E  52  C1  4C  D1  60  00  00  EE  52  C1 ---- , `   R L `   R 
  84: [10463.062172]   EC  CE  60  00  00  EE  52  C1  F8  CE  60  00  00  8E  52  C1 ----   `   R   `   R 
  85: [10463.062175]   04  CF  60  00  00  8E  52  C1  D8  CE  60  00  00  8E  52  C1 ----   `   R   `   R 
  86: [10463.062179]   00  00  F8  00  00  85  00  00  10  CF  60  00  00  8E  52  C1 ----           `   R 
  87: [10463.062183]   1C  CF  60  00  00  8E  52  C1  24  CF  60  00  00  8E  52  C1 ----   `   R $ `   R 
  88: [10463.062187]   2C  CF  60  00  00  8E  52  C1  84  D1  60  00  00  8E  52  C1 ---- , `   R   `   R 
  89: [10463.062190]   60  CF  60  00  00  8E  52  C1  54  CF  60  00  00  8E  52  C1 ---- ` `   R T `   R 
  90: [10463.062194]   C0  CE  60  00  00  8E  52  C1  34  CF  60  00  00  8E  52  C1 ----   `   R 4 `   R 
  91: [10463.062198]   48  CF  60  00  00  8E  52  C1  CC  CE  60  00  00  8E  52  C1 ---- H `   R   `   R 
  92: [10463.062202]   D8  D0  60  00  00  8E  50  C1  D8  D0  60  00  00  8E  50  C1 ----   `   P   `   P 
  93: [10463.062205]   D8  D0  60  00  00  8E  50  C1  D8  D0  60  00  00  8E  50  C1 ----   `   P   `   P 
  94: [10463.062209]   D8  D0  60  00  00  8E  50  C1  D8  D0  60  00  00  8E  50  C1 ----   `   P   `   P 
  95: [10463.062213]   D8  D0  60  00  00  8E  50  C1  D8  D0  60  00  00  8E  50  C1 ----   `   P   `   P 
  96: [10463.062217]   D8  D0  60  00  00  8E  50  C1  D8  D0  60  00  00  8E  50  C1 ----   `   P   `   P 
  97: [10463.062221]   D8  D0  60  00  00  8E  50  C1  D8  D0  60  00  00  8E  50  C1 ----   `   P   `   P 
  98: [10463.062224]   D4  CA  60  00  00  8E  52  C1  44  37  60  00  00  8E  53  C1 ----   `   R D7`   S 
  99: [10463.062228]   48  37  60  00  00  8E  53  C1  4C  37  60  00  00  8E  53  C1 ---- H7`   S L7`   S 
 100: [10463.062232]   50  37  60  00  00  8E  53  C1  54  37  60  00  00  8E  53  C1 ---- P7`   S T7`   S 
 101: [10463.062236]   58  37  60  00  00  8E  53  C1  60  37  60  00  00  8E  53  C1 ---- X7`   S `7`   S 
 102: [10463.062239]   64  37  60  00  00  8E  53  C1  68  37  60  00  00  8E  53  C1 ---- d7`   S h7`   S 
 103: [10463.062243]   6C  37  60  00  00  8E  53  C1  70  37  60  00  00  8E  53  C1 ---- l7`   S p7`   S 
 104: [10463.062247]   74  37  60  00  00  8E  53  C1  78  37  60  00  00  8E  53  C1 ---- t7`   S x7`   S 
 105: [10463.062251]   80  37  60  00  00  8E  53  C1  84  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 106: [10463.062254]   88  37  60  00  00  8E  53  C1  8C  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 107: [10463.062260]   90  37  60  00  00  8E  53  C1  94  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 108: [10463.062264]   98  37  60  00  00  8E  53  C1  A0  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 109: [10463.062268]   A4  37  60  00  00  8E  53  C1  A8  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 110: [10463.062272]   AC  37  60  00  00  8E  53  C1  B0  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 111: [10463.062275]   B4  37  60  00  00  8E  53  C1  B8  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 112: [10463.062279]   C0  37  60  00  00  8E  53  C1  C4  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 113: [10463.062283]   C8  37  60  00  00  8E  53  C1  CC  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 114: [10463.062287]   D0  37  60  00  00  8E  53  C1  D4  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 115: [10463.062291]   D8  37  60  00  00  8E  53  C1  E0  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 116: [10463.062294]   E4  37  60  00  00  8E  53  C1  E8  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 117: [10463.062298]   EC  37  60  00  00  8E  53  C1  F0  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 118: [10463.062302]   F4  37  60  00  00  8E  53  C1  F8  37  60  00  00  8E  53  C1 ----  7`   S  7`   S 
 119: [10463.062306]   00  38  60  00  00  8E  53  C1  04  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 120: [10463.062309]   08  38  60  00  00  8E  53  C1  0C  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 121: [10463.062313]   10  38  60  00  00  8E  53  C1  14  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 122: [10463.062317]   18  38  60  00  00  8E  53  C1  20  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 123: [10463.062321]   24  38  60  00  00  8E  53  C1  28  38  60  00  00  8E  53  C1 ---- $8`   S (8`   S 
 124: [10463.062324]   2C  38  60  00  00  8E  53  C1  30  38  60  00  00  8E  53  C1 ---- ,8`   S 08`   S 
 125: [10463.062328]   34  38  60  00  00  8E  53  C1  38  38  60  00  00  8E  53  C1 ---- 48`   S 88`   S 
 126: [10463.062332]   40  38  60  00  00  8E  53  C1  44  38  60  00  00  8E  53  C1 ---- @8`   S D8`   S 
 127: [10463.062336]   48  38  60  00  00  8E  53  C1  4C  38  60  00  00  8E  53  C1 ---- H8`   S L8`   S 
 128: [10463.062339]   50  38  60  00  00  8E  53  C1  54  38  60  00  00  8E  53  C1 ---- P8`   S T8`   S 
 129: [10463.062343]   58  38  60  00  00  8E  53  C1  60  38  60  00  00  8E  53  C1 ---- X8`   S `8`   S 
 130: [10463.062347]   64  38  60  00  00  8E  53  C1  68  38  60  00  00  8E  53  C1 ---- d8`   S h8`   S 
 131: [10463.062351]   6C  38  60  00  00  8E  53  C1  70  38  60  00  00  8E  53  C1 ---- l8`   S p8`   S 
 132: [10463.062354]   74  38  60  00  00  8E  53  C1  78  38  60  00  00  8E  53  C1 ---- t8`   S x8`   S 
 133: [10463.062358]   80  38  60  00  00  8E  53  C1  84  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 134: [10463.062362]   88  38  60  00  00  8E  53  C1  8C  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 135: [10463.062366]   90  38  60  00  00  8E  53  C1  94  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 136: [10463.062370]   98  38  60  00  00  8E  53  C1  A0  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 137: [10463.062373]   A4  38  60  00  00  8E  53  C1  A8  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 138: [10463.062377]   AC  38  60  00  00  8E  53  C1  B0  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 139: [10463.062381]   B4  38  60  00  00  8E  53  C1  B8  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 140: [10463.062385]   C0  38  60  00  00  8E  53  C1  C4  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 141: [10463.062388]   C8  38  60  00  00  8E  53  C1  CC  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 142: [10463.062392]   D0  38  60  00  00  8E  53  C1  D4  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 143: [10463.062396]   D8  38  60  00  00  8E  53  C1  E0  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 144: [10463.062400]   E4  38  60  00  00  8E  53  C1  E8  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 145: [10463.062403]   EC  38  60  00  00  8E  53  C1  F0  38  60  00  00  8E  53  C1 ----  8`   S  8`   S 
 146: [10463.062407]   98  C8  60  00  00  EF  52  C1  F8  38  60  00  00  8E  53  C1 ----   `   R  8`   S 
 147: [10463.062411]   00  39  60  00  00  8E  53  C1  04  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 148: [10463.062415]   08  39  60  00  00  8E  53  C1  0C  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 149: [10463.062419]   10  39  60  00  00  8E  53  C1  14  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 150: [10463.062422]   18  39  60  00  00  8E  53  C1  20  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 151: [10463.062426]   24  39  60  00  00  8E  53  C1  28  39  60  00  00  8E  53  C1 ---- $9`   S (9`   S 
 152: [10463.062430]   2C  39  60  00  00  8E  53  C1  30  39  60  00  00  8E  53  C1 ---- ,9`   S 09`   S 
 153: [10463.062434]   34  39  60  00  00  8E  53  C1  38  39  60  00  00  8E  53  C1 ---- 49`   S 89`   S 
 154: [10463.062437]   40  39  60  00  00  8E  53  C1  44  39  60  00  00  8E  53  C1 ---- @9`   S D9`   S 
 155: [10463.062441]   48  39  60  00  00  8E  53  C1  4C  39  60  00  00  8E  53  C1 ---- H9`   S L9`   S 
 156: [10463.062445]   50  39  60  00  00  8E  53  C1  54  39  60  00  00  8E  53  C1 ---- P9`   S T9`   S 
 157: [10463.062449]   58  39  60  00  00  8E  53  C1  60  39  60  00  00  8E  53  C1 ---- X9`   S `9`   S 
 158: [10463.062452]   64  39  60  00  00  8E  53  C1  68  39  60  00  00  8E  53  C1 ---- d9`   S h9`   S 
 159: [10463.062456]   6C  39  60  00  00  8E  53  C1  70  39  60  00  00  8E  53  C1 ---- l9`   S p9`   S 
 160: [10463.062460]   74  39  60  00  00  8E  53  C1  78  39  60  00  00  8E  53  C1 ---- t9`   S x9`   S 
 161: [10463.062464]   80  39  60  00  00  8E  53  C1  84  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 162: [10463.062467]   88  39  60  00  00  8E  53  C1  8C  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 163: [10463.062471]   90  39  60  00  00  8E  53  C1  94  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 164: [10463.062475]   98  39  60  00  00  8E  53  C1  A0  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 165: [10463.062479]   A4  39  60  00  00  8E  53  C1  A8  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 166: [10463.062482]   AC  39  60  00  00  8E  53  C1  B0  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 167: [10463.062486]   B4  39  60  00  00  8E  53  C1  B8  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 168: [10463.062490]   C0  39  60  00  00  8E  53  C1  C4  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 169: [10463.062494]   C8  39  60  00  00  8E  53  C1  CC  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 170: [10463.062497]   D0  39  60  00  00  8E  53  C1  D4  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 171: [10463.062501]   D8  39  60  00  00  8E  53  C1  E0  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 172: [10463.062505]   E4  39  60  00  00  8E  53  C1  E8  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 173: [10463.062509]   EC  39  60  00  00  8E  53  C1  F0  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 174: [10463.062513]   F4  39  60  00  00  8E  53  C1  F8  39  60  00  00  8E  53  C1 ----  9`   S  9`   S 
 175: [10463.062516]   00  3A  60  00  00  8E  53  C1  04  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 176: [10463.062520]   08  3A  60  00  00  8E  53  C1  0C  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 177: [10463.062524]   10  3A  60  00  00  8E  53  C1  14  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 178: [10463.062528]   18  3A  60  00  00  8E  53  C1  20  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 179: [10463.062531]   24  3A  60  00  00  8E  53  C1  28  3A  60  00  00  8E  53  C1 ---- $:`   S (:`   S 
 180: [10463.062535]   2C  3A  60  00  00  8E  53  C1  30  3A  60  00  00  8E  53  C1 ---- ,:`   S 0:`   S 
 181: [10463.062539]   34  3A  60  00  00  8E  53  C1  38  3A  60  00  00  8E  53  C1 ---- 4:`   S 8:`   S 
 182: [10463.062543]   40  3A  60  00  00  8E  53  C1  44  3A  60  00  00  8E  53  C1 ---- @:`   S D:`   S 
 183: [10463.062546]   48  3A  60  00  00  8E  53  C1  4C  3A  60  00  00  8E  53  C1 ---- H:`   S L:`   S 
 184: [10463.062550]   50  3A  60  00  00  8E  53  C1  54  3A  60  00  00  8E  53  C1 ---- P:`   S T:`   S 
 185: [10463.062554]   58  3A  60  00  00  8E  53  C1  60  3A  60  00  00  8E  53  C1 ---- X:`   S `:`   S 
 186: [10463.062558]   64  3A  60  00  00  8E  53  C1  68  3A  60  00  00  8E  53  C1 ---- d:`   S h:`   S 
 187: [10463.062562]   6C  3A  60  00  00  8E  53  C1  70  3A  60  00  00  8E  53  C1 ---- l:`   S p:`   S 
 188: [10463.062565]   74  3A  60  00  00  8E  53  C1  78  3A  60  00  00  8E  53  C1 ---- t:`   S x:`   S 
 189: [10463.062569]   80  3A  60  00  00  8E  53  C1  84  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 190: [10463.062573]   88  3A  60  00  00  8E  53  C1  8C  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 191: [10463.062577]   90  3A  60  00  00  8E  53  C1  94  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 192: [10463.062580]   98  3A  60  00  00  8E  53  C1  A0  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 193: [10463.062584]   A4  3A  60  00  00  8E  53  C1  A8  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 194: [10463.062588]   AC  3A  60  00  00  8E  53  C1  B0  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 195: [10463.062592]   B4  3A  60  00  00  8E  53  C1  B8  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 196: [10463.062595]   C0  3A  60  00  00  8E  53  C1  C4  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 197: [10463.062599]   C8  3A  60  00  00  8E  53  C1  40  CB  60  00  00  8E  52  C1 ----  :`   S @ `   R 
 198: [10463.062603]   78  CB  60  00  00  8E  52  C1  B0  CB  60  00  00  8E  52  C1 ---- x `   R   `   R 
 199: [10463.062607]   E8  CB  60  00  00  8E  52  C1  20  CC  60  00  00  8E  52  C1 ----   `   R   `   R 
 200: [10463.062610]   58  CC  60  00  00  8E  52  C1  90  CC  60  00  00  8E  52  C1 ---- X `   R   `   R 
 201: [10463.062614]   C8  CC  60  00  00  8E  52  C1  38  CD  60  00  00  8E  52  C1 ----   `   R 8 `   R 
 202: [10463.062618]   F4  3A  60  00  00  8E  53  C1  F8  3A  60  00  00  8E  53  C1 ----  :`   S  :`   S 
 203: [10463.062622]   00  3B  60  00  00  8E  53  C1  04  3B  60  00  00  8E  53  C1 ----  ;`   S  ;`   S 
 204: [10463.062625]   88  CE  60  00  00  8E  52  C1  0C  3B  60  00  00  8E  53  C1 ----   `   R  ;`   S 
 205: [10463.062629]   E0  CD  60  00  00  8E  52  C1  00  CD  60  00  00  8E  52  C1 ----   `   R   `   R 
 206: [10463.062633]   08  CB  60  00  00  8E  52  C1  50  CE  60  00  00  8E  52  C1 ----   `   R P `   R 
 207: [10463.062637]   18  CE  60  00  00  8E  52  C1  9C  CA  60  00  00  8E  52  C1 ----   `   R   `   R 
 208: [10463.062641]   64  CA  60  00  00  8E  52  C1  2C  CA  60  00  00  8E  52  C1 ---- d `   R , `   R 
 209: [10463.062644]   70  CD  60  00  00  8E  52  C1  A8  CD  60  00  00  8E  52  C1 ---- p `   R   `   R 
 210: [10463.062648] 
 211: [10463.062649] [   0] 0x00000060 : 0xc152cf3c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 212: [10463.062651] [   1] 0x00000060 : 0xc152cfd4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 213: [10463.062654] [   2] 0x00000060 : 0xc152d02c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 214: [10463.062656] [   3] 0x00000060 : 0xc152d14c, P[1] DPL[3] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 215: [10463.062659] [   4] 0x00000060 : 0xc152ceec, P[1] DPL[3] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 216: [10463.062661] [   5] 0x00000060 : 0xc152cef8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 217: [10463.062664] [   6] 0x00000060 : 0xc152cf04, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 218: [10463.062666] [   7] 0x00000060 : 0xc152ced8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 219: [10463.062668] [   8] 0x000000f8 : 0x00000000, P[1] DPL[0] Type[Task Gate] selector[index=001F, TI=0, RPL=0]
 220: [10463.062671] [   9] 0x00000060 : 0xc152cf10, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 221: [10463.062673] [   A] 0x00000060 : 0xc152cf1c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 222: [10463.062676] [   B] 0x00000060 : 0xc152cf24, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 223: [10463.062678] [   C] 0x00000060 : 0xc152cf2c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 224: [10463.062681] [   D] 0x00000060 : 0xc152d184, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 225: [10463.062683] [   E] 0x00000060 : 0xc152cf60, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 226: [10463.062685] [   F] 0x00000060 : 0xc152cf54, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 227: [10463.062688] [  10] 0x00000060 : 0xc152cec0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 228: [10463.062690] [  11] 0x00000060 : 0xc152cf34, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 229: [10463.062693] [  12] 0x00000060 : 0xc152cf48, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 230: [10463.062695] [  13] 0x00000060 : 0xc152cecc, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 231: [10463.062697] [  14] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 232: [10463.062700] [  15] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 233: [10463.062702] [  16] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 234: [10463.062705] [  17] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 235: [10463.062707] [  18] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 236: [10463.062709] [  19] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 237: [10463.062712] [  1A] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 238: [10463.062714] [  1B] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 239: [10463.062717] [  1C] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 240: [10463.062719] [  1D] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 241: [10463.062721] [  1E] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 242: [10463.062724] [  1F] 0x00000060 : 0xc150d0d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 243: [10463.062726] [  20] 0x00000060 : 0xc152cad4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 244: [10463.062729] [  21] 0x00000060 : 0xc1533744, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 245: [10463.062731] [  22] 0x00000060 : 0xc1533748, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 246: [10463.062733] [  23] 0x00000060 : 0xc153374c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 247: [10463.062736] [  24] 0x00000060 : 0xc1533750, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 248: [10463.062738] [  25] 0x00000060 : 0xc1533754, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 249: [10463.062741] [  26] 0x00000060 : 0xc1533758, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 250: [10463.062743] [  27] 0x00000060 : 0xc1533760, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 251: [10463.062745] [  28] 0x00000060 : 0xc1533764, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 252: [10463.062748] [  29] 0x00000060 : 0xc1533768, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 253: [10463.062750] [  2A] 0x00000060 : 0xc153376c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 254: [10463.062753] [  2B] 0x00000060 : 0xc1533770, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 255: [10463.062755] [  2C] 0x00000060 : 0xc1533774, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 256: [10463.062757] [  2D] 0x00000060 : 0xc1533778, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 257: [10463.062760] [  2E] 0x00000060 : 0xc1533780, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 258: [10463.062764] [  2F] 0x00000060 : 0xc1533784, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 259: [10463.062766] [  30] 0x00000060 : 0xc1533788, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 260: [10463.062769] [  31] 0x00000060 : 0xc153378c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 261: [10463.062771] [  32] 0x00000060 : 0xc1533790, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 262: [10463.062773] [  33] 0x00000060 : 0xc1533794, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 263: [10463.062776] [  34] 0x00000060 : 0xc1533798, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 264: [10463.062778] [  35] 0x00000060 : 0xc15337a0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 265: [10463.062781] [  36] 0x00000060 : 0xc15337a4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 266: [10463.062783] [  37] 0x00000060 : 0xc15337a8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 267: [10463.062785] [  38] 0x00000060 : 0xc15337ac, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 268: [10463.062788] [  39] 0x00000060 : 0xc15337b0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 269: [10463.062790] [  3A] 0x00000060 : 0xc15337b4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 270: [10463.062793] [  3B] 0x00000060 : 0xc15337b8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 271: [10463.062795] [  3C] 0x00000060 : 0xc15337c0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 272: [10463.062797] [  3D] 0x00000060 : 0xc15337c4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 273: [10463.062800] [  3E] 0x00000060 : 0xc15337c8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 274: [10463.062802] [  3F] 0x00000060 : 0xc15337cc, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 275: [10463.062805] [  40] 0x00000060 : 0xc15337d0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 276: [10463.062807] [  41] 0x00000060 : 0xc15337d4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 277: [10463.062809] [  42] 0x00000060 : 0xc15337d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 278: [10463.062812] [  43] 0x00000060 : 0xc15337e0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 279: [10463.062814] [  44] 0x00000060 : 0xc15337e4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 280: [10463.062817] [  45] 0x00000060 : 0xc15337e8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 281: [10463.062819] [  46] 0x00000060 : 0xc15337ec, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 282: [10463.062821] [  47] 0x00000060 : 0xc15337f0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 283: [10463.062824] [  48] 0x00000060 : 0xc15337f4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 284: [10463.062826] [  49] 0x00000060 : 0xc15337f8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 285: [10463.062829] [  4A] 0x00000060 : 0xc1533800, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 286: [10463.062831] [  4B] 0x00000060 : 0xc1533804, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 287: [10463.062833] [  4C] 0x00000060 : 0xc1533808, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 288: [10463.062836] [  4D] 0x00000060 : 0xc153380c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 289: [10463.062838] [  4E] 0x00000060 : 0xc1533810, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 290: [10463.062841] [  4F] 0x00000060 : 0xc1533814, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 291: [10463.062843] [  50] 0x00000060 : 0xc1533818, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 292: [10463.062845] [  51] 0x00000060 : 0xc1533820, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 293: [10463.062848] [  52] 0x00000060 : 0xc1533824, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 294: [10463.062850] [  53] 0x00000060 : 0xc1533828, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 295: [10463.062853] [  54] 0x00000060 : 0xc153382c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 296: [10463.062855] [  55] 0x00000060 : 0xc1533830, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 297: [10463.062858] [  56] 0x00000060 : 0xc1533834, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 298: [10463.062860] [  57] 0x00000060 : 0xc1533838, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 299: [10463.062862] [  58] 0x00000060 : 0xc1533840, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 300: [10463.062865] [  59] 0x00000060 : 0xc1533844, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 301: [10463.062867] [  5A] 0x00000060 : 0xc1533848, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 302: [10463.062870] [  5B] 0x00000060 : 0xc153384c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 303: [10463.062872] [  5C] 0x00000060 : 0xc1533850, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 304: [10463.062874] [  5D] 0x00000060 : 0xc1533854, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 305: [10463.062877] [  5E] 0x00000060 : 0xc1533858, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 306: [10463.062879] [  5F] 0x00000060 : 0xc1533860, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 307: [10463.062882] [  60] 0x00000060 : 0xc1533864, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 308: [10463.062884] [  61] 0x00000060 : 0xc1533868, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 309: [10463.062886] [  62] 0x00000060 : 0xc153386c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 310: [10463.062889] [  63] 0x00000060 : 0xc1533870, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 311: [10463.062891] [  64] 0x00000060 : 0xc1533874, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 312: [10463.062894] [  65] 0x00000060 : 0xc1533878, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 313: [10463.062896] [  66] 0x00000060 : 0xc1533880, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 314: [10463.062898] [  67] 0x00000060 : 0xc1533884, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 315: [10463.062901] [  68] 0x00000060 : 0xc1533888, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 316: [10463.062903] [  69] 0x00000060 : 0xc153388c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 317: [10463.062906] [  6A] 0x00000060 : 0xc1533890, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 318: [10463.062908] [  6B] 0x00000060 : 0xc1533894, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 319: [10463.062910] [  6C] 0x00000060 : 0xc1533898, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 320: [10463.062913] [  6D] 0x00000060 : 0xc15338a0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 321: [10463.062915] [  6E] 0x00000060 : 0xc15338a4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 322: [10463.062918] [  6F] 0x00000060 : 0xc15338a8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 323: [10463.062920] [  70] 0x00000060 : 0xc15338ac, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 324: [10463.062922] [  71] 0x00000060 : 0xc15338b0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 325: [10463.062925] [  72] 0x00000060 : 0xc15338b4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 326: [10463.062927] [  73] 0x00000060 : 0xc15338b8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 327: [10463.062930] [  74] 0x00000060 : 0xc15338c0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 328: [10463.062932] [  75] 0x00000060 : 0xc15338c4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 329: [10463.062935] [  76] 0x00000060 : 0xc15338c8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 330: [10463.062937] [  77] 0x00000060 : 0xc15338cc, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 331: [10463.062939] [  78] 0x00000060 : 0xc15338d0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 332: [10463.062942] [  79] 0x00000060 : 0xc15338d4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 333: [10463.062944] [  7A] 0x00000060 : 0xc15338d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 334: [10463.062947] [  7B] 0x00000060 : 0xc15338e0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 335: [10463.062949] [  7C] 0x00000060 : 0xc15338e4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 336: [10463.062951] [  7D] 0x00000060 : 0xc15338e8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 337: [10463.062954] [  7E] 0x00000060 : 0xc15338ec, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 338: [10463.062956] [  7F] 0x00000060 : 0xc15338f0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 339: [10463.062959] [  80] 0x00000060 : 0xc152c898, P[1] DPL[3] Type[Trap Gate] selector[index=000C, TI=0, RPL=0]
 340: [10463.062961] [  81] 0x00000060 : 0xc15338f8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 341: [10463.062963] [  82] 0x00000060 : 0xc1533900, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 342: [10463.062966] [  83] 0x00000060 : 0xc1533904, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 343: [10463.062968] [  84] 0x00000060 : 0xc1533908, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 344: [10463.062971] [  85] 0x00000060 : 0xc153390c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 345: [10463.062973] [  86] 0x00000060 : 0xc1533910, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 346: [10463.062975] [  87] 0x00000060 : 0xc1533914, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 347: [10463.062978] [  88] 0x00000060 : 0xc1533918, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 348: [10463.062980] [  89] 0x00000060 : 0xc1533920, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 349: [10463.062983] [  8A] 0x00000060 : 0xc1533924, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 350: [10463.062985] [  8B] 0x00000060 : 0xc1533928, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 351: [10463.062987] [  8C] 0x00000060 : 0xc153392c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 352: [10463.062990] [  8D] 0x00000060 : 0xc1533930, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 353: [10463.062992] [  8E] 0x00000060 : 0xc1533934, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 354: [10463.062995] [  8F] 0x00000060 : 0xc1533938, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 355: [10463.062997] [  90] 0x00000060 : 0xc1533940, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 356: [10463.062999] [  91] 0x00000060 : 0xc1533944, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 357: [10463.063002] [  92] 0x00000060 : 0xc1533948, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 358: [10463.063004] [  93] 0x00000060 : 0xc153394c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 359: [10463.063007] [  94] 0x00000060 : 0xc1533950, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 360: [10463.063009] [  95] 0x00000060 : 0xc1533954, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 361: [10463.063011] [  96] 0x00000060 : 0xc1533958, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 362: [10463.063014] [  97] 0x00000060 : 0xc1533960, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 363: [10463.063016] [  98] 0x00000060 : 0xc1533964, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 364: [10463.063019] [  99] 0x00000060 : 0xc1533968, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 365: [10463.063021] [  9A] 0x00000060 : 0xc153396c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 366: [10463.063023] [  9B] 0x00000060 : 0xc1533970, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 367: [10463.063026] [  9C] 0x00000060 : 0xc1533974, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 368: [10463.063028] [  9D] 0x00000060 : 0xc1533978, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 369: [10463.063031] [  9E] 0x00000060 : 0xc1533980, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 370: [10463.063033] [  9F] 0x00000060 : 0xc1533984, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 371: [10463.063035] [  A0] 0x00000060 : 0xc1533988, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 372: [10463.063038] [  A1] 0x00000060 : 0xc153398c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 373: [10463.063040] [  A2] 0x00000060 : 0xc1533990, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 374: [10463.063043] [  A3] 0x00000060 : 0xc1533994, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 375: [10463.063045] [  A4] 0x00000060 : 0xc1533998, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 376: [10463.063047] [  A5] 0x00000060 : 0xc15339a0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 377: [10463.063050] [  A6] 0x00000060 : 0xc15339a4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 378: [10463.063052] [  A7] 0x00000060 : 0xc15339a8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 379: [10463.063055] [  A8] 0x00000060 : 0xc15339ac, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 380: [10463.063057] [  A9] 0x00000060 : 0xc15339b0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 381: [10463.063059] [  AA] 0x00000060 : 0xc15339b4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 382: [10463.063062] [  AB] 0x00000060 : 0xc15339b8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 383: [10463.063064] [  AC] 0x00000060 : 0xc15339c0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 384: [10463.063067] [  AD] 0x00000060 : 0xc15339c4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 385: [10463.063069] [  AE] 0x00000060 : 0xc15339c8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 386: [10463.063071] [  AF] 0x00000060 : 0xc15339cc, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 387: [10463.063074] [  B0] 0x00000060 : 0xc15339d0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 388: [10463.063076] [  B1] 0x00000060 : 0xc15339d4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 389: [10463.063079] [  B2] 0x00000060 : 0xc15339d8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 390: [10463.063081] [  B3] 0x00000060 : 0xc15339e0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 391: [10463.063083] [  B4] 0x00000060 : 0xc15339e4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 392: [10463.063086] [  B5] 0x00000060 : 0xc15339e8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 393: [10463.063088] [  B6] 0x00000060 : 0xc15339ec, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 394: [10463.063091] [  B7] 0x00000060 : 0xc15339f0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 395: [10463.063093] [  B8] 0x00000060 : 0xc15339f4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 396: [10463.063095] [  B9] 0x00000060 : 0xc15339f8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 397: [10463.063098] [  BA] 0x00000060 : 0xc1533a00, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 398: [10463.063100] [  BB] 0x00000060 : 0xc1533a04, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 399: [10463.063103] [  BC] 0x00000060 : 0xc1533a08, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 400: [10463.063105] [  BD] 0x00000060 : 0xc1533a0c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 401: [10463.063107] [  BE] 0x00000060 : 0xc1533a10, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 402: [10463.063110] [  BF] 0x00000060 : 0xc1533a14, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 403: [10463.063112] [  C0] 0x00000060 : 0xc1533a18, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 404: [10463.063115] [  C1] 0x00000060 : 0xc1533a20, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 405: [10463.063117] [  C2] 0x00000060 : 0xc1533a24, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 406: [10463.063119] [  C3] 0x00000060 : 0xc1533a28, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 407: [10463.063122] [  C4] 0x00000060 : 0xc1533a2c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 408: [10463.063124] [  C5] 0x00000060 : 0xc1533a30, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 409: [10463.063127] [  C6] 0x00000060 : 0xc1533a34, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 410: [10463.063129] [  C7] 0x00000060 : 0xc1533a38, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 411: [10463.063131] [  C8] 0x00000060 : 0xc1533a40, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 412: [10463.063134] [  C9] 0x00000060 : 0xc1533a44, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 413: [10463.063136] [  CA] 0x00000060 : 0xc1533a48, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 414: [10463.063139] [  CB] 0x00000060 : 0xc1533a4c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 415: [10463.063141] [  CC] 0x00000060 : 0xc1533a50, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 416: [10463.063143] [  CD] 0x00000060 : 0xc1533a54, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 417: [10463.063146] [  CE] 0x00000060 : 0xc1533a58, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 418: [10463.063148] [  CF] 0x00000060 : 0xc1533a60, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 419: [10463.063151] [  D0] 0x00000060 : 0xc1533a64, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 420: [10463.063153] [  D1] 0x00000060 : 0xc1533a68, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 421: [10463.063155] [  D2] 0x00000060 : 0xc1533a6c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 422: [10463.063158] [  D3] 0x00000060 : 0xc1533a70, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 423: [10463.063160] [  D4] 0x00000060 : 0xc1533a74, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 424: [10463.063163] [  D5] 0x00000060 : 0xc1533a78, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 425: [10463.063165] [  D6] 0x00000060 : 0xc1533a80, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 426: [10463.063167] [  D7] 0x00000060 : 0xc1533a84, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 427: [10463.063170] [  D8] 0x00000060 : 0xc1533a88, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 428: [10463.063172] [  D9] 0x00000060 : 0xc1533a8c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 429: [10463.063175] [  DA] 0x00000060 : 0xc1533a90, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 430: [10463.063177] [  DB] 0x00000060 : 0xc1533a94, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 431: [10463.063179] [  DC] 0x00000060 : 0xc1533a98, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 432: [10463.063182] [  DD] 0x00000060 : 0xc1533aa0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 433: [10463.063184] [  DE] 0x00000060 : 0xc1533aa4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 434: [10463.063187] [  DF] 0x00000060 : 0xc1533aa8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 435: [10463.063189] [  E0] 0x00000060 : 0xc1533aac, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 436: [10463.063192] [  E1] 0x00000060 : 0xc1533ab0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 437: [10463.063194] [  E2] 0x00000060 : 0xc1533ab4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 438: [10463.063196] [  E3] 0x00000060 : 0xc1533ab8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 439: [10463.063199] [  E4] 0x00000060 : 0xc1533ac0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 440: [10463.063201] [  E5] 0x00000060 : 0xc1533ac4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 441: [10463.063203] [  E6] 0x00000060 : 0xc1533ac8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 442: [10463.063206] [  E7] 0x00000060 : 0xc152cb40, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 443: [10463.063208] [  E8] 0x00000060 : 0xc152cb78, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 444: [10463.063211] [  E9] 0x00000060 : 0xc152cbb0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 445: [10463.063213] [  EA] 0x00000060 : 0xc152cbe8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 446: [10463.063215] [  EB] 0x00000060 : 0xc152cc20, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 447: [10463.063218] [  EC] 0x00000060 : 0xc152cc58, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 448: [10463.063220] [  ED] 0x00000060 : 0xc152cc90, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 449: [10463.063223] [  EE] 0x00000060 : 0xc152ccc8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 450: [10463.063225] [  EF] 0x00000060 : 0xc152cd38, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 451: [10463.063227] [  F0] 0x00000060 : 0xc1533af4, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 452: [10463.063230] [  F1] 0x00000060 : 0xc1533af8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 453: [10463.063232] [  F2] 0x00000060 : 0xc1533b00, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 454: [10463.063235] [  F3] 0x00000060 : 0xc1533b04, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 455: [10463.063237] [  F4] 0x00000060 : 0xc152ce88, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 456: [10463.063239] [  F5] 0x00000060 : 0xc1533b0c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 457: [10463.063242] [  F6] 0x00000060 : 0xc152cde0, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 458: [10463.063244] [  F7] 0x00000060 : 0xc152cd00, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 459: [10463.063247] [  F8] 0x00000060 : 0xc152cb08, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 460: [10463.063249] [  F9] 0x00000060 : 0xc152ce50, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 461: [10463.063251] [  FA] 0x00000060 : 0xc152ce18, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 462: [10463.063254] [  FB] 0x00000060 : 0xc152ca9c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 463: [10463.063256] [  FC] 0x00000060 : 0xc152ca64, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 464: [10463.063259] [  FD] 0x00000060 : 0xc152ca2c, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 465: [10463.063261] [  FE] 0x00000060 : 0xc152cd70, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 466: [10463.063263] [  FF] 0x00000060 : 0xc152cda8, P[1] DPL[0] Type[Interrupt Gate] selector[index=000C, TI=0, RPL=0]
 467: [10463.063754] ###################################################################


最新试验代码

   1: #include<linux/init.h>
   2: #include<linux/module.h>
   3: #include<linux/list.h>
   4: #include<linux/sched.h>
   5: #include<linux/proc_fs.h>
   6: #include<linux/mm_types.h>
   7: #include<linux/fs.h>
   8: #include<linux/path.h>
   9: #include<linux/dcache.h>
  10: #include<linux/mm.h>
  11: #include<linux/mmzone.h>
  12: #include<linux/vmalloc.h>
  13: #include<asm/desc.h>
  14: #include<linux/smp.h>
  15:  
  16: MODULE_LICENSE("GPL");
  17:  
  18: struct tss_segment_32 {
  19:     u32 prev_task_link;
  20:     u32 esp0;
  21:     u32 ss0;
  22:     u32 esp1;
  23:     u32 ss1;
  24:     u32 esp2;
  25:     u32 ss2;
  26:     u32 cr3;
  27:     u32 eip;
  28:     u32 eflags;
  29:     u32 eax;
  30:     u32 ecx;
  31:     u32 edx;
  32:     u32 ebx;
  33:     u32 esp;
  34:     u32 ebp;
  35:     u32 esi;
  36:     u32 edi;
  37:     u32 es;
  38:     u32 cs;
  39:     u32 ss;
  40:     u32 ds;
  41:     u32 fs;
  42:     u32 gs;
  43:     u32 ldt_selector;
  44:     u16 t;
  45:     u16 io_map;
  46: };
  47:  
  48: void printBinary(char* name, char* buffer, unsigned long size)
  49: {
  50:     int i;
  51:  
  52:     printk("%s\n", name);
  53:     for (i = 0; i < size; ++i)
  54:     {
  55:         printk("    %02X", *(buffer + i));
  56:         if (i % 16 == 0)
  57:         {
  58:             printk("\n");
  59:         }
  60:     }
  61:     if (size % 16 != 0)
  62:     {
  63:         printk("\n");
  64:     }
  65: }
  66:  
  67: void printRawData(unsigned long size, const u_char* data)
  68: {
  69:     if (size == 0)
  70:     {
  71:         return;
  72:     }
  73:  
  74:     printk("Memory at 0x%08x\n", (u32)data);
  75:     unsigned long i = 0;
  76:     for (i=0;i<16;i++)
  77:     {
  78:         printk("%4X", i);
  79:     }
  80:     printk("\n");
  81:     for (i=0;i<16;i++)
  82:     {
  83:         printk("%4s", "__");
  84:     }
  85:  
  86:     char lineSummary[17] = {0,};
  87:     unsigned long pos = 0;
  88:     for (i=0;i<size;i++)
  89:     {
  90:         if ((pos = i % 16) == 0)
  91:         {
  92:             if (i != 0)
  93:             {
  94:                 printk(" ---- %s\n", lineSummary);
  95:                 memset(lineSummary, 0, 17);
  96:             }
  97:             else
  98:             {
  99:                 printk("\n");
 100:             }        
 101:         }
 102:  
 103:         printk("  %02X", *(data + i));
 104:  
 105:         if (*(data + i) >= 0x20 && *(data + i) <= 0x7E)
 106:         {
 107:             lineSummary[pos] = *(data + i);
 108:         }
 109:         else
 110:         {
 111:             lineSummary[pos] = ' ';
 112:         }
 113:     }
 114:  
 115:     if (size % 16 != 0)
 116:     {
 117:         for (i=0;i<16 - (size%16);i++)
 118:         {
 119:             printk("    ");
 120:         }
 121:     }
 122:  
 123:     printk(" ---- %s\n", lineSummary);
 124:     printk("\n");    
 125: }
 126:  
 127: void printBuddySystemInfo(struct free_area* free_area)
 128: {
 129:     int j;
 130:     struct free_area* pfreearea = free_area;
 131:     if (pfreearea == NULL)
 132:         return;
 133:     for (j = 0; j < MAX_ORDER; ++j)
 134:     {
 135:         //printBinary("free_area", (char*)(pfreearea + j), sizeof(struct free_area));
 136:         // printRawData(sizeof(struct free_area), (char*)(pfreearea + j));
 137:         printk("%5d", (pfreearea + j)->nr_free);    
 138:     }
 139:     printk("\n");
 140: }
 141:  
 142: void printPagesetInfo(struct per_cpu_pageset *pageset)
 143: {
 144:     printk("pageset: 0x%08x\n", pageset);
 145:     printRawData(sizeof(*pageset), pageset);
 146:     // struct per_cpu_pages pages = pageset->pcp;
 147:     // printk("Pageset Info:\n");
 148:  
 149:     // printk("    count:\t\t%d\n", pages.count);
 150:     // printk("    high:\t\t%d\n", pages.high);
 151:     // printk("    batch:\t\t%d\n", pages.batch);
 152: }
 153:  
 154: int analyzeUMANode()
 155: {
 156:     int i,j;
 157:     unsigned long node_present_pages;
 158:     unsigned long node_spanned_pages;
 159:     struct pglist_data* node_0;
 160:     
 161:     struct zone* pzone;
 162:     unsigned long start_pfn;
 163:     unsigned long present_pages;
 164:     unsigned long spanned_pages;
 165:     
 166:     // struct page* first_page;
 167:  
 168:  
 169:     printk("###################################################################\n");
 170:  
 171:     // printk(KERN_INFO "/proc/%s created\n", PROCFS_NAME);
 172:     node_0 = NODE_DATA(0);
 173:     printk("node_0 at 0x%08x\n", node_0);
 174:     if (node_0 == NULL)
 175:         return 0;
 176:  
 177:     node_present_pages = node_0->node_present_pages;
 178:     node_spanned_pages = node_0->node_spanned_pages;
 179:     printk("present pages: %d\n", node_present_pages);
 180:     printk("spanned pages: %d\n", node_spanned_pages);
 181:     
 182:     for (i = 0; i < MAX_NR_ZONES; ++i)
 183:     {
 184:         pzone = &node_0->node_zones[i];
 185:         if (pzone == NULL)
 186:             continue;
 187:         printk("Zone %d Name: %s\n", i, pzone->name);
 188:         start_pfn = pzone->zone_start_pfn;
 189:         printk("start_pfn : %d\n", start_pfn);
 190:         present_pages = pzone->present_pages;
 191:         printk("present_pages : %d\n", present_pages);
 192:         spanned_pages = pzone->spanned_pages;
 193:         printk("spanned_pages : %d\n", spanned_pages);
 194:         printk("%8d MB - %8d MB\n", start_pfn * PAGE_SIZE / 1024 / 1024, (start_pfn + spanned_pages) * PAGE_SIZE / 1024 / 1024);
 195:         
 196:         printBuddySystemInfo(&pzone->free_area);
 197:         printPagesetInfo(pzone->pageset);
 198:  
 199:     }
 200:     // first_page = mem_map;
 201:     // int i;
 202:     // for (i = 0; i < node_present_pages; ++i)
 203:     // {
 204:     //     unsigned long bLocked = (first_page + i)->flags == PG_locked;
 205:     //     if (!bLocked)
 206:     //     {
 207:     //         // printk("Page->virtual : 0x%08x, flags = 0x%08x\n", page_address(first_page + i), (first_page + i)->flags);
 208:     //     }
 209:     // }
 210:     return 0;
 211: }
 212:  
 213: int analyzeProcesses()
 214: {
 215:     struct task_struct *pos;
 216:     struct list_head *current_head;
 217:     int count=0;
 218:  
 219:     struct vm_area_struct* vma;
 220:     bool bFirst;
 221:     struct file* vm_file;
 222:     char szBuff[1024] = {0};
 223:     char szTmp[1024] = {0};
 224:  
 225:     struct dentry* vm_dentry;
 226:     struct dentry* parent;
 227:  
 228:     unsigned long vm_flags;
 229:         
 230:     printk("Traversal module is working..\n");
 231:         // printk("Parameters:\n");
 232:         // printk("%20s\t0x%08x\n", "buffer", buffer);
 233:         // printk("%20s\t0x%08x\n", "buffer_pos", buffer_pos);
 234:         // printk("%20s\t0x%08x\n", "offset", offset);
 235:         // printk("%20s\t0x%08x\n", "buffer_len", buffer_len);
 236:         // printk("%20s\t0x%08x\n", "eof", eof);
 237:         // printk("%20s\t0x%08x\n", "data", data);
 238:  
 239:     current_head=&(current->tasks);
 240:     if (current_head == NULL)
 241:         return 0;
 242:     list_for_each_entry(pos,current_head,tasks)
 243:     {
 244:         count++;
 245:         if (strcmp(pos->comm, "gnome-terminal") != 0)
 246:         {
 247:             continue;
 248:         }
 249:         // ret += sprintf(buffer+ret, "[process %d]: %s\'s pid is %d\n",count,pos->comm,pos->pid);
 250:         // ret += sprintf(buffer + ret, "%40s:\n", pos->comm);
 251:         // ret += sprintf(buffer + ret, "\t%20s:\t%d\n", "pid", pos->pid);
 252:         // ret += sprintf(buffer + ret, "\t%20s:\t%d\n", "state", pos->state);
 253:         // ret += sprintf(buffer + ret, "\t%20s:\t%ll\n", "exec_start", pos->se.exec_start);
 254:         // ret += sprintf(buffer + ret, "\t%20s:\t%ll\n", "sum_exec_runtime", pos->se.sum_exec_runtime);
 255:         // ret += sprintf(buffer + ret, "\t%20s:\t%ll\n", "vruntime", pos->se.vruntime);
 256:         // ret += sprintf(buffer + ret, "\t%20s:\t%ll\n", "prev_sum_exec_runtime", pos->se.prev_sum_exec_runtime);
 257:         // printk("%40s:\n", pos->comm);
 258:         // printk("\t%20s:\t%d\n", "pid", pos->pid);
 259:         // printk("\t%20s:\t%d\n", "state", pos->state);
 260:         // printk("\t%20s:\t0x%016llx\n", "exec_start", pos->se.exec_start);
 261:         // printk("\t%20s:\t0x%016llx\n", "sum_exec_runtime", pos->se.sum_exec_runtime);
 262:         // printk("\t%20s:\t0x%016llx\n", "vruntime", pos->se.vruntime);
 263:         // printk("\t%20s:\t0x%016llx\n", "prev_sum_exec_runtime", pos->se.prev_sum_exec_runtime);
 264:         if (pos == NULL)
 265:             continue;
 266:         if (pos->mm != NULL && pos->mm->mmap != NULL)
 267:            {
 268:             // printk("[process %d]: mmap is 0x%08x\n", pos->pid, pos->mm->mmap);
 269:             vma = pos->mm->mmap;
 270:             bFirst = true;
 271:             while (vma != NULL && (vma != pos->mm->mmap || bFirst))
 272:             {
 273:                 vm_file = vma->vm_file;
 274:                 if (vm_file != NULL)
 275:                 {
 276:                     printk("\t0x%08x - 0x%08x\n", vma->vm_start, vma->vm_end);                        
 277:                     
 278:                     vm_dentry = vm_file->f_dentry;
 279:                     if (vm_dentry != NULL)
 280:                     {
 281:                         parent = vm_dentry;
 282:                         while (parent != NULL && strcmp(parent->d_name.name, "/") != 0)
 283:                         {
 284:                             //printk("\t%20s:\t%s\n", "name", parent->d_name.name);
 285:                             strcpy(szTmp, szBuff);
 286:                             memset(szBuff, 0, 1024);
 287:                             sprintf(szBuff, "%s/%s", parent->d_name.name, szTmp);
 288:                             parent = parent->d_parent;
 289:                         }
 290:                         szBuff[strlen(szBuff) - 1] = 0;
 291:                         printk("\t%20s:\t/%s\n", "name", szBuff);
 292:                     }
 293:                     vm_flags = vma->vm_flags;
 294:                     printk("%d\n", vm_flags);
 295:                     // memset(szBuff, 0, 1024);
 296:                     // if (vm_flags & VM_READ != 0)
 297:                     // {
 298:                     //     strcpy(szTmp, szBuff);
 299:                     //     memset(szBuff, 0, 1024);
 300:                     //     sprintf(szBuff, "%s VM_READ", szTmp);
 301:                     // }
 302:                     // if (vm_flags & VM_WRITE != 0)
 303:                     // {
 304:                     //     strcpy(szTmp, szBuff);
 305:                     //     memset(szBuff, 0, 1024);
 306:                     //     sprintf(szBuff, "%s VM_WRITE", szTmp);
 307:                     // }
 308:                     // if (vm_flags & VM_EXEC != 0)
 309:                     // {
 310:                     //     strcpy(szTmp, szBuff);
 311:                     //     memset(szBuff, 0, 1024);
 312:                     //     sprintf(szBuff, "%s VM_EXEC", szTmp);
 313:                     // }
 314:                     // if (vm_flags & VM_SHARED != 0)
 315:                     // {
 316:                     //     strcpy(szTmp, szBuff);
 317:                     //     memset(szBuff, 0, 1024);
 318:                     //     sprintf(szBuff, "%s VM_SHARED", szTmp);
 319:                     // }
 320:                     // printk("\t%20s:\t%s\n", "FLAGS", szBuff);
 321:                     printk("\n");
 322:                 }
 323:                 bFirst = false;
 324:                 vma = vma->vm_next;
 325:             }
 326:            }    
 327:     }
 328:  
 329:     return 0;    /* everything is ok */
 330: }
 331:  
 332: void dumpTSS(struct tss_segment_32* tss)
 333: {
 334:     printk("TSS:\n");
 335:     printk("\t%16s : 0x%08X\n", "prev_task_link", tss->prev_task_link);
 336:     printk("\t%16s : 0x%08X\n", "esp0",tss->esp0);
 337:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "ss0", tss->ss0, tss->ss0 >> 3, tss->ss0&0x0004, tss->ss0&0x0003);
 338:     printk("\t%16s : 0x%08X\n", "esp1",tss->esp1);
 339:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "ss1", tss->ss1, tss->ss1 >> 3, tss->ss1&0x0004, tss->ss1&0x0003);
 340:     printk("\t%16s : 0x%08X\n", "esp2",tss->esp2);
 341:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "ss2", tss->ss2, tss->ss2 >> 3, tss->ss2&0x0004, tss->ss2&0x0003);
 342:     printk("\t%16s : 0x%08X\n", "cr3",tss->cr3);
 343:     printk("\t%16s : 0x%08X\n", "eip",tss->eip);
 344:     printk("\t%16s : 0x%08X\n", "eflags",tss->eflags);
 345:     printk("\t%16s : 0x%08X\n", "eax",tss->eax);
 346:     printk("\t%16s : 0x%08X\n", "ecx",tss->ecx);
 347:     printk("\t%16s : 0x%08X\n", "edx",tss->edx);
 348:     printk("\t%16s : 0x%08X\n", "ebx",tss->ebx);
 349:     printk("\t%16s : 0x%08X\n", "esp",tss->esp);
 350:     printk("\t%16s : 0x%08X\n", "ebp",tss->ebp);
 351:     printk("\t%16s : 0x%08X\n", "esi",tss->esi);
 352:     printk("\t%16s : 0x%08X\n", "edi",tss->edi);
 353:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "es", tss->es, tss->es >> 3, tss->es&0x0004, tss->es&0x0003);
 354:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "cs", tss->cs, tss->cs >> 3, tss->cs&0x0004, tss->cs&0x0003);
 355:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "ss", tss->ss, tss->ss >> 3, tss->ss&0x0004, tss->ss&0x0003);
 356:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "ds", tss->ds, tss->ds >> 3, tss->ds&0x0004, tss->ds&0x0003);
 357:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "fs", tss->fs, tss->fs >> 3, tss->fs&0x0004, tss->fs&0x0003);
 358:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "gs", tss->gs, tss->gs >> 3, tss->gs&0x0004, tss->gs&0x0003);
 359:     printk("\t%16s : 0x%08X[index=%04X, TI=%d, RPL=%d]\n", "ldt_selector", tss->ldt_selector, tss->ldt_selector >> 3, tss->ldt_selector&0x0004, tss->ldt_selector&0x0003);
 360:     printk("\t%16s : 0x%04X\n", "t",tss->t);
 361:     printk("\t%16s : 0x%04X\n", "io_map",tss->io_map);
 362:     printRawData(0x40, tss + tss->io_map);
 363:     printk("\n");
 364: }
 365:  
 366: void analyzeGDTEntry(char* buffer)
 367: {
 368:     u32 limit;
 369:     u32 base;
 370:     u8 type;
 371:     u8 dpl;
 372:     u8 granularity;
 373:     u8 systemFlag;
 374:     u8 present;
 375:     u8 dbFlag;
 376:  
 377:     granularity = ((*(u8*)(buffer + 6)) & 0x80) >> 7;
 378:     dbFlag = ((*(u8*)(buffer + 6)) & 0x40) >> 6;
 379:  
 380:     present = ((*(u8*)(buffer + 5)) & 0x80) >> 7;
 381:     systemFlag = ((*(u8*)(buffer + 5)) & 0x10) >> 4;
 382:  
 383:     dpl = ((*(u8*)(buffer + 5)) & 0x60) >> 5;
 384:     type = ((*(u8*)(buffer + 5)) & 0x0F);
 385:  
 386:     limit = *(u16*)buffer;
 387:     limit += ((*(u8*)(buffer + 6)) & 0x0F) << 16;
 388:  
 389:     if (granularity == 1)
 390:     {
 391:         limit = ((limit + 1) << 12) - 1;
 392:     }
 393:  
 394:     base = 0;
 395:     base += *(u16*)(buffer + 2);
 396:     base += (*(u8*)(buffer + 4)) << 16;
 397:     base += (*(u8*)(buffer + 7)) << 24;
 398:  
 399:     if (limit == 0)
 400:     {
 401:         printk("[null]\n");
 402:     }
 403:     else
 404:     {
 405:         printk("0x%08x : 0x%08x, ", base, base + limit);
 406:         printk("G[%d] ", granularity);
 407:         printk("D/B[%d] ", dbFlag);
 408:         printk("P[%d] ", present);
 409:         printk("DPL[%d] ", dpl);
 410:         printk("S[%d] ", systemFlag);
 411:         printk("Type[%2d] ", type);
 412:         if (systemFlag == 1)
 413:         {
 414:             if ((type & 0x08) != 0 )
 415:             {
 416:                 // Code
 417:                 printk("Code[");
 418:                 if ((type & 0x04) != 0)
 419:                 {
 420:                     printk("Conforming ");
 421:                 }
 422:                 if ((type & 0x02) != 0)
 423:                 {
 424:                     printk("Read-Enable ");
 425:                 }
 426:                 if ((type & 0x01) != 0)
 427:                 {
 428:                     printk("Accessed ");
 429:                 }
 430:                 printk("]");
 431:             }
 432:             else
 433:             {
 434:                 // Data
 435:                 printk("Data[");
 436:                 if ((type & 0x04) != 0)
 437:                 {
 438:                     printk("Expand-Down ");
 439:                 }
 440:                 if ((type & 0x02) != 0)
 441:                 {
 442:                     printk("Write-Enable ");
 443:                 }
 444:                 if ((type & 0x01) != 0)
 445:                 {
 446:                     printk("Accessed ");
 447:                 }
 448:                 printk("]");
 449:             }
 450:         }
 451:         else
 452:         {
 453:             if (type == 0x02)
 454:             {
 455:                 printk("[LDT]");
 456:             }
 457:             else if (type == 0x05)
 458:             {
 459:                 printk("[Task Gate]");
 460:             }
 461:             else if (type == 0x09)
 462:             {
 463:                 printk("[32-Bit TSS(Available)]");
 464:                 struct tss_segment_32 tss;
 465:                 memcpy(&tss, base, sizeof(tss));
 466:                 dumpTSS(&tss);
 467:             }
 468:             else if (type == 0x0B)
 469:             {
 470:                 printk("[32-Bit TSS(Busy)]");
 471:                 struct tss_segment_32 tss;
 472:                 memcpy(&tss, base, sizeof(tss));
 473:                 dumpTSS(&tss);
 474:             }            
 475:             else if (type == 0x0C)
 476:             {
 477:                 printk("[32-Bit Call Gate]");
 478:             }
 479:             else if (type == 0x0E)
 480:             {
 481:                 printk("[32-Bit Interrupt Gate]");
 482:             }
 483:             else if (type == 0x0F)
 484:             {
 485:                 printk("[32-Bit Trap Gate]");
 486:             }
 487:         }
 488:         
 489:         printk("\n");
 490:     }
 491:  
 492:  
 493: }
 494:  
 495: void analyzeTLS(char* buffer)
 496: {
 497:     u32 limit;
 498:     u32 base;
 499:     u8 type;
 500:     u8 dpl;
 501:     u8 granularity;
 502:     u8 systemFlag;
 503:     u8 present;
 504:     u8 dbFlag;
 505:  
 506:     granularity = ((*(u8*)(buffer + 6)) & 0x80) >> 7;
 507:     dbFlag = ((*(u8*)(buffer + 6)) & 0x40) >> 6;
 508:  
 509:     present = ((*(u8*)(buffer + 5)) & 0x80) >> 7;
 510:     systemFlag = ((*(u8*)(buffer + 5)) & 0x10) >> 4;
 511:  
 512:     dpl = ((*(u8*)(buffer + 5)) & 0x60) >> 5;
 513:     type = ((*(u8*)(buffer + 5)) & 0x0F);
 514:  
 515:     limit = *(u16*)buffer;
 516:     limit += ((*(u8*)(buffer + 6)) & 0x0F) << 16;
 517:  
 518:     if (granularity == 1)
 519:     {
 520:         limit = ((limit + 1) << 12) - 1;
 521:     }
 522:  
 523:     
 524:  
 525:     base = 0;
 526:     base += *(u16*)(buffer + 2);
 527:     base += (*(u8*)(buffer + 4)) << 16;
 528:     base += (*(u8*)(buffer + 7)) << 24;
 529:  
 530:     printk("0x%08x : 0x%08x, ", base, base + limit);
 531:  
 532:     printk("TLS:%x\n", limit);
 533:     printRawData(0x100, (char*)base);
 534: }
 535:  
 536: void analyzeGDT(u32 size, char* buffer)
 537: {
 538:     int i;
 539:     for (i = 0; i < size; i += 8)
 540:     {
 541:         printk("[%4X] ", i/8);        
 542:         analyzeGDTEntry(buffer + i);
 543:     }
 544:  
 545:     analyzeTLS(buffer + 6*8);
 546: }
 547:  
 548: void analyzeIDTEntry(char* buffer)
 549: {
 550:     u32 offset;
 551:     u32 selector;
 552:     u8 type;
 553:     u8 dpl;
 554:     u8 present;
 555:  
 556:     present = ((*(u8*)(buffer + 5)) & 0x80) >> 7;
 557:     dpl = ((*(u8*)(buffer + 5)) & 0x60) >> 5;
 558:     type = ((*(u8*)(buffer + 5)) & 0x1F);
 559:  
 560:     offset = *(u16*)buffer;
 561:     offset += (*(u16*)(buffer + 6)) << 16;
 562:  
 563:     selector = *(u16*)(buffer + 2);
 564:  
 565:     if (type == 0x0E)
 566:     {
 567:         // Interrupt Gate
 568:         printk("0x%08x[index=%04X, TI=%d, RPL=%d] : 0x%08x, ", selector, selector >> 3, selector&0x0004, selector&0x0003, offset);
 569:         printk("P[%d] ", present);
 570:         printk("DPL[%d] ", dpl);
 571:         printk("Type[%16s] ", "Interrupt Gate");
 572:         printk("\n");
 573:     }
 574:     else if (type == 0x0F)
 575:     {
 576:         // Trap Gate
 577:         printk("0x%08x[index=%04X, TI=%d, RPL=%d] : 0x%08x, ", selector, selector >> 3, selector&0x0004, selector&0x0003, offset);
 578:         printk("P[%d] ", present);
 579:         printk("DPL[%d] ", dpl);
 580:         printk("Type[%16s] ", "Trap Gate");
 581:         printk("\n");
 582:     }
 583:     else if (type == 0x05)
 584:     {
 585:         // Task Gate
 586:         printk("0x%08x[index=%04X, TI=%d, RPL=%d] : 0x%08x, ", selector, selector >> 3, selector&0x0004, selector&0x0003, offset);
 587:         printk("P[%d] ", present);
 588:         printk("DPL[%d] ", dpl);
 589:         printk("Type[%16s] ", "Task Gate");
 590:         printk("\n");
 591:     }
 592:     else
 593:     {
 594:         printk("[null]\n");
 595:     }
 596: }
 597:  
 598: void analyzeIDT(u32 size, char* buffer)
 599: {
 600:     int i;
 601:     for (i = 0; i < size; i += 8)
 602:     {
 603:         printk("[%4X] ", i/8);    
 604:         analyzeIDTEntry(buffer + i);
 605:     }
 606: }
 607:  
 608: #define getNormalReg(reg, val) asm("movl %%"#reg",%0" : "=r" (val));
 609:  
 610: #define dumpNormalReg(reg) {u32 val;getNormalReg(reg, val); printk("%08s:0x%08X\n", ""#reg"", val);}
 611:  
 612: #define dumpLDT() {u32 val; asm("sldt %0" : "=r"(val)); printk("%08s:0x%08X\n", "ldt", val);}
 613: #define dumpTSS() {u32 val; asm("str %0" : "=r"(val));  printk("%08s:0x%08X\n", "tss", val);}
 614:  
 615: #define dumpGDT() {char gdt[6]; \
 616:     asm("sgdt %0" : "=m"(gdt)); \ 
 617:     printRawData(6, gdt); \
 618:     printk("%08s:0x%08X(0x%04X)\n", "gdt", *(u32*)(gdt + 2), *(u16*)(gdt)); \ 
 619:     printRawData((*(u16*)(gdt) + 1), (u_char*)(*(u32*)(gdt + 2))); \ 
 620:     analyzeGDT((*(u16*)(gdt) + 1), (u_char*)(*(u32*)(gdt + 2)));}
 621:  
 622: #define dumpIDT() {char idt[6]; \
 623:     asm("sidt %0" : "=m"(idt)); \ 
 624:     printRawData(6, idt); \
 625:     printk("%08s:0x%08X(0x%04X)\n", "idt", *(u32*)(idt + 2), *(u16*)(idt)); \ 
 626:     printRawData((*(u16*)(idt) + 1), (u_char*)(*(u32*)(idt + 2))); \ 
 627:     analyzeIDT((*(u16*)(idt) + 1), (u_char*)(*(u32*)(idt + 2)));}
 628:  
 629: static int pslist_init()
 630: {
 631:     // analyzeUMANode();
 632:     // analyzeProcesses();
 633:     
 634:     // asm("mov %%cr0, %%eax;":"=a"(eax));
 635:     // printk("%08s:0x%08X\n", "cr0", eax);
 636:  
 637:     printk("###################################################################\n");
 638:  
 639:     int cpu = smp_processor_id();
 640:     struct desc_struct *gdt = get_cpu_gdt_table(cpu);
 641:     printRawData(sizeof(*gdt), gdt);
 642:  
 643:     dumpNormalReg(cr0);
 644:     dumpNormalReg(cr2);
 645:     dumpNormalReg(cr3);
 646:  
 647:     dumpNormalReg(eax);
 648:     dumpNormalReg(ebx);
 649:     dumpNormalReg(ecx);
 650:     dumpNormalReg(edx);
 651:  
 652:     dumpNormalReg(esp);
 653:     dumpNormalReg(ebp);
 654:     
 655:     dumpNormalReg(esi);
 656:     dumpNormalReg(edi);
 657:  
 658:     dumpTSS();
 659:     dumpLDT();
 660:  
 661:     dumpGDT();
 662:     dumpIDT();
 663:  
 664:     return 0;
 665: }
 666:  
 667: static void pslist_exit()
 668: {
 669:     printk("###################################################################\n");
 670: }
 671:  
 672:  
 673:  
 674: module_init(pslist_init);
 675: module_exit(pslist_exit);
posted @ 2013-12-27 17:58  Daniel King  阅读(595)  评论(0编辑  收藏  举报