2012年5月23日 星期三

Dump Linux page table

Linux page table is located in (PA) 0x4000 ~ 0x7FFF or (VA) 0xC0004000 ~ 0xC0007FFF.

1st level descriptor used: Coarse (16KB) / Section (1MB)
2nd level descriptor used: Small (4KB)

1. C source code to dump page table in kernel space
{
  int i;
  void *src1, *src2, *src3;
  dma_addr_t pa1, pa2, pa3;
  unsigned int first_level_pa;

  src1 = dma_alloc_coherent(NULL, 512, &pa1, GFP_KERNEL);
  src2 = dma_alloc_coherent(NULL, 512 * 4, &pa2, GFP_KERNEL);
  src3 = dma_alloc_coherent(NULL, 512 * 10, &pa3, GFP_KERNEL);

  printk("... (dma_alloc_coherent) src1=0x%x, pa1=0x%x, src2=0x%x, pa2=0x%x, src3=0x%x, pa3=0x%x\n", src1, pa1, src2, pa2, src3, pa3);
  writel(1, src1);
  writel(1, src2);
  writel(1, src3);

  for (i=0x4000; i<0x8000; i+=0x10)
    printk("0x%x: 0x%x  0x%x  0x%x 0x%x\n", phys_to_virt(i), readl(phys_to_virt(i)), readl(phys_to_virt(i + 4)), readl(phys_to_virt(i + 8)), readl(phys_to_virt(i + 0xc)));

  printk("\nprint the 2nd level descriptor address's value\n");
  for (i=0x6fc0; i<0x6fc8; i+=0x10) {
    int j;

    first_level_pa = readl(phys_to_virt(i)) & 0xfffffc00;
    for (j=0; j<1024; j+=0x10) {
      printk("... 0x%x: 0x%x  0x%x  0x%x  0x%x\n", phys_to_virt(first_level_pa + j), readl(phys_to_virt(first_level_pa + j)), readl(phys_to_virt(first_level_pa + j + 0x4)), readl(phys_to_virt(first_level_pa + j + 0x8)), readl(phys_to_virt(first_level_pa + j + 0xc)));
    }
  }

  for (i=0x7120; i<0x7128; i+=0x10) {
    int j;

    first_level_pa = readl(phys_to_virt(i)) & 0xfffffc00;
    for (j=0; j<1024; j+=0x10) {
      printk("... 0x%x: 0x%x  0x%x  0x%x  0x%x\n", phys_to_virt(first_level_pa + j), readl(phys_to_virt(first_level_pa + j)), readl(phys_to_virt(first_level_pa + j + 0x4)), readl(phys_to_virt(first_level_pa + j + 0x8)), readl(phys_to_virt(first_level_pa + j + 0xc)));
    }
  }

  for (i=0x7e00; i<0x7e40; i+=0x10) {
    first_level_pa = readl(phys_to_virt(i)) & 0xfffffc00;
    printk("0x%x: 0x%x  0x%x  0x%x  0x%x\n", phys_to_virt(i), readl(phys_to_virt(first_level_pa)), readl(phys_to_virt(first_level_pa + 4)), readl(phys_to_virt(first_level_pa + 8)), readl(phys_to_virt(first_level_pa + 0xc)));
  }

  for (i=0x7c00; i<0x7c50; i+=0x10) {
    first_level_pa = readl(phys_to_virt(i)) & 0xfffffc00;
    printk("0x%x: 0x%x  0x%x  0x%x  0x%x\n", phys_to_virt(i), readl(phys_to_virt(first_level_pa)), readl(phys_to_virt(first_level_pa + 4)), readl(phys_to_virt(first_level_pa + 8)), readl(phys_to_virt(first_level_pa + 0xc)));
  }

  for (i=0x7fc0; i<0x8000; i+=0x10) {
    int j;

    first_level_pa = readl(phys_to_virt(i)) & 0xfffffc00;

    for (j=0; j<1024; j+=0x10) {
      printk("... 0x%x: 0x%x  0x%x  0x%x  0x%x\n", phys_to_virt(first_level_pa + j), readl(phys_to_virt(first_level_pa + j)), readl(phys_to_virt(first_level_pa + j + 0x4)), readl(phys_to_virt(first_level_pa + j + 0x8)), readl(phys_to_virt(first_level_pa + j + 0xc)));
    }
  }

  dma_free_coherent(NULL, 512, src1, pa1);
  dma_free_coherent(NULL, 512 * 4, src2, pa2);
  dma_free_coherent(NULL, 512 * 10, src3, pa3);
}

2. Output:

