diff --git a/video/sm712.c b/video/sm712.c index a86470b7d..f0d0f29c4 100644 --- a/video/sm712.c +++ b/video/sm712.c @@ -27,6 +27,10 @@ #include #include +#include "sm712_init.c" + +#define GRUB_SM712_TOTAL_MEMORY_SPACE 0x700400 + static struct { struct grub_video_mode_info mode_info; @@ -55,7 +59,7 @@ grub_video_sm712_video_fini (void) { if (framebuffer.mapped) grub_pci_device_unmap_range (framebuffer.dev, framebuffer.ptr, - 1024 * 600 * 2); + GRUB_SM712_TOTAL_MEMORY_SPACE); return grub_video_fb_fini (); } @@ -67,6 +71,7 @@ grub_video_sm712_setup (unsigned int width, unsigned int height, int depth; grub_err_t err; int found = 0; + unsigned i; auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused))); int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused))) @@ -102,11 +107,6 @@ grub_video_sm712_setup (unsigned int width, unsigned int height, if (!found) return grub_error (GRUB_ERR_IO, "Couldn't find graphics card"); - if (found && framebuffer.base == 0) - { - /* FIXME: change framebuffer base */ - } - /* Fill mode info details. */ framebuffer.mode_info.width = 1024; framebuffer.mode_info.height = 600; @@ -124,12 +124,64 @@ grub_video_sm712_setup (unsigned int width, unsigned int height, framebuffer.mode_info.reserved_mask_size = 0; framebuffer.mode_info.reserved_field_pos = 0; framebuffer.mode_info.blit_format = grub_video_get_blit_format (&framebuffer.mode_info); + + if (found && framebuffer.base == 0) + { + grub_pci_address_t addr; + /* FIXME: choose address dynamically if needed. */ + framebuffer.base = 0x04000000; + + addr = grub_pci_make_address (framebuffer.dev, GRUB_PCI_REG_ADDRESS_REG0); + grub_pci_write (addr, framebuffer.base); + + /* Set latency. */ + addr = grub_pci_make_address (framebuffer.dev, GRUB_PCI_REG_CACHELINE); + grub_pci_write (addr, 0x8); + + /* Enable address spaces. */ + addr = grub_pci_make_address (framebuffer.dev, GRUB_PCI_REG_COMMAND); + grub_pci_write (addr, 0x7); + } + /* We can safely discard volatile attribute. */ - framebuffer.ptr = (void *) grub_pci_device_map_range (framebuffer.dev, - framebuffer.base, - 1024 * 600 * 2); + framebuffer.ptr + = (void *) grub_pci_device_map_range (framebuffer.dev, + framebuffer.base, + GRUB_SM712_TOTAL_MEMORY_SPACE); framebuffer.mapped = 1; + /* Initialise SM712. */ + grub_outb (0x18, GRUB_MACHINE_PCI_IO_BASE + 0x3c4); + grub_outb (0x11, GRUB_MACHINE_PCI_IO_BASE + 0x3c5); + + /* Prevent garbage from appearing on the screen. */ + grub_memset (framebuffer.ptr, 0, + framebuffer.mode_info.height * framebuffer.mode_info.pitch); + + for (i = 0; i < ARRAY_SIZE (sm712_init); i++) + switch (sm712_init[i].directive) + { + case 1: + *(volatile grub_uint8_t *) ((char *) framebuffer.ptr + + sm712_init[i].addr) = sm712_init[i].val; + break; + case -1: + { + grub_uint8_t val = *(volatile grub_uint8_t *) + ((char *) framebuffer.ptr + sm712_init[i].addr); + (void) val; + } + break; + case 2: + *(volatile grub_uint16_t *) ((char *) framebuffer.ptr + + sm712_init[i].addr) = sm712_init[i].val; + break; + case 4: + *(volatile grub_uint32_t *) ((char *) framebuffer.ptr + + sm712_init[i].addr) = sm712_init[i].val; + break; + } + err = grub_video_fb_create_render_target_from_pointer (&framebuffer.render_target, &framebuffer.mode_info, framebuffer.ptr); if (err) diff --git a/video/sm712_init.c b/video/sm712_init.c new file mode 100644 index 000000000..02c64c453 --- /dev/null +++ b/video/sm712_init.c @@ -0,0 +1,546 @@ +/* Following sequence is a capture of sm712 initialisation sequence. */ +static struct +{ + int directive; + grub_uint32_t addr; + grub_uint32_t val; +} sm712_init[] = +{ + {1, 0x7003c4, 0x21}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x62}, + {1, 0x7003c5, 0x7a}, + {1, 0x7003c4, 0x6a}, + {1, 0x7003c5, 0x16}, + {1, 0x7003c4, 0x6b}, + {1, 0x7003c5, 0x2}, + {1, 0x7003c6, 0x0}, + {1, 0x7003c4, 0x0}, + {1, 0x7003c5, 0x1}, + {1, 0x7003c2, 0xeb}, + {1, 0x7003c4, 0x0}, + {1, 0x7003c5, 0x3}, + {1, 0x7003c4, 0x1}, + {1, 0x7003c5, 0x1}, + {1, 0x7003c4, 0x2}, + {1, 0x7003c5, 0xf}, + {1, 0x7003c4, 0x3}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x4}, + {1, 0x7003c5, 0xe}, + {1, 0x7003c4, 0x10}, + {1, 0x7003c5, 0xc8}, + {1, 0x7003c4, 0x11}, + {1, 0x7003c5, 0x40}, + {1, 0x7003c4, 0x12}, + {1, 0x7003c5, 0x14}, + {1, 0x7003c4, 0x13}, + {1, 0x7003c5, 0x60}, + {1, 0x7003c4, 0x14}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x15}, + {1, 0x7003c5, 0xa}, + {1, 0x7003c4, 0x16}, + {1, 0x7003c5, 0x92}, + {1, 0x7003c4, 0x17}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x18}, + {1, 0x7003c5, 0x51}, + {1, 0x7003c4, 0x19}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x1a}, + {1, 0x7003c5, 0x1}, + {1, 0x7003c4, 0x1b}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x1c}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x1d}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x1e}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x1f}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x20}, + {1, 0x7003c5, 0xc4}, + {1, 0x7003c4, 0x21}, + {1, 0x7003c5, 0x30}, + {1, 0x7003c4, 0x22}, + {1, 0x7003c5, 0x2}, + {1, 0x7003c4, 0x23}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x24}, + {1, 0x7003c5, 0x1}, + {1, 0x7003c4, 0x30}, + {1, 0x7003c5, 0x28}, + {1, 0x7003c4, 0x31}, + {1, 0x7003c5, 0x3}, + {1, 0x7003c4, 0x32}, + {1, 0x7003c5, 0x24}, + {1, 0x7003c4, 0x33}, + {1, 0x7003c5, 0x9}, + {1, 0x7003c4, 0x34}, + {1, 0x7003c5, 0xc0}, + {1, 0x7003c4, 0x35}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x36}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x37}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x38}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x39}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x3a}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x3b}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x3c}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x3d}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x3e}, + {1, 0x7003c5, 0x3}, + {1, 0x7003c4, 0x3f}, + {1, 0x7003c5, 0xff}, + {1, 0x7003c4, 0x40}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x41}, + {1, 0x7003c5, 0xfc}, + {1, 0x7003c4, 0x42}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x43}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x44}, + {1, 0x7003c5, 0x20}, + {1, 0x7003c4, 0x45}, + {1, 0x7003c5, 0x18}, + {1, 0x7003c4, 0x46}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x47}, + {1, 0x7003c5, 0xfc}, + {1, 0x7003c4, 0x48}, + {1, 0x7003c5, 0x20}, + {1, 0x7003c4, 0x49}, + {1, 0x7003c5, 0xc}, + {1, 0x7003c4, 0x4a}, + {1, 0x7003c5, 0x44}, + {1, 0x7003c4, 0x4b}, + {1, 0x7003c5, 0x20}, + {1, 0x7003c4, 0x4c}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x4d}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x4e}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x4f}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x50}, + {1, 0x7003c5, 0x6}, + {1, 0x7003c4, 0x51}, + {1, 0x7003c5, 0x68}, + {1, 0x7003c4, 0x52}, + {1, 0x7003c5, 0xa7}, + {1, 0x7003c4, 0x53}, + {1, 0x7003c5, 0x7f}, + {1, 0x7003c4, 0x54}, + {1, 0x7003c5, 0x83}, + {1, 0x7003c4, 0x55}, + {1, 0x7003c5, 0x24}, + {1, 0x7003c4, 0x56}, + {1, 0x7003c5, 0xff}, + {1, 0x7003c4, 0x57}, + {1, 0x7003c5, 0x3}, + {1, 0x7003c4, 0x58}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x59}, + {1, 0x7003c5, 0x60}, + {1, 0x7003c4, 0x5a}, + {1, 0x7003c5, 0x59}, + {1, 0x7003c4, 0x5b}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x5c}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x5d}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x5e}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x5f}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x60}, + {1, 0x7003c5, 0x1}, + {1, 0x7003c4, 0x61}, + {1, 0x7003c5, 0x80}, + {1, 0x7003c4, 0x63}, + {1, 0x7003c5, 0x1a}, + {1, 0x7003c4, 0x64}, + {1, 0x7003c5, 0x1a}, + {1, 0x7003c4, 0x65}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x66}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x67}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x68}, + {1, 0x7003c5, 0x50}, + {1, 0x7003c4, 0x69}, + {1, 0x7003c5, 0x3}, + {1, 0x7003c4, 0x6c}, + {1, 0x7003c5, 0x52}, + {1, 0x7003c4, 0x6d}, + {1, 0x7003c5, 0x89}, + {1, 0x7003c4, 0x6e}, + {1, 0x7003c5, 0x9}, + {1, 0x7003c4, 0x6f}, + {1, 0x7003c5, 0x2}, + {1, 0x7003c4, 0x70}, + {1, 0x7003c5, 0x4}, + {1, 0x7003c4, 0x71}, + {1, 0x7003c5, 0x45}, + {1, 0x7003c4, 0x72}, + {1, 0x7003c5, 0x30}, + {1, 0x7003c4, 0x73}, + {1, 0x7003c5, 0x30}, + {1, 0x7003c4, 0x74}, + {1, 0x7003c5, 0x40}, + {1, 0x7003c4, 0x75}, + {1, 0x7003c5, 0x20}, + {1, 0x7003c4, 0x80}, + {1, 0x7003c5, 0xff}, + {1, 0x7003c4, 0x81}, + {1, 0x7003c5, 0x7}, + {1, 0x7003c4, 0x82}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x83}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x84}, + {1, 0x7003c5, 0x8}, + {1, 0x7003c4, 0x85}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x86}, + {1, 0x7003c5, 0x42}, + {1, 0x7003c4, 0x87}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x88}, + {1, 0x7003c5, 0x59}, + {1, 0x7003c4, 0x89}, + {1, 0x7003c5, 0x2}, + {1, 0x7003c4, 0x8a}, + {1, 0x7003c5, 0x44}, + {1, 0x7003c4, 0x8b}, + {1, 0x7003c5, 0x2}, + {1, 0x7003c4, 0x8c}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x8d}, + {1, 0x7003c5, 0xff}, + {1, 0x7003c4, 0x8e}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x8f}, + {1, 0x7003c5, 0x3a}, + {1, 0x7003c4, 0x90}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x91}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x92}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0x93}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0xa0}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0xa1}, + {1, 0x7003c5, 0x10}, + {1, 0x7003c4, 0xa2}, + {1, 0x7003c5, 0x8}, + {1, 0x7003c4, 0xa3}, + {1, 0x7003c5, 0x0}, + {1, 0x7003c4, 0xa4}, + {1, 0x7003c5, 0x2}, + {1, 0x7003c4, 0xa5}, + {1, 0x7003c5, 0xed}, + {1, 0x7003c4, 0xa6}, + {1, 0x7003c5, 0xed}, + {1, 0x7003c4, 0xa7}, + {1, 0x7003c5, 0xed}, + {1, 0x7003c4, 0xa8}, + {1, 0x7003c5, 0x7b}, + {1, 0x7003c4, 0xa9}, + {1, 0x7003c5, 0xfb}, + {1, 0x7003c4, 0xaa}, + {1, 0x7003c5, 0xff}, + {1, 0x7003c4, 0xab}, + {1, 0x7003c5, 0xff}, + {1, 0x7003c4, 0xac}, + {1, 0x7003c5, 0x97}, + {1, 0x7003c4, 0xad}, + {1, 0x7003c5, 0xef}, + {1, 0x7003c4, 0xae}, + {1, 0x7003c5, 0xbf}, + {1, 0x7003c4, 0xaf}, + {1, 0x7003c5, 0xdf}, + {1, 0x7003ce, 0x0}, + {1, 0x7003cf, 0x0}, + {1, 0x7003ce, 0x1}, + {1, 0x7003cf, 0x0}, + {1, 0x7003ce, 0x2}, + {1, 0x7003cf, 0x0}, + {1, 0x7003ce, 0x3}, + {1, 0x7003cf, 0x0}, + {1, 0x7003ce, 0x4}, + {1, 0x7003cf, 0x0}, + {1, 0x7003ce, 0x5}, + {1, 0x7003cf, 0x40}, + {1, 0x7003ce, 0x6}, + {1, 0x7003cf, 0x5}, + {1, 0x7003ce, 0x7}, + {1, 0x7003cf, 0xf}, + {1, 0x7003ce, 0x8}, + {1, 0x7003cf, 0xff}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x0}, + {-1, 0x7003c1, 0x3e}, + {1, 0x7003c0, 0x0}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x1}, + {-1, 0x7003c1, 0x3b}, + {1, 0x7003c0, 0x1}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x2}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0x2}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x3}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0x3}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x4}, + {-1, 0x7003c1, 0x3b}, + {1, 0x7003c0, 0x4}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x5}, + {-1, 0x7003c1, 0x2f}, + {1, 0x7003c0, 0x5}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x6}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0x6}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x7}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0x7}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x8}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0x8}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x9}, + {-1, 0x7003c1, 0x3d}, + {1, 0x7003c0, 0x9}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0xa}, + {-1, 0x7003c1, 0x1f}, + {1, 0x7003c0, 0xa}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0xb}, + {-1, 0x7003c1, 0x1f}, + {1, 0x7003c0, 0xb}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0xc}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0xc}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0xd}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0xd}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0xe}, + {-1, 0x7003c1, 0x3f}, + {1, 0x7003c0, 0xe}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0xf}, + {-1, 0x7003c1, 0x2e}, + {1, 0x7003c0, 0xf}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x10}, + {-1, 0x7003c1, 0x0}, + {1, 0x7003c0, 0x41}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x11}, + {-1, 0x7003c1, 0x0}, + {1, 0x7003c0, 0x0}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x12}, + {-1, 0x7003c1, 0x0}, + {1, 0x7003c0, 0xf}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x13}, + {-1, 0x7003c1, 0x0}, + {1, 0x7003c0, 0x0}, + {-1, 0x7003da, 0x5}, + {1, 0x7003c0, 0x14}, + {-1, 0x7003c1, 0x0}, + {1, 0x7003c0, 0x0}, + {1, 0x7003d4, 0x0}, + {1, 0x7003d5, 0xa3}, + {1, 0x7003d4, 0x1}, + {1, 0x7003d5, 0x7f}, + {1, 0x7003d4, 0x2}, + {1, 0x7003d5, 0x7f}, + {1, 0x7003d4, 0x3}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x4}, + {1, 0x7003d5, 0x85}, + {1, 0x7003d4, 0x5}, + {1, 0x7003d5, 0x16}, + {1, 0x7003d4, 0x6}, + {1, 0x7003d5, 0x24}, + {1, 0x7003d4, 0x7}, + {1, 0x7003d5, 0xf5}, + {1, 0x7003d4, 0x8}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x9}, + {1, 0x7003d5, 0x60}, + {1, 0x7003d4, 0xa}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xb}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xc}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xd}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xe}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xf}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x10}, + {1, 0x7003d5, 0x3}, + {1, 0x7003d4, 0x11}, + {1, 0x7003d5, 0x9}, + {1, 0x7003d4, 0x12}, + {1, 0x7003d5, 0xff}, + {1, 0x7003d4, 0x13}, + {1, 0x7003d5, 0x80}, + {1, 0x7003d4, 0x14}, + {1, 0x7003d5, 0x40}, + {1, 0x7003d4, 0x15}, + {1, 0x7003d5, 0xff}, + {1, 0x7003d4, 0x16}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x17}, + {1, 0x7003d5, 0xe3}, + {1, 0x7003d4, 0x18}, + {1, 0x7003d5, 0xff}, + {1, 0x7003d4, 0x30}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x31}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x32}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x33}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x34}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x35}, + {1, 0x7003d5, 0x80}, + {1, 0x7003d4, 0x36}, + {1, 0x7003d5, 0x2}, + {1, 0x7003d4, 0x37}, + {1, 0x7003d5, 0x20}, + {1, 0x7003d4, 0x38}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x39}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x3a}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x3b}, + {1, 0x7003d5, 0x40}, + {1, 0x7003d4, 0x3c}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x3d}, + {1, 0x7003d5, 0xff}, + {1, 0x7003d4, 0x3e}, + {1, 0x7003d5, 0x46}, + {1, 0x7003d4, 0x3f}, + {1, 0x7003d5, 0x91}, + {1, 0x7003d4, 0x40}, + {1, 0x7003d5, 0xa3}, + {1, 0x7003d4, 0x41}, + {1, 0x7003d5, 0x7f}, + {1, 0x7003d4, 0x42}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x43}, + {1, 0x7003d5, 0x86}, + {1, 0x7003d4, 0x44}, + {1, 0x7003d5, 0x15}, + {1, 0x7003d4, 0x45}, + {1, 0x7003d5, 0x24}, + {1, 0x7003d4, 0x46}, + {1, 0x7003d5, 0xff}, + {1, 0x7003d4, 0x47}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x48}, + {1, 0x7003d5, 0x1}, + {1, 0x7003d4, 0x49}, + {1, 0x7003d5, 0x7}, + {1, 0x7003d4, 0x4a}, + {1, 0x7003d5, 0xe5}, + {1, 0x7003d4, 0x4b}, + {1, 0x7003d5, 0x20}, + {1, 0x7003d4, 0x4c}, + {1, 0x7003d5, 0x7f}, + {1, 0x7003d4, 0x4d}, + {1, 0x7003d5, 0x57}, + {1, 0x7003d4, 0x90}, + {1, 0x7003d5, 0x55}, + {1, 0x7003d4, 0x91}, + {1, 0x7003d5, 0xd5}, + {1, 0x7003d4, 0x92}, + {1, 0x7003d5, 0x5d}, + {1, 0x7003d4, 0x93}, + {1, 0x7003d5, 0xdd}, + {1, 0x7003d4, 0x94}, + {1, 0x7003d5, 0x86}, + {1, 0x7003d4, 0x95}, + {1, 0x7003d5, 0x17}, + {1, 0x7003d4, 0x96}, + {1, 0x7003d5, 0x8e}, + {1, 0x7003d4, 0x97}, + {1, 0x7003d5, 0xaa}, + {1, 0x7003d4, 0x98}, + {1, 0x7003d5, 0x8a}, + {1, 0x7003d4, 0x99}, + {1, 0x7003d5, 0xa3}, + {1, 0x7003d4, 0x9a}, + {1, 0x7003d5, 0xde}, + {1, 0x7003d4, 0x9b}, + {1, 0x7003d5, 0xab}, + {1, 0x7003d4, 0x9c}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x9d}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x9e}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0x9f}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xa0}, + {1, 0x7003d5, 0x2}, + {1, 0x7003d4, 0xa1}, + {1, 0x7003d5, 0x2}, + {1, 0x7003d4, 0xa2}, + {1, 0x7003d5, 0x2}, + {1, 0x7003d4, 0xa3}, + {1, 0x7003d5, 0x15}, + {1, 0x7003d4, 0xa4}, + {1, 0x7003d5, 0x2}, + {1, 0x7003d4, 0xa5}, + {1, 0x7003d5, 0x6}, + {1, 0x7003d4, 0xa6}, + {1, 0x7003d5, 0x0}, + {1, 0x7003d4, 0xa7}, + {1, 0x7003d5, 0x0}, + {1, 0x7003c2, 0x67}, + {4, 0x40c00c, 0x0}, + {4, 0x40c040, 0x0}, + {4, 0x40c000, 0x20000}, + {4, 0x40c010, 0x1020100}, + {1, 0x7003c4, 0x16}, + {-1, 0x7003c5, 0x17} +};