memcpy: DMA dst 0xc25a0000 src 0xc25b0000 val A len 0x00010000
async_memcpy ... 928 usec
... (dma_alloc_coherent) src1=0xff008000, pa1=0x24fe000, src2=0xff009000, pa2=0x2519000, src3=0xff00a000, pa3=0x2afc000
0xc0004000: 0x0  0x0  0x0 0x0
0xc0004010: 0x0  0x0  0x0 0x0
0xc0004020: 0x0  0x0  0x0 0x0
0xc0004030: 0x0  0x0  0x0 0x0
0xc0004040: 0x0  0x0  0x0 0x0
0xc0004050: 0x0  0x0  0x0 0x0
0xc0004060: 0x0  0x0  0x0 0x0
0xc0004070: 0x0  0x0  0x0 0x0
0xc0004080: 0x0  0x0  0x0 0x0
0xc0004090: 0x0  0x0  0x0 0x0
0xc00040a0: 0x0  0x0  0x0 0x0
0xc00040b0: 0x0  0x0  0x0 0x0
0xc00040c0: 0x0  0x0  0x0 0x0
0xc00040d0: 0x0  0x0  0x0 0x0
0xc00040e0: 0x0  0x0  0x0 0x0
0xc00040f0: 0x0  0x0  0x0 0x0
0xc0004100: 0x0  0x0  0x0 0x0
0xc0004110: 0x0  0x0  0x0 0x0
0xc0004120: 0x0  0x0  0x0 0x0
0xc0004130: 0x0  0x0  0x0 0x0
0xc0004140: 0x0  0x0  0x0 0x0
0xc0004150: 0x0  0x0  0x0 0x0
0xc0004160: 0x0  0x0  0x0 0x0
0xc0004170: 0x0  0x0  0x0 0x0
0xc0004180: 0x0  0x0  0x0 0x0
0xc0004190: 0x0  0x0  0x0 0x0
0xc00041a0: 0x0  0x0  0x0 0x0
0xc00041b0: 0x0  0x0  0x0 0x0
0xc00041c0: 0x0  0x0  0x0 0x0
0xc00041d0: 0x0  0x0  0x0 0x0
0xc00041e0: 0x0  0x0  0x0 0x0
0xc00041f0: 0x0  0x0  0x0 0x0
0xc0004200: 0x0  0x0  0x0 0x0
0xc0004210: 0x0  0x0  0x0 0x0
0xc0004220: 0x0  0x0  0x0 0x0
0xc0004230: 0x0  0x0  0x0 0x0
0xc0004240: 0x0  0x0  0x0 0x0
0xc0004250: 0x0  0x0  0x0 0x0
0xc0004260: 0x0  0x0  0x0 0x0
0xc0004270: 0x0  0x0  0x0 0x0
0xc0004280: 0x0  0x0  0x0 0x0
0xc0004290: 0x0  0x0  0x0 0x0
0xc00042a0: 0x0  0x0  0x0 0x0
0xc00042b0: 0x0  0x0  0x0 0x0
0xc00042c0: 0x0  0x0  0x0 0x0
0xc00042d0: 0x0  0x0  0x0 0x0
0xc00042e0: 0x0  0x0  0x0 0x0
0xc00042f0: 0x0  0x0  0x0 0x0
0xc0004300: 0x0  0x0  0x0 0x0
0xc0004310: 0x0  0x0  0x0 0x0
0xc0004320: 0x0  0x0  0x0 0x0
0xc0004330: 0x0  0x0  0x0 0x0
0xc0004340: 0x0  0x0  0x0 0x0
0xc0004350: 0x0  0x0  0x0 0x0
0xc0004360: 0x0  0x0  0x0 0x0
0xc0004370: 0x0  0x0  0x0 0x0
0xc0004380: 0x0  0x0  0x0 0x0
0xc0004390: 0x0  0x0  0x0 0x0
0xc00043a0: 0x0  0x0  0x0 0x0
0xc00043b0: 0x0  0x0  0x0 0x0
0xc00043c0: 0x0  0x0  0x0 0x0
0xc00043d0: 0x0  0x0  0x0 0x0
0xc00043e0: 0x0  0x0  0x0 0x0
0xc00043f0: 0x0  0x0  0x0 0x0
0xc0004400: 0x0  0x0  0x0 0x0
0xc0004410: 0x0  0x0  0x0 0x0
0xc0004420: 0x0  0x0  0x0 0x0
0xc0004430: 0x0  0x0  0x0 0x0
0xc0004440: 0x0  0x0  0x0 0x0
0xc0004450: 0x0  0x0  0x0 0x0
0xc0004460: 0x0  0x0  0x0 0x0
0xc0004470: 0x0  0x0  0x0 0x0
0xc0004480: 0x0  0x0  0x0 0x0
0xc0004490: 0x0  0x0  0x0 0x0
0xc00044a0: 0x0  0x0  0x0 0x0
0xc00044b0: 0x0  0x0  0x0 0x0
0xc00044c0: 0x0  0x0  0x0 0x0
0xc00044d0: 0x0  0x0  0x0 0x0
0xc00044e0: 0x0  0x0  0x0 0x0
0xc00044f0: 0x0  0x0  0x0 0x0
0xc0004500: 0x0  0x0  0x0 0x0
0xc0004510: 0x0  0x0  0x0 0x0
0xc0004520: 0x0  0x0  0x0 0x0
0xc0004530: 0x0  0x0  0x0 0x0
0xc0004540: 0x0  0x0  0x0 0x0
0xc0004550: 0x0  0x0  0x0 0x0
0xc0004560: 0x0  0x0  0x0 0x0
0xc0004570: 0x0  0x0  0x0 0x0
0xc0004580: 0x0  0x0  0x0 0x0
0xc0004590: 0x0  0x0  0x0 0x0
0xc00045a0: 0x0  0x0  0x0 0x0
0xc00045b0: 0x0  0x0  0x0 0x0
0xc00045c0: 0x0  0x0  0x0 0x0
0xc00045d0: 0x0  0x0  0x0 0x0
0xc00045e0: 0x0  0x0  0x0 0x0
0xc00045f0: 0x0  0x0  0x0 0x0
0xc0004600: 0x0  0x0  0x0 0x0
0xc0004610: 0x0  0x0  0x0 0x0
0xc0004620: 0x0  0x0  0x0 0x0
0xc0004630: 0x0  0x0  0x0 0x0
0xc0004640: 0x0  0x0  0x0 0x0
0xc0004650: 0x0  0x0  0x0 0x0
0xc0004660: 0x0  0x0  0x0 0x0
0xc0004670: 0x0  0x0  0x0 0x0
0xc0004680: 0x0  0x0  0x0 0x0
0xc0004690: 0x0  0x0  0x0 0x0
0xc00046a0: 0x0  0x0  0x0 0x0
0xc00046b0: 0x0  0x0  0x0 0x0
0xc00046c0: 0x0  0x0  0x0 0x0
0xc00046d0: 0x0  0x0  0x0 0x0
0xc00046e0: 0x0  0x0  0x0 0x0
0xc00046f0: 0x0  0x0  0x0 0x0
0xc0004700: 0x0  0x0  0x0 0x0
0xc0004710: 0x0  0x0  0x0 0x0
0xc0004720: 0x0  0x0  0x0 0x0
0xc0004730: 0x0  0x0  0x0 0x0
0xc0004740: 0x0  0x0  0x0 0x0
0xc0004750: 0x0  0x0  0x0 0x0
0xc0004760: 0x0  0x0  0x0 0x0
0xc0004770: 0x0  0x0  0x0 0x0
0xc0004780: 0x0  0x0  0x0 0x0
0xc0004790: 0x0  0x0  0x0 0x0
0xc00047a0: 0x0  0x0  0x0 0x0
0xc00047b0: 0x0  0x0  0x0 0x0
0xc00047c0: 0x0  0x0  0x0 0x0
0xc00047d0: 0x0  0x0  0x0 0x0
0xc00047e0: 0x0  0x0  0x0 0x0
0xc00047f0: 0x0  0x0  0x0 0x0
0xc0004800: 0x0  0x0  0x0 0x0
0xc0004810: 0x0  0x0  0x0 0x0
0xc0004820: 0x0  0x0  0x0 0x0
0xc0004830: 0x0  0x0  0x0 0x0
0xc0004840: 0x0  0x0  0x0 0x0
0xc0004850: 0x0  0x0  0x0 0x0
0xc0004860: 0x0  0x0  0x0 0x0
0xc0004870: 0x0  0x0  0x0 0x0
0xc0004880: 0x0  0x0  0x0 0x0
0xc0004890: 0x0  0x0  0x0 0x0
0xc00048a0: 0x0  0x0  0x0 0x0
0xc00048b0: 0x0  0x0  0x0 0x0
0xc00048c0: 0x0  0x0  0x0 0x0
0xc00048d0: 0x0  0x0  0x0 0x0
0xc00048e0: 0x0  0x0  0x0 0x0
0xc00048f0: 0x0  0x0  0x0 0x0
0xc0004900: 0x0  0x0  0x0 0x0
0xc0004910: 0x0  0x0  0x0 0x0
0xc0004920: 0x0  0x0  0x0 0x0
0xc0004930: 0x0  0x0  0x0 0x0
0xc0004940: 0x0  0x0  0x0 0x0
0xc0004950: 0x0  0x0  0x0 0x0
0xc0004960: 0x0  0x0  0x0 0x0
0xc0004970: 0x0  0x0  0x0 0x0
0xc0004980: 0x0  0x0  0x0 0x0
0xc0004990: 0x0  0x0  0x0 0x0
0xc00049a0: 0x0  0x0  0x0 0x0
0xc00049b0: 0x0  0x0  0x0 0x0
0xc00049c0: 0x0  0x0  0x0 0x0
0xc00049d0: 0x0  0x0  0x0 0x0
0xc00049e0: 0x0  0x0  0x0 0x0
0xc00049f0: 0x0  0x0  0x0 0x0
0xc0004a00: 0x0  0x0  0x0 0x0
0xc0004a10: 0x0  0x0  0x0 0x0
0xc0004a20: 0x0  0x0  0x0 0x0
0xc0004a30: 0x0  0x0  0x0 0x0
0xc0004a40: 0x0  0x0  0x0 0x0
0xc0004a50: 0x0  0x0  0x0 0x0
0xc0004a60: 0x0  0x0  0x0 0x0
0xc0004a70: 0x0  0x0  0x0 0x0
0xc0004a80: 0x0  0x0  0x0 0x0
0xc0004a90: 0x0  0x0  0x0 0x0
0xc0004aa0: 0x0  0x0  0x0 0x0
0xc0004ab0: 0x0  0x0  0x0 0x0
0xc0004ac0: 0x0  0x0  0x0 0x0
0xc0004ad0: 0x0  0x0  0x0 0x0
0xc0004ae0: 0x0  0x0  0x0 0x0
0xc0004af0: 0x0  0x0  0x0 0x0
0xc0004b00: 0x0  0x0  0x0 0x0
0xc0004b10: 0x0  0x0  0x0 0x0
0xc0004b20: 0x0  0x0  0x0 0x0
0xc0004b30: 0x0  0x0  0x0 0x0
0xc0004b40: 0x0  0x0  0x0 0x0
0xc0004b50: 0x0  0x0  0x0 0x0
0xc0004b60: 0x0  0x0  0x0 0x0
0xc0004b70: 0x0  0x0  0x0 0x0
0xc0004b80: 0x0  0x0  0x0 0x0
0xc0004b90: 0x0  0x0  0x0 0x0
0xc0004ba0: 0x0  0x0  0x0 0x0
0xc0004bb0: 0x0  0x0  0x0 0x0
0xc0004bc0: 0x0  0x0  0x0 0x0
0xc0004bd0: 0x0  0x0  0x0 0x0
0xc0004be0: 0x0  0x0  0x0 0x0
0xc0004bf0: 0x0  0x0  0x0 0x0
0xc0004c00: 0x0  0x0  0x0 0x0
0xc0004c10: 0x0  0x0  0x0 0x0
0xc0004c20: 0x0  0x0  0x0 0x0
0xc0004c30: 0x0  0x0  0x0 0x0
0xc0004c40: 0x0  0x0  0x0 0x0
0xc0004c50: 0x0  0x0  0x0 0x0
0xc0004c60: 0x0  0x0  0x0 0x0
0xc0004c70: 0x0  0x0  0x0 0x0
0xc0004c80: 0x0  0x0  0x0 0x0
0xc0004c90: 0x0  0x0  0x0 0x0
0xc0004ca0: 0x0  0x0  0x0 0x0
0xc0004cb0: 0x0  0x0  0x0 0x0
0xc0004cc0: 0x0  0x0  0x0 0x0
0xc0004cd0: 0x0  0x0  0x0 0x0
0xc0004ce0: 0x0  0x0  0x0 0x0
0xc0004cf0: 0x0  0x0  0x0 0x0
0xc0004d00: 0x0  0x0  0x0 0x0
0xc0004d10: 0x0  0x0  0x0 0x0
0xc0004d20: 0x0  0x0  0x0 0x0
0xc0004d30: 0x0  0x0  0x0 0x0
0xc0004d40: 0x0  0x0  0x0 0x0
0xc0004d50: 0x0  0x0  0x0 0x0
0xc0004d60: 0x0  0x0  0x0 0x0
0xc0004d70: 0x0  0x0  0x0 0x0
0xc0004d80: 0x0  0x0  0x0 0x0
0xc0004d90: 0x0  0x0  0x0 0x0
0xc0004da0: 0x0  0x0  0x0 0x0
0xc0004db0: 0x0  0x0  0x0 0x0
0xc0004dc0: 0x0  0x0  0x0 0x0
0xc0004dd0: 0x0  0x0  0x0 0x0
0xc0004de0: 0x0  0x0  0x0 0x0
0xc0004df0: 0x0  0x0  0x0 0x0
0xc0004e00: 0x0  0x0  0x0 0x0
0xc0004e10: 0x0  0x0  0x0 0x0
0xc0004e20: 0x0  0x0  0x0 0x0
0xc0004e30: 0x0  0x0  0x0 0x0
0xc0004e40: 0x0  0x0  0x0 0x0
0xc0004e50: 0x0  0x0  0x0 0x0
0xc0004e60: 0x0  0x0  0x0 0x0
0xc0004e70: 0x0  0x0  0x0 0x0
0xc0004e80: 0x0  0x0  0x0 0x0
0xc0004e90: 0x0  0x0  0x0 0x0
0xc0004ea0: 0x0  0x0  0x0 0x0
0xc0004eb0: 0x0  0x0  0x0 0x0
0xc0004ec0: 0x0  0x0  0x0 0x0
0xc0004ed0: 0x0  0x0  0x0 0x0
0xc0004ee0: 0x0  0x0  0x0 0x0
0xc0004ef0: 0x0  0x0  0x0 0x0
0xc0004f00: 0x0  0x0  0x0 0x0
0xc0004f10: 0x0  0x0  0x0 0x0
0xc0004f20: 0x0  0x0  0x0 0x0
0xc0004f30: 0x0  0x0  0x0 0x0
0xc0004f40: 0x0  0x0  0x0 0x0
0xc0004f50: 0x0  0x0  0x0 0x0
0xc0004f60: 0x0  0x0  0x0 0x0
0xc0004f70: 0x0  0x0  0x0 0x0
0xc0004f80: 0x0  0x0  0x0 0x0
0xc0004f90: 0x0  0x0  0x0 0x0
0xc0004fa0: 0x0  0x0  0x0 0x0
0xc0004fb0: 0x0  0x0  0x0 0x0
0xc0004fc0: 0x0  0x0  0x0 0x0
0xc0004fd0: 0x0  0x0  0x0 0x0
0xc0004fe0: 0x0  0x0  0x0 0x0
0xc0004ff0: 0x0  0x0  0x0 0x0
0xc0005000: 0x0  0x0  0x0 0x0
0xc0005010: 0x0  0x0  0x0 0x0
0xc0005020: 0x0  0x0  0x0 0x0
0xc0005030: 0x0  0x0  0x0 0x0
0xc0005040: 0x0  0x0  0x0 0x0
0xc0005050: 0x0  0x0  0x0 0x0
0xc0005060: 0x0  0x0  0x0 0x0
0xc0005070: 0x0  0x0  0x0 0x0
0xc0005080: 0x0  0x0  0x0 0x0
0xc0005090: 0x0  0x0  0x0 0x0
0xc00050a0: 0x0  0x0  0x0 0x0
0xc00050b0: 0x0  0x0  0x0 0x0
0xc00050c0: 0x0  0x0  0x0 0x0
0xc00050d0: 0x0  0x0  0x0 0x0
0xc00050e0: 0x0  0x0  0x0 0x0
0xc00050f0: 0x0  0x0  0x0 0x0
0xc0005100: 0x0  0x0  0x0 0x0
0xc0005110: 0x0  0x0  0x0 0x0
0xc0005120: 0x0  0x0  0x0 0x0
0xc0005130: 0x0  0x0  0x0 0x0
0xc0005140: 0x0  0x0  0x0 0x0
0xc0005150: 0x0  0x0  0x0 0x0
0xc0005160: 0x0  0x0  0x0 0x0
0xc0005170: 0x0  0x0  0x0 0x0
0xc0005180: 0x0  0x0  0x0 0x0
0xc0005190: 0x0  0x0  0x0 0x0
0xc00051a0: 0x0  0x0  0x0 0x0
0xc00051b0: 0x0  0x0  0x0 0x0
0xc00051c0: 0x0  0x0  0x0 0x0
0xc00051d0: 0x0  0x0  0x0 0x0
0xc00051e0: 0x0  0x0  0x0 0x0
0xc00051f0: 0x0  0x0  0x0 0x0
0xc0005200: 0x0  0x0  0x0 0x0
0xc0005210: 0x0  0x0  0x0 0x0
0xc0005220: 0x0  0x0  0x0 0x0
0xc0005230: 0x0  0x0  0x0 0x0
0xc0005240: 0x0  0x0  0x0 0x0
0xc0005250: 0x0  0x0  0x0 0x0
0xc0005260: 0x0  0x0  0x0 0x0
0xc0005270: 0x0  0x0  0x0 0x0
0xc0005280: 0x0  0x0  0x0 0x0
0xc0005290: 0x0  0x0  0x0 0x0
0xc00052a0: 0x0  0x0  0x0 0x0
0xc00052b0: 0x0  0x0  0x0 0x0
0xc00052c0: 0x0  0x0  0x0 0x0
0xc00052d0: 0x0  0x0  0x0 0x0
0xc00052e0: 0x0  0x0  0x0 0x0
0xc00052f0: 0x0  0x0  0x0 0x0
0xc0005300: 0x0  0x0  0x0 0x0
0xc0005310: 0x0  0x0  0x0 0x0
0xc0005320: 0x0  0x0  0x0 0x0
0xc0005330: 0x0  0x0  0x0 0x0
0xc0005340: 0x0  0x0  0x0 0x0
0xc0005350: 0x0  0x0  0x0 0x0
0xc0005360: 0x0  0x0  0x0 0x0
0xc0005370: 0x0  0x0  0x0 0x0
0xc0005380: 0x0  0x0  0x0 0x0
0xc0005390: 0x0  0x0  0x0 0x0
0xc00053a0: 0x0  0x0  0x0 0x0
0xc00053b0: 0x0  0x0  0x0 0x0
0xc00053c0: 0x0  0x0  0x0 0x0
0xc00053d0: 0x0  0x0  0x0 0x0
0xc00053e0: 0x0  0x0  0x0 0x0
0xc00053f0: 0x0  0x0  0x0 0x0
0xc0005400: 0x0  0x0  0x0 0x0
0xc0005410: 0x0  0x0  0x0 0x0
0xc0005420: 0x0  0x0  0x0 0x0
0xc0005430: 0x0  0x0  0x0 0x0
0xc0005440: 0x0  0x0  0x0 0x0
0xc0005450: 0x0  0x0  0x0 0x0
0xc0005460: 0x0  0x0  0x0 0x0
0xc0005470: 0x0  0x0  0x0 0x0
0xc0005480: 0x0  0x0  0x0 0x0
0xc0005490: 0x0  0x0  0x0 0x0
0xc00054a0: 0x0  0x0  0x0 0x0
0xc00054b0: 0x0  0x0  0x0 0x0
0xc00054c0: 0x0  0x0  0x0 0x0
0xc00054d0: 0x0  0x0  0x0 0x0
0xc00054e0: 0x0  0x0  0x0 0x0
0xc00054f0: 0x0  0x0  0x0 0x0
0xc0005500: 0x0  0x0  0x0 0x0
0xc0005510: 0x0  0x0  0x0 0x0
0xc0005520: 0x0  0x0  0x0 0x0
0xc0005530: 0x0  0x0  0x0 0x0
0xc0005540: 0x0  0x0  0x0 0x0
0xc0005550: 0x0  0x0  0x0 0x0
0xc0005560: 0x0  0x0  0x0 0x0
0xc0005570: 0x0  0x0  0x0 0x0
0xc0005580: 0x0  0x0  0x0 0x0
0xc0005590: 0x0  0x0  0x0 0x0
0xc00055a0: 0x0  0x0  0x0 0x0
0xc00055b0: 0x0  0x0  0x0 0x0
0xc00055c0: 0x0  0x0  0x0 0x0
0xc00055d0: 0x0  0x0  0x0 0x0
0xc00055e0: 0x0  0x0  0x0 0x0
0xc00055f0: 0x0  0x0  0x0 0x0
0xc0005600: 0x0  0x0  0x0 0x0
0xc0005610: 0x0  0x0  0x0 0x0
0xc0005620: 0x0  0x0  0x0 0x0
0xc0005630: 0x0  0x0  0x0 0x0
0xc0005640: 0x0  0x0  0x0 0x0
0xc0005650: 0x0  0x0  0x0 0x0
0xc0005660: 0x0  0x0  0x0 0x0
0xc0005670: 0x0  0x0  0x0 0x0
0xc0005680: 0x0  0x0  0x0 0x0
0xc0005690: 0x0  0x0  0x0 0x0
0xc00056a0: 0x0  0x0  0x0 0x0
0xc00056b0: 0x0  0x0  0x0 0x0
0xc00056c0: 0x0  0x0  0x0 0x0
0xc00056d0: 0x0  0x0  0x0 0x0
0xc00056e0: 0x0  0x0  0x0 0x0
0xc00056f0: 0x0  0x0  0x0 0x0
0xc0005700: 0x0  0x0  0x0 0x0
0xc0005710: 0x0  0x0  0x0 0x0
0xc0005720: 0x0  0x0  0x0 0x0
0xc0005730: 0x0  0x0  0x0 0x0
0xc0005740: 0x0  0x0  0x0 0x0
0xc0005750: 0x0  0x0  0x0 0x0
0xc0005760: 0x0  0x0  0x0 0x0
0xc0005770: 0x0  0x0  0x0 0x0
0xc0005780: 0x0  0x0  0x0 0x0
0xc0005790: 0x0  0x0  0x0 0x0
0xc00057a0: 0x0  0x0  0x0 0x0
0xc00057b0: 0x0  0x0  0x0 0x0
0xc00057c0: 0x0  0x0  0x0 0x0
0xc00057d0: 0x0  0x0  0x0 0x0
0xc00057e0: 0x0  0x0  0x0 0x0
0xc00057f0: 0x0  0x0  0x0 0x0
0xc0005800: 0x0  0x0  0x0 0x0
0xc0005810: 0x0  0x0  0x0 0x0
0xc0005820: 0x0  0x0  0x0 0x0
0xc0005830: 0x0  0x0  0x0 0x0
0xc0005840: 0x0  0x0  0x0 0x0
0xc0005850: 0x0  0x0  0x0 0x0
0xc0005860: 0x0  0x0  0x0 0x0
0xc0005870: 0x0  0x0  0x0 0x0
0xc0005880: 0x0  0x0  0x0 0x0
0xc0005890: 0x0  0x0  0x0 0x0
0xc00058a0: 0x0  0x0  0x0 0x0
0xc00058b0: 0x0  0x0  0x0 0x0
0xc00058c0: 0x0  0x0  0x0 0x0
0xc00058d0: 0x0  0x0  0x0 0x0
0xc00058e0: 0x0  0x0  0x0 0x0
0xc00058f0: 0x0  0x0  0x0 0x0
0xc0005900: 0x0  0x0  0x0 0x0
0xc0005910: 0x0  0x0  0x0 0x0
0xc0005920: 0x0  0x0  0x0 0x0
0xc0005930: 0x0  0x0  0x0 0x0
0xc0005940: 0x0  0x0  0x0 0x0
0xc0005950: 0x0  0x0  0x0 0x0
0xc0005960: 0x0  0x0  0x0 0x0
0xc0005970: 0x0  0x0  0x0 0x0
0xc0005980: 0x0  0x0  0x0 0x0
0xc0005990: 0x0  0x0  0x0 0x0
0xc00059a0: 0x0  0x0  0x0 0x0
0xc00059b0: 0x0  0x0  0x0 0x0
0xc00059c0: 0x0  0x0  0x0 0x0
0xc00059d0: 0x0  0x0  0x0 0x0
0xc00059e0: 0x0  0x0  0x0 0x0
0xc00059f0: 0x0  0x0  0x0 0x0
0xc0005a00: 0x0  0x0  0x0 0x0
0xc0005a10: 0x0  0x0  0x0 0x0
0xc0005a20: 0x0  0x0  0x0 0x0
0xc0005a30: 0x0  0x0  0x0 0x0
0xc0005a40: 0x0  0x0  0x0 0x0
0xc0005a50: 0x0  0x0  0x0 0x0
0xc0005a60: 0x0  0x0  0x0 0x0
0xc0005a70: 0x0  0x0  0x0 0x0
0xc0005a80: 0x0  0x0  0x0 0x0
0xc0005a90: 0x0  0x0  0x0 0x0
0xc0005aa0: 0x0  0x0  0x0 0x0
0xc0005ab0: 0x0  0x0  0x0 0x0
0xc0005ac0: 0x0  0x0  0x0 0x0
0xc0005ad0: 0x0  0x0  0x0 0x0
0xc0005ae0: 0x0  0x0  0x0 0x0
0xc0005af0: 0x0  0x0  0x0 0x0
0xc0005b00: 0x0  0x0  0x0 0x0
0xc0005b10: 0x0  0x0  0x0 0x0
0xc0005b20: 0x0  0x0  0x0 0x0
0xc0005b30: 0x0  0x0  0x0 0x0
0xc0005b40: 0x0  0x0  0x0 0x0
0xc0005b50: 0x0  0x0  0x0 0x0
0xc0005b60: 0x0  0x0  0x0 0x0
0xc0005b70: 0x0  0x0  0x0 0x0
0xc0005b80: 0x0  0x0  0x0 0x0
0xc0005b90: 0x0  0x0  0x0 0x0
0xc0005ba0: 0x0  0x0  0x0 0x0
0xc0005bb0: 0x0  0x0  0x0 0x0
0xc0005bc0: 0x0  0x0  0x0 0x0
0xc0005bd0: 0x0  0x0  0x0 0x0
0xc0005be0: 0x0  0x0  0x0 0x0
0xc0005bf0: 0x0  0x0  0x0 0x0
0xc0005c00: 0x0  0x0  0x0 0x0
0xc0005c10: 0x0  0x0  0x0 0x0
0xc0005c20: 0x0  0x0  0x0 0x0
0xc0005c30: 0x0  0x0  0x0 0x0
0xc0005c40: 0x0  0x0  0x0 0x0
0xc0005c50: 0x0  0x0  0x0 0x0
0xc0005c60: 0x0  0x0  0x0 0x0
0xc0005c70: 0x0  0x0  0x0 0x0
0xc0005c80: 0x0  0x0  0x0 0x0
0xc0005c90: 0x0  0x0  0x0 0x0
0xc0005ca0: 0x0  0x0  0x0 0x0
0xc0005cb0: 0x0  0x0  0x0 0x0
0xc0005cc0: 0x0  0x0  0x0 0x0
0xc0005cd0: 0x0  0x0  0x0 0x0
0xc0005ce0: 0x0  0x0  0x0 0x0
0xc0005cf0: 0x0  0x0  0x0 0x0
0xc0005d00: 0x0  0x0  0x0 0x0
0xc0005d10: 0x0  0x0  0x0 0x0
0xc0005d20: 0x0  0x0  0x0 0x0
0xc0005d30: 0x0  0x0  0x0 0x0
0xc0005d40: 0x0  0x0  0x0 0x0
0xc0005d50: 0x0  0x0  0x0 0x0
0xc0005d60: 0x0  0x0  0x0 0x0
0xc0005d70: 0x0  0x0  0x0 0x0
0xc0005d80: 0x0  0x0  0x0 0x0
0xc0005d90: 0x0  0x0  0x0 0x0
0xc0005da0: 0x0  0x0  0x0 0x0
0xc0005db0: 0x0  0x0  0x0 0x0
0xc0005dc0: 0x0  0x0  0x0 0x0
0xc0005dd0: 0x0  0x0  0x0 0x0
0xc0005de0: 0x0  0x0  0x0 0x0
0xc0005df0: 0x0  0x0  0x0 0x0
0xc0005e00: 0x0  0x0  0x0 0x0
0xc0005e10: 0x0  0x0  0x0 0x0
0xc0005e20: 0x0  0x0  0x0 0x0
0xc0005e30: 0x0  0x0  0x0 0x0
0xc0005e40: 0x0  0x0  0x0 0x0
0xc0005e50: 0x0  0x0  0x0 0x0
0xc0005e60: 0x0  0x0  0x0 0x0
0xc0005e70: 0x0  0x0  0x0 0x0
0xc0005e80: 0x0  0x0  0x0 0x0
0xc0005e90: 0x0  0x0  0x0 0x0
0xc0005ea0: 0x0  0x0  0x0 0x0
0xc0005eb0: 0x0  0x0  0x0 0x0
0xc0005ec0: 0x0  0x0  0x0 0x0
0xc0005ed0: 0x0  0x0  0x0 0x0
0xc0005ee0: 0x0  0x0  0x0 0x0
0xc0005ef0: 0x0  0x0  0x0 0x0
0xc0005f00: 0x0  0x0  0x0 0x0
0xc0005f10: 0x0  0x0  0x0 0x0
0xc0005f20: 0x0  0x0  0x0 0x0
0xc0005f30: 0x0  0x0  0x0 0x0
0xc0005f40: 0x0  0x0  0x0 0x0
0xc0005f50: 0x0  0x0  0x0 0x0
0xc0005f60: 0x0  0x0  0x0 0x0
0xc0005f70: 0x0  0x0  0x0 0x0
0xc0005f80: 0x0  0x0  0x0 0x0
0xc0005f90: 0x0  0x0  0x0 0x0
0xc0005fa0: 0x0  0x0  0x0 0x0
0xc0005fb0: 0x0  0x0  0x0 0x0
0xc0005fc0: 0x0  0x0  0x0 0x0
0xc0005fd0: 0x0  0x0  0x0 0x0
0xc0005fe0: 0x0  0x0  0x0 0x0
0xc0005ff0: 0x0  0x0  0x0 0x0
0xc0006000: 0x0  0x0  0x0 0x0
0xc0006010: 0x0  0x0  0x0 0x0
0xc0006020: 0x0  0x0  0x0 0x0
0xc0006030: 0x0  0x0  0x0 0x0
0xc0006040: 0x0  0x0  0x0 0x0
0xc0006050: 0x0  0x0  0x0 0x0
0xc0006060: 0x0  0x0  0x0 0x0
0xc0006070: 0x0  0x0  0x0 0x0
0xc0006080: 0x0  0x0  0x0 0x0
0xc0006090: 0x0  0x0  0x0 0x0
0xc00060a0: 0x0  0x0  0x0 0x0
0xc00060b0: 0x0  0x0  0x0 0x0
0xc00060c0: 0x0  0x0  0x0 0x0
0xc00060d0: 0x0  0x0  0x0 0x0
0xc00060e0: 0x0  0x0  0x0 0x0
0xc00060f0: 0x0  0x0  0x0 0x0
0xc0006100: 0x0  0x0  0x0 0x0
0xc0006110: 0x0  0x0  0x0 0x0
0xc0006120: 0x0  0x0  0x0 0x0
0xc0006130: 0x0  0x0  0x0 0x0
0xc0006140: 0x0  0x0  0x0 0x0
0xc0006150: 0x0  0x0  0x0 0x0
0xc0006160: 0x0  0x0  0x0 0x0
0xc0006170: 0x0  0x0  0x0 0x0
0xc0006180: 0x0  0x0  0x0 0x0
0xc0006190: 0x0  0x0  0x0 0x0
0xc00061a0: 0x0  0x0  0x0 0x0
0xc00061b0: 0x0  0x0  0x0 0x0
0xc00061c0: 0x0  0x0  0x0 0x0
0xc00061d0: 0x0  0x0  0x0 0x0
0xc00061e0: 0x0  0x0  0x0 0x0
0xc00061f0: 0x0  0x0  0x0 0x0
0xc0006200: 0x0  0x0  0x0 0x0
0xc0006210: 0x0  0x0  0x0 0x0
0xc0006220: 0x0  0x0  0x0 0x0
0xc0006230: 0x0  0x0  0x0 0x0
0xc0006240: 0x0  0x0  0x0 0x0
0xc0006250: 0x0  0x0  0x0 0x0
0xc0006260: 0x0  0x0  0x0 0x0
0xc0006270: 0x0  0x0  0x0 0x0
0xc0006280: 0x0  0x0  0x0 0x0
0xc0006290: 0x0  0x0  0x0 0x0
0xc00062a0: 0x0  0x0  0x0 0x0
0xc00062b0: 0x0  0x0  0x0 0x0
0xc00062c0: 0x0  0x0  0x0 0x0
0xc00062d0: 0x0  0x0  0x0 0x0
0xc00062e0: 0x0  0x0  0x0 0x0
0xc00062f0: 0x0  0x0  0x0 0x0
0xc0006300: 0x0  0x0  0x0 0x0
0xc0006310: 0x0  0x0  0x0 0x0
0xc0006320: 0x0  0x0  0x0 0x0
0xc0006330: 0x0  0x0  0x0 0x0
0xc0006340: 0x0  0x0  0x0 0x0
0xc0006350: 0x0  0x0  0x0 0x0
0xc0006360: 0x0  0x0  0x0 0x0
0xc0006370: 0x0  0x0  0x0 0x0
0xc0006380: 0x0  0x0  0x0 0x0
0xc0006390: 0x0  0x0  0x0 0x0
0xc00063a0: 0x0  0x0  0x0 0x0
0xc00063b0: 0x0  0x0  0x0 0x0
0xc00063c0: 0x0  0x0  0x0 0x0
0xc00063d0: 0x0  0x0  0x0 0x0
0xc00063e0: 0x0  0x0  0x0 0x0
0xc00063f0: 0x0  0x0  0x0 0x0
0xc0006400: 0x0  0x0  0x0 0x0
0xc0006410: 0x0  0x0  0x0 0x0
0xc0006420: 0x0  0x0  0x0 0x0
0xc0006430: 0x0  0x0  0x0 0x0
0xc0006440: 0x0  0x0  0x0 0x0
0xc0006450: 0x0  0x0  0x0 0x0
0xc0006460: 0x0  0x0  0x0 0x0
0xc0006470: 0x0  0x0  0x0 0x0
0xc0006480: 0x0  0x0  0x0 0x0
0xc0006490: 0x0  0x0  0x0 0x0
0xc00064a0: 0x0  0x0  0x0 0x0
0xc00064b0: 0x0  0x0  0x0 0x0
0xc00064c0: 0x0  0x0  0x0 0x0
0xc00064d0: 0x0  0x0  0x0 0x0
0xc00064e0: 0x0  0x0  0x0 0x0
0xc00064f0: 0x0  0x0  0x0 0x0
0xc0006500: 0x0  0x0  0x0 0x0
0xc0006510: 0x0  0x0  0x0 0x0
0xc0006520: 0x0  0x0  0x0 0x0
0xc0006530: 0x0  0x0  0x0 0x0
0xc0006540: 0x0  0x0  0x0 0x0
0xc0006550: 0x0  0x0  0x0 0x0
0xc0006560: 0x0  0x0  0x0 0x0
0xc0006570: 0x0  0x0  0x0 0x0
0xc0006580: 0x0  0x0  0x0 0x0
0xc0006590: 0x0  0x0  0x0 0x0
0xc00065a0: 0x0  0x0  0x0 0x0
0xc00065b0: 0x0  0x0  0x0 0x0
0xc00065c0: 0x0  0x0  0x0 0x0
0xc00065d0: 0x0  0x0  0x0 0x0
0xc00065e0: 0x0  0x0  0x0 0x0
0xc00065f0: 0x0  0x0  0x0 0x0
0xc0006600: 0x0  0x0  0x0 0x0
0xc0006610: 0x0  0x0  0x0 0x0
0xc0006620: 0x0  0x0  0x0 0x0
0xc0006630: 0x0  0x0  0x0 0x0
0xc0006640: 0x0  0x0  0x0 0x0
0xc0006650: 0x0  0x0  0x0 0x0
0xc0006660: 0x0  0x0  0x0 0x0
0xc0006670: 0x0  0x0  0x0 0x0
0xc0006680: 0x0  0x0  0x0 0x0
0xc0006690: 0x0  0x0  0x0 0x0
0xc00066a0: 0x0  0x0  0x0 0x0
0xc00066b0: 0x0  0x0  0x0 0x0
0xc00066c0: 0x0  0x0  0x0 0x0
0xc00066d0: 0x0  0x0  0x0 0x0
0xc00066e0: 0x0  0x0  0x0 0x0
0xc00066f0: 0x0  0x0  0x0 0x0
0xc0006700: 0x0  0x0  0x0 0x0
0xc0006710: 0x0  0x0  0x0 0x0
0xc0006720: 0x0  0x0  0x0 0x0
0xc0006730: 0x0  0x0  0x0 0x0
0xc0006740: 0x0  0x0  0x0 0x0
0xc0006750: 0x0  0x0  0x0 0x0
0xc0006760: 0x0  0x0  0x0 0x0
0xc0006770: 0x0  0x0  0x0 0x0
0xc0006780: 0x0  0x0  0x0 0x0
0xc0006790: 0x0  0x0  0x0 0x0
0xc00067a0: 0x0  0x0  0x0 0x0
0xc00067b0: 0x0  0x0  0x0 0x0
0xc00067c0: 0x0  0x0  0x0 0x0
0xc00067d0: 0x0  0x0  0x0 0x0
0xc00067e0: 0x0  0x0  0x0 0x0
0xc00067f0: 0x0  0x0  0x0 0x0
0xc0006800: 0x0  0x0  0x0 0x0
0xc0006810: 0x0  0x0  0x0 0x0
0xc0006820: 0x0  0x0  0x0 0x0
0xc0006830: 0x0  0x0  0x0 0x0
0xc0006840: 0x0  0x0  0x0 0x0
0xc0006850: 0x0  0x0  0x0 0x0
0xc0006860: 0x0  0x0  0x0 0x0
0xc0006870: 0x0  0x0  0x0 0x0
0xc0006880: 0x0  0x0  0x0 0x0
0xc0006890: 0x0  0x0  0x0 0x0
0xc00068a0: 0x0  0x0  0x0 0x0
0xc00068b0: 0x0  0x0  0x0 0x0
0xc00068c0: 0x0  0x0  0x0 0x0
0xc00068d0: 0x0  0x0  0x0 0x0
0xc00068e0: 0x0  0x0  0x0 0x0
0xc00068f0: 0x0  0x0  0x0 0x0
0xc0006900: 0x0  0x0  0x0 0x0
0xc0006910: 0x0  0x0  0x0 0x0
0xc0006920: 0x0  0x0  0x0 0x0
0xc0006930: 0x0  0x0  0x0 0x0
0xc0006940: 0x0  0x0  0x0 0x0
0xc0006950: 0x0  0x0  0x0 0x0
0xc0006960: 0x0  0x0  0x0 0x0
0xc0006970: 0x0  0x0  0x0 0x0
0xc0006980: 0x0  0x0  0x0 0x0
0xc0006990: 0x0  0x0  0x0 0x0
0xc00069a0: 0x0  0x0  0x0 0x0
0xc00069b0: 0x0  0x0  0x0 0x0
0xc00069c0: 0x0  0x0  0x0 0x0
0xc00069d0: 0x0  0x0  0x0 0x0
0xc00069e0: 0x0  0x0  0x0 0x0
0xc00069f0: 0x0  0x0  0x0 0x0
0xc0006a00: 0x0  0x0  0x0 0x0
0xc0006a10: 0x0  0x0  0x0 0x0
0xc0006a20: 0x0  0x0  0x0 0x0
0xc0006a30: 0x0  0x0  0x0 0x0
0xc0006a40: 0x0  0x0  0x0 0x0
0xc0006a50: 0x0  0x0  0x0 0x0
0xc0006a60: 0x0  0x0  0x0 0x0
0xc0006a70: 0x0  0x0  0x0 0x0
0xc0006a80: 0x0  0x0  0x0 0x0
0xc0006a90: 0x0  0x0  0x0 0x0
0xc0006aa0: 0x0  0x0  0x0 0x0
0xc0006ab0: 0x0  0x0  0x0 0x0
0xc0006ac0: 0x0  0x0  0x0 0x0
0xc0006ad0: 0x0  0x0  0x0 0x0
0xc0006ae0: 0x0  0x0  0x0 0x0
0xc0006af0: 0x0  0x0  0x0 0x0
0xc0006b00: 0x0  0x0  0x0 0x0
0xc0006b10: 0x0  0x0  0x0 0x0
0xc0006b20: 0x0  0x0  0x0 0x0
0xc0006b30: 0x0  0x0  0x0 0x0
0xc0006b40: 0x0  0x0  0x0 0x0
0xc0006b50: 0x0  0x0  0x0 0x0
0xc0006b60: 0x0  0x0  0x0 0x0
0xc0006b70: 0x0  0x0  0x0 0x0
0xc0006b80: 0x0  0x0  0x0 0x0
0xc0006b90: 0x0  0x0  0x0 0x0
0xc0006ba0: 0x0  0x0  0x0 0x0
0xc0006bb0: 0x0  0x0  0x0 0x0
0xc0006bc0: 0x0  0x0  0x0 0x0
0xc0006bd0: 0x0  0x0  0x0 0x0
0xc0006be0: 0x0  0x0  0x0 0x0
0xc0006bf0: 0x0  0x0  0x0 0x0
0xc0006c00: 0x0  0x0  0x0 0x0
0xc0006c10: 0x0  0x0  0x0 0x0
0xc0006c20: 0x0  0x0  0x0 0x0
0xc0006c30: 0x0  0x0  0x0 0x0
0xc0006c40: 0x0  0x0  0x0 0x0
0xc0006c50: 0x0  0x0  0x0 0x0
0xc0006c60: 0x0  0x0  0x0 0x0
0xc0006c70: 0x0  0x0  0x0 0x0
0xc0006c80: 0x0  0x0  0x0 0x0
0xc0006c90: 0x0  0x0  0x0 0x0
0xc0006ca0: 0x0  0x0  0x0 0x0
0xc0006cb0: 0x0  0x0  0x0 0x0
0xc0006cc0: 0x0  0x0  0x0 0x0
0xc0006cd0: 0x0  0x0  0x0 0x0
0xc0006ce0: 0x0  0x0  0x0 0x0
0xc0006cf0: 0x0  0x0  0x0 0x0
0xc0006d00: 0x0  0x0  0x0 0x0
0xc0006d10: 0x0  0x0  0x0 0x0
0xc0006d20: 0x0  0x0  0x0 0x0
0xc0006d30: 0x0  0x0  0x0 0x0
0xc0006d40: 0x0  0x0  0x0 0x0
0xc0006d50: 0x0  0x0  0x0 0x0
0xc0006d60: 0x0  0x0  0x0 0x0
0xc0006d70: 0x0  0x0  0x0 0x0
0xc0006d80: 0x0  0x0  0x0 0x0
0xc0006d90: 0x0  0x0  0x0 0x0
0xc0006da0: 0x0  0x0  0x0 0x0
0xc0006db0: 0x0  0x0  0x0 0x0
0xc0006dc0: 0x0  0x0  0x0 0x0
0xc0006dd0: 0x0  0x0  0x0 0x0
0xc0006de0: 0x0  0x0  0x0 0x0
0xc0006df0: 0x0  0x0  0x0 0x0
0xc0006e00: 0x0  0x0  0x0 0x0
0xc0006e10: 0x0  0x0  0x0 0x0
0xc0006e20: 0x0  0x0  0x0 0x0
0xc0006e30: 0x0  0x0  0x0 0x0
0xc0006e40: 0x0  0x0  0x0 0x0
0xc0006e50: 0x0  0x0  0x0 0x0
0xc0006e60: 0x0  0x0  0x0 0x0
0xc0006e70: 0x0  0x0  0x0 0x0
0xc0006e80: 0x0  0x0  0x0 0x0
0xc0006e90: 0x0  0x0  0x0 0x0
0xc0006ea0: 0x0  0x0  0x0 0x0
0xc0006eb0: 0x0  0x0  0x0 0x0
0xc0006ec0: 0x0  0x0  0x0 0x0
0xc0006ed0: 0x0  0x0  0x0 0x0
0xc0006ee0: 0x0  0x0  0x0 0x0
0xc0006ef0: 0x0  0x0  0x0 0x0
0xc0006f00: 0x0  0x0  0x0 0x0
0xc0006f10: 0x0  0x0  0x0 0x0
0xc0006f20: 0x0  0x0  0x0 0x0
0xc0006f30: 0x0  0x0  0x0 0x0
0xc0006f40: 0x0  0x0  0x0 0x0
0xc0006f50: 0x0  0x0  0x0 0x0
0xc0006f60: 0x0  0x0  0x0 0x0
0xc0006f70: 0x0  0x0  0x0 0x0
0xc0006f80: 0x0  0x0  0x0 0x0
0xc0006f90: 0x0  0x0  0x0 0x0
0xc0006fa0: 0x0  0x0  0x0 0x0
0xc0006fb0: 0x0  0x0  0x0 0x0
0xc0006fc0: 0x2588011  0x2588411  0x0 0x0
0xc0006fd0: 0x0  0x0  0x0 0x0
0xc0006fe0: 0x0  0x0  0x0 0x0
0xc0006ff0: 0x0  0x0  0x0 0x0
0xc0007000: 0x41e  0x10041e  0x20041e 0x30041e
0xc0007010: 0x40041e  0x50041e  0x60041e 0x70041e
0xc0007020: 0x80041e  0x90041e  0xa0041e 0xb0041e
0xc0007030: 0xc0041e  0xd0041e  0xe0041e 0xf0041e
0xc0007040: 0x100041e  0x110041e  0x120041e 0x130041e
0xc0007050: 0x140041e  0x150041e  0x160041e 0x170041e
0xc0007060: 0x180041e  0x190041e  0x1a0041e 0x1b0041e
0xc0007070: 0x1c0041e  0x1d0041e  0x1e0041e 0x1f0041e
0xc0007080: 0x200041e  0x210041e  0x220041e 0x230041e
0xc0007090: 0x240041e  0x250041e  0x260041e 0x270041e
0xc00070a0: 0x280041e  0x290041e  0x2a0041e 0x2b0041e
0xc00070b0: 0x2c0041e  0x2d0041e  0x2e0041e 0x2f0041e
0xc00070c0: 0x300041e  0x310041e  0x320041e 0x330041e
0xc00070d0: 0x340041e  0x350041e  0x360041e 0x370041e
0xc00070e0: 0x380041e  0x390041e  0x3a0041e 0x3b0041e
0xc00070f0: 0x3c0041e  0x3d0041e  0x3e0041e 0x3f0041e
0xc0007100: 0x0  0x0  0x0 0x0
0xc0007110: 0x0  0x0  0x0 0x0
0xc0007120: 0x3c16011  0x3c16411  0x0 0x0
0xc0007130: 0x0  0x0  0x0 0x0
0xc0007140: 0x0  0x0  0x0 0x0
0xc0007150: 0x0  0x0  0x0 0x0
0xc0007160: 0x0  0x0  0x0 0x0
0xc0007170: 0x0  0x0  0x0 0x0
0xc0007180: 0x0  0x0  0x0 0x0
0xc0007190: 0x0  0x0  0x0 0x0
0xc00071a0: 0x0  0x0  0x0 0x0
0xc00071b0: 0x0  0x0  0x0 0x0
0xc00071c0: 0x0  0x0  0x0 0x0
0xc00071d0: 0x0  0x0  0x0 0x0
0xc00071e0: 0x0  0x0  0x0 0x0
0xc00071f0: 0x0  0x0  0x0 0x0
0xc0007200: 0x0  0x0  0x0 0x0
0xc0007210: 0x0  0x0  0x0 0x0
0xc0007220: 0x0  0x0  0x0 0x0
0xc0007230: 0x0  0x0  0x0 0x0
0xc0007240: 0x0  0x0  0x0 0x0
0xc0007250: 0x0  0x0  0x0 0x0
0xc0007260: 0x0  0x0  0x0 0x0
0xc0007270: 0x0  0x0  0x0 0x0
0xc0007280: 0x0  0x0  0x0 0x0
0xc0007290: 0x0  0x0  0x0 0x0
0xc00072a0: 0x0  0x0  0x0 0x0
0xc00072b0: 0x0  0x0  0x0 0x0
0xc00072c0: 0x0  0x0  0x0 0x0
0xc00072d0: 0x0  0x0  0x0 0x0
0xc00072e0: 0x0  0x0  0x0 0x0
0xc00072f0: 0x0  0x0  0x0 0x0
0xc0007300: 0x0  0x0  0x0 0x0
0xc0007310: 0x0  0x0  0x0 0x0
0xc0007320: 0x0  0x0  0x0 0x0
0xc0007330: 0x0  0x0  0x0 0x0
0xc0007340: 0x0  0x0  0x0 0x0
0xc0007350: 0x0  0x0  0x0 0x0
0xc0007360: 0x0  0x0  0x0 0x0
0xc0007370: 0x0  0x0  0x0 0x0
0xc0007380: 0x0  0x0  0x0 0x0
0xc0007390: 0x0  0x0  0x0 0x0
0xc00073a0: 0x0  0x0  0x0 0x0
0xc00073b0: 0x0  0x0  0x0 0x0
0xc00073c0: 0x0  0x0  0x0 0x0
0xc00073d0: 0x0  0x0  0x0 0x0
0xc00073e0: 0x0  0x0  0x0 0x0
0xc00073f0: 0x0  0x0  0x0 0x0
0xc0007400: 0x0  0x0  0x0 0x0
0xc0007410: 0x0  0x0  0x0 0x0
0xc0007420: 0x0  0x0  0x0 0x0
0xc0007430: 0x0  0x0  0x0 0x0
0xc0007440: 0x0  0x0  0x0 0x0
0xc0007450: 0x0  0x0  0x0 0x0
0xc0007460: 0x0  0x0  0x0 0x0
0xc0007470: 0x0  0x0  0x0 0x0
0xc0007480: 0x0  0x0  0x0 0x0
0xc0007490: 0x0  0x0  0x0 0x0
0xc00074a0: 0x0  0x0  0x0 0x0
0xc00074b0: 0x0  0x0  0x0 0x0
0xc00074c0: 0x0  0x0  0x0 0x0
0xc00074d0: 0x0  0x0  0x0 0x0
0xc00074e0: 0x0  0x0  0x0 0x0
0xc00074f0: 0x0  0x0  0x0 0x0
0xc0007500: 0x0  0x0  0x0 0x0
0xc0007510: 0x0  0x0  0x0 0x0
0xc0007520: 0x0  0x0  0x0 0x0
0xc0007530: 0x0  0x0  0x0 0x0
0xc0007540: 0x0  0x0  0x0 0x0
0xc0007550: 0x0  0x0  0x0 0x0
0xc0007560: 0x0  0x0  0x0 0x0
0xc0007570: 0x0  0x0  0x0 0x0
0xc0007580: 0x0  0x0  0x0 0x0
0xc0007590: 0x0  0x0  0x0 0x0
0xc00075a0: 0x0  0x0  0x0 0x0
0xc00075b0: 0x0  0x0  0x0 0x0
0xc00075c0: 0x0  0x0  0x0 0x0
0xc00075d0: 0x0  0x0  0x0 0x0
0xc00075e0: 0x0  0x0  0x0 0x0
0xc00075f0: 0x0  0x0  0x0 0x0
0xc0007600: 0x0  0x0  0x0 0x0
0xc0007610: 0x0  0x0  0x0 0x0
0xc0007620: 0x0  0x0  0x0 0x0
0xc0007630: 0x0  0x0  0x0 0x0
0xc0007640: 0x0  0x0  0x0 0x0
0xc0007650: 0x0  0x0  0x0 0x0
0xc0007660: 0x0  0x0  0x0 0x0
0xc0007670: 0x0  0x0  0x0 0x0
0xc0007680: 0x0  0x0  0x0 0x0
0xc0007690: 0x0  0x0  0x0 0x0
0xc00076a0: 0x0  0x0  0x0 0x0
0xc00076b0: 0x0  0x0  0x0 0x0
0xc00076c0: 0x0  0x0  0x0 0x0
0xc00076d0: 0x0  0x0  0x0 0x0
0xc00076e0: 0x0  0x0  0x0 0x0
0xc00076f0: 0x0  0x0  0x0 0x0
0xc0007700: 0x0  0x0  0x0 0x0
0xc0007710: 0x0  0x0  0x0 0x0
0xc0007720: 0x0  0x0  0x0 0x0
0xc0007730: 0x0  0x0  0x0 0x0
0xc0007740: 0x0  0x0  0x0 0x0
0xc0007750: 0x0  0x0  0x0 0x0
0xc0007760: 0x0  0x0  0x0 0x0
0xc0007770: 0x0  0x0  0x0 0x0
0xc0007780: 0x0  0x0  0x0 0x0
0xc0007790: 0x0  0x0  0x0 0x0
0xc00077a0: 0x0  0x0  0x0 0x0
0xc00077b0: 0x0  0x0  0x0 0x0
0xc00077c0: 0x0  0x0  0x0 0x0
0xc00077d0: 0x0  0x0  0x0 0x0
0xc00077e0: 0x0  0x0  0x0 0x0
0xc00077f0: 0x0  0x0  0x0 0x0
0xc0007800: 0x0  0x0  0x0 0x0
0xc0007810: 0x0  0x0  0x0 0x0
0xc0007820: 0x0  0x0  0x0 0x0
0xc0007830: 0x0  0x0  0x0 0x0
0xc0007840: 0x0  0x0  0x0 0x0
0xc0007850: 0x0  0x0  0x0 0x0
0xc0007860: 0x0  0x0  0x0 0x0
0xc0007870: 0x0  0x0  0x0 0x0
0xc0007880: 0x0  0x0  0x0 0x0
0xc0007890: 0x0  0x0  0x0 0x0
0xc00078a0: 0x0  0x0  0x0 0x0
0xc00078b0: 0x0  0x0  0x0 0x0
0xc00078c0: 0x0  0x0  0x0 0x0
0xc00078d0: 0x0  0x0  0x0 0x0
0xc00078e0: 0x0  0x0  0x0 0x0
0xc00078f0: 0x0  0x0  0x0 0x0
0xc0007900: 0x0  0x0  0x0 0x0
0xc0007910: 0x0  0x0  0x0 0x0
0xc0007920: 0x0  0x0  0x0 0x0
0xc0007930: 0x0  0x0  0x0 0x0
0xc0007940: 0x0  0x0  0x0 0x0
0xc0007950: 0x0  0x0  0x0 0x0
0xc0007960: 0x0  0x0  0x0 0x0
0xc0007970: 0x0  0x0  0x0 0x0
0xc0007980: 0x0  0x0  0x0 0x0
0xc0007990: 0x0  0x0  0x0 0x0
0xc00079a0: 0x0  0x0  0x0 0x0
0xc00079b0: 0x0  0x0  0x0 0x0
0xc00079c0: 0x0  0x0  0x0 0x0
0xc00079d0: 0x0  0x0  0x0 0x0
0xc00079e0: 0x0  0x0  0x0 0x0
0xc00079f0: 0x0  0x0  0x0 0x0
0xc0007a00: 0x0  0x0  0x0 0x0
0xc0007a10: 0x0  0x0  0x0 0x0
0xc0007a20: 0x0  0x0  0x0 0x0
0xc0007a30: 0x0  0x0  0x0 0x0
0xc0007a40: 0x0  0x0  0x0 0x0
0xc0007a50: 0x0  0x0  0x0 0x0
0xc0007a60: 0x0  0x0  0x0 0x0
0xc0007a70: 0x0  0x0  0x0 0x0
0xc0007a80: 0x0  0x0  0x0 0x0
0xc0007a90: 0x0  0x0  0x0 0x0
0xc0007aa0: 0x0  0x0  0x0 0x0
0xc0007ab0: 0x0  0x0  0x0 0x0
0xc0007ac0: 0x0  0x0  0x0 0x0
0xc0007ad0: 0x0  0x0  0x0 0x0
0xc0007ae0: 0x0  0x0  0x0 0x0
0xc0007af0: 0x0  0x0  0x0 0x0
0xc0007b00: 0x0  0x0  0x0 0x0
0xc0007b10: 0x0  0x0  0x0 0x0
0xc0007b20: 0x0  0x0  0x0 0x0
0xc0007b30: 0x0  0x0  0x0 0x0
0xc0007b40: 0x0  0x0  0x0 0x0
0xc0007b50: 0x0  0x0  0x0 0x0
0xc0007b60: 0x0  0x0  0x0 0x0
0xc0007b70: 0x0  0x0  0x0 0x0
0xc0007b80: 0x0  0x0  0x0 0x0
0xc0007b90: 0x0  0x0  0x0 0x0
0xc0007ba0: 0x0  0x0  0x0 0x0
0xc0007bb0: 0x0  0x0  0x0 0x0
0xc0007bc0: 0x0  0x0  0x0 0x0
0xc0007bd0: 0x0  0x0  0x0 0x0
0xc0007be0: 0x0  0x0  0x0 0x0
0xc0007bf0: 0x0  0x0  0x0 0x0
0xc0007c00: 0xbda051  0xbda451  0xbdb051 0xbdb451
0xc0007c10: 0xbdc051  0xbdc451  0xbdd051 0xbdd451
0xc0007c20: 0xbde051  0xbde451  0xbdf051 0xbdf451
0xc0007c30: 0xbe0051  0xbe0451  0xbe1051 0xbe1451
0xc0007c40: 0xbe2051  0xbe2451  0x0 0x0
0xc0007c50: 0x0  0x0  0x0 0x0
0xc0007c60: 0x0  0x0  0x0 0x0
0xc0007c70: 0x0  0x0  0x0 0x0
0xc0007c80: 0x0  0x0  0x0 0x0
0xc0007c90: 0x0  0x0  0x0 0x0
0xc0007ca0: 0x0  0x0  0x0 0x0
0xc0007cb0: 0x0  0x0  0x0 0x0
0xc0007cc0: 0x0  0x0  0x0 0x0
0xc0007cd0: 0x0  0x0  0x0 0x0
0xc0007ce0: 0x0  0x0  0x0 0x0
0xc0007cf0: 0x0  0x0  0x0 0x0
0xc0007d00: 0x0  0x0  0x0 0x0
0xc0007d10: 0x0  0x0  0x0 0x0
0xc0007d20: 0x0  0x0  0x0 0x0
0xc0007d30: 0x0  0x0  0x0 0x0
0xc0007d40: 0x0  0x0  0x0 0x0
0xc0007d50: 0x0  0x0  0x0 0x0
0xc0007d60: 0x0  0x0  0x0 0x0
0xc0007d70: 0x0  0x0  0x0 0x0
0xc0007d80: 0x0  0x0  0x0 0x0
0xc0007d90: 0x0  0x0  0x0 0x0
0xc0007da0: 0x0  0x0  0x0 0x0
0xc0007db0: 0x0  0x0  0x0 0x0
0xc0007dc0: 0x0  0x0  0x0 0x0
0xc0007dd0: 0x0  0x0  0x0 0x0
0xc0007de0: 0x0  0x0  0x0 0x0
0xc0007df0: 0x0  0x0  0x0 0x0
0xc0007e00: 0xbe3051  0xbe3451  0xbe4051 0xbe4451
0xc0007e10: 0xbe5051  0xbe5451  0xbe6051 0xbe6451
0xc0007e20: 0xbe7051  0xbe7451  0xbe8051 0xbe8451
0xc0007e30: 0xbe9051  0xbe9451  0x0 0x0
0xc0007e40: 0x0  0x0  0x0 0x0
0xc0007e50: 0x0  0x0  0x0 0x0
0xc0007e60: 0x0  0x0  0x0 0x0
0xc0007e70: 0x0  0x0  0x0 0x0
0xc0007e80: 0x0  0x0  0x0 0x0
0xc0007e90: 0x0  0x0  0x0 0x0
0xc0007ea0: 0x0  0x0  0x0 0x0
0xc0007eb0: 0x0  0x0  0x0 0x0
0xc0007ec0: 0x0  0x0  0x0 0x0
0xc0007ed0: 0x0  0x0  0x0 0x0
0xc0007ee0: 0x0  0x0  0x0 0x0
0xc0007ef0: 0x0  0x0  0x0 0x0
0xc0007f00: 0x0  0x0  0x0 0x0
0xc0007f10: 0x0  0x0  0x0 0x0
0xc0007f20: 0x0  0x0  0x0 0x0
0xc0007f30: 0x0  0x0  0x0 0x0
0xc0007f40: 0x0  0x0  0x0 0x0
0xc0007f50: 0x0  0x0  0x0 0x0
0xc0007f60: 0x0  0x0  0x0 0x0
0xc0007f70: 0x0  0x0  0x0 0x0
0xc0007f80: 0x0  0x0  0x0 0x0
0xc0007f90: 0x0  0x0  0x0 0x0
0xc0007fa0: 0x0  0x0  0x0 0x0
0xc0007fb0: 0x0  0x0  0x0 0x0
0xc0007fc0: 0x3c32011  0x3c32411  0x3c33011 0x3c33411
0xc0007fd0: 0x3c34011  0x3c34411  0x3c35011 0x3c35411
0xc0007fe0: 0x3c36011  0x3c36411  0x3c37011 0x3c37411
0xc0007ff0: 0x3c38011  0x3c38411  0xbd9031 0xbd9431

First level descriptor:
[1:0]
    00: Fault
    01: Coarse page table
        [4]: 1
        [8:5]: Domain
        [31:10]: Coarse page table base address
    10: Section
        [2]: Bufferable
        [3]: Cacheable
        [4]: 1
        [8:5]: Domain
        [11:10]: AP
        [31:20]: Section base address
    11: Fine page table
        [4]: 1
        [8:5]: Domain
        [31:12]: Fine page table base address



2nd level descriptor:
[1:0]
    00: Fault
    01: Large page
        [2]: Bufferable
        [3]: Cacheable
        [5:4]: AP0
        [7:6]: AP1
        [9:8]: AP2
        [11:10]: AP3
        [31:16]: Large page base address
    10: Small page
        [2]: Bufferable
        [3]: Cacheable
        [5:4]: AP0
        [7:6]: AP1
        [9:8]: AP2
        [11:10]: AP3
        [31:12]: Small page base address
    11: Tiny page
        [2]: Bufferable
        [3]: Cacheable
        [5:4]: AP0
        [31:10]: Tiny page base address



print the 2nd level descriptor address's value
... 0xc2588000: 0x2aff55e  0x0  0x0  0x258955e
... 0xc2588010: 0x0  0x0  0x0  0x0
... 0xc2588020: 0x0  0x0  0x0  0x0
... 0xc2588030: 0x0  0x0  0x0  0x0
... 0xc2588040: 0x0  0x0  0x0  0x0
... 0xc2588050: 0x0  0x0  0x0  0x0
... 0xc2588060: 0x0  0x0  0x0  0x0
... 0xc2588070: 0x0  0x0  0x0  0x0
... 0xc2588080: 0x0  0x0  0x0  0x0
... 0xc2588090: 0x0  0x0  0x0  0x0
... 0xc25880a0: 0x0  0x0  0x0  0x0
... 0xc25880b0: 0x0  0x0  0x0  0x0
... 0xc25880c0: 0x0  0x0  0x0  0x0
... 0xc25880d0: 0x0  0x0  0x0  0x0
... 0xc25880e0: 0x0  0x0  0x0  0x0
... 0xc25880f0: 0x0  0x0  0x0  0x0
... 0xc2588100: 0x0  0x0  0x0  0x0
... 0xc2588110: 0x0  0x0  0x0  0x0
... 0xc2588120: 0x0  0x0  0x0  0x0
... 0xc2588130: 0x0  0x0  0x0  0x0
... 0xc2588140: 0x0  0x0  0x0  0x0
... 0xc2588150: 0x0  0x0  0x0  0x0
... 0xc2588160: 0x0  0x0  0x0  0x0
... 0xc2588170: 0x0  0x0  0x0  0x0
... 0xc2588180: 0x0  0x0  0x0  0x0
... 0xc2588190: 0x0  0x0  0x0  0x0
... 0xc25881a0: 0x0  0x0  0x0  0x0
... 0xc25881b0: 0x0  0x0  0x0  0x0
... 0xc25881c0: 0x0  0x0  0x0  0x0
... 0xc25881d0: 0x0  0x0  0x0  0x0
... 0xc25881e0: 0x0  0x0  0x0  0x0
... 0xc25881f0: 0x0  0x0  0x0  0x0
... 0xc2588200: 0x0  0x0  0x0  0x0
... 0xc2588210: 0x0  0x0  0x0  0x0
... 0xc2588220: 0x0  0x0  0x0  0x0
... 0xc2588230: 0x0  0x0  0x0  0x0
... 0xc2588240: 0x0  0x0  0x0  0x0
... 0xc2588250: 0x0  0x0  0x0  0x0
... 0xc2588260: 0x0  0x0  0x0  0x0
... 0xc2588270: 0x0  0x0  0x0  0x0
... 0xc2588280: 0x0  0x0  0x0  0x0
... 0xc2588290: 0x0  0x0  0x0  0x0
... 0xc25882a0: 0x0  0x0  0x0  0x0
... 0xc25882b0: 0x0  0x0  0x0  0x0
... 0xc25882c0: 0x0  0x0  0x0  0x0
... 0xc25882d0: 0x0  0x0  0x0  0x0
... 0xc25882e0: 0x0  0x0  0x0  0x0
... 0xc25882f0: 0x0  0x0  0x0  0x0
... 0xc2588300: 0x0  0x0  0x0  0x0
... 0xc2588310: 0x0  0x0  0x0  0x0
... 0xc2588320: 0x0  0x0  0x0  0x0
... 0xc2588330: 0x0  0x0  0x0  0x0
... 0xc2588340: 0x0  0x0  0x0  0x0
... 0xc2588350: 0x0  0x0  0x0  0x0
... 0xc2588360: 0x0  0x0  0x0  0x0
... 0xc2588370: 0x0  0x0  0x0  0x0
... 0xc2588380: 0x0  0x0  0x0  0x0
... 0xc2588390: 0x0  0x0  0x0  0x0
... 0xc25883a0: 0x0  0x0  0x0  0x0
... 0xc25883b0: 0x0  0x0  0x0  0x0
... 0xc25883c0: 0x0  0x0  0x0  0x0
... 0xc25883d0: 0x0  0x0  0x0  0x0
... 0xc25883e0: 0x0  0x0  0x0  0x0
... 0xc25883f0: 0x0  0x0  0x0  0x0
... 0xc3c16000: 0x3c15556  0x0  0x0  0x0
... 0xc3c16010: 0x3c15556  0x0  0x0  0x2a8d55e
... 0xc3c16020: 0x2a8a55e  0x2a8b55e  0x2a9655e  0x2a9755e
... 0xc3c16030: 0x2a9855e  0x2a9955e  0x2a9a55e  0x2a9b55e
... 0xc3c16040: 0x2a9c55e  0x2a9d55e  0x0  0x0
... 0xc3c16050: 0x90400552  0x0  0x0  0x251e55e
... 0xc3c16060: 0x251d55e  0x250855e  0x24d555e  0x252155e
... 0xc3c16070: 0x250455e  0x252b55e  0x250755e  0x250055e
... 0xc3c16080: 0x250155e  0x252455e  0x252755e  0x251855e
... 0xc3c16090: 0x250555e  0x24da55e  0x251a55e  0x252e55e
... 0xc3c160a0: 0x245f55e  0x24cc55e  0x346b55e  0x244555e
... 0xc3c160b0: 0x250e55e  0x251655e  0x251755e  0x258255e
... 0xc3c160c0: 0x258355e  0x2afc55e  0x2afd55e  0x2afe55e
... 0xc3c160d0: 0x0  0x0  0x0  0x0
... 0xc3c160e0: 0x0  0x0  0x0  0x0
... 0xc3c160f0: 0x0  0x0  0x0  0x0
... 0xc3c16100: 0x0  0x0  0x0  0x0
... 0xc3c16110: 0x0  0x0  0x0  0x0
... 0xc3c16120: 0x0  0x0  0x0  0x0
... 0xc3c16130: 0x0  0x0  0x0  0x0
... 0xc3c16140: 0x0  0x0  0x0  0x0
... 0xc3c16150: 0x0  0x0  0x0  0x0
... 0xc3c16160: 0x0  0x0  0x0  0x0
... 0xc3c16170: 0x0  0x0  0x0  0x0
... 0xc3c16180: 0x0  0x0  0x0  0x0
... 0xc3c16190: 0x0  0x0  0x0  0x0
... 0xc3c161a0: 0x0  0x0  0x0  0x0
... 0xc3c161b0: 0x0  0x0  0x0  0x0
... 0xc3c161c0: 0x0  0x0  0x0  0x0
... 0xc3c161d0: 0x0  0x0  0x0  0x0
... 0xc3c161e0: 0x0  0x0  0x0  0x0
... 0xc3c161f0: 0x0  0x0  0x0  0x0
... 0xc3c16200: 0x0  0x0  0x0  0x0
... 0xc3c16210: 0x0  0x0  0x0  0x0
... 0xc3c16220: 0x0  0x0  0x0  0x0
... 0xc3c16230: 0x0  0x0  0x0  0x0
... 0xc3c16240: 0x0  0x0  0x0  0x0
... 0xc3c16250: 0x0  0x0  0x0  0x0
... 0xc3c16260: 0x0  0x0  0x0  0x0
... 0xc3c16270: 0x0  0x0  0x0  0x0
... 0xc3c16280: 0x0  0x0  0x0  0x0
... 0xc3c16290: 0x0  0x0  0x0  0x0
... 0xc3c162a0: 0x0  0x0  0x0  0x0
... 0xc3c162b0: 0x0  0x0  0x0  0x0
... 0xc3c162c0: 0x0  0x0  0x0  0x0
... 0xc3c162d0: 0x0  0x0  0x0  0x0
... 0xc3c162e0: 0x0  0x0  0x0  0x0
... 0xc3c162f0: 0x0  0x0  0x0  0x0
... 0xc3c16300: 0x0  0x0  0x0  0x0
... 0xc3c16310: 0x0  0x0  0x0  0x0
... 0xc3c16320: 0x0  0x0  0x0  0x0
... 0xc3c16330: 0x0  0x0  0x0  0x0
... 0xc3c16340: 0x0  0x0  0x0  0x0
... 0xc3c16350: 0x0  0x0  0x0  0x0
... 0xc3c16360: 0x0  0x0  0x0  0x0
... 0xc3c16370: 0x0  0x0  0x0  0x0
... 0xc3c16380: 0x0  0x0  0x0  0x0
... 0xc3c16390: 0x0  0x0  0x0  0x0
... 0xc3c163a0: 0x0  0x0  0x0  0x0
... 0xc3c163b0: 0x0  0x0  0x0  0x0
... 0xc3c163c0: 0x0  0x0  0x0  0x0
... 0xc3c163d0: 0x0  0x0  0x0  0x0
... 0xc3c163e0: 0x0  0x0  0x0  0x0
... 0xc3c163f0: 0x0  0x0  0x0  0x0
0xc0007e00: 0x98000552  0x0  0x0  0x0
0xc0007e10: 0x98400552  0x0  0x0  0x0
0xc0007e20: 0x98800552  0x0  0x0  0x0
0xc0007e30: 0x98c00552  0x0  0x0  0x0
0xc0007c00: 0x90000552  0x0  0x0  0x0
0xc0007c10: 0x90400552  0x0  0x0  0x0
0xc0007c20: 0x90800552  0x0  0x0  0x0
0xc0007c30: 0x90c00552  0x0  0x0  0x0
0xc0007c40: 0x91000552  0x0  0x0  0x0
... 0xc3c32000: 0x2ac1552  0x2ac4552  0x2ac5552  0x2ac8552
... 0xc3c32010: 0x2ac9552  0x2aca552  0x3c80552  0x3ca1552
... 0xc3c32020: 0x24fe552  0x2519552  0x2afc552  0x2afd552
... 0xc3c32030: 0x0  0x0  0x0  0x0
... 0xc3c32040: 0x0  0x0  0x0  0x0
... 0xc3c32050: 0x0  0x0  0x0  0x0
... 0xc3c32060: 0x0  0x0  0x0  0x0
... 0xc3c32070: 0x0  0x0  0x0  0x0
... 0xc3c32080: 0x0  0x0  0x0  0x0
... 0xc3c32090: 0x0  0x0  0x0  0x0
... 0xc3c320a0: 0x0  0x0  0x0  0x0
... 0xc3c320b0: 0x0  0x0  0x0  0x0
... 0xc3c320c0: 0x0  0x0  0x0  0x0
... 0xc3c320d0: 0x0  0x0  0x0  0x0
... 0xc3c320e0: 0x0  0x0  0x0  0x0
... 0xc3c320f0: 0x0  0x0  0x0  0x0
... 0xc3c32100: 0x0  0x0  0x0  0x0
... 0xc3c32110: 0x0  0x0  0x0  0x0
... 0xc3c32120: 0x0  0x0  0x0  0x0
... 0xc3c32130: 0x0  0x0  0x0  0x0
... 0xc3c32140: 0x0  0x0  0x0  0x0
... 0xc3c32150: 0x0  0x0  0x0  0x0
... 0xc3c32160: 0x0  0x0  0x0  0x0
... 0xc3c32170: 0x0  0x0  0x0  0x0
... 0xc3c32180: 0x0  0x0  0x0  0x0
... 0xc3c32190: 0x0  0x0  0x0  0x0
... 0xc3c321a0: 0x0  0x0  0x0  0x0
... 0xc3c321b0: 0x0  0x0  0x0  0x0
... 0xc3c321c0: 0x0  0x0  0x0  0x0
... 0xc3c321d0: 0x0  0x0  0x0  0x0
... 0xc3c321e0: 0x0  0x0  0x0  0x0
... 0xc3c321f0: 0x0  0x0  0x0  0x0
... 0xc3c32200: 0x0  0x0  0x0  0x0
... 0xc3c32210: 0x0  0x0  0x0  0x0
... 0xc3c32220: 0x0  0x0  0x0  0x0
... 0xc3c32230: 0x0  0x0  0x0  0x0
... 0xc3c32240: 0x0  0x0  0x0  0x0
... 0xc3c32250: 0x0  0x0  0x0  0x0
... 0xc3c32260: 0x0  0x0  0x0  0x0
... 0xc3c32270: 0x0  0x0  0x0  0x0
... 0xc3c32280: 0x0  0x0  0x0  0x0
... 0xc3c32290: 0x0  0x0  0x0  0x0
... 0xc3c322a0: 0x0  0x0  0x0  0x0
... 0xc3c322b0: 0x0  0x0  0x0  0x0
... 0xc3c322c0: 0x0  0x0  0x0  0x0
... 0xc3c322d0: 0x0  0x0  0x0  0x0
... 0xc3c322e0: 0x0  0x0  0x0  0x0
... 0xc3c322f0: 0x0  0x0  0x0  0x0
... 0xc3c32300: 0x0  0x0  0x0  0x0
... 0xc3c32310: 0x0  0x0  0x0  0x0
... 0xc3c32320: 0x0  0x0  0x0  0x0
... 0xc3c32330: 0x0  0x0  0x0  0x0
... 0xc3c32340: 0x0  0x0  0x0  0x0
... 0xc3c32350: 0x0  0x0  0x0  0x0
... 0xc3c32360: 0x0  0x0  0x0  0x0
... 0xc3c32370: 0x0  0x0  0x0  0x0
... 0xc3c32380: 0x0  0x0  0x0  0x0
... 0xc3c32390: 0x0  0x0  0x0  0x0
... 0xc3c323a0: 0x0  0x0  0x0  0x0
... 0xc3c323b0: 0x0  0x0  0x0  0x0
... 0xc3c323c0: 0x0  0x0  0x0  0x0
... 0xc3c323d0: 0x0  0x0  0x0  0x0
... 0xc3c323e0: 0x0  0x0  0x0  0x0
... 0xc3c323f0: 0x0  0x0  0x0  0x0
... 0xc3c34000: 0x0  0x0  0x0  0x0
... 0xc3c34010: 0x0  0x0  0x0  0x0
... 0xc3c34020: 0x0  0x0  0x0  0x0
... 0xc3c34030: 0x0  0x0  0x0  0x0
... 0xc3c34040: 0x0  0x0  0x0  0x0
... 0xc3c34050: 0x0  0x0  0x0  0x0
... 0xc3c34060: 0x0  0x0  0x0  0x0
... 0xc3c34070: 0x0  0x0  0x0  0x0
... 0xc3c34080: 0x0  0x0  0x0  0x0
... 0xc3c34090: 0x0  0x0  0x0  0x0
... 0xc3c340a0: 0x0  0x0  0x0  0x0
... 0xc3c340b0: 0x0  0x0  0x0  0x0
... 0xc3c340c0: 0x0  0x0  0x0  0x0
... 0xc3c340d0: 0x0  0x0  0x0  0x0
... 0xc3c340e0: 0x0  0x0  0x0  0x0
... 0xc3c340f0: 0x0  0x0  0x0  0x0
... 0xc3c34100: 0x0  0x0  0x0  0x0
... 0xc3c34110: 0x0  0x0  0x0  0x0
... 0xc3c34120: 0x0  0x0  0x0  0x0
... 0xc3c34130: 0x0  0x0  0x0  0x0
... 0xc3c34140: 0x0  0x0  0x0  0x0
... 0xc3c34150: 0x0  0x0  0x0  0x0
... 0xc3c34160: 0x0  0x0  0x0  0x0
... 0xc3c34170: 0x0  0x0  0x0  0x0
... 0xc3c34180: 0x0  0x0  0x0  0x0
... 0xc3c34190: 0x0  0x0  0x0  0x0
... 0xc3c341a0: 0x0  0x0  0x0  0x0
... 0xc3c341b0: 0x0  0x0  0x0  0x0
... 0xc3c341c0: 0x0  0x0  0x0  0x0
... 0xc3c341d0: 0x0  0x0  0x0  0x0
... 0xc3c341e0: 0x0  0x0  0x0  0x0
... 0xc3c341f0: 0x0  0x0  0x0  0x0
... 0xc3c34200: 0x0  0x0  0x0  0x0
... 0xc3c34210: 0x0  0x0  0x0  0x0
... 0xc3c34220: 0x0  0x0  0x0  0x0
... 0xc3c34230: 0x0  0x0  0x0  0x0
... 0xc3c34240: 0x0  0x0  0x0  0x0
... 0xc3c34250: 0x0  0x0  0x0  0x0
... 0xc3c34260: 0x0  0x0  0x0  0x0
... 0xc3c34270: 0x0  0x0  0x0  0x0
... 0xc3c34280: 0x0  0x0  0x0  0x0
... 0xc3c34290: 0x0  0x0  0x0  0x0
... 0xc3c342a0: 0x0  0x0  0x0  0x0
... 0xc3c342b0: 0x0  0x0  0x0  0x0
... 0xc3c342c0: 0x0  0x0  0x0  0x0
... 0xc3c342d0: 0x0  0x0  0x0  0x0
... 0xc3c342e0: 0x0  0x0  0x0  0x0
... 0xc3c342f0: 0x0  0x0  0x0  0x0
... 0xc3c34300: 0x0  0x0  0x0  0x0
... 0xc3c34310: 0x0  0x0  0x0  0x0
... 0xc3c34320: 0x0  0x0  0x0  0x0
... 0xc3c34330: 0x0  0x0  0x0  0x0
... 0xc3c34340: 0x0  0x0  0x0  0x0
... 0xc3c34350: 0x0  0x0  0x0  0x0
... 0xc3c34360: 0x0  0x0  0x0  0x0
... 0xc3c34370: 0x0  0x0  0x0  0x0
... 0xc3c34380: 0x0  0x0  0x0  0x0
... 0xc3c34390: 0x0  0x0  0x0  0x0
... 0xc3c343a0: 0x0  0x0  0x0  0x0
... 0xc3c343b0: 0x0  0x0  0x0  0x0
... 0xc3c343c0: 0x0  0x0  0x0  0x0
... 0xc3c343d0: 0x0  0x0  0x0  0x0
... 0xc3c343e0: 0x0  0x0  0x0  0x0
... 0xc3c343f0: 0x0  0x0  0x0  0x0
... 0xc3c36000: 0x0  0x0  0x0  0x0
... 0xc3c36010: 0x0  0x0  0x0  0x0
... 0xc3c36020: 0x0  0x0  0x0  0x0
... 0xc3c36030: 0x0  0x0  0x0  0x0
... 0xc3c36040: 0x0  0x0  0x0  0x0
... 0xc3c36050: 0x0  0x0  0x0  0x0
... 0xc3c36060: 0x0  0x0  0x0  0x0
... 0xc3c36070: 0x0  0x0  0x0  0x0
... 0xc3c36080: 0x0  0x0  0x0  0x0
... 0xc3c36090: 0x0  0x0  0x0  0x0
... 0xc3c360a0: 0x0  0x0  0x0  0x0
... 0xc3c360b0: 0x0  0x0  0x0  0x0
... 0xc3c360c0: 0x0  0x0  0x0  0x0
... 0xc3c360d0: 0x0  0x0  0x0  0x0
... 0xc3c360e0: 0x0  0x0  0x0  0x0
... 0xc3c360f0: 0x0  0x0  0x0  0x0
... 0xc3c36100: 0x0  0x0  0x0  0x0
... 0xc3c36110: 0x0  0x0  0x0  0x0
... 0xc3c36120: 0x0  0x0  0x0  0x0
... 0xc3c36130: 0x0  0x0  0x0  0x0
... 0xc3c36140: 0x0  0x0  0x0  0x0
... 0xc3c36150: 0x0  0x0  0x0  0x0
... 0xc3c36160: 0x0  0x0  0x0  0x0
... 0xc3c36170: 0x0  0x0  0x0  0x0
... 0xc3c36180: 0x0  0x0  0x0  0x0
... 0xc3c36190: 0x0  0x0  0x0  0x0
... 0xc3c361a0: 0x0  0x0  0x0  0x0
... 0xc3c361b0: 0x0  0x0  0x0  0x0
... 0xc3c361c0: 0x0  0x0  0x0  0x0
... 0xc3c361d0: 0x0  0x0  0x0  0x0
... 0xc3c361e0: 0x0  0x0  0x0  0x0
... 0xc3c361f0: 0x0  0x0  0x0  0x0
... 0xc3c36200: 0x0  0x0  0x0  0x0
... 0xc3c36210: 0x0  0x0  0x0  0x0
... 0xc3c36220: 0x0  0x0  0x0  0x0
... 0xc3c36230: 0x0  0x0  0x0  0x0
... 0xc3c36240: 0x0  0x0  0x0  0x0
... 0xc3c36250: 0x0  0x0  0x0  0x0
... 0xc3c36260: 0x0  0x0  0x0  0x0
... 0xc3c36270: 0x0  0x0  0x0  0x0
... 0xc3c36280: 0x0  0x0  0x0  0x0
... 0xc3c36290: 0x0  0x0  0x0  0x0
... 0xc3c362a0: 0x0  0x0  0x0  0x0
... 0xc3c362b0: 0x0  0x0  0x0  0x0
... 0xc3c362c0: 0x0  0x0  0x0  0x0
... 0xc3c362d0: 0x0  0x0  0x0  0x0
... 0xc3c362e0: 0x0  0x0  0x0  0x0
... 0xc3c362f0: 0x0  0x0  0x0  0x0
... 0xc3c36300: 0x0  0x0  0x0  0x0
... 0xc3c36310: 0x0  0x0  0x0  0x0
... 0xc3c36320: 0x0  0x0  0x0  0x0
... 0xc3c36330: 0x0  0x0  0x0  0x0
... 0xc3c36340: 0x0  0x0  0x0  0x0
... 0xc3c36350: 0x0  0x0  0x0  0x0
... 0xc3c36360: 0x0  0x0  0x0  0x0
... 0xc3c36370: 0x0  0x0  0x0  0x0
... 0xc3c36380: 0x0  0x0  0x0  0x0
... 0xc3c36390: 0x0  0x0  0x0  0x0
... 0xc3c363a0: 0x0  0x0  0x0  0x0
... 0xc3c363b0: 0x0  0x0  0x0  0x0
... 0xc3c363c0: 0x0  0x0  0x0  0x0
... 0xc3c363d0: 0x0  0x0  0x0  0x0
... 0xc3c363e0: 0x0  0x0  0x0  0x0
... 0xc3c363f0: 0x0  0x0  0x0  0x0
... 0xc3c38000: 0x0  0x0  0x0  0x0
... 0xc3c38010: 0x0  0x0  0x0  0x0
... 0xc3c38020: 0x0  0x0  0x0  0x0
... 0xc3c38030: 0x0  0x0  0x0  0x0
... 0xc3c38040: 0x0  0x0  0x0  0x0
... 0xc3c38050: 0x0  0x0  0x0  0x0
... 0xc3c38060: 0x0  0x0  0x0  0x0
... 0xc3c38070: 0x0  0x0  0x0  0x0
... 0xc3c38080: 0x0  0x0  0x0  0x0
... 0xc3c38090: 0x0  0x0  0x0  0x0
... 0xc3c380a0: 0x0  0x0  0x0  0x0
... 0xc3c380b0: 0x0  0x0  0x0  0x0
... 0xc3c380c0: 0x0  0x0  0x0  0x0
... 0xc3c380d0: 0x0  0x0  0x0  0x0
... 0xc3c380e0: 0x0  0x0  0x0  0x0
... 0xc3c380f0: 0x0  0x0  0x0  0x0
... 0xc3c38100: 0x0  0x0  0x0  0x0
... 0xc3c38110: 0x0  0x0  0x0  0x0
... 0xc3c38120: 0x0  0x0  0x0  0x0
... 0xc3c38130: 0x0  0x0  0x0  0x0
... 0xc3c38140: 0x0  0x0  0x0  0x0
... 0xc3c38150: 0x0  0x0  0x0  0x0
... 0xc3c38160: 0x0  0x0  0x0  0x0
... 0xc3c38170: 0x0  0x0  0x0  0x0
... 0xc3c38180: 0x0  0x0  0x0  0x0
... 0xc3c38190: 0x0  0x0  0x0  0x0
... 0xc3c381a0: 0x0  0x0  0x0  0x0
... 0xc3c381b0: 0x0  0x0  0x0  0x0
... 0xc3c381c0: 0x0  0x0  0x0  0x0
... 0xc3c381d0: 0x0  0x0  0x0  0x0
... 0xc3c381e0: 0x0  0x0  0x0  0x0
... 0xc3c381f0: 0x0  0x0  0x0  0x0
... 0xc3c38200: 0x0  0x0  0x0  0x0
... 0xc3c38210: 0x0  0x0  0x0  0x0
... 0xc3c38220: 0x0  0x0  0x0  0x0
... 0xc3c38230: 0x0  0x0  0x0  0x0
... 0xc3c38240: 0x0  0x0  0x0  0x0
... 0xc3c38250: 0x0  0x0  0x0  0x0
... 0xc3c38260: 0x0  0x0  0x0  0x0
... 0xc3c38270: 0x0  0x0  0x0  0x0
... 0xc3c38280: 0x0  0x0  0x0  0x0
... 0xc3c38290: 0x0  0x0  0x0  0x0
... 0xc3c382a0: 0x0  0x0  0x0  0x0
... 0xc3c382b0: 0x0  0x0  0x0  0x0
... 0xc3c382c0: 0x0  0x0  0x0  0x0
... 0xc3c382d0: 0x0  0x0  0x0  0x0
... 0xc3c382e0: 0x0  0x0  0x0  0x0
... 0xc3c382f0: 0x0  0x0  0x0  0x0
... 0xc3c38300: 0x0  0x0  0x0  0x0
... 0xc3c38310: 0x0  0x0  0x0  0x0
... 0xc3c38320: 0x0  0x0  0x0  0x0
... 0xc3c38330: 0x0  0x0  0x0  0x0
... 0xc3c38340: 0x0  0x0  0x0  0x0
... 0xc3c38350: 0x0  0x0  0x0  0x0
... 0xc3c38360: 0x0  0x0  0x0  0x0
... 0xc3c38370: 0x0  0x0  0x0  0x0
... 0xc3c38380: 0x0  0x0  0x0  0x0
... 0xc3c38390: 0x0  0x0  0x0  0x0
... 0xc3c383a0: 0x0  0x0  0x0  0x0
... 0xc3c383b0: 0x0  0x0  0x0  0x0
... 0xc3c383c0: 0x0  0x0  0x0  0x0
... 0xc3c383d0: 0x0  0x0  0x0  0x0
... 0xc3c383e0: 0x0  0x0  0x0  0x0
... 0xc3c383f0: 0x0  0x0  0x0  0x0
op = 1, request.len = 0x00010000, request.flag = 0, request.val = A
/ahbdma #

2012年5月18日 星期五

Debug/Run Linux with ICE

1) Open AXD
2) Select "File" -> "Load Memory From File"
   --> Select "arch/arm/boot/Image" and load to address 0x8000 (This is kernel image without zlib header and the original Linux  image with debug info is "vmlinux")

[mingfeng_wu@vl-sa3sw1 linux-2.6.35.12]$ arm-unknown-linux-uclibcgnueabi-objdump -d vmlinux | less

vmlinux:     file format elf32-littlearm


Disassembly of section .init:

c0008000 <stext>:
c0008000:       e321f0d3        msr     CPSR_c, #211    ; 0xd3
c0008004:       ee109f10        mrc     15, 0, r9, cr0, cr0, {0}
c0008008:       eb0000ba        bl      c00082f8 <__lookup_processor_type>
c000800c:       e1b0a005        movs    sl, r5
c0008010:       0a00005e        beq     c0008190 <__error_p>
c0008014:       eb0000d0        bl      c000835c <__lookup_machine_type>
c0008018:       e1b08005        movs    r8, r5
c000801c:       0a000071        beq     c00081e8 <__error_a>
c0008020:       eb0000df        bl      c00083a4 <__vet_atags>
c0008024:       eb000013        bl      c0008078 <__create_page_tables>
c0008028:       e59fd0f0        ldr     sp, [pc, #240]  ; c0008120 <__switch_data>
c000802c:       e28fe000        add     lr, pc, #0
c0008030:       e28af010        add     pc, sl, #16

c0008034 <__enable_mmu>:
c0008034:       e3800002        orr     r0, r0, #2
c0008038:       e3a0501f        mov     r5, #31
c000803c:       ee035f10        mcr     15, 0, r5, cr3, cr0, {0}
c0008040:       ee024f10        mcr     15, 0, r4, cr2, cr0, {0}
c0008044:       ea000005        b       c0008060 <__turn_mmu_on>
c0008048:       e1a00000        nop                     ; (mov r0, r0)
c000804c:       e1a00000        nop                     ; (mov r0, r0)
c0008050:       e1a00000        nop                     ; (mov r0, r0)
c0008054:       e1a00000        nop                     ; (mov r0, r0)
c0008058:       e1a00000        nop                     ; (mov r0, r0)
c000805c:       e1a00000        nop                     ; (mov r0, r0)

.............

You can see that we have to load the "arch/arm/boot/Image" and load to address 0x8000.

3) After successfully loading the image to ICE, set the PC to 0x8000
4) Modify register r1 to "xxx" <-- MACH_TYPE_XXX
4) You can set breakpoint or watchpoint or just press run

2012年4月22日 星期日

Reference from http://huenlil.pixnet.net/blog/post/23271426-printk%28%29-%E4%BD%BF%E7%94%A8%E8%AA%AA%E6%98%8E

核心通過 printk() 輸出的訊息具有日誌級別,日誌級別是通過在 printk() 輸出的字符串前加一個帶尖括號的整數來控制的,如 printk("<6>Hello, world!\n");。內核中共提供了八種不同的日誌級別,在 linux/kernel.h 中有相應的宏對應。

#define KERN_EMERG    "<0>"    /* system is unusable */
#define KERN_ALERT    "<1>"    /* action must be taken immediately */
#define KERN_CRIT     "<2>"    /* critical conditions */
#define KERN_ERR      "<3>"    /* error conditions */
#define KERN_WARNING  "<4>"    /* warning conditions */
#define KERN_NOTICE   "<5>"    /* normal but significant */
#define KERN_INFO     "<6>"    /* informational */
#define KERN_DEBUG    "<7>"    /* debug-level messages */

所以 printk() 可以這樣用:printk(KERN_INFO "Hello, world!\n");。

未指定日誌級別的 printk() 採用的默認級別是 DEFAULT_MESSAGE_LOGLEVEL,這個宏在 kernel/printk.c 中被定義為整數 4,即對應KERN_WARNING。

在 /proc/sys/kernel/printk 會顯示4個數值(可由 echo 修改),分別表示當前控制台日誌級別、未明確指定日誌級別的默認消息日誌級別、最小(最高)允許設置的控制台日誌級別、引導時默認的日誌級別。當 printk() 中的消息日誌級別小於當前控制台日誌級別時,printk 的信息(要有\n符)就會在控制台上顯示。但無論當前控制台日誌級別是何值,通過 /proc/kmsg (或使用dmesg)總能查看。另外如果配置好並運行了 syslogd 或 klogd,沒有在控制台上顯示的 printk 的信息也會追加到 /var/log/messages.log 中。

另外為了防止 printk() 瞬時被呼叫次數過多,可以通過 printk_ratelimit() 來控制速度。printk_ratelimit() 通過跟蹤發送到控制台的消息數量工作,當輸出速度超過一個臨界值,就返回零。可通過修改 /proc/sys/kernel/{printk_ratelimit, printk_ratelimit_burst} 來調節 printk_ratelimit() 的計算。

printk_ratelimit() 的典型用法如下:
if (printk_ratelimit())
    printk(KERN_INFO "Hello, world!\n");

2012年3月1日 星期四

Use VIM

1) 先將游標移到程式的某個文字串,再按以下按鍵:
  • '*' 往前找出此文字串 (按 n、N 繼續找)
  • '#' 往後找出此文字串 (按 n、N 繼續找)
  • 'gd' 將此文字串視為 local 變數,找到定義此 local 變數的地方 (如果有的話)
2) 其他追溯程式常見的動作:
  • '%' 找到被配的括號
  • '[[' 找到函數的開頭
  • ']]' 找到下一個函數的開頭

Use cscope

1) Install cscope:

sudo apt-get install cscope
mkdir -p ~/.vim/plugin
cd ~/.vim/plugin
wget http://cscope.sourceforge.net/cscope_maps.vim

2) Create cscope database for PROJECT:

cd PROJECT
cscope -bR

3)  Using cscope in VIM:

當你安裝好 cscope,而且建立好專案的 cscope 資料庫之後,將游標移到程式當中某個文字串,按 Ctrl+\ 再按以下按鍵:
  • 's': 即 Symbol,以此文字串當識別字,列出專案當中所有參考到此識別字的地方,包含定義和引用
  • 'g': 即 Global,以此文字串當作 global 變數或函數的名稱,跳到專案中定義此 global 變數或函數的地方 (這個功能有另一個與 ctags 相同的快速鍵 Ctrl-])
  • 'c': 即 Calls,以此文字串當函數名稱,找出所有呼叫到的此函數的函數
  • 't': 即 Text,列出專案中所有出現此文字串的地方 (包含註解)
  • 'e': 即 Egrep,以此文字串當 regular expression,用 egrep 方式來搜尋
  • 'f': 即 File,以此文字串當檔案名稱,開啟此檔案
  • 'i': 即 Includes,以此文字串當 header 檔名稱,列出所有 include 此檔案的檔案
  • 'd': 即 calleD,以此文字串當函數名稱,列出此函數所呼叫到的函數

2011年12月21日 星期三

gcc-4.5.2 regression test

1) Compile zlib-1.2.3
(x86)
./configure --prefix=/home/user/mingfeng_wu/installed/zlib
make clean
make
make install

(ARM)
./configure --prefix=/home/user/mingfeng_wu/installed/arm-uc-zlib

# !!!Modify Makefile manually
# -CC=gcc
# +CROSS=/home/user/mingfeng_wu/installed/crosstool-4.5.2/bin/arm-unknown-linux-uclibcgnueabi-
# +CC=$(CROSS)gcc
# -LDSHARED=gcc
# -CPP=gcc -E
# +LDSHARED=$(CROSS)gcc
# +CPP=$(CROSS)gcc -E
# -AR=ar rc
# +AR=$(CROSS)ar rc
# -RANLIB=ranlib
# +RANLIB=$(CROSS)ranlib

make clean
make
make install

2) Compile openssl-1.0.0d
(x86)
./Configure --prefix=/home/user/mingfeng_wu/installed/openssl os/compiler:gcc

make clean
make
make install

(ARM)
./Configure --prefix=/home/user/mingfeng_wu/installed/arm-uc-openssl os/compiler:arm-unknown-linux-uclibcgnueabi-gcc

make clean
make
make install

3) Compile openssh-5.9p1

Modify sshd_config with "Subsystem       sftp    /usr/local/libexec/sftp-server"

(x86)
./configure --prefix=/home/user/mingfeng_wu/installed/openssh \
            --with-libs \
            --with-zlib=/home/user/mingfeng_wu/installed/zlib \
            --with-ssl-dir=/home/user/mingfeng_wu/installed/openssl \
            --disable-etc-default-login \
            CC=gcc \
            AR=ar \
            RANLIB=ranlib

make clean
make
make install

(ARM)
./configure --host=arm-unknown-linux-uclibcgnueabi \
            --with-libs \
            --with-zlib=/home/user/mingfeng_wu/installed/arm-uc-zlib \
            --with-ssl-dir=/home/user/mingfeng_wu/installed/arm-uc-openssl \
            --disable-etc-default-login \
       CC=arm-unknown-linux-uclibcgnueabi-gcc \
       AR=arm-unknown-linux-uclibcgnueabi-ar \
       RANLIB=arm-unknown-linux-uclibcgnueabi-ranlib

make clean
make

/home/user/mingfeng/installed/crosstool-4.5.2/bin/arm-linux-strip scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan sftp-server ssh-key
sign sshd

4) readme.ssh-transparent-login
1. Generate on your LOCAL machine a keypair with:

# ssh-keygen -t rsa (dont type in any password, just keep hitting enter) .

This will generate public/private rsa key pair in the directory of /root/.ssh:

/root/.ssh/id_rsa            (private key)

/root/.ssh/id_rsa.pub        (public key)

2. Make sure your private key resides under /root/.ssh on your LOCAL machine.

3. Also transfer the PRIVATE key to the machine which you want to automatically

login to. Put it under the directory /usr/local/etc.

4. Transfer the PUBLIC key to the machine which you want to automatically login to.

  Under the directory /root/.ssh (create it if necessary) concatenate your public key

with the file authorized_keys (create file if needed) .

5. Make sure the authorized_keys on the REMOTE machine is not read or modifiable by

group or others by doing chmod 700 /root/.ssh/authorized_keys.

6. Make sure the /root/.ssh directory on the REMOTE machine is not read or modifiable

by group or others by doing chmod 700 /root/.ssh

7. You may need to enable empty password authentication (need root access) on the

REMOTE machine in the config file sshd_config. Make "Permitemptypasswords yes".

You also need to modify "Protocol 2,1" to "Protocol 2" and modify "HostKey

/etc/ssh/ssh_host_rsa_key" to "/usr/local/etc/id_rsa". Please refer to the attached.

8. Restart /usr/local/sbin/sshd daemon on REMOTE, and you can automatically login with

ssh/sftp without password on LOCAL.

5) gcc-4.5.2-no-mtune-sshscp.exp
# Board definition file for board "myboard_sshscp"
# How to compile C programs for this board
set_board_info compiler /home/user/mingfeng_wu/installed/crosstool-4.5.2/bin/arm-unknown-linux-uclibcgnueabi-gcc
set_board_info cflags ""

# Network address of board
set_board_info hostname 172.18.116.241

# How to log into this board via ssh and copy files via scp.
# Ideally, you'll set it up to not need a password to log in via ssh
# (see e.g. http://www-csli.stanford.edu/semlab/muri/system/howto/ssh.html).
set_board_info username root

#set_board_info shell_prompt    "[root@platform]#"
# For DejaGnu 1.4.3 and above; DejaGnu 1.4.2.x (Debian 3.0) ignores these settings!
set_board_info rsh_prog /usr/bin/ssh
set_board_info rcp_prog /usr/bin/scp

6) test_installed.remote
#! /bin/sh

# (C) 1998, 2000, 2002, 2003, 2007 Free Software Foundation
# Originally by Alexandre Oliva <oliva@dcc.unicamp.br>

# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License.  A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html

# This scripts assumes it lives in the contrib directory of the GCC
# source tree, so it will find the testsuite tree from its location.
# If you move it elsewhere, or want to use another testsuite tree, you
# can override the defaults with --srcdir=/some/dir/GCC or
# --testsuite=/some/dir/GCC/gcc/testsuite.  If you specify
# --testsuite, --srcdir will be ignored; otherwise, `/gcc/testsuite'
# will be appended to the srcdir.

# You may specify where the binaries to be tested should be picked up
# from.  If you specify --prefix=/some/dir, gcc, g++ and gfortran will be
# looked for at /some/dir/bin.  Each one may be overridden by
# specifying --with-gcc=/pathname/to/gcc, --with-g++=/pathname/to/g++
# and --with-gfortran=/pathname/to/gfortran.  If you specify --without-gcc,
# --without-g++ or --without-gfortran, the test for the specified program
# will be skipped.  By default, gcc, g++ and gfortran will be searched in
# the PATH.

# An additional argument may specify --tmpdir=/some/dir; by default,
# temporaries will be stored in the current directory, where the log
# files will be stored.

# The script will interpret arguments until it finds one it does not
# understand.  The remaining ones will be passed to `runtest'.  A
# double-dash can be used to explicitly separate the arguments to
# `test_installed' from the ones to `runtest'.

# This script should be run in an empty directory; it will refuse to
# run if it finds a file named site.exp in the current directory.


if test -f site.exp; then
    echo site.exp already exists >&2
    exit 1
fi

while true; do
  case "$1" in
  --with-testsuite=*) testsuite=`echo "$1" | sed 's/[^=]*=//'`; shift;;
  --srcdir=*) srcdir=`echo "$1" | sed 's/[^=]*=//'`; shift;;

  --prefix=*) prefix=`echo "$1" | sed 's/[^=]*=//'`; shift;;
  --with-gcc=*) GCC_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
  --with-g++=*) GXX_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
  --with-gfortran=*) GFORTRAN_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
  --without-gcc) GCC_UNDER_TEST=no; shift;;
  --without-g++) GXX_UNDER_TEST=no; shift;;
  --without-gfortran) GFORTRAN_UNDER_TEST=no; shift;;
  --without-objc) OBJC_UNDER_TEST=no; shift;;

  --tmpdir=*) tmpdir=`echo "$1" | sed 's/[^=]*=//'`; shift;;

  --help) cat <<\EOF
Runs the testsuite for an installed version of gcc/g++/gfortran/objc
Copyright (C) 1998  Free Software Foundation
by Alexandre Oliva <oliva@dcc.unicamp.br>

Supported arguments:

--help                        prints this page

--with-testsuite=/some/dir/gcc/testsuite   specify the testsuite directory
--srcdir=/some/dir            same as --with-testsuite=/some/dir/gcc/testsuite
                              [deduced from shell-script pathname]

--prefix=/some/dir            use gcc, g++ and gfortran from /some/dir/bin [PATH]
--with-gcc=/some/dir/bin/gcc  use specified gcc program [gcc]
--with-g++=/some/dir/bin/g++  use specified g++ program [g++]
--with-gfortran=/some/dir/bin/gfortran  use specified gfortran program [gfortran]
--without-gcc                 do not run gcc testsuite
--without-g++                 do not run g++ testsuite
--without-gfortran            do not run gfortran testsuite
--without-objc                do not run objc testsuite

--tmpdir=/some/dir            create temporaries and leave failed programs
                              at specified directory [.]

--   end of argument list; following arguments are passed to runtest
EOF
    exit
  ;;

  --) shift; break;;
  *) break;;
  esac
done

if test x"${testsuite+set}" != x"set" && test x"${srcdir+set}" != x"set"; then
  file=$0
  while [ -h $file ]; do
    file=`ls -l $file | sed s/'.* -> '//`
  done
  srcdir=`CDPATH=. && cd \`echo "$file" | sed 's,/*[^/]*$,,;s,^$,.,'\`/.. >/dev/null && ${PWDCMD-pwd}`
fi

CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi-

cat >site.exp <<EOF
lappend boards_dir "/root/toolchain/gcc-test"
lappend boards_dir "/usr/share/dejagnu"
set rootme "."
set tmpdir "${tmpdir-`${PWDCMD-pwd}`}"
set srcdir "${testsuite-${srcdir}/gcc/testsuite}"
set CFLAGS ""
set CXXFLAGS ""
set HOSTCC "cc"
set HOSTCFLAGS ""
set GCC_UNDER_TEST "${GCC_UNDER_TEST-${prefix}${prefix+/bin/}${CROSS_COMPILE}gcc}"
set GXX_UNDER_TEST "${GXX_UNDER_TEST-${prefix}${prefix+/bin/}${CROSS_COMPILE}g++}"
set GFORTRAN_UNDER_TEST "${GFORTRAN_UNDER_TEST-${prefix}${prefix+/bin/}${CROSS_COMPILE}gfortran}"
set OBJC_UNDER_TEST "${OBJC_UNDER_TEST-${prefix}${prefix+/bin/}${CROSS_COMPILE}gcc}"
set target_triplet arm-unknown-linux-uclibcgnueabi
set target_alias arm-none-linux-uclibcgnueabi
EOF

test x"${GCC_UNDER_TEST}" = x"no" || runtest --tool gcc ${1+"$@"}
test x"${GXX_UNDER_TEST}" = x"no" || runtest --tool g++ ${1+"$@"}
test x"${GFORTRAN_UNDER_TEST}" = x"no" || runtest --tool gfortran ${1+"$@"}
test x"${OBJC_UNDER_TEST}" = x"no" || runtest --tool objc ${1+"$@"}

exit 0

7) run-gcc-4.5.2-sshscp.sh
#!/bin/bash

# increase stack size to 64MB to prevent limits-exprparen.c from segmentation fault
ulimit -s 65536
DATE=`date +%Y%m%d`

GCC=/home/user/mingfeng_wu/installed/crosstool-4.5.2

REGRESSION=/home/user/mingfeng_wu/work/GCC
rm -rf $REGRESSION/gcc-regression-test-${DATE}
mkdir -p $REGRESSION/gcc-regression-test-${DATE}
cd $REGRESSION/gcc-regression-test-${DATE}

DEJAGNULIBS="/usr/share/dejagnu" sh $REGRESSION/gcc-4.5.2/contrib/test_installed.remote --srcdir=$REGRESSION/gcc-4.5.2 --without-gfortran --without-objc --wi
th-gcc=${GCC}/bin/arm-unknown-linux-uclibcgnueabi-gcc --with-g++=${GCC}/bin/arm-unknown-linux-uclibcgnueabi-g++ --target_board=gcc-4.5.2-no-mtune-sshscp


8) For arm-unknown-linux-uclibcgnueabi-* toolchain to run gcc regression test
[mingfeng, 2011-11-07]

In host-Linux (not embedded Linux):
1. Do ssh/sftp transparent login. Please see "readme.ssh-transparent-login".
2. Copy "gcc-4.5.2-sshscp.exp" to /usr/share/dejagnu.
3. Copy "test_installed.remote" to gcc-4.5.2/contrib/.
4. Run script file "run-gcc-4.5.2-sshscp.sh"
5. Generate log
   $ cd gcc-regression-test-20111107
   $ ../gcc-4.5.2/contrib/test_summary > gcc-4.5.2-test_summary.log