diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2006-01-17 10:29:06 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-01-17 10:29:06 -0500 |
commit | ea9b395fe20ac74be788f415af2622ac8f0c35c7 (patch) | |
tree | d1653e1a4cbe360aa7132ea4e29ab92a02038224 /drivers/scsi | |
parent | 61420e147a706ee7c7a902008045547fb2a2a330 (diff) | |
parent | 1bc4ccfff8675adc3d96f91245eb7e2dc0043ca9 (diff) |
Merge branch 'upstream'
Diffstat (limited to 'drivers/scsi')
161 files changed, 20538 insertions, 7470 deletions
diff --git a/drivers/scsi/.gitignore b/drivers/scsi/.gitignore new file mode 100644 index 000000000000..b385af314356 --- /dev/null +++ b/drivers/scsi/.gitignore | |||
@@ -0,0 +1,3 @@ | |||
1 | 53c700_d.h | ||
2 | 53c7xx_d.h | ||
3 | 53c7xx_u.h | ||
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index 3ff74f472249..31c497542272 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c | |||
@@ -73,6 +73,7 @@ | |||
73 | #include <linux/delay.h> | 73 | #include <linux/delay.h> |
74 | #include <linux/pci.h> | 74 | #include <linux/pci.h> |
75 | #include <linux/time.h> | 75 | #include <linux/time.h> |
76 | #include <linux/mutex.h> | ||
76 | #include <asm/io.h> | 77 | #include <asm/io.h> |
77 | #include <asm/irq.h> | 78 | #include <asm/irq.h> |
78 | #include <asm/uaccess.h> | 79 | #include <asm/uaccess.h> |
@@ -615,7 +616,7 @@ static int twa_chrdev_ioctl(struct inode *inode, struct file *file, unsigned int | |||
615 | void __user *argp = (void __user *)arg; | 616 | void __user *argp = (void __user *)arg; |
616 | 617 | ||
617 | /* Only let one of these through at a time */ | 618 | /* Only let one of these through at a time */ |
618 | if (down_interruptible(&tw_dev->ioctl_sem)) { | 619 | if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { |
619 | retval = TW_IOCTL_ERROR_OS_EINTR; | 620 | retval = TW_IOCTL_ERROR_OS_EINTR; |
620 | goto out; | 621 | goto out; |
621 | } | 622 | } |
@@ -852,7 +853,7 @@ out3: | |||
852 | /* Now free ioctl buf memory */ | 853 | /* Now free ioctl buf memory */ |
853 | dma_free_coherent(&tw_dev->tw_pci_dev->dev, data_buffer_length_adjusted+sizeof(TW_Ioctl_Buf_Apache) - 1, cpu_addr, dma_handle); | 854 | dma_free_coherent(&tw_dev->tw_pci_dev->dev, data_buffer_length_adjusted+sizeof(TW_Ioctl_Buf_Apache) - 1, cpu_addr, dma_handle); |
854 | out2: | 855 | out2: |
855 | up(&tw_dev->ioctl_sem); | 856 | mutex_unlock(&tw_dev->ioctl_lock); |
856 | out: | 857 | out: |
857 | return retval; | 858 | return retval; |
858 | } /* End twa_chrdev_ioctl() */ | 859 | } /* End twa_chrdev_ioctl() */ |
@@ -1182,7 +1183,7 @@ static int twa_initialize_device_extension(TW_Device_Extension *tw_dev) | |||
1182 | tw_dev->error_sequence_id = 1; | 1183 | tw_dev->error_sequence_id = 1; |
1183 | tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE; | 1184 | tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE; |
1184 | 1185 | ||
1185 | init_MUTEX(&tw_dev->ioctl_sem); | 1186 | mutex_init(&tw_dev->ioctl_lock); |
1186 | init_waitqueue_head(&tw_dev->ioctl_wqueue); | 1187 | init_waitqueue_head(&tw_dev->ioctl_wqueue); |
1187 | 1188 | ||
1188 | retval = 0; | 1189 | retval = 0; |
diff --git a/drivers/scsi/3w-9xxx.h b/drivers/scsi/3w-9xxx.h index 46f22cdc8298..1b16d57f0314 100644 --- a/drivers/scsi/3w-9xxx.h +++ b/drivers/scsi/3w-9xxx.h | |||
@@ -672,7 +672,7 @@ typedef struct TAG_TW_Device_Extension { | |||
672 | u32 ioctl_msec; | 672 | u32 ioctl_msec; |
673 | int chrdev_request_id; | 673 | int chrdev_request_id; |
674 | wait_queue_head_t ioctl_wqueue; | 674 | wait_queue_head_t ioctl_wqueue; |
675 | struct semaphore ioctl_sem; | 675 | struct mutex ioctl_lock; |
676 | char aen_clobber; | 676 | char aen_clobber; |
677 | unsigned short working_srl; | 677 | unsigned short working_srl; |
678 | unsigned short working_branch; | 678 | unsigned short working_branch; |
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 283f6d25892b..25f678d0780b 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c | |||
@@ -203,6 +203,7 @@ | |||
203 | #include <linux/delay.h> | 203 | #include <linux/delay.h> |
204 | #include <linux/pci.h> | 204 | #include <linux/pci.h> |
205 | #include <linux/time.h> | 205 | #include <linux/time.h> |
206 | #include <linux/mutex.h> | ||
206 | #include <asm/io.h> | 207 | #include <asm/io.h> |
207 | #include <asm/irq.h> | 208 | #include <asm/irq.h> |
208 | #include <asm/uaccess.h> | 209 | #include <asm/uaccess.h> |
@@ -888,7 +889,7 @@ static int tw_chrdev_ioctl(struct inode *inode, struct file *file, unsigned int | |||
888 | dprintk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl()\n"); | 889 | dprintk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl()\n"); |
889 | 890 | ||
890 | /* Only let one of these through at a time */ | 891 | /* Only let one of these through at a time */ |
891 | if (down_interruptible(&tw_dev->ioctl_sem)) | 892 | if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) |
892 | return -EINTR; | 893 | return -EINTR; |
893 | 894 | ||
894 | /* First copy down the buffer length */ | 895 | /* First copy down the buffer length */ |
@@ -1029,7 +1030,7 @@ out2: | |||
1029 | /* Now free ioctl buf memory */ | 1030 | /* Now free ioctl buf memory */ |
1030 | dma_free_coherent(&tw_dev->tw_pci_dev->dev, data_buffer_length_adjusted+sizeof(TW_New_Ioctl) - 1, cpu_addr, dma_handle); | 1031 | dma_free_coherent(&tw_dev->tw_pci_dev->dev, data_buffer_length_adjusted+sizeof(TW_New_Ioctl) - 1, cpu_addr, dma_handle); |
1031 | out: | 1032 | out: |
1032 | up(&tw_dev->ioctl_sem); | 1033 | mutex_unlock(&tw_dev->ioctl_lock); |
1033 | return retval; | 1034 | return retval; |
1034 | } /* End tw_chrdev_ioctl() */ | 1035 | } /* End tw_chrdev_ioctl() */ |
1035 | 1036 | ||
@@ -1270,7 +1271,7 @@ static int tw_initialize_device_extension(TW_Device_Extension *tw_dev) | |||
1270 | tw_dev->pending_tail = TW_Q_START; | 1271 | tw_dev->pending_tail = TW_Q_START; |
1271 | tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE; | 1272 | tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE; |
1272 | 1273 | ||
1273 | init_MUTEX(&tw_dev->ioctl_sem); | 1274 | mutex_init(&tw_dev->ioctl_lock); |
1274 | init_waitqueue_head(&tw_dev->ioctl_wqueue); | 1275 | init_waitqueue_head(&tw_dev->ioctl_wqueue); |
1275 | 1276 | ||
1276 | return 0; | 1277 | return 0; |
diff --git a/drivers/scsi/3w-xxxx.h b/drivers/scsi/3w-xxxx.h index 4f81fc39ec57..31fe5ea15920 100644 --- a/drivers/scsi/3w-xxxx.h +++ b/drivers/scsi/3w-xxxx.h | |||
@@ -420,7 +420,7 @@ typedef struct TAG_TW_Device_Extension { | |||
420 | u32 max_sector_count; | 420 | u32 max_sector_count; |
421 | u32 aen_count; | 421 | u32 aen_count; |
422 | struct Scsi_Host *host; | 422 | struct Scsi_Host *host; |
423 | struct semaphore ioctl_sem; | 423 | struct mutex ioctl_lock; |
424 | unsigned short aen_queue[TW_Q_LENGTH]; | 424 | unsigned short aen_queue[TW_Q_LENGTH]; |
425 | unsigned char aen_head; | 425 | unsigned char aen_head; |
426 | unsigned char aen_tail; | 426 | unsigned char aen_tail; |
diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c index e7ad269041a4..4ce7438608ec 100644 --- a/drivers/scsi/53c700.c +++ b/drivers/scsi/53c700.c | |||
@@ -857,7 +857,7 @@ process_extended_message(struct Scsi_Host *host, | |||
857 | printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ", | 857 | printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ", |
858 | host->host_no, pun, lun, | 858 | host->host_no, pun, lun, |
859 | NCR_700_phase[(dsps & 0xf00) >> 8]); | 859 | NCR_700_phase[(dsps & 0xf00) >> 8]); |
860 | scsi_print_msg(hostdata->msgin); | 860 | spi_print_msg(hostdata->msgin); |
861 | printk("\n"); | 861 | printk("\n"); |
862 | /* just reject it */ | 862 | /* just reject it */ |
863 | hostdata->msgout[0] = A_REJECT_MSG; | 863 | hostdata->msgout[0] = A_REJECT_MSG; |
@@ -887,7 +887,7 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata | |||
887 | #ifdef NCR_700_DEBUG | 887 | #ifdef NCR_700_DEBUG |
888 | printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun, | 888 | printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun, |
889 | NCR_700_phase[(dsps & 0xf00) >> 8]); | 889 | NCR_700_phase[(dsps & 0xf00) >> 8]); |
890 | scsi_print_msg(hostdata->msgin); | 890 | spi_print_msg(hostdata->msgin); |
891 | printk("\n"); | 891 | printk("\n"); |
892 | #endif | 892 | #endif |
893 | 893 | ||
@@ -939,7 +939,7 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata | |||
939 | host->host_no, pun, lun, | 939 | host->host_no, pun, lun, |
940 | NCR_700_phase[(dsps & 0xf00) >> 8]); | 940 | NCR_700_phase[(dsps & 0xf00) >> 8]); |
941 | 941 | ||
942 | scsi_print_msg(hostdata->msgin); | 942 | spi_print_msg(hostdata->msgin); |
943 | printk("\n"); | 943 | printk("\n"); |
944 | /* just reject it */ | 944 | /* just reject it */ |
945 | hostdata->msgout[0] = A_REJECT_MSG; | 945 | hostdata->msgout[0] = A_REJECT_MSG; |
diff --git a/drivers/scsi/53c700.h b/drivers/scsi/53c700.h index 362d78483d09..a8c83bb03630 100644 --- a/drivers/scsi/53c700.h +++ b/drivers/scsi/53c700.h | |||
@@ -238,21 +238,23 @@ struct NCR_700_Host_Parameters { | |||
238 | #ifdef CONFIG_53C700_LE_ON_BE | 238 | #ifdef CONFIG_53C700_LE_ON_BE |
239 | #define bE (hostdata->force_le_on_be ? 0 : 3) | 239 | #define bE (hostdata->force_le_on_be ? 0 : 3) |
240 | #define bSWAP (hostdata->force_le_on_be) | 240 | #define bSWAP (hostdata->force_le_on_be) |
241 | /* This is terrible, but there's no raw version of ioread32. That means | 241 | #define bEBus (!hostdata->force_le_on_be) |
242 | * that on a be board we swap twice (once in ioread32 and once again to | ||
243 | * get the value correct) */ | ||
244 | #define bS_to_io(x) ((hostdata->force_le_on_be) ? (x) : cpu_to_le32(x)) | ||
245 | #elif defined(__BIG_ENDIAN) | 242 | #elif defined(__BIG_ENDIAN) |
246 | #define bE 3 | 243 | #define bE 3 |
247 | #define bSWAP 0 | 244 | #define bSWAP 0 |
248 | #define bS_to_io(x) (x) | ||
249 | #elif defined(__LITTLE_ENDIAN) | 245 | #elif defined(__LITTLE_ENDIAN) |
250 | #define bE 0 | 246 | #define bE 0 |
251 | #define bSWAP 0 | 247 | #define bSWAP 0 |
252 | #define bS_to_io(x) (x) | ||
253 | #else | 248 | #else |
254 | #error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?" | 249 | #error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?" |
255 | #endif | 250 | #endif |
251 | #ifndef bEBus | ||
252 | #ifdef CONFIG_53C700_BE_BUS | ||
253 | #define bEBus 1 | ||
254 | #else | ||
255 | #define bEBus 0 | ||
256 | #endif | ||
257 | #endif | ||
256 | #define bS_to_cpu(x) (bSWAP ? le32_to_cpu(x) : (x)) | 258 | #define bS_to_cpu(x) (bSWAP ? le32_to_cpu(x) : (x)) |
257 | #define bS_to_host(x) (bSWAP ? cpu_to_le32(x) : (x)) | 259 | #define bS_to_host(x) (bSWAP ? cpu_to_le32(x) : (x)) |
258 | 260 | ||
@@ -466,14 +468,15 @@ NCR_700_readl(struct Scsi_Host *host, __u32 reg) | |||
466 | { | 468 | { |
467 | const struct NCR_700_Host_Parameters *hostdata | 469 | const struct NCR_700_Host_Parameters *hostdata |
468 | = (struct NCR_700_Host_Parameters *)host->hostdata[0]; | 470 | = (struct NCR_700_Host_Parameters *)host->hostdata[0]; |
469 | __u32 value = ioread32(hostdata->base + reg); | 471 | __u32 value = bEBus ? ioread32be(hostdata->base + reg) : |
472 | ioread32(hostdata->base + reg); | ||
470 | #if 1 | 473 | #if 1 |
471 | /* sanity check the register */ | 474 | /* sanity check the register */ |
472 | if((reg & 0x3) != 0) | 475 | if((reg & 0x3) != 0) |
473 | BUG(); | 476 | BUG(); |
474 | #endif | 477 | #endif |
475 | 478 | ||
476 | return bS_to_io(value); | 479 | return value; |
477 | } | 480 | } |
478 | 481 | ||
479 | static inline void | 482 | static inline void |
@@ -497,7 +500,8 @@ NCR_700_writel(__u32 value, struct Scsi_Host *host, __u32 reg) | |||
497 | BUG(); | 500 | BUG(); |
498 | #endif | 501 | #endif |
499 | 502 | ||
500 | iowrite32(bS_to_io(value), hostdata->base + reg); | 503 | bEBus ? iowrite32be(value, hostdata->base + reg): |
504 | iowrite32(value, hostdata->base + reg); | ||
501 | } | 505 | } |
502 | 506 | ||
503 | #endif | 507 | #endif |
diff --git a/drivers/scsi/53c7xx.c b/drivers/scsi/53c7xx.c index 9cb5dd48383f..7894b8ea84bd 100644 --- a/drivers/scsi/53c7xx.c +++ b/drivers/scsi/53c7xx.c | |||
@@ -282,6 +282,7 @@ | |||
282 | #include "scsi.h" | 282 | #include "scsi.h" |
283 | #include <scsi/scsi_dbg.h> | 283 | #include <scsi/scsi_dbg.h> |
284 | #include <scsi/scsi_host.h> | 284 | #include <scsi/scsi_host.h> |
285 | #include <scsi/scsi_transport_spi.h> | ||
285 | #include "53c7xx.h" | 286 | #include "53c7xx.h" |
286 | #include <linux/stat.h> | 287 | #include <linux/stat.h> |
287 | #include <linux/stddef.h> | 288 | #include <linux/stddef.h> |
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *host) { | |||
1724 | printk ("scsi%d : status ", host->host_no); | 1725 | printk ("scsi%d : status ", host->host_no); |
1725 | scsi_print_status (status); | 1726 | scsi_print_status (status); |
1726 | printk ("\nscsi%d : message ", host->host_no); | 1727 | printk ("\nscsi%d : message ", host->host_no); |
1727 | scsi_print_msg (&msg); | 1728 | spi_print_msg(&msg); |
1728 | printk ("\n"); | 1729 | printk ("\n"); |
1729 | } else if (hostdata->test_completed == 3) { | 1730 | } else if (hostdata->test_completed == 3) { |
1730 | printk("scsi%d : test 2 no connection with target %d\n", | 1731 | printk("scsi%d : test 2 no connection with target %d\n", |
@@ -2313,7 +2314,7 @@ NCR53c7x0_dstat_sir_intr (struct Scsi_Host *host, struct | |||
2313 | printk ("scsi%d : received message", host->host_no); | 2314 | printk ("scsi%d : received message", host->host_no); |
2314 | if (c) | 2315 | if (c) |
2315 | printk (" from target %d lun %d ", c->device->id, c->device->lun); | 2316 | printk (" from target %d lun %d ", c->device->id, c->device->lun); |
2316 | scsi_print_msg ((unsigned char *) hostdata->msg_buf); | 2317 | spi_print_msg((unsigned char *) hostdata->msg_buf); |
2317 | printk("\n"); | 2318 | printk("\n"); |
2318 | } | 2319 | } |
2319 | 2320 | ||
@@ -5540,7 +5541,7 @@ print_dsa (struct Scsi_Host *host, u32 *dsa, const char *prefix) { | |||
5540 | i > 0 && !check_address ((unsigned long) ptr, 1); | 5541 | i > 0 && !check_address ((unsigned long) ptr, 1); |
5541 | ptr += len, i -= len) { | 5542 | ptr += len, i -= len) { |
5542 | printk(" "); | 5543 | printk(" "); |
5543 | len = scsi_print_msg (ptr); | 5544 | len = spi_print_msg(ptr); |
5544 | printk("\n"); | 5545 | printk("\n"); |
5545 | if (!len) | 5546 | if (!len) |
5546 | break; | 5547 | break; |
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c index 9d6040bfa064..1c459343292b 100644 --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c | |||
@@ -2216,6 +2216,7 @@ static int __init BusLogic_init(void) | |||
2216 | HostAdapter->PCI_Address = ProbeInfo->PCI_Address; | 2216 | HostAdapter->PCI_Address = ProbeInfo->PCI_Address; |
2217 | HostAdapter->Bus = ProbeInfo->Bus; | 2217 | HostAdapter->Bus = ProbeInfo->Bus; |
2218 | HostAdapter->Device = ProbeInfo->Device; | 2218 | HostAdapter->Device = ProbeInfo->Device; |
2219 | HostAdapter->PCI_Device = ProbeInfo->PCI_Device; | ||
2219 | HostAdapter->IRQ_Channel = ProbeInfo->IRQ_Channel; | 2220 | HostAdapter->IRQ_Channel = ProbeInfo->IRQ_Channel; |
2220 | HostAdapter->AddressCount = BusLogic_HostAdapterAddressCount[HostAdapter->HostAdapterType]; | 2221 | HostAdapter->AddressCount = BusLogic_HostAdapterAddressCount[HostAdapter->HostAdapterType]; |
2221 | /* | 2222 | /* |
@@ -2296,7 +2297,7 @@ static int __init BusLogic_init(void) | |||
2296 | scsi_host_put(Host); | 2297 | scsi_host_put(Host); |
2297 | } else { | 2298 | } else { |
2298 | BusLogic_InitializeHostStructure(HostAdapter, Host); | 2299 | BusLogic_InitializeHostStructure(HostAdapter, Host); |
2299 | scsi_add_host(Host, NULL); | 2300 | scsi_add_host(Host, HostAdapter->PCI_Device ? &HostAdapter->PCI_Device->dev : NULL); |
2300 | scsi_scan_host(Host); | 2301 | scsi_scan_host(Host); |
2301 | BusLogicHostAdapterCount++; | 2302 | BusLogicHostAdapterCount++; |
2302 | } | 2303 | } |
diff --git a/drivers/scsi/FlashPoint.c b/drivers/scsi/FlashPoint.c index 5beed4f6d985..8d64f0bed628 100644 --- a/drivers/scsi/FlashPoint.c +++ b/drivers/scsi/FlashPoint.c | |||
@@ -149,7 +149,7 @@ typedef SCCBMGR_INFO * PSCCBMGR_INFO; | |||
149 | #define PCI_BUS_CARD 0x03 | 149 | #define PCI_BUS_CARD 0x03 |
150 | #define VESA_BUS_CARD 0x04 | 150 | #define VESA_BUS_CARD 0x04 |
151 | 151 | ||
152 | /* SCCB struc used for both SCCB and UCB manager compiles! | 152 | /* SCCB struct used for both SCCB and UCB manager compiles! |
153 | * The UCB Manager treats the SCCB as it's 'native hardware structure' | 153 | * The UCB Manager treats the SCCB as it's 'native hardware structure' |
154 | */ | 154 | */ |
155 | 155 | ||
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 20dd85a77813..3c606cf8c8ca 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
@@ -336,6 +336,7 @@ config SCSI_ACARD | |||
336 | config SCSI_AHA152X | 336 | config SCSI_AHA152X |
337 | tristate "Adaptec AHA152X/2825 support" | 337 | tristate "Adaptec AHA152X/2825 support" |
338 | depends on ISA && SCSI && !64BIT | 338 | depends on ISA && SCSI && !64BIT |
339 | select SCSI_SPI_ATTRS | ||
339 | ---help--- | 340 | ---help--- |
340 | This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 | 341 | This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 |
341 | SCSI host adapters. It also works for the AVA-1505, but the IRQ etc. | 342 | SCSI host adapters. It also works for the AVA-1505, but the IRQ etc. |
@@ -623,6 +624,7 @@ config SCSI_OMIT_FLASHPOINT | |||
623 | config SCSI_DMX3191D | 624 | config SCSI_DMX3191D |
624 | tristate "DMX3191D SCSI support" | 625 | tristate "DMX3191D SCSI support" |
625 | depends on PCI && SCSI | 626 | depends on PCI && SCSI |
627 | select SCSI_SPI_ATTRS | ||
626 | help | 628 | help |
627 | This is support for Domex DMX3191D SCSI Host Adapters. | 629 | This is support for Domex DMX3191D SCSI Host Adapters. |
628 | 630 | ||
@@ -632,6 +634,7 @@ config SCSI_DMX3191D | |||
632 | config SCSI_DTC3280 | 634 | config SCSI_DTC3280 |
633 | tristate "DTC3180/3280 SCSI support" | 635 | tristate "DTC3180/3280 SCSI support" |
634 | depends on ISA && SCSI | 636 | depends on ISA && SCSI |
637 | select SCSI_SPI_ATTRS | ||
635 | help | 638 | help |
636 | This is support for DTC 3180/3280 SCSI Host Adapters. Please read | 639 | This is support for DTC 3180/3280 SCSI Host Adapters. Please read |
637 | the SCSI-HOWTO, available from | 640 | the SCSI-HOWTO, available from |
@@ -752,6 +755,7 @@ config SCSI_GDTH | |||
752 | config SCSI_GENERIC_NCR5380 | 755 | config SCSI_GENERIC_NCR5380 |
753 | tristate "Generic NCR5380/53c400 SCSI PIO support" | 756 | tristate "Generic NCR5380/53c400 SCSI PIO support" |
754 | depends on ISA && SCSI | 757 | depends on ISA && SCSI |
758 | select SCSI_SPI_ATTRS | ||
755 | ---help--- | 759 | ---help--- |
756 | This is a driver for the old NCR 53c80 series of SCSI controllers | 760 | This is a driver for the old NCR 53c80 series of SCSI controllers |
757 | on boards using PIO. Most boards such as the Trantor T130 fit this | 761 | on boards using PIO. Most boards such as the Trantor T130 fit this |
@@ -771,6 +775,7 @@ config SCSI_GENERIC_NCR5380 | |||
771 | config SCSI_GENERIC_NCR5380_MMIO | 775 | config SCSI_GENERIC_NCR5380_MMIO |
772 | tristate "Generic NCR5380/53c400 SCSI MMIO support" | 776 | tristate "Generic NCR5380/53c400 SCSI MMIO support" |
773 | depends on ISA && SCSI | 777 | depends on ISA && SCSI |
778 | select SCSI_SPI_ATTRS | ||
774 | ---help--- | 779 | ---help--- |
775 | This is a driver for the old NCR 53c80 series of SCSI controllers | 780 | This is a driver for the old NCR 53c80 series of SCSI controllers |
776 | on boards using memory mapped I/O. | 781 | on boards using memory mapped I/O. |
@@ -909,7 +914,7 @@ config SCSI_INIA100 | |||
909 | 914 | ||
910 | config SCSI_PPA | 915 | config SCSI_PPA |
911 | tristate "IOMEGA parallel port (ppa - older drives)" | 916 | tristate "IOMEGA parallel port (ppa - older drives)" |
912 | depends on SCSI && PARPORT | 917 | depends on SCSI && PARPORT_PC |
913 | ---help--- | 918 | ---help--- |
914 | This driver supports older versions of IOMEGA's parallel port ZIP | 919 | This driver supports older versions of IOMEGA's parallel port ZIP |
915 | drive (a 100 MB removable media device). | 920 | drive (a 100 MB removable media device). |
@@ -936,7 +941,7 @@ config SCSI_PPA | |||
936 | 941 | ||
937 | config SCSI_IMM | 942 | config SCSI_IMM |
938 | tristate "IOMEGA parallel port (imm - newer drives)" | 943 | tristate "IOMEGA parallel port (imm - newer drives)" |
939 | depends on SCSI && PARPORT | 944 | depends on SCSI && PARPORT_PC |
940 | ---help--- | 945 | ---help--- |
941 | This driver supports newer versions of IOMEGA's parallel port ZIP | 946 | This driver supports newer versions of IOMEGA's parallel port ZIP |
942 | drive (a 100 MB removable media device). | 947 | drive (a 100 MB removable media device). |
@@ -963,7 +968,7 @@ config SCSI_IMM | |||
963 | 968 | ||
964 | config SCSI_IZIP_EPP16 | 969 | config SCSI_IZIP_EPP16 |
965 | bool "ppa/imm option - Use slow (but safe) EPP-16" | 970 | bool "ppa/imm option - Use slow (but safe) EPP-16" |
966 | depends on PARPORT && (SCSI_PPA || SCSI_IMM) | 971 | depends on SCSI_PPA || SCSI_IMM |
967 | ---help--- | 972 | ---help--- |
968 | EPP (Enhanced Parallel Port) is a standard for parallel ports which | 973 | EPP (Enhanced Parallel Port) is a standard for parallel ports which |
969 | allows them to act as expansion buses that can handle up to 64 | 974 | allows them to act as expansion buses that can handle up to 64 |
@@ -978,7 +983,7 @@ config SCSI_IZIP_EPP16 | |||
978 | 983 | ||
979 | config SCSI_IZIP_SLOW_CTR | 984 | config SCSI_IZIP_SLOW_CTR |
980 | bool "ppa/imm option - Assume slow parport control register" | 985 | bool "ppa/imm option - Assume slow parport control register" |
981 | depends on PARPORT && (SCSI_PPA || SCSI_IMM) | 986 | depends on SCSI_PPA || SCSI_IMM |
982 | help | 987 | help |
983 | Some parallel ports are known to have excessive delays between | 988 | Some parallel ports are known to have excessive delays between |
984 | changing the parallel port control register and good data being | 989 | changing the parallel port control register and good data being |
@@ -1254,6 +1259,7 @@ config SCSI_MCA_53C9X | |||
1254 | config SCSI_PAS16 | 1259 | config SCSI_PAS16 |
1255 | tristate "PAS16 SCSI support" | 1260 | tristate "PAS16 SCSI support" |
1256 | depends on ISA && SCSI | 1261 | depends on ISA && SCSI |
1262 | select SCSI_SPI_ATTRS | ||
1257 | ---help--- | 1263 | ---help--- |
1258 | This is support for a SCSI host adapter. It is explained in section | 1264 | This is support for a SCSI host adapter. It is explained in section |
1259 | 3.10 of the SCSI-HOWTO, available from | 1265 | 3.10 of the SCSI-HOWTO, available from |
@@ -1423,6 +1429,7 @@ config SCSI_DC390T | |||
1423 | config SCSI_T128 | 1429 | config SCSI_T128 |
1424 | tristate "Trantor T128/T128F/T228 SCSI support" | 1430 | tristate "Trantor T128/T128F/T228 SCSI support" |
1425 | depends on ISA && SCSI | 1431 | depends on ISA && SCSI |
1432 | select SCSI_SPI_ATTRS | ||
1426 | ---help--- | 1433 | ---help--- |
1427 | This is support for a SCSI host adapter. It is explained in section | 1434 | This is support for a SCSI host adapter. It is explained in section |
1428 | 3.11 of the SCSI-HOWTO, available from | 1435 | 3.11 of the SCSI-HOWTO, available from |
@@ -1681,6 +1688,7 @@ config OKTAGON_SCSI | |||
1681 | config ATARI_SCSI | 1688 | config ATARI_SCSI |
1682 | tristate "Atari native SCSI support" | 1689 | tristate "Atari native SCSI support" |
1683 | depends on ATARI && SCSI && BROKEN | 1690 | depends on ATARI && SCSI && BROKEN |
1691 | select SCSI_SPI_ATTRS | ||
1684 | ---help--- | 1692 | ---help--- |
1685 | If you have an Atari with built-in NCR5380 SCSI controller (TT, | 1693 | If you have an Atari with built-in NCR5380 SCSI controller (TT, |
1686 | Falcon, ...) say Y to get it supported. Of course also, if you have | 1694 | Falcon, ...) say Y to get it supported. Of course also, if you have |
@@ -1722,6 +1730,7 @@ config TT_DMA_EMUL | |||
1722 | config MAC_SCSI | 1730 | config MAC_SCSI |
1723 | bool "Macintosh NCR5380 SCSI" | 1731 | bool "Macintosh NCR5380 SCSI" |
1724 | depends on MAC && SCSI=y | 1732 | depends on MAC && SCSI=y |
1733 | select SCSI_SPI_ATTRS | ||
1725 | help | 1734 | help |
1726 | This is the NCR 5380 SCSI controller included on most of the 68030 | 1735 | This is the NCR 5380 SCSI controller included on most of the 68030 |
1727 | based Macintoshes. If you have one of these say Y and read the | 1736 | based Macintoshes. If you have one of these say Y and read the |
@@ -1743,6 +1752,7 @@ config SCSI_MAC_ESP | |||
1743 | config MVME147_SCSI | 1752 | config MVME147_SCSI |
1744 | bool "WD33C93 SCSI driver for MVME147" | 1753 | bool "WD33C93 SCSI driver for MVME147" |
1745 | depends on MVME147 && SCSI=y | 1754 | depends on MVME147 && SCSI=y |
1755 | select SCSI_SPI_ATTRS | ||
1746 | help | 1756 | help |
1747 | Support for the on-board SCSI controller on the Motorola MVME147 | 1757 | Support for the on-board SCSI controller on the Motorola MVME147 |
1748 | single-board computer. | 1758 | single-board computer. |
@@ -1750,6 +1760,7 @@ config MVME147_SCSI | |||
1750 | config MVME16x_SCSI | 1760 | config MVME16x_SCSI |
1751 | bool "NCR53C710 SCSI driver for MVME16x" | 1761 | bool "NCR53C710 SCSI driver for MVME16x" |
1752 | depends on MVME16x && SCSI && BROKEN | 1762 | depends on MVME16x && SCSI && BROKEN |
1763 | select SCSI_SPI_ATTRS | ||
1753 | help | 1764 | help |
1754 | The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710 | 1765 | The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710 |
1755 | SCSI controller chip. Almost everyone using one of these boards | 1766 | SCSI controller chip. Almost everyone using one of these boards |
@@ -1758,6 +1769,7 @@ config MVME16x_SCSI | |||
1758 | config BVME6000_SCSI | 1769 | config BVME6000_SCSI |
1759 | bool "NCR53C710 SCSI driver for BVME6000" | 1770 | bool "NCR53C710 SCSI driver for BVME6000" |
1760 | depends on BVME6000 && SCSI && BROKEN | 1771 | depends on BVME6000 && SCSI && BROKEN |
1772 | select SCSI_SPI_ATTRS | ||
1761 | help | 1773 | help |
1762 | The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710 | 1774 | The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710 |
1763 | SCSI controller chip. Almost everyone using one of these boards | 1775 | SCSI controller chip. Almost everyone using one of these boards |
@@ -1774,6 +1786,7 @@ config SCSI_NCR53C7xx_FAST | |||
1774 | config SUN3_SCSI | 1786 | config SUN3_SCSI |
1775 | tristate "Sun3 NCR5380 SCSI" | 1787 | tristate "Sun3 NCR5380 SCSI" |
1776 | depends on SUN3 && SCSI && BROKEN | 1788 | depends on SUN3 && SCSI && BROKEN |
1789 | select SCSI_SPI_ATTRS | ||
1777 | help | 1790 | help |
1778 | This option will enable support for the OBIO (onboard io) NCR5380 | 1791 | This option will enable support for the OBIO (onboard io) NCR5380 |
1779 | SCSI controller found in the Sun 3/50 and 3/60, as well as for | 1792 | SCSI controller found in the Sun 3/50 and 3/60, as well as for |
@@ -1802,7 +1815,7 @@ config SCSI_SUNESP | |||
1802 | 1815 | ||
1803 | config ZFCP | 1816 | config ZFCP |
1804 | tristate "FCP host bus adapter driver for IBM eServer zSeries" | 1817 | tristate "FCP host bus adapter driver for IBM eServer zSeries" |
1805 | depends on ARCH_S390 && QDIO && SCSI | 1818 | depends on S390 && QDIO && SCSI |
1806 | select SCSI_FC_ATTRS | 1819 | select SCSI_FC_ATTRS |
1807 | help | 1820 | help |
1808 | If you want to access SCSI devices attached to your IBM eServer | 1821 | If you want to access SCSI devices attached to your IBM eServer |
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index f062ea0f813a..320e765fa0cd 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile | |||
@@ -45,7 +45,7 @@ obj-$(CONFIG_CYBERSTORMII_SCSI) += NCR53C9x.o cyberstormII.o | |||
45 | obj-$(CONFIG_BLZ2060_SCSI) += NCR53C9x.o blz2060.o | 45 | obj-$(CONFIG_BLZ2060_SCSI) += NCR53C9x.o blz2060.o |
46 | obj-$(CONFIG_BLZ1230_SCSI) += NCR53C9x.o blz1230.o | 46 | obj-$(CONFIG_BLZ1230_SCSI) += NCR53C9x.o blz1230.o |
47 | obj-$(CONFIG_FASTLANE_SCSI) += NCR53C9x.o fastlane.o | 47 | obj-$(CONFIG_FASTLANE_SCSI) += NCR53C9x.o fastlane.o |
48 | obj-$(CONFIG_OKTAGON_SCSI) += NCR53C9x.o oktagon_esp.o oktagon_io.o | 48 | obj-$(CONFIG_OKTAGON_SCSI) += NCR53C9x.o oktagon_esp_mod.o |
49 | obj-$(CONFIG_ATARI_SCSI) += atari_scsi.o | 49 | obj-$(CONFIG_ATARI_SCSI) += atari_scsi.o |
50 | obj-$(CONFIG_MAC_SCSI) += mac_scsi.o | 50 | obj-$(CONFIG_MAC_SCSI) += mac_scsi.o |
51 | obj-$(CONFIG_SCSI_MAC_ESP) += mac_esp.o NCR53C9x.o | 51 | obj-$(CONFIG_SCSI_MAC_ESP) += mac_esp.o NCR53C9x.o |
@@ -80,7 +80,7 @@ obj-$(CONFIG_SCSI_QLOGIC_FAS) += qlogicfas408.o qlogicfas.o | |||
80 | obj-$(CONFIG_PCMCIA_QLOGIC) += qlogicfas408.o | 80 | obj-$(CONFIG_PCMCIA_QLOGIC) += qlogicfas408.o |
81 | obj-$(CONFIG_SCSI_QLOGIC_FC) += qlogicfc.o | 81 | obj-$(CONFIG_SCSI_QLOGIC_FC) += qlogicfc.o |
82 | obj-$(CONFIG_SCSI_QLOGIC_1280) += qla1280.o | 82 | obj-$(CONFIG_SCSI_QLOGIC_1280) += qla1280.o |
83 | obj-$(CONFIG_SCSI_QLA2XXX) += qla2xxx/ | 83 | obj-$(CONFIG_SCSI_QLA_FC) += qla2xxx/ |
84 | obj-$(CONFIG_SCSI_LPFC) += lpfc/ | 84 | obj-$(CONFIG_SCSI_LPFC) += lpfc/ |
85 | obj-$(CONFIG_SCSI_PAS16) += pas16.o | 85 | obj-$(CONFIG_SCSI_PAS16) += pas16.o |
86 | obj-$(CONFIG_SCSI_SEAGATE) += seagate.o | 86 | obj-$(CONFIG_SCSI_SEAGATE) += seagate.o |
@@ -164,6 +164,7 @@ CFLAGS_ncr53c8xx.o := $(ncr53c8xx-flags-y) $(ncr53c8xx-flags-m) | |||
164 | zalon7xx-objs := zalon.o ncr53c8xx.o | 164 | zalon7xx-objs := zalon.o ncr53c8xx.o |
165 | NCR_Q720_mod-objs := NCR_Q720.o ncr53c8xx.o | 165 | NCR_Q720_mod-objs := NCR_Q720.o ncr53c8xx.o |
166 | libata-objs := libata-core.o libata-scsi.o | 166 | libata-objs := libata-core.o libata-scsi.o |
167 | oktagon_esp_mod-objs := oktagon_esp.o oktagon_io.o | ||
167 | 168 | ||
168 | # Files generated that shall be removed upon make clean | 169 | # Files generated that shall be removed upon make clean |
169 | clean-files := 53c7xx_d.h 53c700_d.h \ | 170 | clean-files := 53c7xx_d.h 53c700_d.h \ |
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index cba9655d0f14..9f0ddbe6dc76 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c | |||
@@ -87,6 +87,7 @@ | |||
87 | * the high level code. | 87 | * the high level code. |
88 | */ | 88 | */ |
89 | #include <scsi/scsi_dbg.h> | 89 | #include <scsi/scsi_dbg.h> |
90 | #include <scsi/scsi_transport_spi.h> | ||
90 | 91 | ||
91 | #ifndef NDEBUG | 92 | #ifndef NDEBUG |
92 | #define NDEBUG 0 | 93 | #define NDEBUG 0 |
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) { | |||
2377 | * 3..length+1 arguments | 2378 | * 3..length+1 arguments |
2378 | * | 2379 | * |
2379 | * Start the extended message buffer with the EXTENDED_MESSAGE | 2380 | * Start the extended message buffer with the EXTENDED_MESSAGE |
2380 | * byte, since scsi_print_msg() wants the whole thing. | 2381 | * byte, since spi_print_msg() wants the whole thing. |
2381 | */ | 2382 | */ |
2382 | extended_msg[0] = EXTENDED_MESSAGE; | 2383 | extended_msg[0] = EXTENDED_MESSAGE; |
2383 | /* Accept first byte by clearing ACK */ | 2384 | /* Accept first byte by clearing ACK */ |
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) { | |||
2424 | default: | 2425 | default: |
2425 | if (!tmp) { | 2426 | if (!tmp) { |
2426 | printk("scsi%d: rejecting message ", instance->host_no); | 2427 | printk("scsi%d: rejecting message ", instance->host_no); |
2427 | scsi_print_msg(extended_msg); | 2428 | spi_print_msg(extended_msg); |
2428 | printk("\n"); | 2429 | printk("\n"); |
2429 | } else if (tmp != EXTENDED_MESSAGE) | 2430 | } else if (tmp != EXTENDED_MESSAGE) |
2430 | scmd_printk(KERN_INFO, cmd, | 2431 | scmd_printk(KERN_INFO, cmd, |
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) { | |||
2560 | 2561 | ||
2561 | if (!(msg[0] & 0x80)) { | 2562 | if (!(msg[0] & 0x80)) { |
2562 | printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no); | 2563 | printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no); |
2563 | scsi_print_msg(msg); | 2564 | spi_print_msg(msg); |
2564 | abort = 1; | 2565 | abort = 1; |
2565 | } else { | 2566 | } else { |
2566 | /* Accept message by clearing ACK */ | 2567 | /* Accept message by clearing ACK */ |
diff --git a/drivers/scsi/NCR53C9x.c b/drivers/scsi/NCR53C9x.c index 640590bd014a..c7dd0154d012 100644 --- a/drivers/scsi/NCR53C9x.c +++ b/drivers/scsi/NCR53C9x.c | |||
@@ -1799,6 +1799,7 @@ static int esp_do_data(struct NCR_ESP *esp, struct ESP_regs *eregs) | |||
1799 | */ | 1799 | */ |
1800 | int oldphase, i = 0; /* or where we left off last time ?? esp->current_data ?? */ | 1800 | int oldphase, i = 0; /* or where we left off last time ?? esp->current_data ?? */ |
1801 | int fifocnt = 0; | 1801 | int fifocnt = 0; |
1802 | unsigned char *p = phys_to_virt((unsigned long)SCptr->SCp.ptr); | ||
1802 | 1803 | ||
1803 | oldphase = esp_read(eregs->esp_status) & ESP_STAT_PMASK; | 1804 | oldphase = esp_read(eregs->esp_status) & ESP_STAT_PMASK; |
1804 | 1805 | ||
@@ -1860,7 +1861,7 @@ static int esp_do_data(struct NCR_ESP *esp, struct ESP_regs *eregs) | |||
1860 | 1861 | ||
1861 | /* read fifo */ | 1862 | /* read fifo */ |
1862 | for(j=0;j<fifocnt;j++) | 1863 | for(j=0;j<fifocnt;j++) |
1863 | SCptr->SCp.ptr[i++] = esp_read(eregs->esp_fdata); | 1864 | p[i++] = esp_read(eregs->esp_fdata); |
1864 | 1865 | ||
1865 | ESPDATA(("(%d) ", i)); | 1866 | ESPDATA(("(%d) ", i)); |
1866 | 1867 | ||
@@ -1882,7 +1883,7 @@ static int esp_do_data(struct NCR_ESP *esp, struct ESP_regs *eregs) | |||
1882 | 1883 | ||
1883 | /* fill fifo */ | 1884 | /* fill fifo */ |
1884 | for(j=0;j<this_count;j++) | 1885 | for(j=0;j<this_count;j++) |
1885 | esp_write(eregs->esp_fdata, SCptr->SCp.ptr[i++]); | 1886 | esp_write(eregs->esp_fdata, p[i++]); |
1886 | 1887 | ||
1887 | /* how many left if this goes out ?? */ | 1888 | /* how many left if this goes out ?? */ |
1888 | hmuch -= this_count; | 1889 | hmuch -= this_count; |
diff --git a/drivers/scsi/aacraid/README b/drivers/scsi/aacraid/README deleted file mode 100644 index 4193865d419c..000000000000 --- a/drivers/scsi/aacraid/README +++ /dev/null | |||
@@ -1,74 +0,0 @@ | |||
1 | AACRAID Driver for Linux (take two) | ||
2 | |||
3 | Introduction | ||
4 | ------------------------- | ||
5 | The aacraid driver adds support for Adaptec (http://www.adaptec.com) | ||
6 | RAID controllers. This is a major rewrite from the original | ||
7 | Adaptec supplied driver. It has signficantly cleaned up both the code | ||
8 | and the running binary size (the module is less than half the size of | ||
9 | the original). | ||
10 | |||
11 | Supported Cards/Chipsets | ||
12 | ------------------------- | ||
13 | Adaptec 2020S | ||
14 | Adaptec 2025S | ||
15 | Adaptec 2120S | ||
16 | Adaptec 2130S | ||
17 | Adaptec 2200S | ||
18 | Adaptec 2230S | ||
19 | Adaptec 2240S | ||
20 | Adaptec 2410SA | ||
21 | Adaptec 2610SA | ||
22 | Adaptec 2810SA | ||
23 | Adaptec 21610SA | ||
24 | Adaptec 3230S | ||
25 | Adaptec 3240S | ||
26 | Adaptec 4000SAS | ||
27 | Adaptec 4005SAS | ||
28 | Adaptec 4800SAS | ||
29 | Adaptec 4805SAS | ||
30 | Adaptec 5400S | ||
31 | Dell PERC 2 Quad Channel | ||
32 | Dell PERC 2/Si | ||
33 | Dell PERC 3/Si | ||
34 | Dell PERC 3/Di | ||
35 | Dell CERC 2 | ||
36 | HP NetRAID-4M | ||
37 | Legend S220 | ||
38 | Legend S230 | ||
39 | IBM ServeRAID 8i | ||
40 | ICP 9014R0 | ||
41 | ICP 9024R0 | ||
42 | ICP 9047MA | ||
43 | ICP 9087MA | ||
44 | ICP 9085LI | ||
45 | ICP 5085AU | ||
46 | |||
47 | People | ||
48 | ------------------------- | ||
49 | Alan Cox <alan@redhat.com> | ||
50 | Christoph Hellwig <hch@infradead.org> (updates for new-style PCI probing and SCSI host registration, | ||
51 | small cleanups/fixes) | ||
52 | Matt Domsch <matt_domsch@dell.com> (revision ioctl, adapter messages) | ||
53 | Deanna Bonds (non-DASD support, PAE fibs and 64 bit, added new adaptec controllers | ||
54 | added new ioctls, changed scsi interface to use new error handler, | ||
55 | increased the number of fibs and outstanding commands to a container) | ||
56 | |||
57 | (fixed 64bit and 64G memory model, changed confusing naming convention | ||
58 | where fibs that go to the hardware are consistently called hw_fibs and | ||
59 | not just fibs like the name of the driver tracking structure) | ||
60 | Mark Salyzyn <Mark_Salyzyn@adaptec.com> Fixed panic issues and added some new product ids for upcoming hbas. Performance tuning, card failover and bug mitigations. | ||
61 | |||
62 | Original Driver | ||
63 | ------------------------- | ||
64 | Adaptec Unix OEM Product Group | ||
65 | |||
66 | Mailing List | ||
67 | ------------------------- | ||
68 | linux-scsi@vger.kernel.org (Interested parties troll here) | ||
69 | Also note this is very different to Brian's original driver | ||
70 | so don't expect him to support it. | ||
71 | Adaptec does support this driver. Contact either tech support or Mark Salyzyn. | ||
72 | |||
73 | Original by Brian Boerner February 2001 | ||
74 | Rewritten by Alan Cox, November 2001 | ||
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 30fd8d6e3f31..66dbb6d2c506 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -532,6 +532,13 @@ struct aac_driver_ident | |||
532 | #define AAC_QUIRK_MASTER 0x0008 | 532 | #define AAC_QUIRK_MASTER 0x0008 |
533 | 533 | ||
534 | /* | 534 | /* |
535 | * Some adapter firmware perform poorly when it must split up scatter gathers | ||
536 | * in order to deal with the limits of the underlying CHIM. This limit in this | ||
537 | * class of adapters is 17 scatter gather elements. | ||
538 | */ | ||
539 | #define AAC_QUIRK_17SG 0x0010 | ||
540 | |||
541 | /* | ||
535 | * The adapter interface specs all queues to be located in the same | 542 | * The adapter interface specs all queues to be located in the same |
536 | * physically contigous block. The host structure that defines the | 543 | * physically contigous block. The host structure that defines the |
537 | * commuication queues will assume they are each a separate physically | 544 | * commuication queues will assume they are each a separate physically |
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c index ef623bd965f5..4fe79cd7c957 100644 --- a/drivers/scsi/aacraid/commctrl.c +++ b/drivers/scsi/aacraid/commctrl.c | |||
@@ -85,6 +85,10 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg) | |||
85 | if (size < le16_to_cpu(kfib->header.SenderSize)) | 85 | if (size < le16_to_cpu(kfib->header.SenderSize)) |
86 | size = le16_to_cpu(kfib->header.SenderSize); | 86 | size = le16_to_cpu(kfib->header.SenderSize); |
87 | if (size > dev->max_fib_size) { | 87 | if (size > dev->max_fib_size) { |
88 | if (size > 2048) { | ||
89 | retval = -EINVAL; | ||
90 | goto cleanup; | ||
91 | } | ||
88 | /* Highjack the hw_fib */ | 92 | /* Highjack the hw_fib */ |
89 | hw_fib = fibptr->hw_fib; | 93 | hw_fib = fibptr->hw_fib; |
90 | hw_fib_pa = fibptr->hw_fib_pa; | 94 | hw_fib_pa = fibptr->hw_fib_pa; |
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index 3cb68af90456..0bf5f9a943e8 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -46,7 +46,6 @@ | |||
46 | #include <linux/slab.h> | 46 | #include <linux/slab.h> |
47 | #include <linux/spinlock.h> | 47 | #include <linux/spinlock.h> |
48 | #include <linux/syscalls.h> | 48 | #include <linux/syscalls.h> |
49 | #include <linux/ioctl32.h> | ||
50 | #include <linux/delay.h> | 49 | #include <linux/delay.h> |
51 | #include <linux/smp_lock.h> | 50 | #include <linux/smp_lock.h> |
52 | #include <asm/semaphore.h> | 51 | #include <asm/semaphore.h> |
@@ -201,10 +200,10 @@ static struct aac_driver_ident aac_drivers[] = { | |||
201 | { aac_rkt_init, "aacraid", "ADAPTEC ", "Callisto ", 2, AAC_QUIRK_MASTER }, /* Jupiter Platform */ | 200 | { aac_rkt_init, "aacraid", "ADAPTEC ", "Callisto ", 2, AAC_QUIRK_MASTER }, /* Jupiter Platform */ |
202 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2020SA ", 1 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ | 201 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2020SA ", 1 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ |
203 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2025SA ", 1 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ | 202 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2025SA ", 1 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ |
204 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2410SA SATA ", 1 }, /* AAR-2410SA PCI SATA 4ch (Jaguar II) */ | 203 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2410SA SATA ", 1, AAC_QUIRK_17SG }, /* AAR-2410SA PCI SATA 4ch (Jaguar II) */ |
205 | { aac_rx_init, "aacraid", "DELL ", "CERC SR2 ", 1 }, /* CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) */ | 204 | { aac_rx_init, "aacraid", "DELL ", "CERC SR2 ", 1, AAC_QUIRK_17SG }, /* CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) */ |
206 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2810SA SATA ", 1 }, /* AAR-2810SA PCI SATA 8ch (Corsair-8) */ | 205 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2810SA SATA ", 1, AAC_QUIRK_17SG }, /* AAR-2810SA PCI SATA 8ch (Corsair-8) */ |
207 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-21610SA SATA", 1 }, /* AAR-21610SA PCI SATA 16ch (Corsair-16) */ | 206 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-21610SA SATA", 1, AAC_QUIRK_17SG }, /* AAR-21610SA PCI SATA 16ch (Corsair-16) */ |
208 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ | 207 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ |
209 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ | 208 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ |
210 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ | 209 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ |
@@ -575,7 +574,15 @@ static ssize_t aac_show_model(struct class_device *class_dev, | |||
575 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 574 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; |
576 | int len; | 575 | int len; |
577 | 576 | ||
578 | len = snprintf(buf, PAGE_SIZE, "%s\n", | 577 | if (dev->supplement_adapter_info.AdapterTypeText[0]) { |
578 | char * cp = dev->supplement_adapter_info.AdapterTypeText; | ||
579 | while (*cp && *cp != ' ') | ||
580 | ++cp; | ||
581 | while (*cp == ' ') | ||
582 | ++cp; | ||
583 | len = snprintf(buf, PAGE_SIZE, "%s\n", cp); | ||
584 | } else | ||
585 | len = snprintf(buf, PAGE_SIZE, "%s\n", | ||
579 | aac_drivers[dev->cardtype].model); | 586 | aac_drivers[dev->cardtype].model); |
580 | return len; | 587 | return len; |
581 | } | 588 | } |
@@ -586,7 +593,15 @@ static ssize_t aac_show_vendor(struct class_device *class_dev, | |||
586 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 593 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; |
587 | int len; | 594 | int len; |
588 | 595 | ||
589 | len = snprintf(buf, PAGE_SIZE, "%s\n", | 596 | if (dev->supplement_adapter_info.AdapterTypeText[0]) { |
597 | char * cp = dev->supplement_adapter_info.AdapterTypeText; | ||
598 | while (*cp && *cp != ' ') | ||
599 | ++cp; | ||
600 | len = snprintf(buf, PAGE_SIZE, "%.*s\n", | ||
601 | (int)(cp - (char *)dev->supplement_adapter_info.AdapterTypeText), | ||
602 | dev->supplement_adapter_info.AdapterTypeText); | ||
603 | } else | ||
604 | len = snprintf(buf, PAGE_SIZE, "%s\n", | ||
590 | aac_drivers[dev->cardtype].vname); | 605 | aac_drivers[dev->cardtype].vname); |
591 | return len; | 606 | return len; |
592 | } | 607 | } |
@@ -838,6 +853,13 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
838 | = (aac->scsi_host_ptr->sg_tablesize * 8) + 112; | 853 | = (aac->scsi_host_ptr->sg_tablesize * 8) + 112; |
839 | } | 854 | } |
840 | 855 | ||
856 | if ((aac_drivers[index].quirks & AAC_QUIRK_17SG) && | ||
857 | (aac->scsi_host_ptr->sg_tablesize > 17)) { | ||
858 | aac->scsi_host_ptr->sg_tablesize = 17; | ||
859 | aac->scsi_host_ptr->max_sectors | ||
860 | = (aac->scsi_host_ptr->sg_tablesize * 8) + 112; | ||
861 | } | ||
862 | |||
841 | /* | 863 | /* |
842 | * Firware printf works only with older firmware. | 864 | * Firware printf works only with older firmware. |
843 | */ | 865 | */ |
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index 9df23b654cec..cb2ee25f213f 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c | |||
@@ -259,6 +259,7 @@ | |||
259 | #include "scsi.h" | 259 | #include "scsi.h" |
260 | #include <scsi/scsi_dbg.h> | 260 | #include <scsi/scsi_dbg.h> |
261 | #include <scsi/scsi_host.h> | 261 | #include <scsi/scsi_host.h> |
262 | #include <scsi/scsi_transport_spi.h> | ||
262 | #include "aha152x.h" | 263 | #include "aha152x.h" |
263 | 264 | ||
264 | 265 | ||
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *shpnt) | |||
1845 | #if defined(AHA152X_DEBUG) | 1846 | #if defined(AHA152X_DEBUG) |
1846 | if (HOSTDATA(shpnt)->debug & debug_msgi) { | 1847 | if (HOSTDATA(shpnt)->debug & debug_msgi) { |
1847 | printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0)); | 1848 | printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0)); |
1848 | scsi_print_msg(&MSGI(0)); | 1849 | spi_print_msg(&MSGI(0)); |
1849 | printk("\n"); | 1850 | printk("\n"); |
1850 | } | 1851 | } |
1851 | #endif | 1852 | #endif |
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *shpnt) | |||
1933 | break; | 1934 | break; |
1934 | 1935 | ||
1935 | printk(INFO_LEAD, CMDINFO(CURRENT_SC)); | 1936 | printk(INFO_LEAD, CMDINFO(CURRENT_SC)); |
1936 | scsi_print_msg(&MSGI(0)); | 1937 | spi_print_msg(&MSGI(0)); |
1937 | printk("\n"); | 1938 | printk("\n"); |
1938 | 1939 | ||
1939 | ticks = (MSGI(3) * 4 + 49) / 50; | 1940 | ticks = (MSGI(3) * 4 + 49) / 50; |
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *shpnt) | |||
2031 | int i; | 2032 | int i; |
2032 | 2033 | ||
2033 | printk(DEBUG_LEAD "messages( ", CMDINFO(CURRENT_SC)); | 2034 | printk(DEBUG_LEAD "messages( ", CMDINFO(CURRENT_SC)); |
2034 | for (i=0; i<MSGOLEN; i+=scsi_print_msg(&MSGO(i)), printk(" ")) | 2035 | for (i=0; i<MSGOLEN; i+=spi_print_msg(&MSGO(i)), printk(" ")) |
2035 | ; | 2036 | ; |
2036 | printk(")\n"); | 2037 | printk(")\n"); |
2037 | } | 2038 | } |
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c index 887eaa2a3ebf..19bd346951dd 100644 --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c | |||
@@ -214,7 +214,6 @@ static struct scsi_host_template ahci_sht = { | |||
214 | .dma_boundary = AHCI_DMA_BOUNDARY, | 214 | .dma_boundary = AHCI_DMA_BOUNDARY, |
215 | .slave_configure = ata_scsi_slave_config, | 215 | .slave_configure = ata_scsi_slave_config, |
216 | .bios_param = ata_std_bios_param, | 216 | .bios_param = ata_std_bios_param, |
217 | .ordered_flush = 1, | ||
218 | }; | 217 | }; |
219 | 218 | ||
220 | static const struct ata_port_operations ahci_ops = { | 219 | static const struct ata_port_operations ahci_ops = { |
@@ -277,6 +276,16 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
277 | board_ahci }, /* ESB2 */ | 276 | board_ahci }, /* ESB2 */ |
278 | { PCI_VENDOR_ID_INTEL, 0x27c6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 277 | { PCI_VENDOR_ID_INTEL, 0x27c6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
279 | board_ahci }, /* ICH7-M DH */ | 278 | board_ahci }, /* ICH7-M DH */ |
279 | { PCI_VENDOR_ID_INTEL, 0x2821, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
280 | board_ahci }, /* ICH8 */ | ||
281 | { PCI_VENDOR_ID_INTEL, 0x2822, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
282 | board_ahci }, /* ICH8 */ | ||
283 | { PCI_VENDOR_ID_INTEL, 0x2824, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
284 | board_ahci }, /* ICH8 */ | ||
285 | { PCI_VENDOR_ID_INTEL, 0x2829, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
286 | board_ahci }, /* ICH8M */ | ||
287 | { PCI_VENDOR_ID_INTEL, 0x282a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
288 | board_ahci }, /* ICH8M */ | ||
280 | { } /* terminate list */ | 289 | { } /* terminate list */ |
281 | }; | 290 | }; |
282 | 291 | ||
diff --git a/drivers/scsi/aic7xxx/.gitignore b/drivers/scsi/aic7xxx/.gitignore new file mode 100644 index 000000000000..b8ee24d5748a --- /dev/null +++ b/drivers/scsi/aic7xxx/.gitignore | |||
@@ -0,0 +1,6 @@ | |||
1 | aic79xx_reg.h | ||
2 | aic79xx_reg_print.c | ||
3 | aic79xx_seq.h | ||
4 | aic7xxx_reg.h | ||
5 | aic7xxx_reg_print.c | ||
6 | aic7xxx_seq.h | ||
diff --git a/drivers/scsi/aic7xxx/Kconfig.aic7xxx b/drivers/scsi/aic7xxx/Kconfig.aic7xxx index ac8de03c9fa2..6c2c395554ff 100644 --- a/drivers/scsi/aic7xxx/Kconfig.aic7xxx +++ b/drivers/scsi/aic7xxx/Kconfig.aic7xxx | |||
@@ -42,13 +42,13 @@ config AIC7XXX_CMDS_PER_DEVICE | |||
42 | config AIC7XXX_RESET_DELAY_MS | 42 | config AIC7XXX_RESET_DELAY_MS |
43 | int "Initial bus reset delay in milli-seconds" | 43 | int "Initial bus reset delay in milli-seconds" |
44 | depends on SCSI_AIC7XXX | 44 | depends on SCSI_AIC7XXX |
45 | default "15000" | 45 | default "5000" |
46 | ---help--- | 46 | ---help--- |
47 | The number of milliseconds to delay after an initial bus reset. | 47 | The number of milliseconds to delay after an initial bus reset. |
48 | The bus settle delay following all error recovery actions is | 48 | The bus settle delay following all error recovery actions is |
49 | dictated by the SCSI layer and is not affected by this value. | 49 | dictated by the SCSI layer and is not affected by this value. |
50 | 50 | ||
51 | Default: 15000 (15 seconds) | 51 | Default: 5000 (5 seconds) |
52 | 52 | ||
53 | config AIC7XXX_PROBE_EISA_VL | 53 | config AIC7XXX_PROBE_EISA_VL |
54 | bool "Probe for EISA and VL AIC7XXX Adapters" | 54 | bool "Probe for EISA and VL AIC7XXX Adapters" |
diff --git a/drivers/scsi/aic7xxx/aic79xx.h b/drivers/scsi/aic7xxx/aic79xx.h index 653fb0b42aea..2cfdbef447db 100644 --- a/drivers/scsi/aic7xxx/aic79xx.h +++ b/drivers/scsi/aic7xxx/aic79xx.h | |||
@@ -37,7 +37,7 @@ | |||
37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
38 | * POSSIBILITY OF SUCH DAMAGES. | 38 | * POSSIBILITY OF SUCH DAMAGES. |
39 | * | 39 | * |
40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#95 $ | 40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#108 $ |
41 | * | 41 | * |
42 | * $FreeBSD$ | 42 | * $FreeBSD$ |
43 | */ | 43 | */ |
@@ -75,8 +75,7 @@ struct scb_platform_data; | |||
75 | #define INITIATOR_WILDCARD (~0) | 75 | #define INITIATOR_WILDCARD (~0) |
76 | #define SCB_LIST_NULL 0xFF00 | 76 | #define SCB_LIST_NULL 0xFF00 |
77 | #define SCB_LIST_NULL_LE (ahd_htole16(SCB_LIST_NULL)) | 77 | #define SCB_LIST_NULL_LE (ahd_htole16(SCB_LIST_NULL)) |
78 | #define QOUTFIFO_ENTRY_VALID 0x8000 | 78 | #define QOUTFIFO_ENTRY_VALID 0x80 |
79 | #define QOUTFIFO_ENTRY_VALID_LE (ahd_htole16(0x8000)) | ||
80 | #define SCBID_IS_NULL(scbid) (((scbid) & 0xFF00 ) == SCB_LIST_NULL) | 79 | #define SCBID_IS_NULL(scbid) (((scbid) & 0xFF00 ) == SCB_LIST_NULL) |
81 | 80 | ||
82 | #define SCSIID_TARGET(ahd, scsiid) \ | 81 | #define SCSIID_TARGET(ahd, scsiid) \ |
@@ -1053,6 +1052,13 @@ typedef uint8_t ahd_mode_state; | |||
1053 | 1052 | ||
1054 | typedef void ahd_callback_t (void *); | 1053 | typedef void ahd_callback_t (void *); |
1055 | 1054 | ||
1055 | struct ahd_completion | ||
1056 | { | ||
1057 | uint16_t tag; | ||
1058 | uint8_t sg_status; | ||
1059 | uint8_t valid_tag; | ||
1060 | }; | ||
1061 | |||
1056 | struct ahd_softc { | 1062 | struct ahd_softc { |
1057 | bus_space_tag_t tags[2]; | 1063 | bus_space_tag_t tags[2]; |
1058 | bus_space_handle_t bshs[2]; | 1064 | bus_space_handle_t bshs[2]; |
@@ -1062,6 +1068,7 @@ struct ahd_softc { | |||
1062 | struct scb_data scb_data; | 1068 | struct scb_data scb_data; |
1063 | 1069 | ||
1064 | struct hardware_scb *next_queued_hscb; | 1070 | struct hardware_scb *next_queued_hscb; |
1071 | struct map_node *next_queued_hscb_map; | ||
1065 | 1072 | ||
1066 | /* | 1073 | /* |
1067 | * SCBs that have been sent to the controller | 1074 | * SCBs that have been sent to the controller |
@@ -1140,16 +1147,23 @@ struct ahd_softc { | |||
1140 | ahd_flag flags; | 1147 | ahd_flag flags; |
1141 | struct seeprom_config *seep_config; | 1148 | struct seeprom_config *seep_config; |
1142 | 1149 | ||
1143 | /* Values to store in the SEQCTL register for pause and unpause */ | ||
1144 | uint8_t unpause; | ||
1145 | uint8_t pause; | ||
1146 | |||
1147 | /* Command Queues */ | 1150 | /* Command Queues */ |
1151 | struct ahd_completion *qoutfifo; | ||
1148 | uint16_t qoutfifonext; | 1152 | uint16_t qoutfifonext; |
1149 | uint16_t qoutfifonext_valid_tag; | 1153 | uint16_t qoutfifonext_valid_tag; |
1150 | uint16_t qinfifonext; | 1154 | uint16_t qinfifonext; |
1151 | uint16_t qinfifo[AHD_SCB_MAX]; | 1155 | uint16_t qinfifo[AHD_SCB_MAX]; |
1152 | uint16_t *qoutfifo; | 1156 | |
1157 | /* | ||
1158 | * Our qfreeze count. The sequencer compares | ||
1159 | * this value with its own counter to determine | ||
1160 | * whether to allow selections to occur. | ||
1161 | */ | ||
1162 | uint16_t qfreeze_cnt; | ||
1163 | |||
1164 | /* Values to store in the SEQCTL register for pause and unpause */ | ||
1165 | uint8_t unpause; | ||
1166 | uint8_t pause; | ||
1153 | 1167 | ||
1154 | /* Critical Section Data */ | 1168 | /* Critical Section Data */ |
1155 | struct cs *critical_sections; | 1169 | struct cs *critical_sections; |
@@ -1197,8 +1211,7 @@ struct ahd_softc { | |||
1197 | */ | 1211 | */ |
1198 | bus_dma_tag_t parent_dmat; | 1212 | bus_dma_tag_t parent_dmat; |
1199 | bus_dma_tag_t shared_data_dmat; | 1213 | bus_dma_tag_t shared_data_dmat; |
1200 | bus_dmamap_t shared_data_dmamap; | 1214 | struct map_node shared_data_map; |
1201 | dma_addr_t shared_data_busaddr; | ||
1202 | 1215 | ||
1203 | /* Information saved through suspend/resume cycles */ | 1216 | /* Information saved through suspend/resume cycles */ |
1204 | struct ahd_suspend_state suspend_state; | 1217 | struct ahd_suspend_state suspend_state; |
@@ -1296,9 +1309,9 @@ struct ahd_devinfo { | |||
1296 | }; | 1309 | }; |
1297 | 1310 | ||
1298 | /****************************** PCI Structures ********************************/ | 1311 | /****************************** PCI Structures ********************************/ |
1299 | #define AHD_PCI_IOADDR0 PCIR_MAPS /* I/O BAR*/ | 1312 | #define AHD_PCI_IOADDR0 PCIR_BAR(0) /* I/O BAR*/ |
1300 | #define AHD_PCI_MEMADDR (PCIR_MAPS + 4) /* Memory BAR */ | 1313 | #define AHD_PCI_MEMADDR PCIR_BAR(1) /* Memory BAR */ |
1301 | #define AHD_PCI_IOADDR1 (PCIR_MAPS + 12)/* Second I/O BAR */ | 1314 | #define AHD_PCI_IOADDR1 PCIR_BAR(3) /* Second I/O BAR */ |
1302 | 1315 | ||
1303 | typedef int (ahd_device_setup_t)(struct ahd_softc *); | 1316 | typedef int (ahd_device_setup_t)(struct ahd_softc *); |
1304 | 1317 | ||
diff --git a/drivers/scsi/aic7xxx/aic79xx.reg b/drivers/scsi/aic7xxx/aic79xx.reg index cca58edc8648..3a3204703b15 100644 --- a/drivers/scsi/aic7xxx/aic79xx.reg +++ b/drivers/scsi/aic7xxx/aic79xx.reg | |||
@@ -39,7 +39,7 @@ | |||
39 | * | 39 | * |
40 | * $FreeBSD$ | 40 | * $FreeBSD$ |
41 | */ | 41 | */ |
42 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $" | 42 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $" |
43 | 43 | ||
44 | /* | 44 | /* |
45 | * This file is processed by the aic7xxx_asm utility for use in assembling | 45 | * This file is processed by the aic7xxx_asm utility for use in assembling |
@@ -65,13 +65,6 @@ VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $" | |||
65 | mvi MODE_PTR, MK_MODE(src, dst); \ | 65 | mvi MODE_PTR, MK_MODE(src, dst); \ |
66 | } | 66 | } |
67 | 67 | ||
68 | #define TOGGLE_DFF_MODE \ | ||
69 | if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ | ||
70 | call toggle_dff_mode_work_around; \ | ||
71 | } else { \ | ||
72 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); \ | ||
73 | } | ||
74 | |||
75 | #define RESTORE_MODE(mode) \ | 68 | #define RESTORE_MODE(mode) \ |
76 | if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ | 69 | if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ |
77 | mov mode call set_mode_work_around; \ | 70 | mov mode call set_mode_work_around; \ |
@@ -1199,7 +1192,7 @@ register TARGPCISTAT { | |||
1199 | 1192 | ||
1200 | /* | 1193 | /* |
1201 | * LQ Packet In | 1194 | * LQ Packet In |
1202 | * The last LQ Packet received | 1195 | * The last LQ Packet recieved |
1203 | */ | 1196 | */ |
1204 | register LQIN { | 1197 | register LQIN { |
1205 | address 0x020 | 1198 | address 0x020 |
@@ -3542,10 +3535,34 @@ scratch_ram { | |||
3542 | COMPLETE_DMA_SCB_HEAD { | 3535 | COMPLETE_DMA_SCB_HEAD { |
3543 | size 2 | 3536 | size 2 |
3544 | } | 3537 | } |
3545 | /* Counting semaphore to prevent new select-outs */ | 3538 | /* |
3539 | * tail of list of SCBs that have | ||
3540 | * completed but need to be uploaded | ||
3541 | * to the host prior to being completed. | ||
3542 | */ | ||
3543 | COMPLETE_DMA_SCB_TAIL { | ||
3544 | size 2 | ||
3545 | } | ||
3546 | /* | ||
3547 | * head of list of SCBs that have | ||
3548 | * been uploaded to the host, but cannot | ||
3549 | * be completed until the QFREEZE is in | ||
3550 | * full effect (i.e. no selections pending). | ||
3551 | */ | ||
3552 | COMPLETE_ON_QFREEZE_HEAD { | ||
3553 | size 2 | ||
3554 | } | ||
3555 | /* | ||
3556 | * Counting semaphore to prevent new select-outs | ||
3557 | * The queue is frozen so long as the sequencer | ||
3558 | * and kernel freeze counts differ. | ||
3559 | */ | ||
3546 | QFREEZE_COUNT { | 3560 | QFREEZE_COUNT { |
3547 | size 2 | 3561 | size 2 |
3548 | } | 3562 | } |
3563 | KERNEL_QFREEZE_COUNT { | ||
3564 | size 2 | ||
3565 | } | ||
3549 | /* | 3566 | /* |
3550 | * Mode to restore on legacy idle loop exit. | 3567 | * Mode to restore on legacy idle loop exit. |
3551 | */ | 3568 | */ |
@@ -3625,6 +3642,17 @@ scratch_ram { | |||
3625 | size 1 | 3642 | size 1 |
3626 | } | 3643 | } |
3627 | /* | 3644 | /* |
3645 | * Kernel and sequencer offsets into the queue of | ||
3646 | * incoming target mode command descriptors. The | ||
3647 | * queue is full when the KERNEL_TQINPOS == TQINPOS. | ||
3648 | */ | ||
3649 | KERNEL_TQINPOS { | ||
3650 | size 1 | ||
3651 | } | ||
3652 | TQINPOS { | ||
3653 | size 1 | ||
3654 | } | ||
3655 | /* | ||
3628 | * Base address of our shared data with the kernel driver in host | 3656 | * Base address of our shared data with the kernel driver in host |
3629 | * memory. This includes the qoutfifo and target mode | 3657 | * memory. This includes the qoutfifo and target mode |
3630 | * incoming command queue. | 3658 | * incoming command queue. |
@@ -3639,17 +3667,6 @@ scratch_ram { | |||
3639 | QOUTFIFO_NEXT_ADDR { | 3667 | QOUTFIFO_NEXT_ADDR { |
3640 | size 4 | 3668 | size 4 |
3641 | } | 3669 | } |
3642 | /* | ||
3643 | * Kernel and sequencer offsets into the queue of | ||
3644 | * incoming target mode command descriptors. The | ||
3645 | * queue is full when the KERNEL_TQINPOS == TQINPOS. | ||
3646 | */ | ||
3647 | KERNEL_TQINPOS { | ||
3648 | size 1 | ||
3649 | } | ||
3650 | TQINPOS { | ||
3651 | size 1 | ||
3652 | } | ||
3653 | ARG_1 { | 3670 | ARG_1 { |
3654 | size 1 | 3671 | size 1 |
3655 | mask SEND_MSG 0x80 | 3672 | mask SEND_MSG 0x80 |
@@ -3951,6 +3968,7 @@ const SG_PREFETCH_ADDR_MASK download | |||
3951 | const SG_SIZEOF download | 3968 | const SG_SIZEOF download |
3952 | const PKT_OVERRUN_BUFOFFSET download | 3969 | const PKT_OVERRUN_BUFOFFSET download |
3953 | const SCB_TRANSFER_SIZE download | 3970 | const SCB_TRANSFER_SIZE download |
3971 | const CACHELINE_MASK download | ||
3954 | 3972 | ||
3955 | /* | 3973 | /* |
3956 | * BIOS SCB offsets | 3974 | * BIOS SCB offsets |
diff --git a/drivers/scsi/aic7xxx/aic79xx.seq b/drivers/scsi/aic7xxx/aic79xx.seq index 65339bc1ca99..bef1f9d369b6 100644 --- a/drivers/scsi/aic7xxx/aic79xx.seq +++ b/drivers/scsi/aic7xxx/aic79xx.seq | |||
@@ -40,7 +40,7 @@ | |||
40 | * $FreeBSD$ | 40 | * $FreeBSD$ |
41 | */ | 41 | */ |
42 | 42 | ||
43 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#99 $" | 43 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $" |
44 | PATCH_ARG_LIST = "struct ahd_softc *ahd" | 44 | PATCH_ARG_LIST = "struct ahd_softc *ahd" |
45 | PREFIX = "ahd_" | 45 | PREFIX = "ahd_" |
46 | 46 | ||
@@ -68,13 +68,47 @@ no_error_set: | |||
68 | } | 68 | } |
69 | SET_MODE(M_SCSI, M_SCSI) | 69 | SET_MODE(M_SCSI, M_SCSI) |
70 | test SCSISEQ0, ENSELO|ENARBO jnz idle_loop_checkbus; | 70 | test SCSISEQ0, ENSELO|ENARBO jnz idle_loop_checkbus; |
71 | test SEQ_FLAGS2, SELECTOUT_QFROZEN jnz idle_loop_checkbus; | 71 | test SEQ_FLAGS2, SELECTOUT_QFROZEN jz check_waiting_list; |
72 | /* | ||
73 | * If the kernel has caught up with us, thaw the queue. | ||
74 | */ | ||
75 | mov A, KERNEL_QFREEZE_COUNT; | ||
76 | cmp QFREEZE_COUNT, A jne check_frozen_completions; | ||
77 | mov A, KERNEL_QFREEZE_COUNT[1]; | ||
78 | cmp QFREEZE_COUNT[1], A jne check_frozen_completions; | ||
79 | and SEQ_FLAGS2, ~SELECTOUT_QFROZEN; | ||
80 | jmp check_waiting_list; | ||
81 | check_frozen_completions: | ||
82 | test SSTAT0, SELDO|SELINGO jnz idle_loop_checkbus; | ||
83 | BEGIN_CRITICAL; | ||
84 | /* | ||
85 | * If we have completions stalled waiting for the qfreeze | ||
86 | * to take effect, move them over to the complete_scb list | ||
87 | * now that no selections are pending. | ||
88 | */ | ||
89 | cmp COMPLETE_ON_QFREEZE_HEAD[1],SCB_LIST_NULL je idle_loop_checkbus; | ||
90 | /* | ||
91 | * Find the end of the qfreeze list. The first element has | ||
92 | * to be treated specially. | ||
93 | */ | ||
94 | bmov SCBPTR, COMPLETE_ON_QFREEZE_HEAD, 2; | ||
95 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je join_lists; | ||
96 | /* | ||
97 | * Now the normal loop. | ||
98 | */ | ||
99 | bmov SCBPTR, SCB_NEXT_COMPLETE, 2; | ||
100 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL jne . - 1; | ||
101 | join_lists: | ||
102 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; | ||
103 | bmov COMPLETE_SCB_HEAD, COMPLETE_ON_QFREEZE_HEAD, 2; | ||
104 | mvi COMPLETE_ON_QFREEZE_HEAD[1], SCB_LIST_NULL; | ||
105 | jmp idle_loop_checkbus; | ||
106 | check_waiting_list: | ||
72 | cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je idle_loop_checkbus; | 107 | cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je idle_loop_checkbus; |
73 | /* | 108 | /* |
74 | * ENSELO is cleared by a SELDO, so we must test for SELDO | 109 | * ENSELO is cleared by a SELDO, so we must test for SELDO |
75 | * one last time. | 110 | * one last time. |
76 | */ | 111 | */ |
77 | BEGIN_CRITICAL; | ||
78 | test SSTAT0, SELDO jnz select_out; | 112 | test SSTAT0, SELDO jnz select_out; |
79 | END_CRITICAL; | 113 | END_CRITICAL; |
80 | call start_selection; | 114 | call start_selection; |
@@ -90,6 +124,13 @@ idle_loop_check_nonpackreq: | |||
90 | test SSTAT2, NONPACKREQ jz . + 2; | 124 | test SSTAT2, NONPACKREQ jz . + 2; |
91 | call unexpected_nonpkt_phase_find_ctxt; | 125 | call unexpected_nonpkt_phase_find_ctxt; |
92 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { | 126 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { |
127 | /* | ||
128 | * On Rev A. hardware, the busy LED is only | ||
129 | * turned on automaically during selections | ||
130 | * and re-selections. Make the LED status | ||
131 | * more useful by forcing it to be on so | ||
132 | * long as one of our data FIFOs is active. | ||
133 | */ | ||
93 | and A, FIFO0FREE|FIFO1FREE, DFFSTAT; | 134 | and A, FIFO0FREE|FIFO1FREE, DFFSTAT; |
94 | cmp A, FIFO0FREE|FIFO1FREE jne . + 3; | 135 | cmp A, FIFO0FREE|FIFO1FREE jne . + 3; |
95 | and SBLKCTL, ~DIAGLEDEN|DIAGLEDON; | 136 | and SBLKCTL, ~DIAGLEDEN|DIAGLEDON; |
@@ -101,9 +142,9 @@ idle_loop_check_nonpackreq: | |||
101 | call idle_loop_cchan; | 142 | call idle_loop_cchan; |
102 | jmp idle_loop; | 143 | jmp idle_loop; |
103 | 144 | ||
104 | BEGIN_CRITICAL; | ||
105 | idle_loop_gsfifo: | 145 | idle_loop_gsfifo: |
106 | SET_MODE(M_SCSI, M_SCSI) | 146 | SET_MODE(M_SCSI, M_SCSI) |
147 | BEGIN_CRITICAL; | ||
107 | idle_loop_gsfifo_in_scsi_mode: | 148 | idle_loop_gsfifo_in_scsi_mode: |
108 | test LQISTAT2, LQIGSAVAIL jz return; | 149 | test LQISTAT2, LQIGSAVAIL jz return; |
109 | /* | 150 | /* |
@@ -152,11 +193,15 @@ END_CRITICAL; | |||
152 | 193 | ||
153 | idle_loop_service_fifos: | 194 | idle_loop_service_fifos: |
154 | SET_MODE(M_DFF0, M_DFF0) | 195 | SET_MODE(M_DFF0, M_DFF0) |
196 | BEGIN_CRITICAL; | ||
155 | test LONGJMP_ADDR[1], INVALID_ADDR jnz idle_loop_next_fifo; | 197 | test LONGJMP_ADDR[1], INVALID_ADDR jnz idle_loop_next_fifo; |
156 | call longjmp; | 198 | call longjmp; |
199 | END_CRITICAL; | ||
157 | idle_loop_next_fifo: | 200 | idle_loop_next_fifo: |
158 | SET_MODE(M_DFF1, M_DFF1) | 201 | SET_MODE(M_DFF1, M_DFF1) |
202 | BEGIN_CRITICAL; | ||
159 | test LONGJMP_ADDR[1], INVALID_ADDR jz longjmp; | 203 | test LONGJMP_ADDR[1], INVALID_ADDR jz longjmp; |
204 | END_CRITICAL; | ||
160 | return: | 205 | return: |
161 | ret; | 206 | ret; |
162 | 207 | ||
@@ -170,7 +215,6 @@ BEGIN_CRITICAL; | |||
170 | test CCSCBCTL, CCARREN|CCSCBEN jz scbdma_idle; | 215 | test CCSCBCTL, CCARREN|CCSCBEN jz scbdma_idle; |
171 | test CCSCBCTL, CCSCBDIR jnz fetch_new_scb_inprog; | 216 | test CCSCBCTL, CCSCBDIR jnz fetch_new_scb_inprog; |
172 | test CCSCBCTL, CCSCBDONE jz return; | 217 | test CCSCBCTL, CCSCBDONE jz return; |
173 | END_CRITICAL; | ||
174 | /* FALLTHROUGH */ | 218 | /* FALLTHROUGH */ |
175 | scbdma_tohost_done: | 219 | scbdma_tohost_done: |
176 | test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone; | 220 | test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone; |
@@ -180,26 +224,18 @@ scbdma_tohost_done: | |||
180 | * bad SCSI status (currently only for underruns), we | 224 | * bad SCSI status (currently only for underruns), we |
181 | * queue the SCB for normal completion. Otherwise, we | 225 | * queue the SCB for normal completion. Otherwise, we |
182 | * wait until any select-out activity has halted, and | 226 | * wait until any select-out activity has halted, and |
183 | * then notify the host so that the transaction can be | 227 | * then queue the completion. |
184 | * dealt with. | ||
185 | */ | 228 | */ |
186 | test SCB_SCSI_STATUS, 0xff jnz scbdma_notify_host; | ||
187 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | 229 | and CCSCBCTL, ~(CCARREN|CCSCBEN); |
188 | bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2; | 230 | bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2; |
231 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL jne . + 2; | ||
232 | mvi COMPLETE_DMA_SCB_TAIL[1], SCB_LIST_NULL; | ||
233 | test SCB_SCSI_STATUS, 0xff jz scbdma_queue_completion; | ||
234 | bmov SCB_NEXT_COMPLETE, COMPLETE_ON_QFREEZE_HEAD, 2; | ||
235 | bmov COMPLETE_ON_QFREEZE_HEAD, SCBPTR, 2 ret; | ||
236 | scbdma_queue_completion: | ||
189 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; | 237 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; |
190 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; | 238 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; |
191 | scbdma_notify_host: | ||
192 | SET_MODE(M_SCSI, M_SCSI) | ||
193 | test SCSISEQ0, ENSELO jnz return; | ||
194 | test SSTAT0, (SELDO|SELINGO) jnz return; | ||
195 | SET_MODE(M_CCHAN, M_CCHAN) | ||
196 | /* | ||
197 | * Remove SCB and notify host. | ||
198 | */ | ||
199 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | ||
200 | bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2; | ||
201 | SET_SEQINTCODE(BAD_SCB_STATUS) | ||
202 | ret; | ||
203 | fill_qoutfifo_dmadone: | 239 | fill_qoutfifo_dmadone: |
204 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | 240 | and CCSCBCTL, ~(CCARREN|CCSCBEN); |
205 | call qoutfifo_updated; | 241 | call qoutfifo_updated; |
@@ -208,6 +244,7 @@ fill_qoutfifo_dmadone: | |||
208 | test QOFF_CTLSTA, SDSCB_ROLLOVR jz return; | 244 | test QOFF_CTLSTA, SDSCB_ROLLOVR jz return; |
209 | bmov QOUTFIFO_NEXT_ADDR, SHARED_DATA_ADDR, 4; | 245 | bmov QOUTFIFO_NEXT_ADDR, SHARED_DATA_ADDR, 4; |
210 | xor QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID_TOGGLE ret; | 246 | xor QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID_TOGGLE ret; |
247 | END_CRITICAL; | ||
211 | 248 | ||
212 | qoutfifo_updated: | 249 | qoutfifo_updated: |
213 | /* | 250 | /* |
@@ -324,14 +361,15 @@ fill_qoutfifo: | |||
324 | * Keep track of the SCBs we are dmaing just | 361 | * Keep track of the SCBs we are dmaing just |
325 | * in case the DMA fails or is aborted. | 362 | * in case the DMA fails or is aborted. |
326 | */ | 363 | */ |
327 | mov A, QOUTFIFO_ENTRY_VALID_TAG; | ||
328 | bmov COMPLETE_SCB_DMAINPROG_HEAD, COMPLETE_SCB_HEAD, 2; | 364 | bmov COMPLETE_SCB_DMAINPROG_HEAD, COMPLETE_SCB_HEAD, 2; |
329 | mvi CCSCBCTL, CCSCBRESET; | 365 | mvi CCSCBCTL, CCSCBRESET; |
330 | bmov SCBHADDR, QOUTFIFO_NEXT_ADDR, 4; | 366 | bmov SCBHADDR, QOUTFIFO_NEXT_ADDR, 4; |
367 | mov A, QOUTFIFO_NEXT_ADDR; | ||
331 | bmov SCBPTR, COMPLETE_SCB_HEAD, 2; | 368 | bmov SCBPTR, COMPLETE_SCB_HEAD, 2; |
332 | fill_qoutfifo_loop: | 369 | fill_qoutfifo_loop: |
333 | mov CCSCBRAM, SCBPTR; | 370 | bmov CCSCBRAM, SCBPTR, 2; |
334 | or CCSCBRAM, A, SCBPTR[1]; | 371 | mov CCSCBRAM, SCB_SGPTR[0]; |
372 | mov CCSCBRAM, QOUTFIFO_ENTRY_VALID_TAG; | ||
335 | mov NONE, SDSCB_QOFF; | 373 | mov NONE, SDSCB_QOFF; |
336 | inc INT_COALESCING_CMDCOUNT; | 374 | inc INT_COALESCING_CMDCOUNT; |
337 | add CMDS_PENDING, -1; | 375 | add CMDS_PENDING, -1; |
@@ -339,6 +377,18 @@ fill_qoutfifo_loop: | |||
339 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je fill_qoutfifo_done; | 377 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je fill_qoutfifo_done; |
340 | cmp CCSCBADDR, CCSCBADDR_MAX je fill_qoutfifo_done; | 378 | cmp CCSCBADDR, CCSCBADDR_MAX je fill_qoutfifo_done; |
341 | test QOFF_CTLSTA, SDSCB_ROLLOVR jnz fill_qoutfifo_done; | 379 | test QOFF_CTLSTA, SDSCB_ROLLOVR jnz fill_qoutfifo_done; |
380 | /* | ||
381 | * Don't cross an ADB or Cachline boundary when DMA'ing | ||
382 | * completion entries. In PCI mode, at least in 32/33 | ||
383 | * configurations, the SCB DMA engine may lose its place | ||
384 | * in the data-stream should the target force a retry on | ||
385 | * something other than an 8byte aligned boundary. In | ||
386 | * PCI-X mode, we do this to avoid split transactions since | ||
387 | * many chipsets seem to be unable to format proper split | ||
388 | * completions to continue the data transfer. | ||
389 | */ | ||
390 | add SINDEX, A, CCSCBADDR; | ||
391 | test SINDEX, CACHELINE_MASK jz fill_qoutfifo_done; | ||
342 | bmov SCBPTR, SCB_NEXT_COMPLETE, 2; | 392 | bmov SCBPTR, SCB_NEXT_COMPLETE, 2; |
343 | jmp fill_qoutfifo_loop; | 393 | jmp fill_qoutfifo_loop; |
344 | fill_qoutfifo_done: | 394 | fill_qoutfifo_done: |
@@ -354,7 +404,6 @@ dma_complete_scb: | |||
354 | bmov SCBPTR, COMPLETE_DMA_SCB_HEAD, 2; | 404 | bmov SCBPTR, COMPLETE_DMA_SCB_HEAD, 2; |
355 | bmov SCBHADDR, SCB_BUSADDR, 4; | 405 | bmov SCBHADDR, SCB_BUSADDR, 4; |
356 | mvi CCARREN|CCSCBEN|CCSCBRESET jmp dma_scb; | 406 | mvi CCARREN|CCSCBEN|CCSCBRESET jmp dma_scb; |
357 | END_CRITICAL; | ||
358 | 407 | ||
359 | /* | 408 | /* |
360 | * Either post or fetch an SCB from host memory. The caller | 409 | * Either post or fetch an SCB from host memory. The caller |
@@ -371,9 +420,19 @@ dma_scb: | |||
371 | mvi SCBHCNT, SCB_TRANSFER_SIZE; | 420 | mvi SCBHCNT, SCB_TRANSFER_SIZE; |
372 | mov CCSCBCTL, SINDEX ret; | 421 | mov CCSCBCTL, SINDEX ret; |
373 | 422 | ||
374 | BEGIN_CRITICAL; | ||
375 | setjmp: | 423 | setjmp: |
376 | bmov LONGJMP_ADDR, STACK, 2 ret; | 424 | /* |
425 | * At least on the A, a return in the same | ||
426 | * instruction as the bmov results in a return | ||
427 | * to the caller, not to the new address at the | ||
428 | * top of the stack. Since we want the latter | ||
429 | * (we use setjmp to register a handler from an | ||
430 | * interrupt context but not invoke that handler | ||
431 | * until we return to our idle loop), use a | ||
432 | * separate ret instruction. | ||
433 | */ | ||
434 | bmov LONGJMP_ADDR, STACK, 2; | ||
435 | ret; | ||
377 | setjmp_inline: | 436 | setjmp_inline: |
378 | bmov LONGJMP_ADDR, STACK, 2; | 437 | bmov LONGJMP_ADDR, STACK, 2; |
379 | longjmp: | 438 | longjmp: |
@@ -392,11 +451,6 @@ set_mode_work_around: | |||
392 | mvi SEQINTCTL, INTVEC1DSL; | 451 | mvi SEQINTCTL, INTVEC1DSL; |
393 | mov MODE_PTR, SINDEX; | 452 | mov MODE_PTR, SINDEX; |
394 | clr SEQINTCTL ret; | 453 | clr SEQINTCTL ret; |
395 | |||
396 | toggle_dff_mode_work_around: | ||
397 | mvi SEQINTCTL, INTVEC1DSL; | ||
398 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); | ||
399 | clr SEQINTCTL ret; | ||
400 | } | 454 | } |
401 | 455 | ||
402 | 456 | ||
@@ -490,6 +544,21 @@ allocate_fifo1: | |||
490 | SET_SRC_MODE M_SCSI; | 544 | SET_SRC_MODE M_SCSI; |
491 | SET_DST_MODE M_SCSI; | 545 | SET_DST_MODE M_SCSI; |
492 | select_in: | 546 | select_in: |
547 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { | ||
548 | /* | ||
549 | * On Rev A. hardware, the busy LED is only | ||
550 | * turned on automaically during selections | ||
551 | * and re-selections. Make the LED status | ||
552 | * more useful by forcing it to be on from | ||
553 | * the point of selection until our idle | ||
554 | * loop determines that neither of our FIFOs | ||
555 | * are busy. This handles the non-packetized | ||
556 | * case nicely as we will not return to the | ||
557 | * idle loop until the busfree at the end of | ||
558 | * each transaction. | ||
559 | */ | ||
560 | or SBLKCTL, DIAGLEDEN|DIAGLEDON; | ||
561 | } | ||
493 | if ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0) { | 562 | if ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0) { |
494 | /* | 563 | /* |
495 | * Test to ensure that the bus has not | 564 | * Test to ensure that the bus has not |
@@ -528,6 +597,21 @@ SET_SRC_MODE M_SCSI; | |||
528 | SET_DST_MODE M_SCSI; | 597 | SET_DST_MODE M_SCSI; |
529 | select_out: | 598 | select_out: |
530 | BEGIN_CRITICAL; | 599 | BEGIN_CRITICAL; |
600 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { | ||
601 | /* | ||
602 | * On Rev A. hardware, the busy LED is only | ||
603 | * turned on automaically during selections | ||
604 | * and re-selections. Make the LED status | ||
605 | * more useful by forcing it to be on from | ||
606 | * the point of re-selection until our idle | ||
607 | * loop determines that neither of our FIFOs | ||
608 | * are busy. This handles the non-packetized | ||
609 | * case nicely as we will not return to the | ||
610 | * idle loop until the busfree at the end of | ||
611 | * each transaction. | ||
612 | */ | ||
613 | or SBLKCTL, DIAGLEDEN|DIAGLEDON; | ||
614 | } | ||
531 | /* Clear out all SCBs that have been successfully sent. */ | 615 | /* Clear out all SCBs that have been successfully sent. */ |
532 | if ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0) { | 616 | if ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0) { |
533 | /* | 617 | /* |
@@ -1000,15 +1084,9 @@ not_found_ITloop: | |||
1000 | /* | 1084 | /* |
1001 | * We received a "command complete" message. Put the SCB on the complete | 1085 | * We received a "command complete" message. Put the SCB on the complete |
1002 | * queue and trigger a completion interrupt via the idle loop. Before doing | 1086 | * queue and trigger a completion interrupt via the idle loop. Before doing |
1003 | * so, check to see if there | 1087 | * so, check to see if there is a residual or the status byte is something |
1004 | * is a residual or the status byte is something other than STATUS_GOOD (0). | 1088 | * other than STATUS_GOOD (0). In either of these conditions, we upload the |
1005 | * In either of these conditions, we upload the SCB back to the host so it can | 1089 | * SCB back to the host so it can process this information. |
1006 | * process this information. In the case of a non zero status byte, we | ||
1007 | * additionally interrupt the kernel driver synchronously, allowing it to | ||
1008 | * decide if sense should be retrieved. If the kernel driver wishes to request | ||
1009 | * sense, it will fill the kernel SCB with a request sense command, requeue | ||
1010 | * it to the QINFIFO and tell us not to post to the QOUTFIFO by setting | ||
1011 | * RETURN_1 to SEND_SENSE. | ||
1012 | */ | 1090 | */ |
1013 | mesgin_complete: | 1091 | mesgin_complete: |
1014 | 1092 | ||
@@ -1053,6 +1131,7 @@ complete_nomsg: | |||
1053 | call queue_scb_completion; | 1131 | call queue_scb_completion; |
1054 | jmp await_busfree; | 1132 | jmp await_busfree; |
1055 | 1133 | ||
1134 | BEGIN_CRITICAL; | ||
1056 | freeze_queue: | 1135 | freeze_queue: |
1057 | /* Cancel any pending select-out. */ | 1136 | /* Cancel any pending select-out. */ |
1058 | test SSTAT0, SELDO|SELINGO jnz . + 2; | 1137 | test SSTAT0, SELDO|SELINGO jnz . + 2; |
@@ -1063,6 +1142,7 @@ freeze_queue: | |||
1063 | adc QFREEZE_COUNT[1], A; | 1142 | adc QFREEZE_COUNT[1], A; |
1064 | or SEQ_FLAGS2, SELECTOUT_QFROZEN; | 1143 | or SEQ_FLAGS2, SELECTOUT_QFROZEN; |
1065 | mov A, ACCUM_SAVE ret; | 1144 | mov A, ACCUM_SAVE ret; |
1145 | END_CRITICAL; | ||
1066 | 1146 | ||
1067 | /* | 1147 | /* |
1068 | * Complete the current FIFO's SCB if data for this same | 1148 | * Complete the current FIFO's SCB if data for this same |
@@ -1085,8 +1165,10 @@ queue_scb_completion: | |||
1085 | test SCB_SGPTR, SG_FULL_RESID jnz upload_scb;/* Never xfered */ | 1165 | test SCB_SGPTR, SG_FULL_RESID jnz upload_scb;/* Never xfered */ |
1086 | test SCB_RESIDUAL_SGPTR, SG_LIST_NULL jz upload_scb; | 1166 | test SCB_RESIDUAL_SGPTR, SG_LIST_NULL jz upload_scb; |
1087 | complete: | 1167 | complete: |
1168 | BEGIN_CRITICAL; | ||
1088 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; | 1169 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; |
1089 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; | 1170 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; |
1171 | END_CRITICAL; | ||
1090 | bad_status: | 1172 | bad_status: |
1091 | cmp SCB_SCSI_STATUS, STATUS_PKT_SENSE je upload_scb; | 1173 | cmp SCB_SCSI_STATUS, STATUS_PKT_SENSE je upload_scb; |
1092 | call freeze_queue; | 1174 | call freeze_queue; |
@@ -1097,9 +1179,18 @@ upload_scb: | |||
1097 | * it on the host. | 1179 | * it on the host. |
1098 | */ | 1180 | */ |
1099 | bmov SCB_TAG, SCBPTR, 2; | 1181 | bmov SCB_TAG, SCBPTR, 2; |
1100 | bmov SCB_NEXT_COMPLETE, COMPLETE_DMA_SCB_HEAD, 2; | 1182 | BEGIN_CRITICAL; |
1183 | or SCB_SGPTR, SG_STATUS_VALID; | ||
1184 | mvi SCB_NEXT_COMPLETE[1], SCB_LIST_NULL; | ||
1185 | cmp COMPLETE_DMA_SCB_HEAD[1], SCB_LIST_NULL jne add_dma_scb_tail; | ||
1101 | bmov COMPLETE_DMA_SCB_HEAD, SCBPTR, 2; | 1186 | bmov COMPLETE_DMA_SCB_HEAD, SCBPTR, 2; |
1102 | or SCB_SGPTR, SG_STATUS_VALID ret; | 1187 | bmov COMPLETE_DMA_SCB_TAIL, SCBPTR, 2 ret; |
1188 | add_dma_scb_tail: | ||
1189 | bmov REG0, SCBPTR, 2; | ||
1190 | bmov SCBPTR, COMPLETE_DMA_SCB_TAIL, 2; | ||
1191 | bmov SCB_NEXT_COMPLETE, REG0, 2; | ||
1192 | bmov COMPLETE_DMA_SCB_TAIL, REG0, 2 ret; | ||
1193 | END_CRITICAL; | ||
1103 | 1194 | ||
1104 | /* | 1195 | /* |
1105 | * Is it a disconnect message? Set a flag in the SCB to remind us | 1196 | * Is it a disconnect message? Set a flag in the SCB to remind us |
@@ -1146,8 +1237,18 @@ SET_DST_MODE M_DFF1; | |||
1146 | await_busfree_clrchn: | 1237 | await_busfree_clrchn: |
1147 | mvi DFFSXFRCTL, CLRCHN; | 1238 | mvi DFFSXFRCTL, CLRCHN; |
1148 | await_busfree_not_m_dff: | 1239 | await_busfree_not_m_dff: |
1149 | call clear_target_state; | 1240 | /* clear target specific flags */ |
1241 | mvi SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT; | ||
1150 | test SSTAT1,REQINIT|BUSFREE jz .; | 1242 | test SSTAT1,REQINIT|BUSFREE jz .; |
1243 | /* | ||
1244 | * We only set BUSFREE status once either a new | ||
1245 | * phase has been detected or we are really | ||
1246 | * BUSFREE. This allows the driver to know | ||
1247 | * that we are active on the bus even though | ||
1248 | * no identified transaction exists should a | ||
1249 | * timeout occur while awaiting busfree. | ||
1250 | */ | ||
1251 | mvi LASTPHASE, P_BUSFREE; | ||
1151 | test SSTAT1, BUSFREE jnz idle_loop; | 1252 | test SSTAT1, BUSFREE jnz idle_loop; |
1152 | SET_SEQINTCODE(MISSED_BUSFREE) | 1253 | SET_SEQINTCODE(MISSED_BUSFREE) |
1153 | 1254 | ||
@@ -1202,11 +1303,6 @@ msgin_rdptrs_get_fifo: | |||
1202 | call allocate_fifo; | 1303 | call allocate_fifo; |
1203 | jmp mesgin_done; | 1304 | jmp mesgin_done; |
1204 | 1305 | ||
1205 | clear_target_state: | ||
1206 | mvi LASTPHASE, P_BUSFREE; | ||
1207 | /* clear target specific flags */ | ||
1208 | mvi SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT ret; | ||
1209 | |||
1210 | phase_lock: | 1306 | phase_lock: |
1211 | if ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0) { | 1307 | if ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0) { |
1212 | /* | 1308 | /* |
@@ -1298,6 +1394,47 @@ service_fifo: | |||
1298 | test CCSGCTL, CCSGENACK jnz return; | 1394 | test CCSGCTL, CCSGENACK jnz return; |
1299 | 1395 | ||
1300 | /* | 1396 | /* |
1397 | * Should the other FIFO get the S/G cache first? If | ||
1398 | * both FIFOs have been allocated since we last checked | ||
1399 | * any FIFO, it is important that we service a FIFO | ||
1400 | * that is not actively on the bus first. This guarantees | ||
1401 | * that a FIFO will be freed to handle snapshot requests for | ||
1402 | * any FIFO that is still on the bus. Chips with RTI do not | ||
1403 | * perform snapshots, so don't bother with this test there. | ||
1404 | */ | ||
1405 | if ((ahd->features & AHD_RTI) == 0) { | ||
1406 | /* | ||
1407 | * If we're not still receiving SCSI data, | ||
1408 | * it is safe to allocate the S/G cache to | ||
1409 | * this FIFO. | ||
1410 | */ | ||
1411 | test DFCNTRL, SCSIEN jz idle_sgfetch_start; | ||
1412 | |||
1413 | /* | ||
1414 | * Switch to the other FIFO. Non-RTI chips | ||
1415 | * also have the "set mode" bug, so we must | ||
1416 | * disable interrupts during the switch. | ||
1417 | */ | ||
1418 | mvi SEQINTCTL, INTVEC1DSL; | ||
1419 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); | ||
1420 | |||
1421 | /* | ||
1422 | * If the other FIFO needs loading, then it | ||
1423 | * must not have claimed the S/G cache yet | ||
1424 | * (SG_CACHE_AVAIL would have been cleared in | ||
1425 | * the orginal FIFO mode and we test this above). | ||
1426 | * Return to the idle loop so we can process the | ||
1427 | * FIFO not currently on the bus first. | ||
1428 | */ | ||
1429 | test SG_STATE, LOADING_NEEDED jz idle_sgfetch_okay; | ||
1430 | clr SEQINTCTL ret; | ||
1431 | idle_sgfetch_okay: | ||
1432 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); | ||
1433 | clr SEQINTCTL; | ||
1434 | } | ||
1435 | |||
1436 | idle_sgfetch_start: | ||
1437 | /* | ||
1301 | * We fetch a "cacheline aligned" and sized amount of data | 1438 | * We fetch a "cacheline aligned" and sized amount of data |
1302 | * so we don't end up referencing a non-existant page. | 1439 | * so we don't end up referencing a non-existant page. |
1303 | * Cacheline aligned is in quotes because the kernel will | 1440 | * Cacheline aligned is in quotes because the kernel will |
@@ -1308,7 +1445,7 @@ service_fifo: | |||
1308 | mvi SGHCNT, SG_PREFETCH_CNT; | 1445 | mvi SGHCNT, SG_PREFETCH_CNT; |
1309 | if ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0) { | 1446 | if ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0) { |
1310 | /* | 1447 | /* |
1311 | * Need two instruction between "touches" of SGHADDR. | 1448 | * Need two instructions between "touches" of SGHADDR. |
1312 | */ | 1449 | */ |
1313 | nop; | 1450 | nop; |
1314 | } | 1451 | } |
@@ -1658,7 +1795,7 @@ export seq_isr: | |||
1658 | * savepointer in the current FIFO. We do this so that | 1795 | * savepointer in the current FIFO. We do this so that |
1659 | * a pending CTXTDONE or SAVEPTR is visible in the active | 1796 | * a pending CTXTDONE or SAVEPTR is visible in the active |
1660 | * FIFO. This status is the only way we can detect if we | 1797 | * FIFO. This status is the only way we can detect if we |
1661 | * have lost the race (e.g. host paused us) and our attepts | 1798 | * have lost the race (e.g. host paused us) and our attempts |
1662 | * to disable the channel occurred after all REQs were | 1799 | * to disable the channel occurred after all REQs were |
1663 | * already seen and acked (REQINIT never comes true). | 1800 | * already seen and acked (REQINIT never comes true). |
1664 | */ | 1801 | */ |
@@ -1667,7 +1804,7 @@ export seq_isr: | |||
1667 | test DFCNTRL, DIRECTION jz interrupt_return; | 1804 | test DFCNTRL, DIRECTION jz interrupt_return; |
1668 | and DFCNTRL, ~SCSIEN; | 1805 | and DFCNTRL, ~SCSIEN; |
1669 | snapshot_wait_data_valid: | 1806 | snapshot_wait_data_valid: |
1670 | test SEQINTSRC, (CTXTDONE|SAVEPTRS) jnz snapshot_data_valid; | 1807 | test SEQINTSRC, (CTXTDONE|SAVEPTRS) jnz interrupt_return; |
1671 | test SSTAT1, REQINIT jz snapshot_wait_data_valid; | 1808 | test SSTAT1, REQINIT jz snapshot_wait_data_valid; |
1672 | snapshot_data_valid: | 1809 | snapshot_data_valid: |
1673 | or DFCNTRL, SCSIEN; | 1810 | or DFCNTRL, SCSIEN; |
@@ -1834,7 +1971,6 @@ pkt_saveptrs_check_status: | |||
1834 | dec SCB_FIFO_USE_COUNT; | 1971 | dec SCB_FIFO_USE_COUNT; |
1835 | test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle; | 1972 | test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle; |
1836 | mvi DFFSXFRCTL, CLRCHN ret; | 1973 | mvi DFFSXFRCTL, CLRCHN ret; |
1837 | END_CRITICAL; | ||
1838 | 1974 | ||
1839 | /* | 1975 | /* |
1840 | * LAST_SEG_DONE status has been seen in the current FIFO. | 1976 | * LAST_SEG_DONE status has been seen in the current FIFO. |
@@ -1843,7 +1979,6 @@ END_CRITICAL; | |||
1843 | * Check for overrun and see if we can complete this command. | 1979 | * Check for overrun and see if we can complete this command. |
1844 | */ | 1980 | */ |
1845 | pkt_last_seg_done: | 1981 | pkt_last_seg_done: |
1846 | BEGIN_CRITICAL; | ||
1847 | /* | 1982 | /* |
1848 | * Mark transfer as completed. | 1983 | * Mark transfer as completed. |
1849 | */ | 1984 | */ |
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c index 4e8f00df978d..db8f5ce99ee3 100644 --- a/drivers/scsi/aic7xxx/aic79xx_core.c +++ b/drivers/scsi/aic7xxx/aic79xx_core.c | |||
@@ -37,9 +37,7 @@ | |||
37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
38 | * POSSIBILITY OF SUCH DAMAGES. | 38 | * POSSIBILITY OF SUCH DAMAGES. |
39 | * | 39 | * |
40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#202 $ | 40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#247 $ |
41 | * | ||
42 | * $FreeBSD$ | ||
43 | */ | 41 | */ |
44 | 42 | ||
45 | #ifdef __linux__ | 43 | #ifdef __linux__ |
@@ -332,6 +330,14 @@ ahd_restart(struct ahd_softc *ahd) | |||
332 | ahd_outb(ahd, SCSISEQ1, | 330 | ahd_outb(ahd, SCSISEQ1, |
333 | ahd_inb(ahd, SCSISEQ_TEMPLATE) & (ENSELI|ENRSELI|ENAUTOATNP)); | 331 | ahd_inb(ahd, SCSISEQ_TEMPLATE) & (ENSELI|ENRSELI|ENAUTOATNP)); |
334 | ahd_set_modes(ahd, AHD_MODE_CCHAN, AHD_MODE_CCHAN); | 332 | ahd_set_modes(ahd, AHD_MODE_CCHAN, AHD_MODE_CCHAN); |
333 | |||
334 | /* | ||
335 | * Clear any pending sequencer interrupt. It is no | ||
336 | * longer relevant since we're resetting the Program | ||
337 | * Counter. | ||
338 | */ | ||
339 | ahd_outb(ahd, CLRINT, CLRSEQINT); | ||
340 | |||
335 | ahd_outb(ahd, SEQCTL0, FASTMODE|SEQRESET); | 341 | ahd_outb(ahd, SEQCTL0, FASTMODE|SEQRESET); |
336 | ahd_unpause(ahd); | 342 | ahd_unpause(ahd); |
337 | } | 343 | } |
@@ -373,13 +379,7 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
373 | saved_modes = ahd_save_modes(ahd); | 379 | saved_modes = ahd_save_modes(ahd); |
374 | 380 | ||
375 | /* | 381 | /* |
376 | * Complete any SCBs that just finished being | 382 | * Flush the good status FIFO for completed packetized commands. |
377 | * DMA'ed into the qoutfifo. | ||
378 | */ | ||
379 | ahd_run_qoutfifo(ahd); | ||
380 | |||
381 | /* | ||
382 | * Flush the good status FIFO for compelted packetized commands. | ||
383 | */ | 383 | */ |
384 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 384 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
385 | saved_scbptr = ahd_get_scbptr(ahd); | 385 | saved_scbptr = ahd_get_scbptr(ahd); |
@@ -387,8 +387,7 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
387 | u_int fifo_mode; | 387 | u_int fifo_mode; |
388 | u_int i; | 388 | u_int i; |
389 | 389 | ||
390 | scbid = (ahd_inb(ahd, GSFIFO+1) << 8) | 390 | scbid = ahd_inw(ahd, GSFIFO); |
391 | | ahd_inb(ahd, GSFIFO); | ||
392 | scb = ahd_lookup_scb(ahd, scbid); | 391 | scb = ahd_lookup_scb(ahd, scbid); |
393 | if (scb == NULL) { | 392 | if (scb == NULL) { |
394 | printf("%s: Warning - GSFIFO SCB %d invalid\n", | 393 | printf("%s: Warning - GSFIFO SCB %d invalid\n", |
@@ -401,22 +400,33 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
401 | * the host before completing the command. | 400 | * the host before completing the command. |
402 | */ | 401 | */ |
403 | fifo_mode = 0; | 402 | fifo_mode = 0; |
403 | rescan_fifos: | ||
404 | for (i = 0; i < 2; i++) { | 404 | for (i = 0; i < 2; i++) { |
405 | /* Toggle to the other mode. */ | 405 | /* Toggle to the other mode. */ |
406 | fifo_mode ^= 1; | 406 | fifo_mode ^= 1; |
407 | ahd_set_modes(ahd, fifo_mode, fifo_mode); | 407 | ahd_set_modes(ahd, fifo_mode, fifo_mode); |
408 | |||
408 | if (ahd_scb_active_in_fifo(ahd, scb) == 0) | 409 | if (ahd_scb_active_in_fifo(ahd, scb) == 0) |
409 | continue; | 410 | continue; |
410 | 411 | ||
411 | ahd_run_data_fifo(ahd, scb); | 412 | ahd_run_data_fifo(ahd, scb); |
412 | 413 | ||
413 | /* | 414 | /* |
414 | * Clearing this transaction in this FIFO may | 415 | * Running this FIFO may cause a CFG4DATA for |
415 | * cause a CFG4DATA for this same transaction | 416 | * this same transaction to assert in the other |
416 | * to assert in the other FIFO. Make sure we | 417 | * FIFO or a new snapshot SAVEPTRS interrupt |
417 | * loop one more time and check the other FIFO. | 418 | * in this FIFO. Even running a FIFO may not |
419 | * clear the transaction if we are still waiting | ||
420 | * for data to drain to the host. We must loop | ||
421 | * until the transaction is not active in either | ||
422 | * FIFO just to be sure. Reset our loop counter | ||
423 | * so we will visit both FIFOs again before | ||
424 | * declaring this transaction finished. We | ||
425 | * also delay a bit so that status has a chance | ||
426 | * to change before we look at this FIFO again. | ||
418 | */ | 427 | */ |
419 | i = 0; | 428 | ahd_delay(200); |
429 | goto rescan_fifos; | ||
420 | } | 430 | } |
421 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 431 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
422 | ahd_set_scbptr(ahd, scbid); | 432 | ahd_set_scbptr(ahd, scbid); |
@@ -429,19 +439,28 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
429 | /* | 439 | /* |
430 | * The transfer completed with a residual. | 440 | * The transfer completed with a residual. |
431 | * Place this SCB on the complete DMA list | 441 | * Place this SCB on the complete DMA list |
432 | * so that we Update our in-core copy of the | 442 | * so that we update our in-core copy of the |
433 | * SCB before completing the command. | 443 | * SCB before completing the command. |
434 | */ | 444 | */ |
435 | ahd_outb(ahd, SCB_SCSI_STATUS, 0); | 445 | ahd_outb(ahd, SCB_SCSI_STATUS, 0); |
436 | ahd_outb(ahd, SCB_SGPTR, | 446 | ahd_outb(ahd, SCB_SGPTR, |
437 | ahd_inb_scbram(ahd, SCB_SGPTR) | 447 | ahd_inb_scbram(ahd, SCB_SGPTR) |
438 | | SG_STATUS_VALID); | 448 | | SG_STATUS_VALID); |
439 | ahd_outw(ahd, SCB_TAG, SCB_GET_TAG(scb)); | 449 | ahd_outw(ahd, SCB_TAG, scbid); |
450 | ahd_outw(ahd, SCB_NEXT_COMPLETE, SCB_LIST_NULL); | ||
440 | comp_head = ahd_inw(ahd, COMPLETE_DMA_SCB_HEAD); | 451 | comp_head = ahd_inw(ahd, COMPLETE_DMA_SCB_HEAD); |
441 | ahd_outw(ahd, SCB_NEXT_COMPLETE, comp_head); | 452 | if (SCBID_IS_NULL(comp_head)) { |
442 | if (SCBID_IS_NULL(comp_head)) | 453 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, scbid); |
443 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, | 454 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, scbid); |
444 | SCB_GET_TAG(scb)); | 455 | } else { |
456 | u_int tail; | ||
457 | |||
458 | tail = ahd_inw(ahd, COMPLETE_DMA_SCB_TAIL); | ||
459 | ahd_set_scbptr(ahd, tail); | ||
460 | ahd_outw(ahd, SCB_NEXT_COMPLETE, scbid); | ||
461 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, scbid); | ||
462 | ahd_set_scbptr(ahd, scbid); | ||
463 | } | ||
445 | } else | 464 | } else |
446 | ahd_complete_scb(ahd, scb); | 465 | ahd_complete_scb(ahd, scb); |
447 | } | 466 | } |
@@ -465,9 +484,22 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
465 | break; | 484 | break; |
466 | ahd_delay(200); | 485 | ahd_delay(200); |
467 | } | 486 | } |
468 | if ((ccscbctl & CCSCBDIR) != 0) | 487 | /* |
488 | * We leave the sequencer to cleanup in the case of DMA's to | ||
489 | * update the qoutfifo. In all other cases (DMA's to the | ||
490 | * chip or a push of an SCB from the COMPLETE_DMA_SCB list), | ||
491 | * we disable the DMA engine so that the sequencer will not | ||
492 | * attempt to handle the DMA completion. | ||
493 | */ | ||
494 | if ((ccscbctl & CCSCBDIR) != 0 || (ccscbctl & ARRDONE) != 0) | ||
469 | ahd_outb(ahd, CCSCBCTL, ccscbctl & ~(CCARREN|CCSCBEN)); | 495 | ahd_outb(ahd, CCSCBCTL, ccscbctl & ~(CCARREN|CCSCBEN)); |
470 | 496 | ||
497 | /* | ||
498 | * Complete any SCBs that just finished | ||
499 | * being DMA'ed into the qoutfifo. | ||
500 | */ | ||
501 | ahd_run_qoutfifo(ahd); | ||
502 | |||
471 | saved_scbptr = ahd_get_scbptr(ahd); | 503 | saved_scbptr = ahd_get_scbptr(ahd); |
472 | /* | 504 | /* |
473 | * Manually update/complete any completed SCBs that are waiting to be | 505 | * Manually update/complete any completed SCBs that are waiting to be |
@@ -494,6 +526,24 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
494 | scbid = next_scbid; | 526 | scbid = next_scbid; |
495 | } | 527 | } |
496 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); | 528 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); |
529 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, SCB_LIST_NULL); | ||
530 | |||
531 | scbid = ahd_inw(ahd, COMPLETE_ON_QFREEZE_HEAD); | ||
532 | while (!SCBID_IS_NULL(scbid)) { | ||
533 | |||
534 | ahd_set_scbptr(ahd, scbid); | ||
535 | next_scbid = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); | ||
536 | scb = ahd_lookup_scb(ahd, scbid); | ||
537 | if (scb == NULL) { | ||
538 | printf("%s: Warning - Complete Qfrz SCB %d invalid\n", | ||
539 | ahd_name(ahd), scbid); | ||
540 | continue; | ||
541 | } | ||
542 | |||
543 | ahd_complete_scb(ahd, scb); | ||
544 | scbid = next_scbid; | ||
545 | } | ||
546 | ahd_outw(ahd, COMPLETE_ON_QFREEZE_HEAD, SCB_LIST_NULL); | ||
497 | 547 | ||
498 | scbid = ahd_inw(ahd, COMPLETE_SCB_HEAD); | 548 | scbid = ahd_inw(ahd, COMPLETE_SCB_HEAD); |
499 | while (!SCBID_IS_NULL(scbid)) { | 549 | while (!SCBID_IS_NULL(scbid)) { |
@@ -558,150 +608,146 @@ ahd_run_data_fifo(struct ahd_softc *ahd, struct scb *scb) | |||
558 | { | 608 | { |
559 | u_int seqintsrc; | 609 | u_int seqintsrc; |
560 | 610 | ||
561 | while (1) { | 611 | seqintsrc = ahd_inb(ahd, SEQINTSRC); |
562 | seqintsrc = ahd_inb(ahd, SEQINTSRC); | 612 | if ((seqintsrc & CFG4DATA) != 0) { |
563 | if ((seqintsrc & CFG4DATA) != 0) { | 613 | uint32_t datacnt; |
564 | uint32_t datacnt; | 614 | uint32_t sgptr; |
565 | uint32_t sgptr; | ||
566 | |||
567 | /* | ||
568 | * Clear full residual flag. | ||
569 | */ | ||
570 | sgptr = ahd_inl_scbram(ahd, SCB_SGPTR) & ~SG_FULL_RESID; | ||
571 | ahd_outb(ahd, SCB_SGPTR, sgptr); | ||
572 | 615 | ||
573 | /* | 616 | /* |
574 | * Load datacnt and address. | 617 | * Clear full residual flag. |
575 | */ | 618 | */ |
576 | datacnt = ahd_inl_scbram(ahd, SCB_DATACNT); | 619 | sgptr = ahd_inl_scbram(ahd, SCB_SGPTR) & ~SG_FULL_RESID; |
577 | if ((datacnt & AHD_DMA_LAST_SEG) != 0) { | 620 | ahd_outb(ahd, SCB_SGPTR, sgptr); |
578 | sgptr |= LAST_SEG; | ||
579 | ahd_outb(ahd, SG_STATE, 0); | ||
580 | } else | ||
581 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); | ||
582 | ahd_outq(ahd, HADDR, ahd_inq_scbram(ahd, SCB_DATAPTR)); | ||
583 | ahd_outl(ahd, HCNT, datacnt & AHD_SG_LEN_MASK); | ||
584 | ahd_outb(ahd, SG_CACHE_PRE, sgptr); | ||
585 | ahd_outb(ahd, DFCNTRL, PRELOADEN|SCSIEN|HDMAEN); | ||
586 | 621 | ||
587 | /* | 622 | /* |
588 | * Initialize Residual Fields. | 623 | * Load datacnt and address. |
589 | */ | 624 | */ |
590 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT+3, datacnt >> 24); | 625 | datacnt = ahd_inl_scbram(ahd, SCB_DATACNT); |
591 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr & SG_PTR_MASK); | 626 | if ((datacnt & AHD_DMA_LAST_SEG) != 0) { |
627 | sgptr |= LAST_SEG; | ||
628 | ahd_outb(ahd, SG_STATE, 0); | ||
629 | } else | ||
630 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); | ||
631 | ahd_outq(ahd, HADDR, ahd_inq_scbram(ahd, SCB_DATAPTR)); | ||
632 | ahd_outl(ahd, HCNT, datacnt & AHD_SG_LEN_MASK); | ||
633 | ahd_outb(ahd, SG_CACHE_PRE, sgptr); | ||
634 | ahd_outb(ahd, DFCNTRL, PRELOADEN|SCSIEN|HDMAEN); | ||
592 | 635 | ||
593 | /* | 636 | /* |
594 | * Mark the SCB as having a FIFO in use. | 637 | * Initialize Residual Fields. |
595 | */ | 638 | */ |
596 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, | 639 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT+3, datacnt >> 24); |
597 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) + 1); | 640 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr & SG_PTR_MASK); |
598 | 641 | ||
599 | /* | 642 | /* |
600 | * Install a "fake" handler for this FIFO. | 643 | * Mark the SCB as having a FIFO in use. |
601 | */ | 644 | */ |
602 | ahd_outw(ahd, LONGJMP_ADDR, 0); | 645 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, |
646 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) + 1); | ||
603 | 647 | ||
604 | /* | 648 | /* |
605 | * Notify the hardware that we have satisfied | 649 | * Install a "fake" handler for this FIFO. |
606 | * this sequencer interrupt. | 650 | */ |
607 | */ | 651 | ahd_outw(ahd, LONGJMP_ADDR, 0); |
608 | ahd_outb(ahd, CLRSEQINTSRC, CLRCFG4DATA); | ||
609 | } else if ((seqintsrc & SAVEPTRS) != 0) { | ||
610 | uint32_t sgptr; | ||
611 | uint32_t resid; | ||
612 | 652 | ||
613 | if ((ahd_inb(ahd, LONGJMP_ADDR+1)&INVALID_ADDR) != 0) { | 653 | /* |
614 | /* | 654 | * Notify the hardware that we have satisfied |
615 | * Snapshot Save Pointers. Clear | 655 | * this sequencer interrupt. |
616 | * the snapshot and continue. | 656 | */ |
617 | */ | 657 | ahd_outb(ahd, CLRSEQINTSRC, CLRCFG4DATA); |
618 | ahd_outb(ahd, DFFSXFRCTL, CLRCHN); | 658 | } else if ((seqintsrc & SAVEPTRS) != 0) { |
619 | continue; | 659 | uint32_t sgptr; |
620 | } | 660 | uint32_t resid; |
621 | 661 | ||
662 | if ((ahd_inb(ahd, LONGJMP_ADDR+1)&INVALID_ADDR) != 0) { | ||
622 | /* | 663 | /* |
623 | * Disable S/G fetch so the DMA engine | 664 | * Snapshot Save Pointers. All that |
624 | * is available to future users. | 665 | * is necessary to clear the snapshot |
666 | * is a CLRCHN. | ||
625 | */ | 667 | */ |
626 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) | 668 | goto clrchn; |
627 | ahd_outb(ahd, CCSGCTL, 0); | 669 | } |
628 | ahd_outb(ahd, SG_STATE, 0); | ||
629 | 670 | ||
630 | /* | 671 | /* |
631 | * Flush the data FIFO. Strickly only | 672 | * Disable S/G fetch so the DMA engine |
632 | * necessary for Rev A parts. | 673 | * is available to future users. |
633 | */ | 674 | */ |
634 | ahd_outb(ahd, DFCNTRL, | 675 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) |
635 | ahd_inb(ahd, DFCNTRL) | FIFOFLUSH); | 676 | ahd_outb(ahd, CCSGCTL, 0); |
677 | ahd_outb(ahd, SG_STATE, 0); | ||
636 | 678 | ||
637 | /* | 679 | /* |
638 | * Calculate residual. | 680 | * Flush the data FIFO. Strickly only |
639 | */ | 681 | * necessary for Rev A parts. |
640 | sgptr = ahd_inl_scbram(ahd, SCB_RESIDUAL_SGPTR); | 682 | */ |
641 | resid = ahd_inl(ahd, SHCNT); | 683 | ahd_outb(ahd, DFCNTRL, ahd_inb(ahd, DFCNTRL) | FIFOFLUSH); |
642 | resid |= | ||
643 | ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+3) << 24; | ||
644 | ahd_outl(ahd, SCB_RESIDUAL_DATACNT, resid); | ||
645 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & LAST_SEG) == 0) { | ||
646 | /* | ||
647 | * Must back up to the correct S/G element. | ||
648 | * Typically this just means resetting our | ||
649 | * low byte to the offset in the SG_CACHE, | ||
650 | * but if we wrapped, we have to correct | ||
651 | * the other bytes of the sgptr too. | ||
652 | */ | ||
653 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & 0x80) != 0 | ||
654 | && (sgptr & 0x80) == 0) | ||
655 | sgptr -= 0x100; | ||
656 | sgptr &= ~0xFF; | ||
657 | sgptr |= ahd_inb(ahd, SG_CACHE_SHADOW) | ||
658 | & SG_ADDR_MASK; | ||
659 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr); | ||
660 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 3, 0); | ||
661 | } else if ((resid & AHD_SG_LEN_MASK) == 0) { | ||
662 | ahd_outb(ahd, SCB_RESIDUAL_SGPTR, | ||
663 | sgptr | SG_LIST_NULL); | ||
664 | } | ||
665 | /* | ||
666 | * Save Pointers. | ||
667 | */ | ||
668 | ahd_outq(ahd, SCB_DATAPTR, ahd_inq(ahd, SHADDR)); | ||
669 | ahd_outl(ahd, SCB_DATACNT, resid); | ||
670 | ahd_outl(ahd, SCB_SGPTR, sgptr); | ||
671 | ahd_outb(ahd, CLRSEQINTSRC, CLRSAVEPTRS); | ||
672 | ahd_outb(ahd, SEQIMODE, | ||
673 | ahd_inb(ahd, SEQIMODE) | ENSAVEPTRS); | ||
674 | /* | ||
675 | * If the data is to the SCSI bus, we are | ||
676 | * done, otherwise wait for FIFOEMP. | ||
677 | */ | ||
678 | if ((ahd_inb(ahd, DFCNTRL) & DIRECTION) != 0) | ||
679 | break; | ||
680 | } else if ((ahd_inb(ahd, SG_STATE) & LOADING_NEEDED) != 0) { | ||
681 | uint32_t sgptr; | ||
682 | uint64_t data_addr; | ||
683 | uint32_t data_len; | ||
684 | u_int dfcntrl; | ||
685 | 684 | ||
685 | /* | ||
686 | * Calculate residual. | ||
687 | */ | ||
688 | sgptr = ahd_inl_scbram(ahd, SCB_RESIDUAL_SGPTR); | ||
689 | resid = ahd_inl(ahd, SHCNT); | ||
690 | resid |= ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+3) << 24; | ||
691 | ahd_outl(ahd, SCB_RESIDUAL_DATACNT, resid); | ||
692 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & LAST_SEG) == 0) { | ||
686 | /* | 693 | /* |
687 | * Disable S/G fetch so the DMA engine | 694 | * Must back up to the correct S/G element. |
688 | * is available to future users. | 695 | * Typically this just means resetting our |
696 | * low byte to the offset in the SG_CACHE, | ||
697 | * but if we wrapped, we have to correct | ||
698 | * the other bytes of the sgptr too. | ||
689 | */ | 699 | */ |
690 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) { | 700 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & 0x80) != 0 |
691 | ahd_outb(ahd, CCSGCTL, 0); | 701 | && (sgptr & 0x80) == 0) |
692 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); | 702 | sgptr -= 0x100; |
693 | } | 703 | sgptr &= ~0xFF; |
704 | sgptr |= ahd_inb(ahd, SG_CACHE_SHADOW) | ||
705 | & SG_ADDR_MASK; | ||
706 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr); | ||
707 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 3, 0); | ||
708 | } else if ((resid & AHD_SG_LEN_MASK) == 0) { | ||
709 | ahd_outb(ahd, SCB_RESIDUAL_SGPTR, | ||
710 | sgptr | SG_LIST_NULL); | ||
711 | } | ||
712 | /* | ||
713 | * Save Pointers. | ||
714 | */ | ||
715 | ahd_outq(ahd, SCB_DATAPTR, ahd_inq(ahd, SHADDR)); | ||
716 | ahd_outl(ahd, SCB_DATACNT, resid); | ||
717 | ahd_outl(ahd, SCB_SGPTR, sgptr); | ||
718 | ahd_outb(ahd, CLRSEQINTSRC, CLRSAVEPTRS); | ||
719 | ahd_outb(ahd, SEQIMODE, | ||
720 | ahd_inb(ahd, SEQIMODE) | ENSAVEPTRS); | ||
721 | /* | ||
722 | * If the data is to the SCSI bus, we are | ||
723 | * done, otherwise wait for FIFOEMP. | ||
724 | */ | ||
725 | if ((ahd_inb(ahd, DFCNTRL) & DIRECTION) != 0) | ||
726 | goto clrchn; | ||
727 | } else if ((ahd_inb(ahd, SG_STATE) & LOADING_NEEDED) != 0) { | ||
728 | uint32_t sgptr; | ||
729 | uint64_t data_addr; | ||
730 | uint32_t data_len; | ||
731 | u_int dfcntrl; | ||
694 | 732 | ||
695 | /* | 733 | /* |
696 | * Wait for the DMA engine to notice that the | 734 | * Disable S/G fetch so the DMA engine |
697 | * host transfer is enabled and that there is | 735 | * is available to future users. We won't |
698 | * space in the S/G FIFO for new segments before | 736 | * be using the DMA engine to load segments. |
699 | * loading more segments. | 737 | */ |
700 | */ | 738 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) { |
701 | if ((ahd_inb(ahd, DFSTATUS) & PRELOAD_AVAIL) == 0) | 739 | ahd_outb(ahd, CCSGCTL, 0); |
702 | continue; | 740 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); |
703 | if ((ahd_inb(ahd, DFCNTRL) & HDMAENACK) == 0) | 741 | } |
704 | continue; | 742 | |
743 | /* | ||
744 | * Wait for the DMA engine to notice that the | ||
745 | * host transfer is enabled and that there is | ||
746 | * space in the S/G FIFO for new segments before | ||
747 | * loading more segments. | ||
748 | */ | ||
749 | if ((ahd_inb(ahd, DFSTATUS) & PRELOAD_AVAIL) != 0 | ||
750 | && (ahd_inb(ahd, DFCNTRL) & HDMAENACK) != 0) { | ||
705 | 751 | ||
706 | /* | 752 | /* |
707 | * Determine the offset of the next S/G | 753 | * Determine the offset of the next S/G |
@@ -748,7 +794,7 @@ ahd_run_data_fifo(struct ahd_softc *ahd, struct scb *scb) | |||
748 | * Advertise the segment to the hardware. | 794 | * Advertise the segment to the hardware. |
749 | */ | 795 | */ |
750 | dfcntrl = ahd_inb(ahd, DFCNTRL)|PRELOADEN|HDMAEN; | 796 | dfcntrl = ahd_inb(ahd, DFCNTRL)|PRELOADEN|HDMAEN; |
751 | if ((ahd->features & AHD_NEW_DFCNTRL_OPTS)!=0) { | 797 | if ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0) { |
752 | /* | 798 | /* |
753 | * Use SCSIENWRDIS so that SCSIEN | 799 | * Use SCSIENWRDIS so that SCSIEN |
754 | * is never modified by this | 800 | * is never modified by this |
@@ -757,35 +803,44 @@ ahd_run_data_fifo(struct ahd_softc *ahd, struct scb *scb) | |||
757 | dfcntrl |= SCSIENWRDIS; | 803 | dfcntrl |= SCSIENWRDIS; |
758 | } | 804 | } |
759 | ahd_outb(ahd, DFCNTRL, dfcntrl); | 805 | ahd_outb(ahd, DFCNTRL, dfcntrl); |
760 | } else if ((ahd_inb(ahd, SG_CACHE_SHADOW) | ||
761 | & LAST_SEG_DONE) != 0) { | ||
762 | |||
763 | /* | ||
764 | * Transfer completed to the end of SG list | ||
765 | * and has flushed to the host. | ||
766 | */ | ||
767 | ahd_outb(ahd, SCB_SGPTR, | ||
768 | ahd_inb_scbram(ahd, SCB_SGPTR) | SG_LIST_NULL); | ||
769 | break; | ||
770 | } else if ((ahd_inb(ahd, DFSTATUS) & FIFOEMP) != 0) { | ||
771 | break; | ||
772 | } | 806 | } |
773 | ahd_delay(200); | 807 | } else if ((ahd_inb(ahd, SG_CACHE_SHADOW) & LAST_SEG_DONE) != 0) { |
808 | |||
809 | /* | ||
810 | * Transfer completed to the end of SG list | ||
811 | * and has flushed to the host. | ||
812 | */ | ||
813 | ahd_outb(ahd, SCB_SGPTR, | ||
814 | ahd_inb_scbram(ahd, SCB_SGPTR) | SG_LIST_NULL); | ||
815 | goto clrchn; | ||
816 | } else if ((ahd_inb(ahd, DFSTATUS) & FIFOEMP) != 0) { | ||
817 | clrchn: | ||
818 | /* | ||
819 | * Clear any handler for this FIFO, decrement | ||
820 | * the FIFO use count for the SCB, and release | ||
821 | * the FIFO. | ||
822 | */ | ||
823 | ahd_outb(ahd, LONGJMP_ADDR + 1, INVALID_ADDR); | ||
824 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, | ||
825 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) - 1); | ||
826 | ahd_outb(ahd, DFFSXFRCTL, CLRCHN); | ||
774 | } | 827 | } |
775 | /* | ||
776 | * Clear any handler for this FIFO, decrement | ||
777 | * the FIFO use count for the SCB, and release | ||
778 | * the FIFO. | ||
779 | */ | ||
780 | ahd_outb(ahd, LONGJMP_ADDR + 1, INVALID_ADDR); | ||
781 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, | ||
782 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) - 1); | ||
783 | ahd_outb(ahd, DFFSXFRCTL, CLRCHN); | ||
784 | } | 828 | } |
785 | 829 | ||
830 | /* | ||
831 | * Look for entries in the QoutFIFO that have completed. | ||
832 | * The valid_tag completion field indicates the validity | ||
833 | * of the entry - the valid value toggles each time through | ||
834 | * the queue. We use the sg_status field in the completion | ||
835 | * entry to avoid referencing the hscb if the completion | ||
836 | * occurred with no errors and no residual. sg_status is | ||
837 | * a copy of the first byte (little endian) of the sgptr | ||
838 | * hscb field. | ||
839 | */ | ||
786 | void | 840 | void |
787 | ahd_run_qoutfifo(struct ahd_softc *ahd) | 841 | ahd_run_qoutfifo(struct ahd_softc *ahd) |
788 | { | 842 | { |
843 | struct ahd_completion *completion; | ||
789 | struct scb *scb; | 844 | struct scb *scb; |
790 | u_int scb_index; | 845 | u_int scb_index; |
791 | 846 | ||
@@ -793,11 +848,13 @@ ahd_run_qoutfifo(struct ahd_softc *ahd) | |||
793 | panic("ahd_run_qoutfifo recursion"); | 848 | panic("ahd_run_qoutfifo recursion"); |
794 | ahd->flags |= AHD_RUNNING_QOUTFIFO; | 849 | ahd->flags |= AHD_RUNNING_QOUTFIFO; |
795 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_POSTREAD); | 850 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_POSTREAD); |
796 | while ((ahd->qoutfifo[ahd->qoutfifonext] | 851 | for (;;) { |
797 | & QOUTFIFO_ENTRY_VALID_LE) == ahd->qoutfifonext_valid_tag) { | 852 | completion = &ahd->qoutfifo[ahd->qoutfifonext]; |
798 | 853 | ||
799 | scb_index = ahd_le16toh(ahd->qoutfifo[ahd->qoutfifonext] | 854 | if (completion->valid_tag != ahd->qoutfifonext_valid_tag) |
800 | & ~QOUTFIFO_ENTRY_VALID_LE); | 855 | break; |
856 | |||
857 | scb_index = ahd_le16toh(completion->tag); | ||
801 | scb = ahd_lookup_scb(ahd, scb_index); | 858 | scb = ahd_lookup_scb(ahd, scb_index); |
802 | if (scb == NULL) { | 859 | if (scb == NULL) { |
803 | printf("%s: WARNING no command for scb %d " | 860 | printf("%s: WARNING no command for scb %d " |
@@ -805,12 +862,15 @@ ahd_run_qoutfifo(struct ahd_softc *ahd) | |||
805 | ahd_name(ahd), scb_index, | 862 | ahd_name(ahd), scb_index, |
806 | ahd->qoutfifonext); | 863 | ahd->qoutfifonext); |
807 | ahd_dump_card_state(ahd); | 864 | ahd_dump_card_state(ahd); |
808 | } else | 865 | } else if ((completion->sg_status & SG_STATUS_VALID) != 0) { |
809 | ahd_complete_scb(ahd, scb); | 866 | ahd_handle_scb_status(ahd, scb); |
867 | } else { | ||
868 | ahd_done(ahd, scb); | ||
869 | } | ||
810 | 870 | ||
811 | ahd->qoutfifonext = (ahd->qoutfifonext+1) & (AHD_QOUT_SIZE-1); | 871 | ahd->qoutfifonext = (ahd->qoutfifonext+1) & (AHD_QOUT_SIZE-1); |
812 | if (ahd->qoutfifonext == 0) | 872 | if (ahd->qoutfifonext == 0) |
813 | ahd->qoutfifonext_valid_tag ^= QOUTFIFO_ENTRY_VALID_LE; | 873 | ahd->qoutfifonext_valid_tag ^= QOUTFIFO_ENTRY_VALID; |
814 | } | 874 | } |
815 | ahd->flags &= ~AHD_RUNNING_QOUTFIFO; | 875 | ahd->flags &= ~AHD_RUNNING_QOUTFIFO; |
816 | } | 876 | } |
@@ -876,26 +936,6 @@ ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat) | |||
876 | ahd_name(ahd), seqintcode); | 936 | ahd_name(ahd), seqintcode); |
877 | #endif | 937 | #endif |
878 | switch (seqintcode) { | 938 | switch (seqintcode) { |
879 | case BAD_SCB_STATUS: | ||
880 | { | ||
881 | struct scb *scb; | ||
882 | u_int scbid; | ||
883 | int cmds_pending; | ||
884 | |||
885 | scbid = ahd_get_scbptr(ahd); | ||
886 | scb = ahd_lookup_scb(ahd, scbid); | ||
887 | if (scb != NULL) { | ||
888 | ahd_complete_scb(ahd, scb); | ||
889 | } else { | ||
890 | printf("%s: WARNING no command for scb %d " | ||
891 | "(bad status)\n", ahd_name(ahd), scbid); | ||
892 | ahd_dump_card_state(ahd); | ||
893 | } | ||
894 | cmds_pending = ahd_inw(ahd, CMDS_PENDING); | ||
895 | if (cmds_pending > 0) | ||
896 | ahd_outw(ahd, CMDS_PENDING, cmds_pending - 1); | ||
897 | break; | ||
898 | } | ||
899 | case ENTERING_NONPACK: | 939 | case ENTERING_NONPACK: |
900 | { | 940 | { |
901 | struct scb *scb; | 941 | struct scb *scb; |
@@ -1060,7 +1100,7 @@ ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat) | |||
1060 | ahd_outb(ahd, SAVED_LUN, 0); | 1100 | ahd_outb(ahd, SAVED_LUN, 0); |
1061 | ahd_outb(ahd, SEQ_FLAGS, 0); | 1101 | ahd_outb(ahd, SEQ_FLAGS, 0); |
1062 | ahd_assert_atn(ahd); | 1102 | ahd_assert_atn(ahd); |
1063 | scb->flags &= ~(SCB_PACKETIZED); | 1103 | scb->flags &= ~SCB_PACKETIZED; |
1064 | scb->flags |= SCB_ABORT|SCB_CMDPHASE_ABORT; | 1104 | scb->flags |= SCB_ABORT|SCB_CMDPHASE_ABORT; |
1065 | ahd_freeze_devq(ahd, scb); | 1105 | ahd_freeze_devq(ahd, scb); |
1066 | ahd_set_transaction_status(scb, CAM_REQUEUE_REQ); | 1106 | ahd_set_transaction_status(scb, CAM_REQUEUE_REQ); |
@@ -1503,9 +1543,6 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1503 | && (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) != 0) | 1543 | && (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) != 0) |
1504 | scb = NULL; | 1544 | scb = NULL; |
1505 | 1545 | ||
1506 | /* Make sure the sequencer is in a safe location. */ | ||
1507 | ahd_clear_critical_section(ahd); | ||
1508 | |||
1509 | if ((status0 & IOERR) != 0) { | 1546 | if ((status0 & IOERR) != 0) { |
1510 | u_int now_lvd; | 1547 | u_int now_lvd; |
1511 | 1548 | ||
@@ -1521,26 +1558,35 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1521 | ahd_setup_iocell_workaround(ahd); | 1558 | ahd_setup_iocell_workaround(ahd); |
1522 | ahd_unpause(ahd); | 1559 | ahd_unpause(ahd); |
1523 | } else if ((status0 & OVERRUN) != 0) { | 1560 | } else if ((status0 & OVERRUN) != 0) { |
1561 | |||
1524 | printf("%s: SCSI offset overrun detected. Resetting bus.\n", | 1562 | printf("%s: SCSI offset overrun detected. Resetting bus.\n", |
1525 | ahd_name(ahd)); | 1563 | ahd_name(ahd)); |
1526 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/TRUE); | 1564 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/TRUE); |
1527 | } else if ((status & SCSIRSTI) != 0) { | 1565 | } else if ((status & SCSIRSTI) != 0) { |
1566 | |||
1528 | printf("%s: Someone reset channel A\n", ahd_name(ahd)); | 1567 | printf("%s: Someone reset channel A\n", ahd_name(ahd)); |
1529 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/FALSE); | 1568 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/FALSE); |
1530 | } else if ((status & SCSIPERR) != 0) { | 1569 | } else if ((status & SCSIPERR) != 0) { |
1570 | |||
1571 | /* Make sure the sequencer is in a safe location. */ | ||
1572 | ahd_clear_critical_section(ahd); | ||
1573 | |||
1531 | ahd_handle_transmission_error(ahd); | 1574 | ahd_handle_transmission_error(ahd); |
1532 | } else if (lqostat0 != 0) { | 1575 | } else if (lqostat0 != 0) { |
1576 | |||
1533 | printf("%s: lqostat0 == 0x%x!\n", ahd_name(ahd), lqostat0); | 1577 | printf("%s: lqostat0 == 0x%x!\n", ahd_name(ahd), lqostat0); |
1534 | ahd_outb(ahd, CLRLQOINT0, lqostat0); | 1578 | ahd_outb(ahd, CLRLQOINT0, lqostat0); |
1535 | if ((ahd->bugs & AHD_CLRLQO_AUTOCLR_BUG) != 0) { | 1579 | if ((ahd->bugs & AHD_CLRLQO_AUTOCLR_BUG) != 0) |
1536 | ahd_outb(ahd, CLRLQOINT1, 0); | 1580 | ahd_outb(ahd, CLRLQOINT1, 0); |
1537 | } | ||
1538 | } else if ((status & SELTO) != 0) { | 1581 | } else if ((status & SELTO) != 0) { |
1539 | u_int scbid; | 1582 | u_int scbid; |
1540 | 1583 | ||
1541 | /* Stop the selection */ | 1584 | /* Stop the selection */ |
1542 | ahd_outb(ahd, SCSISEQ0, 0); | 1585 | ahd_outb(ahd, SCSISEQ0, 0); |
1543 | 1586 | ||
1587 | /* Make sure the sequencer is in a safe location. */ | ||
1588 | ahd_clear_critical_section(ahd); | ||
1589 | |||
1544 | /* No more pending messages */ | 1590 | /* No more pending messages */ |
1545 | ahd_clear_msg_state(ahd); | 1591 | ahd_clear_msg_state(ahd); |
1546 | 1592 | ||
@@ -1573,24 +1619,27 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1573 | scbid); | 1619 | scbid); |
1574 | } | 1620 | } |
1575 | #endif | 1621 | #endif |
1576 | /* | ||
1577 | * Force a renegotiation with this target just in | ||
1578 | * case the cable was pulled and will later be | ||
1579 | * re-attached. The target may forget its negotiation | ||
1580 | * settings with us should it attempt to reselect | ||
1581 | * during the interruption. The target will not issue | ||
1582 | * a unit attention in this case, so we must always | ||
1583 | * renegotiate. | ||
1584 | */ | ||
1585 | ahd_scb_devinfo(ahd, &devinfo, scb); | 1622 | ahd_scb_devinfo(ahd, &devinfo, scb); |
1586 | ahd_force_renegotiation(ahd, &devinfo); | ||
1587 | ahd_set_transaction_status(scb, CAM_SEL_TIMEOUT); | 1623 | ahd_set_transaction_status(scb, CAM_SEL_TIMEOUT); |
1588 | ahd_freeze_devq(ahd, scb); | 1624 | ahd_freeze_devq(ahd, scb); |
1625 | |||
1626 | /* | ||
1627 | * Cancel any pending transactions on the device | ||
1628 | * now that it seems to be missing. This will | ||
1629 | * also revert us to async/narrow transfers until | ||
1630 | * we can renegotiate with the device. | ||
1631 | */ | ||
1632 | ahd_handle_devreset(ahd, &devinfo, | ||
1633 | CAM_LUN_WILDCARD, | ||
1634 | CAM_SEL_TIMEOUT, | ||
1635 | "Selection Timeout", | ||
1636 | /*verbose_level*/1); | ||
1589 | } | 1637 | } |
1590 | ahd_outb(ahd, CLRINT, CLRSCSIINT); | 1638 | ahd_outb(ahd, CLRINT, CLRSCSIINT); |
1591 | ahd_iocell_first_selection(ahd); | 1639 | ahd_iocell_first_selection(ahd); |
1592 | ahd_unpause(ahd); | 1640 | ahd_unpause(ahd); |
1593 | } else if ((status0 & (SELDI|SELDO)) != 0) { | 1641 | } else if ((status0 & (SELDI|SELDO)) != 0) { |
1642 | |||
1594 | ahd_iocell_first_selection(ahd); | 1643 | ahd_iocell_first_selection(ahd); |
1595 | ahd_unpause(ahd); | 1644 | ahd_unpause(ahd); |
1596 | } else if (status3 != 0) { | 1645 | } else if (status3 != 0) { |
@@ -1598,6 +1647,10 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1598 | ahd_name(ahd), status3); | 1647 | ahd_name(ahd), status3); |
1599 | ahd_outb(ahd, CLRSINT3, status3); | 1648 | ahd_outb(ahd, CLRSINT3, status3); |
1600 | } else if ((lqistat1 & (LQIPHASE_LQ|LQIPHASE_NLQ)) != 0) { | 1649 | } else if ((lqistat1 & (LQIPHASE_LQ|LQIPHASE_NLQ)) != 0) { |
1650 | |||
1651 | /* Make sure the sequencer is in a safe location. */ | ||
1652 | ahd_clear_critical_section(ahd); | ||
1653 | |||
1601 | ahd_handle_lqiphase_error(ahd, lqistat1); | 1654 | ahd_handle_lqiphase_error(ahd, lqistat1); |
1602 | } else if ((lqistat1 & LQICRCI_NLQ) != 0) { | 1655 | } else if ((lqistat1 & LQICRCI_NLQ) != 0) { |
1603 | /* | 1656 | /* |
@@ -1622,6 +1675,9 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1622 | */ | 1675 | */ |
1623 | ahd_outb(ahd, SCSISEQ0, 0); | 1676 | ahd_outb(ahd, SCSISEQ0, 0); |
1624 | 1677 | ||
1678 | /* Make sure the sequencer is in a safe location. */ | ||
1679 | ahd_clear_critical_section(ahd); | ||
1680 | |||
1625 | /* | 1681 | /* |
1626 | * Determine what we were up to at the time of | 1682 | * Determine what we were up to at the time of |
1627 | * the busfree. | 1683 | * the busfree. |
@@ -1659,7 +1715,16 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1659 | clear_fifo = 0; | 1715 | clear_fifo = 0; |
1660 | packetized = (lqostat1 & LQOBUSFREE) != 0; | 1716 | packetized = (lqostat1 & LQOBUSFREE) != 0; |
1661 | if (!packetized | 1717 | if (!packetized |
1662 | && ahd_inb(ahd, LASTPHASE) == P_BUSFREE) | 1718 | && ahd_inb(ahd, LASTPHASE) == P_BUSFREE |
1719 | && (ahd_inb(ahd, SSTAT0) & SELDI) == 0 | ||
1720 | && ((ahd_inb(ahd, SSTAT0) & SELDO) == 0 | ||
1721 | || (ahd_inb(ahd, SCSISEQ0) & ENSELO) == 0)) | ||
1722 | /* | ||
1723 | * Assume packetized if we are not | ||
1724 | * on the bus in a non-packetized | ||
1725 | * capacity and any pending selection | ||
1726 | * was a packetized selection. | ||
1727 | */ | ||
1663 | packetized = 1; | 1728 | packetized = 1; |
1664 | break; | 1729 | break; |
1665 | } | 1730 | } |
@@ -2310,8 +2375,7 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
2310 | "PRGMCNT == 0x%x\n", | 2375 | "PRGMCNT == 0x%x\n", |
2311 | ahd_lookup_phase_entry(lastphase)->phasemsg, | 2376 | ahd_lookup_phase_entry(lastphase)->phasemsg, |
2312 | aborted, | 2377 | aborted, |
2313 | ahd_inb(ahd, PRGMCNT) | 2378 | ahd_inw(ahd, PRGMCNT)); |
2314 | | (ahd_inb(ahd, PRGMCNT+1) << 8)); | ||
2315 | ahd_dump_card_state(ahd); | 2379 | ahd_dump_card_state(ahd); |
2316 | } | 2380 | } |
2317 | /* Always restart the sequencer. */ | 2381 | /* Always restart the sequencer. */ |
@@ -2474,8 +2538,7 @@ ahd_clear_critical_section(struct ahd_softc *ahd) | |||
2474 | u_int i; | 2538 | u_int i; |
2475 | 2539 | ||
2476 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 2540 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
2477 | seqaddr = ahd_inb(ahd, CURADDR) | 2541 | seqaddr = ahd_inw(ahd, CURADDR); |
2478 | | (ahd_inb(ahd, CURADDR+1) << 8); | ||
2479 | 2542 | ||
2480 | cs = ahd->critical_sections; | 2543 | cs = ahd->critical_sections; |
2481 | for (i = 0; i < ahd->num_critical_sections; i++, cs++) { | 2544 | for (i = 0; i < ahd->num_critical_sections; i++, cs++) { |
@@ -3196,14 +3259,25 @@ ahd_update_neg_table(struct ahd_softc *ahd, struct ahd_devinfo *devinfo, | |||
3196 | iocell_opts[AHD_PRECOMP_SLEW_INDEX] &= ~AHD_PRECOMP_MASK; | 3259 | iocell_opts[AHD_PRECOMP_SLEW_INDEX] &= ~AHD_PRECOMP_MASK; |
3197 | 3260 | ||
3198 | if ((ahd->features & AHD_NEW_IOCELL_OPTS) != 0 | 3261 | if ((ahd->features & AHD_NEW_IOCELL_OPTS) != 0 |
3199 | && (ppr_opts & MSG_EXT_PPR_DT_REQ) != 0) { | 3262 | && (ppr_opts & MSG_EXT_PPR_DT_REQ) != 0 |
3263 | && (ppr_opts & MSG_EXT_PPR_IU_REQ) == 0) { | ||
3200 | /* | 3264 | /* |
3201 | * Slow down our CRC interval to be | 3265 | * Slow down our CRC interval to be |
3202 | * compatible with devices that can't | 3266 | * compatible with non-packetized |
3203 | * handle a CRC at full speed. | 3267 | * U160 devices that can't handle a |
3268 | * CRC at full speed. | ||
3204 | */ | 3269 | */ |
3205 | con_opts |= ENSLOWCRC; | 3270 | con_opts |= ENSLOWCRC; |
3206 | } | 3271 | } |
3272 | |||
3273 | if ((ahd->bugs & AHD_PACED_NEGTABLE_BUG) != 0) { | ||
3274 | /* | ||
3275 | * On H2A4, revert to a slower slewrate | ||
3276 | * on non-paced transfers. | ||
3277 | */ | ||
3278 | iocell_opts[AHD_PRECOMP_SLEW_INDEX] &= | ||
3279 | ~AHD_SLEWRATE_MASK; | ||
3280 | } | ||
3207 | } | 3281 | } |
3208 | 3282 | ||
3209 | ahd_outb(ahd, ANNEXCOL, AHD_ANNEXCOL_PRECOMP_SLEW); | 3283 | ahd_outb(ahd, ANNEXCOL, AHD_ANNEXCOL_PRECOMP_SLEW); |
@@ -3292,11 +3366,15 @@ ahd_update_pending_scbs(struct ahd_softc *ahd) | |||
3292 | * Force the sequencer to reinitialize the selection for | 3366 | * Force the sequencer to reinitialize the selection for |
3293 | * the command at the head of the execution queue if it | 3367 | * the command at the head of the execution queue if it |
3294 | * has already been setup. The negotiation changes may | 3368 | * has already been setup. The negotiation changes may |
3295 | * effect whether we select-out with ATN. | 3369 | * effect whether we select-out with ATN. It is only |
3370 | * safe to clear ENSELO when the bus is not free and no | ||
3371 | * selection is in progres or completed. | ||
3296 | */ | 3372 | */ |
3297 | saved_modes = ahd_save_modes(ahd); | 3373 | saved_modes = ahd_save_modes(ahd); |
3298 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 3374 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
3299 | ahd_outb(ahd, SCSISEQ0, ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | 3375 | if ((ahd_inb(ahd, SCSISIGI) & BSYI) != 0 |
3376 | && (ahd_inb(ahd, SSTAT0) & (SELDO|SELINGO)) == 0) | ||
3377 | ahd_outb(ahd, SCSISEQ0, ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | ||
3300 | saved_scbptr = ahd_get_scbptr(ahd); | 3378 | saved_scbptr = ahd_get_scbptr(ahd); |
3301 | /* Ensure that the hscbs down on the card match the new information */ | 3379 | /* Ensure that the hscbs down on the card match the new information */ |
3302 | for (scb_tag = 0; scb_tag < ahd->scb_data.maxhscbs; scb_tag++) { | 3380 | for (scb_tag = 0; scb_tag < ahd->scb_data.maxhscbs; scb_tag++) { |
@@ -4909,10 +4987,7 @@ ahd_reinitialize_dataptrs(struct ahd_softc *ahd) | |||
4909 | * Determine initial values for data_addr and data_cnt | 4987 | * Determine initial values for data_addr and data_cnt |
4910 | * for resuming the data phase. | 4988 | * for resuming the data phase. |
4911 | */ | 4989 | */ |
4912 | sgptr = (ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR + 3) << 24) | 4990 | sgptr = ahd_inl_scbram(ahd, SCB_RESIDUAL_SGPTR); |
4913 | | (ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR + 2) << 16) | ||
4914 | | (ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR + 1) << 8) | ||
4915 | | ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR); | ||
4916 | sgptr &= SG_PTR_MASK; | 4991 | sgptr &= SG_PTR_MASK; |
4917 | 4992 | ||
4918 | resid = (ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT + 2) << 16) | 4993 | resid = (ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT + 2) << 16) |
@@ -4930,10 +5005,7 @@ ahd_reinitialize_dataptrs(struct ahd_softc *ahd) | |||
4930 | dataptr = ahd_le64toh(sg->addr) | 5005 | dataptr = ahd_le64toh(sg->addr) |
4931 | + (ahd_le32toh(sg->len) & AHD_SG_LEN_MASK) | 5006 | + (ahd_le32toh(sg->len) & AHD_SG_LEN_MASK) |
4932 | - resid; | 5007 | - resid; |
4933 | ahd_outb(ahd, HADDR + 7, dataptr >> 56); | 5008 | ahd_outl(ahd, HADDR + 4, dataptr >> 32); |
4934 | ahd_outb(ahd, HADDR + 6, dataptr >> 48); | ||
4935 | ahd_outb(ahd, HADDR + 5, dataptr >> 40); | ||
4936 | ahd_outb(ahd, HADDR + 4, dataptr >> 32); | ||
4937 | } else { | 5009 | } else { |
4938 | struct ahd_dma_seg *sg; | 5010 | struct ahd_dma_seg *sg; |
4939 | 5011 | ||
@@ -4948,10 +5020,7 @@ ahd_reinitialize_dataptrs(struct ahd_softc *ahd) | |||
4948 | ahd_outb(ahd, HADDR + 4, | 5020 | ahd_outb(ahd, HADDR + 4, |
4949 | (ahd_le32toh(sg->len) & ~AHD_SG_LEN_MASK) >> 24); | 5021 | (ahd_le32toh(sg->len) & ~AHD_SG_LEN_MASK) >> 24); |
4950 | } | 5022 | } |
4951 | ahd_outb(ahd, HADDR + 3, dataptr >> 24); | 5023 | ahd_outl(ahd, HADDR, dataptr); |
4952 | ahd_outb(ahd, HADDR + 2, dataptr >> 16); | ||
4953 | ahd_outb(ahd, HADDR + 1, dataptr >> 8); | ||
4954 | ahd_outb(ahd, HADDR, dataptr); | ||
4955 | ahd_outb(ahd, HCNT + 2, resid >> 16); | 5024 | ahd_outb(ahd, HCNT + 2, resid >> 16); |
4956 | ahd_outb(ahd, HCNT + 1, resid >> 8); | 5025 | ahd_outb(ahd, HCNT + 1, resid >> 8); |
4957 | ahd_outb(ahd, HCNT, resid); | 5026 | ahd_outb(ahd, HCNT, resid); |
@@ -5011,13 +5080,14 @@ ahd_handle_devreset(struct ahd_softc *ahd, struct ahd_devinfo *devinfo, | |||
5011 | ahd_set_width(ahd, devinfo, MSG_EXT_WDTR_BUS_8_BIT, | 5080 | ahd_set_width(ahd, devinfo, MSG_EXT_WDTR_BUS_8_BIT, |
5012 | AHD_TRANS_CUR, /*paused*/TRUE); | 5081 | AHD_TRANS_CUR, /*paused*/TRUE); |
5013 | ahd_set_syncrate(ahd, devinfo, /*period*/0, /*offset*/0, | 5082 | ahd_set_syncrate(ahd, devinfo, /*period*/0, /*offset*/0, |
5014 | /*ppr_options*/0, AHD_TRANS_CUR, /*paused*/TRUE); | 5083 | /*ppr_options*/0, AHD_TRANS_CUR, |
5084 | /*paused*/TRUE); | ||
5015 | 5085 | ||
5016 | ahd_send_async(ahd, devinfo->channel, devinfo->target, | 5086 | if (status != CAM_SEL_TIMEOUT) |
5017 | lun, AC_SENT_BDR, NULL); | 5087 | ahd_send_async(ahd, devinfo->channel, devinfo->target, |
5088 | CAM_LUN_WILDCARD, AC_SENT_BDR, NULL); | ||
5018 | 5089 | ||
5019 | if (message != NULL | 5090 | if (message != NULL && bootverbose) |
5020 | && (verbose_level <= bootverbose)) | ||
5021 | printf("%s: %s on %c:%d. %d SCBs aborted\n", ahd_name(ahd), | 5091 | printf("%s: %s on %c:%d. %d SCBs aborted\n", ahd_name(ahd), |
5022 | message, devinfo->channel, devinfo->target, found); | 5092 | message, devinfo->channel, devinfo->target, found); |
5023 | } | 5093 | } |
@@ -5203,13 +5273,13 @@ ahd_free(struct ahd_softc *ahd) | |||
5203 | /* FALLTHROUGH */ | 5273 | /* FALLTHROUGH */ |
5204 | case 4: | 5274 | case 4: |
5205 | ahd_dmamap_unload(ahd, ahd->shared_data_dmat, | 5275 | ahd_dmamap_unload(ahd, ahd->shared_data_dmat, |
5206 | ahd->shared_data_dmamap); | 5276 | ahd->shared_data_map.dmamap); |
5207 | /* FALLTHROUGH */ | 5277 | /* FALLTHROUGH */ |
5208 | case 3: | 5278 | case 3: |
5209 | ahd_dmamem_free(ahd, ahd->shared_data_dmat, ahd->qoutfifo, | 5279 | ahd_dmamem_free(ahd, ahd->shared_data_dmat, ahd->qoutfifo, |
5210 | ahd->shared_data_dmamap); | 5280 | ahd->shared_data_map.dmamap); |
5211 | ahd_dmamap_destroy(ahd, ahd->shared_data_dmat, | 5281 | ahd_dmamap_destroy(ahd, ahd->shared_data_dmat, |
5212 | ahd->shared_data_dmamap); | 5282 | ahd->shared_data_map.dmamap); |
5213 | /* FALLTHROUGH */ | 5283 | /* FALLTHROUGH */ |
5214 | case 2: | 5284 | case 2: |
5215 | ahd_dma_tag_destroy(ahd, ahd->shared_data_dmat); | 5285 | ahd_dma_tag_destroy(ahd, ahd->shared_data_dmat); |
@@ -5975,16 +6045,13 @@ ahd_alloc_scbs(struct ahd_softc *ahd) | |||
5975 | newcount = MIN(scb_data->sense_left, scb_data->scbs_left); | 6045 | newcount = MIN(scb_data->sense_left, scb_data->scbs_left); |
5976 | newcount = MIN(newcount, scb_data->sgs_left); | 6046 | newcount = MIN(newcount, scb_data->sgs_left); |
5977 | newcount = MIN(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs)); | 6047 | newcount = MIN(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs)); |
5978 | scb_data->sense_left -= newcount; | ||
5979 | scb_data->scbs_left -= newcount; | ||
5980 | scb_data->sgs_left -= newcount; | ||
5981 | for (i = 0; i < newcount; i++) { | 6048 | for (i = 0; i < newcount; i++) { |
5982 | u_int col_tag; | ||
5983 | |||
5984 | struct scb_platform_data *pdata; | 6049 | struct scb_platform_data *pdata; |
6050 | u_int col_tag; | ||
5985 | #ifndef __linux__ | 6051 | #ifndef __linux__ |
5986 | int error; | 6052 | int error; |
5987 | #endif | 6053 | #endif |
6054 | |||
5988 | next_scb = (struct scb *)malloc(sizeof(*next_scb), | 6055 | next_scb = (struct scb *)malloc(sizeof(*next_scb), |
5989 | M_DEVBUF, M_NOWAIT); | 6056 | M_DEVBUF, M_NOWAIT); |
5990 | if (next_scb == NULL) | 6057 | if (next_scb == NULL) |
@@ -6041,6 +6108,9 @@ ahd_alloc_scbs(struct ahd_softc *ahd) | |||
6041 | sense_data += AHD_SENSE_BUFSIZE; | 6108 | sense_data += AHD_SENSE_BUFSIZE; |
6042 | sense_busaddr += AHD_SENSE_BUFSIZE; | 6109 | sense_busaddr += AHD_SENSE_BUFSIZE; |
6043 | scb_data->numscbs++; | 6110 | scb_data->numscbs++; |
6111 | scb_data->sense_left--; | ||
6112 | scb_data->scbs_left--; | ||
6113 | scb_data->sgs_left--; | ||
6044 | } | 6114 | } |
6045 | } | 6115 | } |
6046 | 6116 | ||
@@ -6088,7 +6158,6 @@ static const char *termstat_strings[] = { | |||
6088 | int | 6158 | int |
6089 | ahd_init(struct ahd_softc *ahd) | 6159 | ahd_init(struct ahd_softc *ahd) |
6090 | { | 6160 | { |
6091 | uint8_t *base_vaddr; | ||
6092 | uint8_t *next_vaddr; | 6161 | uint8_t *next_vaddr; |
6093 | dma_addr_t next_baddr; | 6162 | dma_addr_t next_baddr; |
6094 | size_t driver_data_size; | 6163 | size_t driver_data_size; |
@@ -6156,7 +6225,7 @@ ahd_init(struct ahd_softc *ahd) | |||
6156 | * for the target mode role, we must additionally provide space for | 6225 | * for the target mode role, we must additionally provide space for |
6157 | * the incoming target command fifo. | 6226 | * the incoming target command fifo. |
6158 | */ | 6227 | */ |
6159 | driver_data_size = AHD_SCB_MAX * sizeof(uint16_t) | 6228 | driver_data_size = AHD_SCB_MAX * sizeof(*ahd->qoutfifo) |
6160 | + sizeof(struct hardware_scb); | 6229 | + sizeof(struct hardware_scb); |
6161 | if ((ahd->features & AHD_TARGETMODE) != 0) | 6230 | if ((ahd->features & AHD_TARGETMODE) != 0) |
6162 | driver_data_size += AHD_TMODE_CMDS * sizeof(struct target_cmd); | 6231 | driver_data_size += AHD_TMODE_CMDS * sizeof(struct target_cmd); |
@@ -6178,20 +6247,23 @@ ahd_init(struct ahd_softc *ahd) | |||
6178 | 6247 | ||
6179 | /* Allocation of driver data */ | 6248 | /* Allocation of driver data */ |
6180 | if (ahd_dmamem_alloc(ahd, ahd->shared_data_dmat, | 6249 | if (ahd_dmamem_alloc(ahd, ahd->shared_data_dmat, |
6181 | (void **)&base_vaddr, | 6250 | (void **)&ahd->shared_data_map.vaddr, |
6182 | BUS_DMA_NOWAIT, &ahd->shared_data_dmamap) != 0) { | 6251 | BUS_DMA_NOWAIT, |
6252 | &ahd->shared_data_map.dmamap) != 0) { | ||
6183 | return (ENOMEM); | 6253 | return (ENOMEM); |
6184 | } | 6254 | } |
6185 | 6255 | ||
6186 | ahd->init_level++; | 6256 | ahd->init_level++; |
6187 | 6257 | ||
6188 | /* And permanently map it in */ | 6258 | /* And permanently map it in */ |
6189 | ahd_dmamap_load(ahd, ahd->shared_data_dmat, ahd->shared_data_dmamap, | 6259 | ahd_dmamap_load(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, |
6190 | base_vaddr, driver_data_size, ahd_dmamap_cb, | 6260 | ahd->shared_data_map.vaddr, driver_data_size, |
6191 | &ahd->shared_data_busaddr, /*flags*/0); | 6261 | ahd_dmamap_cb, &ahd->shared_data_map.physaddr, |
6192 | ahd->qoutfifo = (uint16_t *)base_vaddr; | 6262 | /*flags*/0); |
6263 | ahd->qoutfifo = (struct ahd_completion *)ahd->shared_data_map.vaddr; | ||
6193 | next_vaddr = (uint8_t *)&ahd->qoutfifo[AHD_QOUT_SIZE]; | 6264 | next_vaddr = (uint8_t *)&ahd->qoutfifo[AHD_QOUT_SIZE]; |
6194 | next_baddr = ahd->shared_data_busaddr + AHD_QOUT_SIZE*sizeof(uint16_t); | 6265 | next_baddr = ahd->shared_data_map.physaddr |
6266 | + AHD_QOUT_SIZE*sizeof(struct ahd_completion); | ||
6195 | if ((ahd->features & AHD_TARGETMODE) != 0) { | 6267 | if ((ahd->features & AHD_TARGETMODE) != 0) { |
6196 | ahd->targetcmds = (struct target_cmd *)next_vaddr; | 6268 | ahd->targetcmds = (struct target_cmd *)next_vaddr; |
6197 | next_vaddr += AHD_TMODE_CMDS * sizeof(struct target_cmd); | 6269 | next_vaddr += AHD_TMODE_CMDS * sizeof(struct target_cmd); |
@@ -6212,6 +6284,7 @@ ahd_init(struct ahd_softc *ahd) | |||
6212 | * specially from the DMA safe memory chunk used for the QOUTFIFO. | 6284 | * specially from the DMA safe memory chunk used for the QOUTFIFO. |
6213 | */ | 6285 | */ |
6214 | ahd->next_queued_hscb = (struct hardware_scb *)next_vaddr; | 6286 | ahd->next_queued_hscb = (struct hardware_scb *)next_vaddr; |
6287 | ahd->next_queued_hscb_map = &ahd->shared_data_map; | ||
6215 | ahd->next_queued_hscb->hscb_busaddr = ahd_htole32(next_baddr); | 6288 | ahd->next_queued_hscb->hscb_busaddr = ahd_htole32(next_baddr); |
6216 | 6289 | ||
6217 | ahd->init_level++; | 6290 | ahd->init_level++; |
@@ -6517,10 +6590,10 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6517 | 6590 | ||
6518 | /* All of our queues are empty */ | 6591 | /* All of our queues are empty */ |
6519 | ahd->qoutfifonext = 0; | 6592 | ahd->qoutfifonext = 0; |
6520 | ahd->qoutfifonext_valid_tag = QOUTFIFO_ENTRY_VALID_LE; | 6593 | ahd->qoutfifonext_valid_tag = QOUTFIFO_ENTRY_VALID; |
6521 | ahd_outb(ahd, QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID >> 8); | 6594 | ahd_outb(ahd, QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID); |
6522 | for (i = 0; i < AHD_QOUT_SIZE; i++) | 6595 | for (i = 0; i < AHD_QOUT_SIZE; i++) |
6523 | ahd->qoutfifo[i] = 0; | 6596 | ahd->qoutfifo[i].valid_tag = 0; |
6524 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_PREREAD); | 6597 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_PREREAD); |
6525 | 6598 | ||
6526 | ahd->qinfifonext = 0; | 6599 | ahd->qinfifonext = 0; |
@@ -6553,24 +6626,22 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6553 | ahd_outw(ahd, COMPLETE_SCB_HEAD, SCB_LIST_NULL); | 6626 | ahd_outw(ahd, COMPLETE_SCB_HEAD, SCB_LIST_NULL); |
6554 | ahd_outw(ahd, COMPLETE_SCB_DMAINPROG_HEAD, SCB_LIST_NULL); | 6627 | ahd_outw(ahd, COMPLETE_SCB_DMAINPROG_HEAD, SCB_LIST_NULL); |
6555 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); | 6628 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); |
6629 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, SCB_LIST_NULL); | ||
6630 | ahd_outw(ahd, COMPLETE_ON_QFREEZE_HEAD, SCB_LIST_NULL); | ||
6556 | 6631 | ||
6557 | /* | 6632 | /* |
6558 | * The Freeze Count is 0. | 6633 | * The Freeze Count is 0. |
6559 | */ | 6634 | */ |
6635 | ahd->qfreeze_cnt = 0; | ||
6560 | ahd_outw(ahd, QFREEZE_COUNT, 0); | 6636 | ahd_outw(ahd, QFREEZE_COUNT, 0); |
6637 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, 0); | ||
6561 | 6638 | ||
6562 | /* | 6639 | /* |
6563 | * Tell the sequencer where it can find our arrays in memory. | 6640 | * Tell the sequencer where it can find our arrays in memory. |
6564 | */ | 6641 | */ |
6565 | busaddr = ahd->shared_data_busaddr; | 6642 | busaddr = ahd->shared_data_map.physaddr; |
6566 | ahd_outb(ahd, SHARED_DATA_ADDR, busaddr & 0xFF); | 6643 | ahd_outl(ahd, SHARED_DATA_ADDR, busaddr); |
6567 | ahd_outb(ahd, SHARED_DATA_ADDR + 1, (busaddr >> 8) & 0xFF); | 6644 | ahd_outl(ahd, QOUTFIFO_NEXT_ADDR, busaddr); |
6568 | ahd_outb(ahd, SHARED_DATA_ADDR + 2, (busaddr >> 16) & 0xFF); | ||
6569 | ahd_outb(ahd, SHARED_DATA_ADDR + 3, (busaddr >> 24) & 0xFF); | ||
6570 | ahd_outb(ahd, QOUTFIFO_NEXT_ADDR, busaddr & 0xFF); | ||
6571 | ahd_outb(ahd, QOUTFIFO_NEXT_ADDR + 1, (busaddr >> 8) & 0xFF); | ||
6572 | ahd_outb(ahd, QOUTFIFO_NEXT_ADDR + 2, (busaddr >> 16) & 0xFF); | ||
6573 | ahd_outb(ahd, QOUTFIFO_NEXT_ADDR + 3, (busaddr >> 24) & 0xFF); | ||
6574 | 6645 | ||
6575 | /* | 6646 | /* |
6576 | * Setup the allowed SCSI Sequences based on operational mode. | 6647 | * Setup the allowed SCSI Sequences based on operational mode. |
@@ -6619,10 +6690,7 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6619 | * Tell the sequencer which SCB will be the next one it receives. | 6690 | * Tell the sequencer which SCB will be the next one it receives. |
6620 | */ | 6691 | */ |
6621 | busaddr = ahd_le32toh(ahd->next_queued_hscb->hscb_busaddr); | 6692 | busaddr = ahd_le32toh(ahd->next_queued_hscb->hscb_busaddr); |
6622 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 0, busaddr & 0xFF); | 6693 | ahd_outl(ahd, NEXT_QUEUED_SCB_ADDR, busaddr); |
6623 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 1, (busaddr >> 8) & 0xFF); | ||
6624 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 2, (busaddr >> 16) & 0xFF); | ||
6625 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 3, (busaddr >> 24) & 0xFF); | ||
6626 | 6694 | ||
6627 | /* | 6695 | /* |
6628 | * Default to coalescing disabled. | 6696 | * Default to coalescing disabled. |
@@ -6926,43 +6994,34 @@ ahd_pause_and_flushwork(struct ahd_softc *ahd) | |||
6926 | { | 6994 | { |
6927 | u_int intstat; | 6995 | u_int intstat; |
6928 | u_int maxloops; | 6996 | u_int maxloops; |
6929 | u_int qfreeze_cnt; | ||
6930 | 6997 | ||
6931 | maxloops = 1000; | 6998 | maxloops = 1000; |
6932 | ahd->flags |= AHD_ALL_INTERRUPTS; | 6999 | ahd->flags |= AHD_ALL_INTERRUPTS; |
6933 | ahd_pause(ahd); | 7000 | ahd_pause(ahd); |
6934 | /* | 7001 | /* |
6935 | * Increment the QFreeze Count so that the sequencer | 7002 | * Freeze the outgoing selections. We do this only |
6936 | * will not start new selections. We do this only | ||
6937 | * until we are safely paused without further selections | 7003 | * until we are safely paused without further selections |
6938 | * pending. | 7004 | * pending. |
6939 | */ | 7005 | */ |
6940 | ahd_outw(ahd, QFREEZE_COUNT, ahd_inw(ahd, QFREEZE_COUNT) + 1); | 7006 | ahd->qfreeze_cnt--; |
7007 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, ahd->qfreeze_cnt); | ||
6941 | ahd_outb(ahd, SEQ_FLAGS2, ahd_inb(ahd, SEQ_FLAGS2) | SELECTOUT_QFROZEN); | 7008 | ahd_outb(ahd, SEQ_FLAGS2, ahd_inb(ahd, SEQ_FLAGS2) | SELECTOUT_QFROZEN); |
6942 | do { | 7009 | do { |
6943 | struct scb *waiting_scb; | ||
6944 | 7010 | ||
6945 | ahd_unpause(ahd); | 7011 | ahd_unpause(ahd); |
7012 | /* | ||
7013 | * Give the sequencer some time to service | ||
7014 | * any active selections. | ||
7015 | */ | ||
7016 | ahd_delay(500); | ||
7017 | |||
6946 | ahd_intr(ahd); | 7018 | ahd_intr(ahd); |
6947 | ahd_pause(ahd); | 7019 | ahd_pause(ahd); |
6948 | ahd_clear_critical_section(ahd); | ||
6949 | intstat = ahd_inb(ahd, INTSTAT); | 7020 | intstat = ahd_inb(ahd, INTSTAT); |
6950 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 7021 | if ((intstat & INT_PEND) == 0) { |
6951 | if ((ahd_inb(ahd, SSTAT0) & (SELDO|SELINGO)) == 0) | 7022 | ahd_clear_critical_section(ahd); |
6952 | ahd_outb(ahd, SCSISEQ0, | 7023 | intstat = ahd_inb(ahd, INTSTAT); |
6953 | ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | 7024 | } |
6954 | /* | ||
6955 | * In the non-packetized case, the sequencer (for Rev A), | ||
6956 | * relies on ENSELO remaining set after SELDO. The hardware | ||
6957 | * auto-clears ENSELO in the packetized case. | ||
6958 | */ | ||
6959 | waiting_scb = ahd_lookup_scb(ahd, | ||
6960 | ahd_inw(ahd, WAITING_TID_HEAD)); | ||
6961 | if (waiting_scb != NULL | ||
6962 | && (waiting_scb->flags & SCB_PACKETIZED) == 0 | ||
6963 | && (ahd_inb(ahd, SSTAT0) & (SELDO|SELINGO)) != 0) | ||
6964 | ahd_outb(ahd, SCSISEQ0, | ||
6965 | ahd_inb(ahd, SCSISEQ0) | ENSELO); | ||
6966 | } while (--maxloops | 7025 | } while (--maxloops |
6967 | && (intstat != 0xFF || (ahd->features & AHD_REMOVABLE) == 0) | 7026 | && (intstat != 0xFF || (ahd->features & AHD_REMOVABLE) == 0) |
6968 | && ((intstat & INT_PEND) != 0 | 7027 | && ((intstat & INT_PEND) != 0 |
@@ -6973,17 +7032,8 @@ ahd_pause_and_flushwork(struct ahd_softc *ahd) | |||
6973 | printf("Infinite interrupt loop, INTSTAT = %x", | 7032 | printf("Infinite interrupt loop, INTSTAT = %x", |
6974 | ahd_inb(ahd, INTSTAT)); | 7033 | ahd_inb(ahd, INTSTAT)); |
6975 | } | 7034 | } |
6976 | qfreeze_cnt = ahd_inw(ahd, QFREEZE_COUNT); | 7035 | ahd->qfreeze_cnt++; |
6977 | if (qfreeze_cnt == 0) { | 7036 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, ahd->qfreeze_cnt); |
6978 | printf("%s: ahd_pause_and_flushwork with 0 qfreeze count!\n", | ||
6979 | ahd_name(ahd)); | ||
6980 | } else { | ||
6981 | qfreeze_cnt--; | ||
6982 | } | ||
6983 | ahd_outw(ahd, QFREEZE_COUNT, qfreeze_cnt); | ||
6984 | if (qfreeze_cnt == 0) | ||
6985 | ahd_outb(ahd, SEQ_FLAGS2, | ||
6986 | ahd_inb(ahd, SEQ_FLAGS2) & ~SELECTOUT_QFROZEN); | ||
6987 | 7037 | ||
6988 | ahd_flush_qoutfifo(ahd); | 7038 | ahd_flush_qoutfifo(ahd); |
6989 | 7039 | ||
@@ -7155,10 +7205,7 @@ ahd_qinfifo_requeue(struct ahd_softc *ahd, struct scb *prev_scb, | |||
7155 | uint32_t busaddr; | 7205 | uint32_t busaddr; |
7156 | 7206 | ||
7157 | busaddr = ahd_le32toh(scb->hscb->hscb_busaddr); | 7207 | busaddr = ahd_le32toh(scb->hscb->hscb_busaddr); |
7158 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 0, busaddr & 0xFF); | 7208 | ahd_outl(ahd, NEXT_QUEUED_SCB_ADDR, busaddr); |
7159 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 1, (busaddr >> 8) & 0xFF); | ||
7160 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 2, (busaddr >> 16) & 0xFF); | ||
7161 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 3, (busaddr >> 24) & 0xFF); | ||
7162 | } else { | 7209 | } else { |
7163 | prev_scb->hscb->next_hscb_busaddr = scb->hscb->hscb_busaddr; | 7210 | prev_scb->hscb->next_hscb_busaddr = scb->hscb->hscb_busaddr; |
7164 | ahd_sync_scb(ahd, prev_scb, | 7211 | ahd_sync_scb(ahd, prev_scb, |
@@ -7265,10 +7312,7 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7265 | */ | 7312 | */ |
7266 | ahd->qinfifonext = qinstart; | 7313 | ahd->qinfifonext = qinstart; |
7267 | busaddr = ahd_le32toh(ahd->next_queued_hscb->hscb_busaddr); | 7314 | busaddr = ahd_le32toh(ahd->next_queued_hscb->hscb_busaddr); |
7268 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 0, busaddr & 0xFF); | 7315 | ahd_outl(ahd, NEXT_QUEUED_SCB_ADDR, busaddr); |
7269 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 1, (busaddr >> 8) & 0xFF); | ||
7270 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 2, (busaddr >> 16) & 0xFF); | ||
7271 | ahd_outb(ahd, NEXT_QUEUED_SCB_ADDR + 3, (busaddr >> 24) & 0xFF); | ||
7272 | 7316 | ||
7273 | while (qinpos != qintail) { | 7317 | while (qinpos != qintail) { |
7274 | scb = ahd_lookup_scb(ahd, ahd->qinfifo[qinpos]); | 7318 | scb = ahd_lookup_scb(ahd, ahd->qinfifo[qinpos]); |
@@ -7330,6 +7374,7 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7330 | * appropriate, traverse the SCBs of each "their id" | 7374 | * appropriate, traverse the SCBs of each "their id" |
7331 | * looking for matches. | 7375 | * looking for matches. |
7332 | */ | 7376 | */ |
7377 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | ||
7333 | savedscbptr = ahd_get_scbptr(ahd); | 7378 | savedscbptr = ahd_get_scbptr(ahd); |
7334 | tid_next = ahd_inw(ahd, WAITING_TID_HEAD); | 7379 | tid_next = ahd_inw(ahd, WAITING_TID_HEAD); |
7335 | tid_prev = SCB_LIST_NULL; | 7380 | tid_prev = SCB_LIST_NULL; |
@@ -7399,7 +7444,7 @@ ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, | |||
7399 | u_int prev; | 7444 | u_int prev; |
7400 | int found; | 7445 | int found; |
7401 | 7446 | ||
7402 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 7447 | AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); |
7403 | found = 0; | 7448 | found = 0; |
7404 | prev = SCB_LIST_NULL; | 7449 | prev = SCB_LIST_NULL; |
7405 | next = *list_head; | 7450 | next = *list_head; |
@@ -7466,7 +7511,7 @@ static void | |||
7466 | ahd_stitch_tid_list(struct ahd_softc *ahd, u_int tid_prev, | 7511 | ahd_stitch_tid_list(struct ahd_softc *ahd, u_int tid_prev, |
7467 | u_int tid_cur, u_int tid_next) | 7512 | u_int tid_cur, u_int tid_next) |
7468 | { | 7513 | { |
7469 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 7514 | AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); |
7470 | 7515 | ||
7471 | if (SCBID_IS_NULL(tid_cur)) { | 7516 | if (SCBID_IS_NULL(tid_cur)) { |
7472 | 7517 | ||
@@ -7506,7 +7551,7 @@ ahd_rem_wscb(struct ahd_softc *ahd, u_int scbid, | |||
7506 | { | 7551 | { |
7507 | u_int tail_offset; | 7552 | u_int tail_offset; |
7508 | 7553 | ||
7509 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 7554 | AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); |
7510 | if (!SCBID_IS_NULL(prev)) { | 7555 | if (!SCBID_IS_NULL(prev)) { |
7511 | ahd_set_scbptr(ahd, prev); | 7556 | ahd_set_scbptr(ahd, prev); |
7512 | ahd_outw(ahd, SCB_NEXT, next); | 7557 | ahd_outw(ahd, SCB_NEXT, next); |
@@ -7739,7 +7784,7 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset) | |||
7739 | */ | 7784 | */ |
7740 | ahd_clear_msg_state(ahd); | 7785 | ahd_clear_msg_state(ahd); |
7741 | ahd_outb(ahd, SIMODE1, | 7786 | ahd_outb(ahd, SIMODE1, |
7742 | ahd_inb(ahd, SIMODE1) & ~(ENBUSFREE|ENSCSIRST|ENBUSFREE)); | 7787 | ahd_inb(ahd, SIMODE1) & ~(ENBUSFREE|ENSCSIRST)); |
7743 | 7788 | ||
7744 | if (initiate_reset) | 7789 | if (initiate_reset) |
7745 | ahd_reset_current_bus(ahd); | 7790 | ahd_reset_current_bus(ahd); |
@@ -7910,30 +7955,35 @@ ahd_handle_scb_status(struct ahd_softc *ahd, struct scb *scb) | |||
7910 | void | 7955 | void |
7911 | ahd_handle_scsi_status(struct ahd_softc *ahd, struct scb *scb) | 7956 | ahd_handle_scsi_status(struct ahd_softc *ahd, struct scb *scb) |
7912 | { | 7957 | { |
7913 | struct hardware_scb *hscb; | 7958 | struct hardware_scb *hscb; |
7914 | u_int qfreeze_cnt; | 7959 | int paused; |
7915 | 7960 | ||
7916 | /* | 7961 | /* |
7917 | * The sequencer freezes its select-out queue | 7962 | * The sequencer freezes its select-out queue |
7918 | * anytime a SCSI status error occurs. We must | 7963 | * anytime a SCSI status error occurs. We must |
7919 | * handle the error and decrement the QFREEZE count | 7964 | * handle the error and increment our qfreeze count |
7920 | * to allow the sequencer to continue. | 7965 | * to allow the sequencer to continue. We don't |
7966 | * bother clearing critical sections here since all | ||
7967 | * operations are on data structures that the sequencer | ||
7968 | * is not touching once the queue is frozen. | ||
7921 | */ | 7969 | */ |
7922 | hscb = scb->hscb; | 7970 | hscb = scb->hscb; |
7923 | 7971 | ||
7972 | if (ahd_is_paused(ahd)) { | ||
7973 | paused = 1; | ||
7974 | } else { | ||
7975 | paused = 0; | ||
7976 | ahd_pause(ahd); | ||
7977 | } | ||
7978 | |||
7924 | /* Freeze the queue until the client sees the error. */ | 7979 | /* Freeze the queue until the client sees the error. */ |
7925 | ahd_freeze_devq(ahd, scb); | 7980 | ahd_freeze_devq(ahd, scb); |
7926 | ahd_freeze_scb(scb); | 7981 | ahd_freeze_scb(scb); |
7927 | qfreeze_cnt = ahd_inw(ahd, QFREEZE_COUNT); | 7982 | ahd->qfreeze_cnt++; |
7928 | if (qfreeze_cnt == 0) { | 7983 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, ahd->qfreeze_cnt); |
7929 | printf("%s: Bad status with 0 qfreeze count!\n", ahd_name(ahd)); | 7984 | |
7930 | } else { | 7985 | if (paused == 0) |
7931 | qfreeze_cnt--; | 7986 | ahd_unpause(ahd); |
7932 | ahd_outw(ahd, QFREEZE_COUNT, qfreeze_cnt); | ||
7933 | } | ||
7934 | if (qfreeze_cnt == 0) | ||
7935 | ahd_outb(ahd, SEQ_FLAGS2, | ||
7936 | ahd_inb(ahd, SEQ_FLAGS2) & ~SELECTOUT_QFROZEN); | ||
7937 | 7987 | ||
7938 | /* Don't want to clobber the original sense code */ | 7988 | /* Don't want to clobber the original sense code */ |
7939 | if ((scb->flags & SCB_SENSE) != 0) { | 7989 | if ((scb->flags & SCB_SENSE) != 0) { |
@@ -8317,8 +8367,7 @@ ahd_dumpseq(struct ahd_softc* ahd) | |||
8317 | max_prog = 2048; | 8367 | max_prog = 2048; |
8318 | 8368 | ||
8319 | ahd_outb(ahd, SEQCTL0, PERRORDIS|FAILDIS|FASTMODE|LOADRAM); | 8369 | ahd_outb(ahd, SEQCTL0, PERRORDIS|FAILDIS|FASTMODE|LOADRAM); |
8320 | ahd_outb(ahd, PRGMCNT, 0); | 8370 | ahd_outw(ahd, PRGMCNT, 0); |
8321 | ahd_outb(ahd, PRGMCNT+1, 0); | ||
8322 | for (i = 0; i < max_prog; i++) { | 8371 | for (i = 0; i < max_prog; i++) { |
8323 | uint8_t ins_bytes[4]; | 8372 | uint8_t ins_bytes[4]; |
8324 | 8373 | ||
@@ -8347,13 +8396,14 @@ ahd_loadseq(struct ahd_softc *ahd) | |||
8347 | u_int sg_prefetch_cnt_limit; | 8396 | u_int sg_prefetch_cnt_limit; |
8348 | u_int sg_prefetch_align; | 8397 | u_int sg_prefetch_align; |
8349 | u_int sg_size; | 8398 | u_int sg_size; |
8399 | u_int cacheline_mask; | ||
8350 | uint8_t download_consts[DOWNLOAD_CONST_COUNT]; | 8400 | uint8_t download_consts[DOWNLOAD_CONST_COUNT]; |
8351 | 8401 | ||
8352 | if (bootverbose) | 8402 | if (bootverbose) |
8353 | printf("%s: Downloading Sequencer Program...", | 8403 | printf("%s: Downloading Sequencer Program...", |
8354 | ahd_name(ahd)); | 8404 | ahd_name(ahd)); |
8355 | 8405 | ||
8356 | #if DOWNLOAD_CONST_COUNT != 7 | 8406 | #if DOWNLOAD_CONST_COUNT != 8 |
8357 | #error "Download Const Mismatch" | 8407 | #error "Download Const Mismatch" |
8358 | #endif | 8408 | #endif |
8359 | /* | 8409 | /* |
@@ -8389,6 +8439,9 @@ ahd_loadseq(struct ahd_softc *ahd) | |||
8389 | /* Round down to the nearest power of 2. */ | 8439 | /* Round down to the nearest power of 2. */ |
8390 | while (powerof2(sg_prefetch_align) == 0) | 8440 | while (powerof2(sg_prefetch_align) == 0) |
8391 | sg_prefetch_align--; | 8441 | sg_prefetch_align--; |
8442 | |||
8443 | cacheline_mask = sg_prefetch_align - 1; | ||
8444 | |||
8392 | /* | 8445 | /* |
8393 | * If the cacheline boundary is greater than half our prefetch RAM | 8446 | * If the cacheline boundary is greater than half our prefetch RAM |
8394 | * we risk not being able to fetch even a single complete S/G | 8447 | * we risk not being able to fetch even a single complete S/G |
@@ -8429,12 +8482,12 @@ ahd_loadseq(struct ahd_softc *ahd) | |||
8429 | download_consts[PKT_OVERRUN_BUFOFFSET] = | 8482 | download_consts[PKT_OVERRUN_BUFOFFSET] = |
8430 | (ahd->overrun_buf - (uint8_t *)ahd->qoutfifo) / 256; | 8483 | (ahd->overrun_buf - (uint8_t *)ahd->qoutfifo) / 256; |
8431 | download_consts[SCB_TRANSFER_SIZE] = SCB_TRANSFER_SIZE_1BYTE_LUN; | 8484 | download_consts[SCB_TRANSFER_SIZE] = SCB_TRANSFER_SIZE_1BYTE_LUN; |
8485 | download_consts[CACHELINE_MASK] = cacheline_mask; | ||
8432 | cur_patch = patches; | 8486 | cur_patch = patches; |
8433 | downloaded = 0; | 8487 | downloaded = 0; |
8434 | skip_addr = 0; | 8488 | skip_addr = 0; |
8435 | ahd_outb(ahd, SEQCTL0, PERRORDIS|FAILDIS|FASTMODE|LOADRAM); | 8489 | ahd_outb(ahd, SEQCTL0, PERRORDIS|FAILDIS|FASTMODE|LOADRAM); |
8436 | ahd_outb(ahd, PRGMCNT, 0); | 8490 | ahd_outw(ahd, PRGMCNT, 0); |
8437 | ahd_outb(ahd, PRGMCNT+1, 0); | ||
8438 | 8491 | ||
8439 | for (i = 0; i < sizeof(seqprog)/4; i++) { | 8492 | for (i = 0; i < sizeof(seqprog)/4; i++) { |
8440 | if (ahd_check_patch(ahd, &cur_patch, i, &skip_addr) == 0) { | 8493 | if (ahd_check_patch(ahd, &cur_patch, i, &skip_addr) == 0) { |
@@ -8727,7 +8780,7 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8727 | printf(">>>>>>>>>>>>>>>>>> Dump Card State Begins <<<<<<<<<<<<<<<<<\n" | 8780 | printf(">>>>>>>>>>>>>>>>>> Dump Card State Begins <<<<<<<<<<<<<<<<<\n" |
8728 | "%s: Dumping Card State at program address 0x%x Mode 0x%x\n", | 8781 | "%s: Dumping Card State at program address 0x%x Mode 0x%x\n", |
8729 | ahd_name(ahd), | 8782 | ahd_name(ahd), |
8730 | ahd_inb(ahd, CURADDR) | (ahd_inb(ahd, CURADDR+1) << 8), | 8783 | ahd_inw(ahd, CURADDR), |
8731 | ahd_build_mode_state(ahd, ahd->saved_src_mode, | 8784 | ahd_build_mode_state(ahd, ahd->saved_src_mode, |
8732 | ahd->saved_dst_mode)); | 8785 | ahd->saved_dst_mode)); |
8733 | if (paused) | 8786 | if (paused) |
@@ -8843,6 +8896,15 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8843 | scb_index = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); | 8896 | scb_index = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); |
8844 | } | 8897 | } |
8845 | printf("\n"); | 8898 | printf("\n"); |
8899 | printf("Sequencer On QFreeze and Complete list: "); | ||
8900 | scb_index = ahd_inw(ahd, COMPLETE_ON_QFREEZE_HEAD); | ||
8901 | i = 0; | ||
8902 | while (!SCBID_IS_NULL(scb_index) && i++ < AHD_SCB_MAX) { | ||
8903 | ahd_set_scbptr(ahd, scb_index); | ||
8904 | printf("%d ", scb_index); | ||
8905 | scb_index = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); | ||
8906 | } | ||
8907 | printf("\n"); | ||
8846 | ahd_set_scbptr(ahd, saved_scb_index); | 8908 | ahd_set_scbptr(ahd, saved_scb_index); |
8847 | dffstat = ahd_inb(ahd, DFFSTAT); | 8909 | dffstat = ahd_inb(ahd, DFFSTAT); |
8848 | for (i = 0; i < 2; i++) { | 8910 | for (i = 0; i < 2; i++) { |
@@ -9077,7 +9139,7 @@ ahd_wait_seeprom(struct ahd_softc *ahd) | |||
9077 | { | 9139 | { |
9078 | int cnt; | 9140 | int cnt; |
9079 | 9141 | ||
9080 | cnt = 20; | 9142 | cnt = 5000; |
9081 | while ((ahd_inb(ahd, SEESTAT) & (SEEARBACK|SEEBUSY)) != 0 && --cnt) | 9143 | while ((ahd_inb(ahd, SEESTAT) & (SEEARBACK|SEEBUSY)) != 0 && --cnt) |
9082 | ahd_delay(5); | 9144 | ahd_delay(5); |
9083 | 9145 | ||
@@ -9423,13 +9485,9 @@ ahd_handle_en_lun(struct ahd_softc *ahd, struct cam_sim *sim, union ccb *ccb) | |||
9423 | if ((ahd->features & AHD_MULTI_TID) != 0) { | 9485 | if ((ahd->features & AHD_MULTI_TID) != 0) { |
9424 | u_int targid_mask; | 9486 | u_int targid_mask; |
9425 | 9487 | ||
9426 | targid_mask = ahd_inb(ahd, TARGID) | 9488 | targid_mask = ahd_inw(ahd, TARGID); |
9427 | | (ahd_inb(ahd, TARGID + 1) << 8); | ||
9428 | |||
9429 | targid_mask |= target_mask; | 9489 | targid_mask |= target_mask; |
9430 | ahd_outb(ahd, TARGID, targid_mask); | 9490 | ahd_outw(ahd, TARGID, targid_mask); |
9431 | ahd_outb(ahd, TARGID+1, (targid_mask >> 8)); | ||
9432 | |||
9433 | ahd_update_scsiid(ahd, targid_mask); | 9491 | ahd_update_scsiid(ahd, targid_mask); |
9434 | } else { | 9492 | } else { |
9435 | u_int our_id; | 9493 | u_int our_id; |
@@ -9543,14 +9601,9 @@ ahd_handle_en_lun(struct ahd_softc *ahd, struct cam_sim *sim, union ccb *ccb) | |||
9543 | if (ahd->features & AHD_MULTI_TID) { | 9601 | if (ahd->features & AHD_MULTI_TID) { |
9544 | u_int targid_mask; | 9602 | u_int targid_mask; |
9545 | 9603 | ||
9546 | targid_mask = ahd_inb(ahd, TARGID) | 9604 | targid_mask = ahd_inw(ahd, TARGID); |
9547 | | (ahd_inb(ahd, TARGID + 1) | ||
9548 | << 8); | ||
9549 | |||
9550 | targid_mask &= ~target_mask; | 9605 | targid_mask &= ~target_mask; |
9551 | ahd_outb(ahd, TARGID, targid_mask); | 9606 | ahd_outw(ahd, TARGID, targid_mask); |
9552 | ahd_outb(ahd, TARGID+1, | ||
9553 | (targid_mask >> 8)); | ||
9554 | ahd_update_scsiid(ahd, targid_mask); | 9607 | ahd_update_scsiid(ahd, targid_mask); |
9555 | } | 9608 | } |
9556 | } | 9609 | } |
@@ -9651,7 +9704,7 @@ ahd_run_tqinfifo(struct ahd_softc *ahd, int paused) | |||
9651 | 9704 | ||
9652 | cmd->cmd_valid = 0; | 9705 | cmd->cmd_valid = 0; |
9653 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, | 9706 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, |
9654 | ahd->shared_data_dmamap, | 9707 | ahd->shared_data_map.dmamap, |
9655 | ahd_targetcmd_offset(ahd, ahd->tqinfifonext), | 9708 | ahd_targetcmd_offset(ahd, ahd->tqinfifonext), |
9656 | sizeof(struct target_cmd), | 9709 | sizeof(struct target_cmd), |
9657 | BUS_DMASYNC_PREREAD); | 9710 | BUS_DMASYNC_PREREAD); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_inline.h b/drivers/scsi/aic7xxx/aic79xx_inline.h index d80bc5161fb1..91c4f7f484b1 100644 --- a/drivers/scsi/aic7xxx/aic79xx_inline.h +++ b/drivers/scsi/aic7xxx/aic79xx_inline.h | |||
@@ -37,7 +37,7 @@ | |||
37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
38 | * POSSIBILITY OF SUCH DAMAGES. | 38 | * POSSIBILITY OF SUCH DAMAGES. |
39 | * | 39 | * |
40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx_inline.h#51 $ | 40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx_inline.h#58 $ |
41 | * | 41 | * |
42 | * $FreeBSD$ | 42 | * $FreeBSD$ |
43 | */ | 43 | */ |
@@ -522,12 +522,21 @@ do { \ | |||
522 | static __inline uint16_t | 522 | static __inline uint16_t |
523 | ahd_inw(struct ahd_softc *ahd, u_int port) | 523 | ahd_inw(struct ahd_softc *ahd, u_int port) |
524 | { | 524 | { |
525 | /* | ||
526 | * Read high byte first as some registers increment | ||
527 | * or have other side effects when the low byte is | ||
528 | * read. | ||
529 | */ | ||
525 | return ((ahd_inb(ahd, port+1) << 8) | ahd_inb(ahd, port)); | 530 | return ((ahd_inb(ahd, port+1) << 8) | ahd_inb(ahd, port)); |
526 | } | 531 | } |
527 | 532 | ||
528 | static __inline void | 533 | static __inline void |
529 | ahd_outw(struct ahd_softc *ahd, u_int port, u_int value) | 534 | ahd_outw(struct ahd_softc *ahd, u_int port, u_int value) |
530 | { | 535 | { |
536 | /* | ||
537 | * Write low byte first to accomodate registers | ||
538 | * such as PRGMCNT where the order maters. | ||
539 | */ | ||
531 | ahd_outb(ahd, port, value & 0xFF); | 540 | ahd_outb(ahd, port, value & 0xFF); |
532 | ahd_outb(ahd, port+1, (value >> 8) & 0xFF); | 541 | ahd_outb(ahd, port+1, (value >> 8) & 0xFF); |
533 | } | 542 | } |
@@ -684,7 +693,7 @@ ahd_inb_scbram(struct ahd_softc *ahd, u_int offset) | |||
684 | * Razor #528 | 693 | * Razor #528 |
685 | */ | 694 | */ |
686 | value = ahd_inb(ahd, offset); | 695 | value = ahd_inb(ahd, offset); |
687 | if ((ahd->flags & AHD_PCIX_SCBRAM_RD_BUG) != 0) | 696 | if ((ahd->bugs & AHD_PCIX_SCBRAM_RD_BUG) != 0) |
688 | ahd_inb(ahd, MODE_PTR); | 697 | ahd_inb(ahd, MODE_PTR); |
689 | return (value); | 698 | return (value); |
690 | } | 699 | } |
@@ -727,7 +736,8 @@ ahd_lookup_scb(struct ahd_softc *ahd, u_int tag) | |||
727 | static __inline void | 736 | static __inline void |
728 | ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb) | 737 | ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb) |
729 | { | 738 | { |
730 | struct hardware_scb *q_hscb; | 739 | struct hardware_scb *q_hscb; |
740 | struct map_node *q_hscb_map; | ||
731 | uint32_t saved_hscb_busaddr; | 741 | uint32_t saved_hscb_busaddr; |
732 | 742 | ||
733 | /* | 743 | /* |
@@ -743,6 +753,7 @@ ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb) | |||
743 | * locate the correct SCB by SCB_TAG. | 753 | * locate the correct SCB by SCB_TAG. |
744 | */ | 754 | */ |
745 | q_hscb = ahd->next_queued_hscb; | 755 | q_hscb = ahd->next_queued_hscb; |
756 | q_hscb_map = ahd->next_queued_hscb_map; | ||
746 | saved_hscb_busaddr = q_hscb->hscb_busaddr; | 757 | saved_hscb_busaddr = q_hscb->hscb_busaddr; |
747 | memcpy(q_hscb, scb->hscb, sizeof(*scb->hscb)); | 758 | memcpy(q_hscb, scb->hscb, sizeof(*scb->hscb)); |
748 | q_hscb->hscb_busaddr = saved_hscb_busaddr; | 759 | q_hscb->hscb_busaddr = saved_hscb_busaddr; |
@@ -750,7 +761,9 @@ ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb) | |||
750 | 761 | ||
751 | /* Now swap HSCB pointers. */ | 762 | /* Now swap HSCB pointers. */ |
752 | ahd->next_queued_hscb = scb->hscb; | 763 | ahd->next_queued_hscb = scb->hscb; |
764 | ahd->next_queued_hscb_map = scb->hscb_map; | ||
753 | scb->hscb = q_hscb; | 765 | scb->hscb = q_hscb; |
766 | scb->hscb_map = q_hscb_map; | ||
754 | 767 | ||
755 | /* Now define the mapping from tag to SCB in the scbindex */ | 768 | /* Now define the mapping from tag to SCB in the scbindex */ |
756 | ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = scb; | 769 | ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = scb; |
@@ -824,8 +837,9 @@ static __inline int ahd_intr(struct ahd_softc *ahd); | |||
824 | static __inline void | 837 | static __inline void |
825 | ahd_sync_qoutfifo(struct ahd_softc *ahd, int op) | 838 | ahd_sync_qoutfifo(struct ahd_softc *ahd, int op) |
826 | { | 839 | { |
827 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_dmamap, | 840 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, |
828 | /*offset*/0, /*len*/AHC_SCB_MAX * sizeof(uint16_t), op); | 841 | /*offset*/0, |
842 | /*len*/AHD_SCB_MAX * sizeof(struct ahd_completion), op); | ||
829 | } | 843 | } |
830 | 844 | ||
831 | static __inline void | 845 | static __inline void |
@@ -834,7 +848,7 @@ ahd_sync_tqinfifo(struct ahd_softc *ahd, int op) | |||
834 | #ifdef AHD_TARGET_MODE | 848 | #ifdef AHD_TARGET_MODE |
835 | if ((ahd->flags & AHD_TARGETROLE) != 0) { | 849 | if ((ahd->flags & AHD_TARGETROLE) != 0) { |
836 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, | 850 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, |
837 | ahd->shared_data_dmamap, | 851 | ahd->shared_data_map.dmamap, |
838 | ahd_targetcmd_offset(ahd, 0), | 852 | ahd_targetcmd_offset(ahd, 0), |
839 | sizeof(struct target_cmd) * AHD_TMODE_CMDS, | 853 | sizeof(struct target_cmd) * AHD_TMODE_CMDS, |
840 | op); | 854 | op); |
@@ -854,17 +868,17 @@ ahd_check_cmdcmpltqueues(struct ahd_softc *ahd) | |||
854 | u_int retval; | 868 | u_int retval; |
855 | 869 | ||
856 | retval = 0; | 870 | retval = 0; |
857 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_dmamap, | 871 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, |
858 | /*offset*/ahd->qoutfifonext, /*len*/2, | 872 | /*offset*/ahd->qoutfifonext * sizeof(*ahd->qoutfifo), |
859 | BUS_DMASYNC_POSTREAD); | 873 | /*len*/sizeof(*ahd->qoutfifo), BUS_DMASYNC_POSTREAD); |
860 | if ((ahd->qoutfifo[ahd->qoutfifonext] | 874 | if (ahd->qoutfifo[ahd->qoutfifonext].valid_tag |
861 | & QOUTFIFO_ENTRY_VALID_LE) == ahd->qoutfifonext_valid_tag) | 875 | == ahd->qoutfifonext_valid_tag) |
862 | retval |= AHD_RUN_QOUTFIFO; | 876 | retval |= AHD_RUN_QOUTFIFO; |
863 | #ifdef AHD_TARGET_MODE | 877 | #ifdef AHD_TARGET_MODE |
864 | if ((ahd->flags & AHD_TARGETROLE) != 0 | 878 | if ((ahd->flags & AHD_TARGETROLE) != 0 |
865 | && (ahd->flags & AHD_TQINFIFO_BLOCKED) == 0) { | 879 | && (ahd->flags & AHD_TQINFIFO_BLOCKED) == 0) { |
866 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, | 880 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, |
867 | ahd->shared_data_dmamap, | 881 | ahd->shared_data_map.dmamap, |
868 | ahd_targetcmd_offset(ahd, ahd->tqinfifofnext), | 882 | ahd_targetcmd_offset(ahd, ahd->tqinfifofnext), |
869 | /*len*/sizeof(struct target_cmd), | 883 | /*len*/sizeof(struct target_cmd), |
870 | BUS_DMASYNC_POSTREAD); | 884 | BUS_DMASYNC_POSTREAD); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 6aab9dacdeea..2567e29960bd 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -1064,6 +1064,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa | |||
1064 | struct Scsi_Host *host; | 1064 | struct Scsi_Host *host; |
1065 | char *new_name; | 1065 | char *new_name; |
1066 | u_long s; | 1066 | u_long s; |
1067 | int retval; | ||
1067 | 1068 | ||
1068 | template->name = ahd->description; | 1069 | template->name = ahd->description; |
1069 | host = scsi_host_alloc(template, sizeof(struct ahd_softc *)); | 1070 | host = scsi_host_alloc(template, sizeof(struct ahd_softc *)); |
@@ -1096,9 +1097,15 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa | |||
1096 | 1097 | ||
1097 | host->transportt = ahd_linux_transport_template; | 1098 | host->transportt = ahd_linux_transport_template; |
1098 | 1099 | ||
1099 | scsi_add_host(host, &ahd->dev_softc->dev); /* XXX handle failure */ | 1100 | retval = scsi_add_host(host, &ahd->dev_softc->dev); |
1101 | if (retval) { | ||
1102 | printk(KERN_WARNING "aic79xx: scsi_add_host failed\n"); | ||
1103 | scsi_host_put(host); | ||
1104 | return retval; | ||
1105 | } | ||
1106 | |||
1100 | scsi_scan_host(host); | 1107 | scsi_scan_host(host); |
1101 | return (0); | 1108 | return 0; |
1102 | } | 1109 | } |
1103 | 1110 | ||
1104 | uint64_t | 1111 | uint64_t |
@@ -1461,6 +1468,30 @@ ahd_linux_run_command(struct ahd_softc *ahd, struct ahd_linux_device *dev, | |||
1461 | if ((tstate->auto_negotiate & mask) != 0) { | 1468 | if ((tstate->auto_negotiate & mask) != 0) { |
1462 | scb->flags |= SCB_AUTO_NEGOTIATE; | 1469 | scb->flags |= SCB_AUTO_NEGOTIATE; |
1463 | scb->hscb->control |= MK_MESSAGE; | 1470 | scb->hscb->control |= MK_MESSAGE; |
1471 | } else if (cmd->cmnd[0] == INQUIRY | ||
1472 | && (tinfo->curr.offset != 0 | ||
1473 | || tinfo->curr.width != MSG_EXT_WDTR_BUS_8_BIT | ||
1474 | || tinfo->curr.ppr_options != 0) | ||
1475 | && (tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ)==0) { | ||
1476 | /* | ||
1477 | * The SCSI spec requires inquiry | ||
1478 | * commands to complete without | ||
1479 | * reporting unit attention conditions. | ||
1480 | * Because of this, an inquiry command | ||
1481 | * that occurs just after a device is | ||
1482 | * reset will result in a data phase | ||
1483 | * with mismatched negotiated rates. | ||
1484 | * The core already forces a renegotiation | ||
1485 | * for reset events that are visible to | ||
1486 | * our controller or that we initiate, | ||
1487 | * but a third party device reset or a | ||
1488 | * hot-plug insertion can still cause this | ||
1489 | * issue. Therefore, we force a re-negotiation | ||
1490 | * for every inquiry command unless we | ||
1491 | * are async. | ||
1492 | */ | ||
1493 | scb->flags |= SCB_NEGOTIATE; | ||
1494 | scb->hscb->control |= MK_MESSAGE; | ||
1464 | } | 1495 | } |
1465 | 1496 | ||
1466 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { | 1497 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { |
@@ -2051,6 +2082,7 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) | |||
2051 | int paused; | 2082 | int paused; |
2052 | int wait; | 2083 | int wait; |
2053 | int disconnected; | 2084 | int disconnected; |
2085 | int found; | ||
2054 | ahd_mode_state saved_modes; | 2086 | ahd_mode_state saved_modes; |
2055 | unsigned long flags; | 2087 | unsigned long flags; |
2056 | 2088 | ||
@@ -2169,7 +2201,8 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) | |||
2169 | last_phase = ahd_inb(ahd, LASTPHASE); | 2201 | last_phase = ahd_inb(ahd, LASTPHASE); |
2170 | saved_scbptr = ahd_get_scbptr(ahd); | 2202 | saved_scbptr = ahd_get_scbptr(ahd); |
2171 | active_scbptr = saved_scbptr; | 2203 | active_scbptr = saved_scbptr; |
2172 | if (disconnected && (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) == 0) { | 2204 | if (disconnected && ((last_phase != P_BUSFREE) || |
2205 | (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) == 0)) { | ||
2173 | struct scb *bus_scb; | 2206 | struct scb *bus_scb; |
2174 | 2207 | ||
2175 | bus_scb = ahd_lookup_scb(ahd, active_scbptr); | 2208 | bus_scb = ahd_lookup_scb(ahd, active_scbptr); |
@@ -2187,28 +2220,41 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) | |||
2187 | * bus or is in the disconnected state. | 2220 | * bus or is in the disconnected state. |
2188 | */ | 2221 | */ |
2189 | saved_scsiid = ahd_inb(ahd, SAVED_SCSIID); | 2222 | saved_scsiid = ahd_inb(ahd, SAVED_SCSIID); |
2190 | if (last_phase != P_BUSFREE | 2223 | if (SCB_GET_TAG(pending_scb) == active_scbptr |
2191 | && (SCB_GET_TAG(pending_scb) == active_scbptr | ||
2192 | || (flag == SCB_DEVICE_RESET | 2224 | || (flag == SCB_DEVICE_RESET |
2193 | && SCSIID_TARGET(ahd, saved_scsiid) == scmd_id(cmd)))) { | 2225 | && SCSIID_TARGET(ahd, saved_scsiid) == scmd_id(cmd))) { |
2194 | 2226 | ||
2195 | /* | 2227 | /* |
2196 | * We're active on the bus, so assert ATN | 2228 | * We're active on the bus, so assert ATN |
2197 | * and hope that the target responds. | 2229 | * and hope that the target responds. |
2198 | */ | 2230 | */ |
2199 | pending_scb = ahd_lookup_scb(ahd, active_scbptr); | 2231 | pending_scb = ahd_lookup_scb(ahd, active_scbptr); |
2200 | pending_scb->flags |= SCB_RECOVERY_SCB|flag; | 2232 | pending_scb->flags |= SCB_RECOVERY_SCB|SCB_DEVICE_RESET; |
2201 | ahd_outb(ahd, MSG_OUT, HOST_MSG); | 2233 | ahd_outb(ahd, MSG_OUT, HOST_MSG); |
2202 | ahd_outb(ahd, SCSISIGO, last_phase|ATNO); | 2234 | ahd_outb(ahd, SCSISIGO, last_phase|ATNO); |
2203 | scmd_printk(KERN_INFO, cmd, "Device is active, asserting ATN\n"); | 2235 | scmd_printk(KERN_INFO, cmd, "BDR message in message buffer\n"); |
2204 | wait = TRUE; | 2236 | wait = TRUE; |
2237 | } else if (last_phase != P_BUSFREE | ||
2238 | && ahd_inb(ahd, SCSIPHASE) == 0) { | ||
2239 | /* | ||
2240 | * SCB is not identified, there | ||
2241 | * is no pending REQ, and the sequencer | ||
2242 | * has not seen a busfree. Looks like | ||
2243 | * a stuck connection waiting to | ||
2244 | * go busfree. Reset the bus. | ||
2245 | */ | ||
2246 | found = ahd_reset_channel(ahd, cmd->device->channel + 'A', | ||
2247 | /*Initiate Reset*/TRUE); | ||
2248 | printf("%s: Issued Channel %c Bus Reset. " | ||
2249 | "%d SCBs aborted\n", ahd_name(ahd), | ||
2250 | cmd->device->channel + 'A', found); | ||
2205 | } else if (disconnected) { | 2251 | } else if (disconnected) { |
2206 | 2252 | ||
2207 | /* | 2253 | /* |
2208 | * Actually re-queue this SCB in an attempt | 2254 | * Actually re-queue this SCB in an attempt |
2209 | * to select the device before it reconnects. | 2255 | * to select the device before it reconnects. |
2210 | */ | 2256 | */ |
2211 | pending_scb->flags |= SCB_RECOVERY_SCB|SCB_ABORT; | 2257 | pending_scb->flags |= SCB_RECOVERY_SCB|flag; |
2212 | ahd_set_scbptr(ahd, SCB_GET_TAG(pending_scb)); | 2258 | ahd_set_scbptr(ahd, SCB_GET_TAG(pending_scb)); |
2213 | pending_scb->hscb->cdb_len = 0; | 2259 | pending_scb->hscb->cdb_len = 0; |
2214 | pending_scb->hscb->task_attribute = 0; | 2260 | pending_scb->hscb->task_attribute = 0; |
@@ -2289,16 +2335,17 @@ done: | |||
2289 | timer.expires = jiffies + (5 * HZ); | 2335 | timer.expires = jiffies + (5 * HZ); |
2290 | timer.function = ahd_linux_sem_timeout; | 2336 | timer.function = ahd_linux_sem_timeout; |
2291 | add_timer(&timer); | 2337 | add_timer(&timer); |
2292 | printf("Recovery code sleeping\n"); | 2338 | printf("%s: Recovery code sleeping\n", ahd_name(ahd)); |
2293 | down(&ahd->platform_data->eh_sem); | 2339 | down(&ahd->platform_data->eh_sem); |
2294 | printf("Recovery code awake\n"); | 2340 | printf("%s: Recovery code awake\n", ahd_name(ahd)); |
2295 | ret = del_timer_sync(&timer); | 2341 | ret = del_timer_sync(&timer); |
2296 | if (ret == 0) { | 2342 | if (ret == 0) { |
2297 | printf("Timer Expired\n"); | 2343 | printf("%s: Timer Expired (active %d)\n", |
2344 | ahd_name(ahd), dev->active); | ||
2298 | retval = FAILED; | 2345 | retval = FAILED; |
2299 | } | 2346 | } |
2300 | } | 2347 | } |
2301 | ahd_unlock(ahd, &flags); | 2348 | ahd_unlock(ahd, &flags); |
2302 | return (retval); | 2349 | return (retval); |
2303 | } | 2350 | } |
2304 | 2351 | ||
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h index bc44222d6cc3..cb74fccc8100 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.h +++ b/drivers/scsi/aic7xxx/aic79xx_osm.h | |||
@@ -252,7 +252,7 @@ ahd_scb_timer_reset(struct scb *scb, u_int usec) | |||
252 | /***************************** SMP support ************************************/ | 252 | /***************************** SMP support ************************************/ |
253 | #include <linux/spinlock.h> | 253 | #include <linux/spinlock.h> |
254 | 254 | ||
255 | #define AIC79XX_DRIVER_VERSION "1.3.11" | 255 | #define AIC79XX_DRIVER_VERSION "3.0" |
256 | 256 | ||
257 | /*************************** Device Data Structures ***************************/ | 257 | /*************************** Device Data Structures ***************************/ |
258 | /* | 258 | /* |
diff --git a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c index 2131db60018a..196a6344b037 100644 --- a/drivers/scsi/aic7xxx/aic79xx_pci.c +++ b/drivers/scsi/aic7xxx/aic79xx_pci.c | |||
@@ -38,9 +38,7 @@ | |||
38 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 38 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
39 | * POSSIBILITY OF SUCH DAMAGES. | 39 | * POSSIBILITY OF SUCH DAMAGES. |
40 | * | 40 | * |
41 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#77 $ | 41 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#89 $ |
42 | * | ||
43 | * $FreeBSD$ | ||
44 | */ | 42 | */ |
45 | 43 | ||
46 | #ifdef __linux__ | 44 | #ifdef __linux__ |
@@ -114,6 +112,13 @@ struct ahd_pci_identity ahd_pci_ident_table [] = | |||
114 | "Adaptec 29320ALP Ultra320 SCSI adapter", | 112 | "Adaptec 29320ALP Ultra320 SCSI adapter", |
115 | ahd_aic7901_setup | 113 | ahd_aic7901_setup |
116 | }, | 114 | }, |
115 | /* aic7901A based controllers */ | ||
116 | { | ||
117 | ID_AHA_29320LP, | ||
118 | ID_ALL_MASK, | ||
119 | "Adaptec 29320LP Ultra320 SCSI adapter", | ||
120 | ahd_aic7901A_setup | ||
121 | }, | ||
117 | /* aic7902 based controllers */ | 122 | /* aic7902 based controllers */ |
118 | { | 123 | { |
119 | ID_AHA_29320, | 124 | ID_AHA_29320, |
@@ -128,12 +133,6 @@ struct ahd_pci_identity ahd_pci_ident_table [] = | |||
128 | ahd_aic7902_setup | 133 | ahd_aic7902_setup |
129 | }, | 134 | }, |
130 | { | 135 | { |
131 | ID_AHA_29320LP, | ||
132 | ID_ALL_MASK, | ||
133 | "Adaptec 29320LP Ultra320 SCSI adapter", | ||
134 | ahd_aic7901A_setup | ||
135 | }, | ||
136 | { | ||
137 | ID_AHA_39320, | 136 | ID_AHA_39320, |
138 | ID_ALL_MASK, | 137 | ID_ALL_MASK, |
139 | "Adaptec 39320 Ultra320 SCSI adapter", | 138 | "Adaptec 39320 Ultra320 SCSI adapter", |
@@ -146,6 +145,12 @@ struct ahd_pci_identity ahd_pci_ident_table [] = | |||
146 | ahd_aic7902_setup | 145 | ahd_aic7902_setup |
147 | }, | 146 | }, |
148 | { | 147 | { |
148 | ID_AHA_39320_B_DELL, | ||
149 | ID_ALL_MASK, | ||
150 | "Adaptec (Dell OEM) 39320 Ultra320 SCSI adapter", | ||
151 | ahd_aic7902_setup | ||
152 | }, | ||
153 | { | ||
149 | ID_AHA_39320A, | 154 | ID_AHA_39320A, |
150 | ID_ALL_MASK, | 155 | ID_ALL_MASK, |
151 | "Adaptec 39320A Ultra320 SCSI adapter", | 156 | "Adaptec 39320A Ultra320 SCSI adapter", |
@@ -668,6 +673,7 @@ ahd_configure_termination(struct ahd_softc *ahd, u_int adapter_control) | |||
668 | * Now set the termination based on what we found. | 673 | * Now set the termination based on what we found. |
669 | */ | 674 | */ |
670 | sxfrctl1 = ahd_inb(ahd, SXFRCTL1) & ~STPWEN; | 675 | sxfrctl1 = ahd_inb(ahd, SXFRCTL1) & ~STPWEN; |
676 | ahd->flags &= ~AHD_TERM_ENB_A; | ||
671 | if ((termctl & FLX_TERMCTL_ENPRILOW) != 0) { | 677 | if ((termctl & FLX_TERMCTL_ENPRILOW) != 0) { |
672 | ahd->flags |= AHD_TERM_ENB_A; | 678 | ahd->flags |= AHD_TERM_ENB_A; |
673 | sxfrctl1 |= STPWEN; | 679 | sxfrctl1 |= STPWEN; |
diff --git a/drivers/scsi/aic7xxx/aic79xx_pci.h b/drivers/scsi/aic7xxx/aic79xx_pci.h index b5cfeabdfecf..da45153668c7 100644 --- a/drivers/scsi/aic7xxx/aic79xx_pci.h +++ b/drivers/scsi/aic7xxx/aic79xx_pci.h | |||
@@ -53,14 +53,15 @@ | |||
53 | #define ID_AHA_29320ALP 0x8017900500449005ull | 53 | #define ID_AHA_29320ALP 0x8017900500449005ull |
54 | 54 | ||
55 | #define ID_AIC7901A 0x801E9005FFFF9005ull | 55 | #define ID_AIC7901A 0x801E9005FFFF9005ull |
56 | #define ID_AHA_29320 0x8012900500429005ull | ||
57 | #define ID_AHA_29320B 0x8013900500439005ull | ||
58 | #define ID_AHA_29320LP 0x8014900500449005ull | 56 | #define ID_AHA_29320LP 0x8014900500449005ull |
59 | 57 | ||
60 | #define ID_AIC7902 0x801F9005FFFF9005ull | 58 | #define ID_AIC7902 0x801F9005FFFF9005ull |
61 | #define ID_AIC7902_B 0x801D9005FFFF9005ull | 59 | #define ID_AIC7902_B 0x801D9005FFFF9005ull |
62 | #define ID_AHA_39320 0x8010900500409005ull | 60 | #define ID_AHA_39320 0x8010900500409005ull |
61 | #define ID_AHA_29320 0x8012900500429005ull | ||
62 | #define ID_AHA_29320B 0x8013900500439005ull | ||
63 | #define ID_AHA_39320_B 0x8015900500409005ull | 63 | #define ID_AHA_39320_B 0x8015900500409005ull |
64 | #define ID_AHA_39320_B_DELL 0x8015900501681028ull | ||
64 | #define ID_AHA_39320A 0x8016900500409005ull | 65 | #define ID_AHA_39320A 0x8016900500409005ull |
65 | #define ID_AHA_39320D 0x8011900500419005ull | 66 | #define ID_AHA_39320D 0x8011900500419005ull |
66 | #define ID_AHA_39320D_B 0x801C900500419005ull | 67 | #define ID_AHA_39320D_B 0x801C900500419005ull |
diff --git a/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped b/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped index c01ac39090d9..8763b158856b 100644 --- a/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped | |||
@@ -2,8 +2,8 @@ | |||
2 | * DO NOT EDIT - This file is automatically generated | 2 | * DO NOT EDIT - This file is automatically generated |
3 | * from the following source files: | 3 | * from the following source files: |
4 | * | 4 | * |
5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#94 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ |
7 | */ | 7 | */ |
8 | typedef int (ahd_reg_print_t)(u_int, u_int *, u_int); | 8 | typedef int (ahd_reg_print_t)(u_int, u_int *, u_int); |
9 | typedef struct ahd_reg_parse_entry { | 9 | typedef struct ahd_reg_parse_entry { |
@@ -83,17 +83,17 @@ ahd_reg_print_t ahd_hs_mailbox_print; | |||
83 | #endif | 83 | #endif |
84 | 84 | ||
85 | #if AIC_DEBUG_REGISTERS | 85 | #if AIC_DEBUG_REGISTERS |
86 | ahd_reg_print_t ahd_clrseqintstat_print; | 86 | ahd_reg_print_t ahd_seqintstat_print; |
87 | #else | 87 | #else |
88 | #define ahd_clrseqintstat_print(regvalue, cur_col, wrap) \ | 88 | #define ahd_seqintstat_print(regvalue, cur_col, wrap) \ |
89 | ahd_print_register(NULL, 0, "CLRSEQINTSTAT", 0x0c, regvalue, cur_col, wrap) | 89 | ahd_print_register(NULL, 0, "SEQINTSTAT", 0x0c, regvalue, cur_col, wrap) |
90 | #endif | 90 | #endif |
91 | 91 | ||
92 | #if AIC_DEBUG_REGISTERS | 92 | #if AIC_DEBUG_REGISTERS |
93 | ahd_reg_print_t ahd_seqintstat_print; | 93 | ahd_reg_print_t ahd_clrseqintstat_print; |
94 | #else | 94 | #else |
95 | #define ahd_seqintstat_print(regvalue, cur_col, wrap) \ | 95 | #define ahd_clrseqintstat_print(regvalue, cur_col, wrap) \ |
96 | ahd_print_register(NULL, 0, "SEQINTSTAT", 0x0c, regvalue, cur_col, wrap) | 96 | ahd_print_register(NULL, 0, "CLRSEQINTSTAT", 0x0c, regvalue, cur_col, wrap) |
97 | #endif | 97 | #endif |
98 | 98 | ||
99 | #if AIC_DEBUG_REGISTERS | 99 | #if AIC_DEBUG_REGISTERS |
@@ -412,17 +412,17 @@ ahd_reg_print_t ahd_sxfrctl0_print; | |||
412 | #endif | 412 | #endif |
413 | 413 | ||
414 | #if AIC_DEBUG_REGISTERS | 414 | #if AIC_DEBUG_REGISTERS |
415 | ahd_reg_print_t ahd_businitid_print; | 415 | ahd_reg_print_t ahd_dlcount_print; |
416 | #else | 416 | #else |
417 | #define ahd_businitid_print(regvalue, cur_col, wrap) \ | 417 | #define ahd_dlcount_print(regvalue, cur_col, wrap) \ |
418 | ahd_print_register(NULL, 0, "BUSINITID", 0x3c, regvalue, cur_col, wrap) | 418 | ahd_print_register(NULL, 0, "DLCOUNT", 0x3c, regvalue, cur_col, wrap) |
419 | #endif | 419 | #endif |
420 | 420 | ||
421 | #if AIC_DEBUG_REGISTERS | 421 | #if AIC_DEBUG_REGISTERS |
422 | ahd_reg_print_t ahd_dlcount_print; | 422 | ahd_reg_print_t ahd_businitid_print; |
423 | #else | 423 | #else |
424 | #define ahd_dlcount_print(regvalue, cur_col, wrap) \ | 424 | #define ahd_businitid_print(regvalue, cur_col, wrap) \ |
425 | ahd_print_register(NULL, 0, "DLCOUNT", 0x3c, regvalue, cur_col, wrap) | 425 | ahd_print_register(NULL, 0, "BUSINITID", 0x3c, regvalue, cur_col, wrap) |
426 | #endif | 426 | #endif |
427 | 427 | ||
428 | #if AIC_DEBUG_REGISTERS | 428 | #if AIC_DEBUG_REGISTERS |
@@ -517,13 +517,6 @@ ahd_reg_print_t ahd_selid_print; | |||
517 | #endif | 517 | #endif |
518 | 518 | ||
519 | #if AIC_DEBUG_REGISTERS | 519 | #if AIC_DEBUG_REGISTERS |
520 | ahd_reg_print_t ahd_sblkctl_print; | ||
521 | #else | ||
522 | #define ahd_sblkctl_print(regvalue, cur_col, wrap) \ | ||
523 | ahd_print_register(NULL, 0, "SBLKCTL", 0x4a, regvalue, cur_col, wrap) | ||
524 | #endif | ||
525 | |||
526 | #if AIC_DEBUG_REGISTERS | ||
527 | ahd_reg_print_t ahd_optionmode_print; | 520 | ahd_reg_print_t ahd_optionmode_print; |
528 | #else | 521 | #else |
529 | #define ahd_optionmode_print(regvalue, cur_col, wrap) \ | 522 | #define ahd_optionmode_print(regvalue, cur_col, wrap) \ |
@@ -531,10 +524,10 @@ ahd_reg_print_t ahd_optionmode_print; | |||
531 | #endif | 524 | #endif |
532 | 525 | ||
533 | #if AIC_DEBUG_REGISTERS | 526 | #if AIC_DEBUG_REGISTERS |
534 | ahd_reg_print_t ahd_sstat0_print; | 527 | ahd_reg_print_t ahd_sblkctl_print; |
535 | #else | 528 | #else |
536 | #define ahd_sstat0_print(regvalue, cur_col, wrap) \ | 529 | #define ahd_sblkctl_print(regvalue, cur_col, wrap) \ |
537 | ahd_print_register(NULL, 0, "SSTAT0", 0x4b, regvalue, cur_col, wrap) | 530 | ahd_print_register(NULL, 0, "SBLKCTL", 0x4a, regvalue, cur_col, wrap) |
538 | #endif | 531 | #endif |
539 | 532 | ||
540 | #if AIC_DEBUG_REGISTERS | 533 | #if AIC_DEBUG_REGISTERS |
@@ -545,6 +538,13 @@ ahd_reg_print_t ahd_clrsint0_print; | |||
545 | #endif | 538 | #endif |
546 | 539 | ||
547 | #if AIC_DEBUG_REGISTERS | 540 | #if AIC_DEBUG_REGISTERS |
541 | ahd_reg_print_t ahd_sstat0_print; | ||
542 | #else | ||
543 | #define ahd_sstat0_print(regvalue, cur_col, wrap) \ | ||
544 | ahd_print_register(NULL, 0, "SSTAT0", 0x4b, regvalue, cur_col, wrap) | ||
545 | #endif | ||
546 | |||
547 | #if AIC_DEBUG_REGISTERS | ||
548 | ahd_reg_print_t ahd_simode0_print; | 548 | ahd_reg_print_t ahd_simode0_print; |
549 | #else | 549 | #else |
550 | #define ahd_simode0_print(regvalue, cur_col, wrap) \ | 550 | #define ahd_simode0_print(regvalue, cur_col, wrap) \ |
@@ -573,17 +573,17 @@ ahd_reg_print_t ahd_sstat2_print; | |||
573 | #endif | 573 | #endif |
574 | 574 | ||
575 | #if AIC_DEBUG_REGISTERS | 575 | #if AIC_DEBUG_REGISTERS |
576 | ahd_reg_print_t ahd_clrsint2_print; | 576 | ahd_reg_print_t ahd_simode2_print; |
577 | #else | 577 | #else |
578 | #define ahd_clrsint2_print(regvalue, cur_col, wrap) \ | 578 | #define ahd_simode2_print(regvalue, cur_col, wrap) \ |
579 | ahd_print_register(NULL, 0, "CLRSINT2", 0x4d, regvalue, cur_col, wrap) | 579 | ahd_print_register(NULL, 0, "SIMODE2", 0x4d, regvalue, cur_col, wrap) |
580 | #endif | 580 | #endif |
581 | 581 | ||
582 | #if AIC_DEBUG_REGISTERS | 582 | #if AIC_DEBUG_REGISTERS |
583 | ahd_reg_print_t ahd_simode2_print; | 583 | ahd_reg_print_t ahd_clrsint2_print; |
584 | #else | 584 | #else |
585 | #define ahd_simode2_print(regvalue, cur_col, wrap) \ | 585 | #define ahd_clrsint2_print(regvalue, cur_col, wrap) \ |
586 | ahd_print_register(NULL, 0, "SIMODE2", 0x4d, regvalue, cur_col, wrap) | 586 | ahd_print_register(NULL, 0, "CLRSINT2", 0x4d, regvalue, cur_col, wrap) |
587 | #endif | 587 | #endif |
588 | 588 | ||
589 | #if AIC_DEBUG_REGISTERS | 589 | #if AIC_DEBUG_REGISTERS |
@@ -685,13 +685,6 @@ ahd_reg_print_t ahd_clrsint3_print; | |||
685 | #endif | 685 | #endif |
686 | 686 | ||
687 | #if AIC_DEBUG_REGISTERS | 687 | #if AIC_DEBUG_REGISTERS |
688 | ahd_reg_print_t ahd_lqomode0_print; | ||
689 | #else | ||
690 | #define ahd_lqomode0_print(regvalue, cur_col, wrap) \ | ||
691 | ahd_print_register(NULL, 0, "LQOMODE0", 0x54, regvalue, cur_col, wrap) | ||
692 | #endif | ||
693 | |||
694 | #if AIC_DEBUG_REGISTERS | ||
695 | ahd_reg_print_t ahd_lqostat0_print; | 688 | ahd_reg_print_t ahd_lqostat0_print; |
696 | #else | 689 | #else |
697 | #define ahd_lqostat0_print(regvalue, cur_col, wrap) \ | 690 | #define ahd_lqostat0_print(regvalue, cur_col, wrap) \ |
@@ -706,6 +699,20 @@ ahd_reg_print_t ahd_clrlqoint0_print; | |||
706 | #endif | 699 | #endif |
707 | 700 | ||
708 | #if AIC_DEBUG_REGISTERS | 701 | #if AIC_DEBUG_REGISTERS |
702 | ahd_reg_print_t ahd_lqomode0_print; | ||
703 | #else | ||
704 | #define ahd_lqomode0_print(regvalue, cur_col, wrap) \ | ||
705 | ahd_print_register(NULL, 0, "LQOMODE0", 0x54, regvalue, cur_col, wrap) | ||
706 | #endif | ||
707 | |||
708 | #if AIC_DEBUG_REGISTERS | ||
709 | ahd_reg_print_t ahd_lqomode1_print; | ||
710 | #else | ||
711 | #define ahd_lqomode1_print(regvalue, cur_col, wrap) \ | ||
712 | ahd_print_register(NULL, 0, "LQOMODE1", 0x55, regvalue, cur_col, wrap) | ||
713 | #endif | ||
714 | |||
715 | #if AIC_DEBUG_REGISTERS | ||
709 | ahd_reg_print_t ahd_lqostat1_print; | 716 | ahd_reg_print_t ahd_lqostat1_print; |
710 | #else | 717 | #else |
711 | #define ahd_lqostat1_print(regvalue, cur_col, wrap) \ | 718 | #define ahd_lqostat1_print(regvalue, cur_col, wrap) \ |
@@ -720,13 +727,6 @@ ahd_reg_print_t ahd_clrlqoint1_print; | |||
720 | #endif | 727 | #endif |
721 | 728 | ||
722 | #if AIC_DEBUG_REGISTERS | 729 | #if AIC_DEBUG_REGISTERS |
723 | ahd_reg_print_t ahd_lqomode1_print; | ||
724 | #else | ||
725 | #define ahd_lqomode1_print(regvalue, cur_col, wrap) \ | ||
726 | ahd_print_register(NULL, 0, "LQOMODE1", 0x55, regvalue, cur_col, wrap) | ||
727 | #endif | ||
728 | |||
729 | #if AIC_DEBUG_REGISTERS | ||
730 | ahd_reg_print_t ahd_lqostat2_print; | 730 | ahd_reg_print_t ahd_lqostat2_print; |
731 | #else | 731 | #else |
732 | #define ahd_lqostat2_print(regvalue, cur_col, wrap) \ | 732 | #define ahd_lqostat2_print(regvalue, cur_col, wrap) \ |
@@ -909,17 +909,17 @@ ahd_reg_print_t ahd_annexcol_print; | |||
909 | #endif | 909 | #endif |
910 | 910 | ||
911 | #if AIC_DEBUG_REGISTERS | 911 | #if AIC_DEBUG_REGISTERS |
912 | ahd_reg_print_t ahd_scschkn_print; | 912 | ahd_reg_print_t ahd_annexdat_print; |
913 | #else | 913 | #else |
914 | #define ahd_scschkn_print(regvalue, cur_col, wrap) \ | 914 | #define ahd_annexdat_print(regvalue, cur_col, wrap) \ |
915 | ahd_print_register(NULL, 0, "SCSCHKN", 0x66, regvalue, cur_col, wrap) | 915 | ahd_print_register(NULL, 0, "ANNEXDAT", 0x66, regvalue, cur_col, wrap) |
916 | #endif | 916 | #endif |
917 | 917 | ||
918 | #if AIC_DEBUG_REGISTERS | 918 | #if AIC_DEBUG_REGISTERS |
919 | ahd_reg_print_t ahd_annexdat_print; | 919 | ahd_reg_print_t ahd_scschkn_print; |
920 | #else | 920 | #else |
921 | #define ahd_annexdat_print(regvalue, cur_col, wrap) \ | 921 | #define ahd_scschkn_print(regvalue, cur_col, wrap) \ |
922 | ahd_print_register(NULL, 0, "ANNEXDAT", 0x66, regvalue, cur_col, wrap) | 922 | ahd_print_register(NULL, 0, "SCSCHKN", 0x66, regvalue, cur_col, wrap) |
923 | #endif | 923 | #endif |
924 | 924 | ||
925 | #if AIC_DEBUG_REGISTERS | 925 | #if AIC_DEBUG_REGISTERS |
@@ -1000,17 +1000,17 @@ ahd_reg_print_t ahd_pll400ctl1_print; | |||
1000 | #endif | 1000 | #endif |
1001 | 1001 | ||
1002 | #if AIC_DEBUG_REGISTERS | 1002 | #if AIC_DEBUG_REGISTERS |
1003 | ahd_reg_print_t ahd_pll400cnt0_print; | 1003 | ahd_reg_print_t ahd_unfairness_print; |
1004 | #else | 1004 | #else |
1005 | #define ahd_pll400cnt0_print(regvalue, cur_col, wrap) \ | 1005 | #define ahd_unfairness_print(regvalue, cur_col, wrap) \ |
1006 | ahd_print_register(NULL, 0, "PLL400CNT0", 0x6e, regvalue, cur_col, wrap) | 1006 | ahd_print_register(NULL, 0, "UNFAIRNESS", 0x6e, regvalue, cur_col, wrap) |
1007 | #endif | 1007 | #endif |
1008 | 1008 | ||
1009 | #if AIC_DEBUG_REGISTERS | 1009 | #if AIC_DEBUG_REGISTERS |
1010 | ahd_reg_print_t ahd_unfairness_print; | 1010 | ahd_reg_print_t ahd_pll400cnt0_print; |
1011 | #else | 1011 | #else |
1012 | #define ahd_unfairness_print(regvalue, cur_col, wrap) \ | 1012 | #define ahd_pll400cnt0_print(regvalue, cur_col, wrap) \ |
1013 | ahd_print_register(NULL, 0, "UNFAIRNESS", 0x6e, regvalue, cur_col, wrap) | 1013 | ahd_print_register(NULL, 0, "PLL400CNT0", 0x6e, regvalue, cur_col, wrap) |
1014 | #endif | 1014 | #endif |
1015 | 1015 | ||
1016 | #if AIC_DEBUG_REGISTERS | 1016 | #if AIC_DEBUG_REGISTERS |
@@ -1056,13 +1056,6 @@ ahd_reg_print_t ahd_hodmaen_print; | |||
1056 | #endif | 1056 | #endif |
1057 | 1057 | ||
1058 | #if AIC_DEBUG_REGISTERS | 1058 | #if AIC_DEBUG_REGISTERS |
1059 | ahd_reg_print_t ahd_sghaddr_print; | ||
1060 | #else | ||
1061 | #define ahd_sghaddr_print(regvalue, cur_col, wrap) \ | ||
1062 | ahd_print_register(NULL, 0, "SGHADDR", 0x7c, regvalue, cur_col, wrap) | ||
1063 | #endif | ||
1064 | |||
1065 | #if AIC_DEBUG_REGISTERS | ||
1066 | ahd_reg_print_t ahd_scbhaddr_print; | 1059 | ahd_reg_print_t ahd_scbhaddr_print; |
1067 | #else | 1060 | #else |
1068 | #define ahd_scbhaddr_print(regvalue, cur_col, wrap) \ | 1061 | #define ahd_scbhaddr_print(regvalue, cur_col, wrap) \ |
@@ -1070,10 +1063,10 @@ ahd_reg_print_t ahd_scbhaddr_print; | |||
1070 | #endif | 1063 | #endif |
1071 | 1064 | ||
1072 | #if AIC_DEBUG_REGISTERS | 1065 | #if AIC_DEBUG_REGISTERS |
1073 | ahd_reg_print_t ahd_sghcnt_print; | 1066 | ahd_reg_print_t ahd_sghaddr_print; |
1074 | #else | 1067 | #else |
1075 | #define ahd_sghcnt_print(regvalue, cur_col, wrap) \ | 1068 | #define ahd_sghaddr_print(regvalue, cur_col, wrap) \ |
1076 | ahd_print_register(NULL, 0, "SGHCNT", 0x84, regvalue, cur_col, wrap) | 1069 | ahd_print_register(NULL, 0, "SGHADDR", 0x7c, regvalue, cur_col, wrap) |
1077 | #endif | 1070 | #endif |
1078 | 1071 | ||
1079 | #if AIC_DEBUG_REGISTERS | 1072 | #if AIC_DEBUG_REGISTERS |
@@ -1084,6 +1077,13 @@ ahd_reg_print_t ahd_scbhcnt_print; | |||
1084 | #endif | 1077 | #endif |
1085 | 1078 | ||
1086 | #if AIC_DEBUG_REGISTERS | 1079 | #if AIC_DEBUG_REGISTERS |
1080 | ahd_reg_print_t ahd_sghcnt_print; | ||
1081 | #else | ||
1082 | #define ahd_sghcnt_print(regvalue, cur_col, wrap) \ | ||
1083 | ahd_print_register(NULL, 0, "SGHCNT", 0x84, regvalue, cur_col, wrap) | ||
1084 | #endif | ||
1085 | |||
1086 | #if AIC_DEBUG_REGISTERS | ||
1087 | ahd_reg_print_t ahd_dff_thrsh_print; | 1087 | ahd_reg_print_t ahd_dff_thrsh_print; |
1088 | #else | 1088 | #else |
1089 | #define ahd_dff_thrsh_print(regvalue, cur_col, wrap) \ | 1089 | #define ahd_dff_thrsh_print(regvalue, cur_col, wrap) \ |
@@ -1154,13 +1154,6 @@ ahd_reg_print_t ahd_nsenable_print; | |||
1154 | #endif | 1154 | #endif |
1155 | 1155 | ||
1156 | #if AIC_DEBUG_REGISTERS | 1156 | #if AIC_DEBUG_REGISTERS |
1157 | ahd_reg_print_t ahd_dchrxmsg1_print; | ||
1158 | #else | ||
1159 | #define ahd_dchrxmsg1_print(regvalue, cur_col, wrap) \ | ||
1160 | ahd_print_register(NULL, 0, "DCHRXMSG1", 0x91, regvalue, cur_col, wrap) | ||
1161 | #endif | ||
1162 | |||
1163 | #if AIC_DEBUG_REGISTERS | ||
1164 | ahd_reg_print_t ahd_cmcrxmsg1_print; | 1157 | ahd_reg_print_t ahd_cmcrxmsg1_print; |
1165 | #else | 1158 | #else |
1166 | #define ahd_cmcrxmsg1_print(regvalue, cur_col, wrap) \ | 1159 | #define ahd_cmcrxmsg1_print(regvalue, cur_col, wrap) \ |
@@ -1168,17 +1161,17 @@ ahd_reg_print_t ahd_cmcrxmsg1_print; | |||
1168 | #endif | 1161 | #endif |
1169 | 1162 | ||
1170 | #if AIC_DEBUG_REGISTERS | 1163 | #if AIC_DEBUG_REGISTERS |
1171 | ahd_reg_print_t ahd_dchrxmsg2_print; | 1164 | ahd_reg_print_t ahd_dchrxmsg1_print; |
1172 | #else | 1165 | #else |
1173 | #define ahd_dchrxmsg2_print(regvalue, cur_col, wrap) \ | 1166 | #define ahd_dchrxmsg1_print(regvalue, cur_col, wrap) \ |
1174 | ahd_print_register(NULL, 0, "DCHRXMSG2", 0x92, regvalue, cur_col, wrap) | 1167 | ahd_print_register(NULL, 0, "DCHRXMSG1", 0x91, regvalue, cur_col, wrap) |
1175 | #endif | 1168 | #endif |
1176 | 1169 | ||
1177 | #if AIC_DEBUG_REGISTERS | 1170 | #if AIC_DEBUG_REGISTERS |
1178 | ahd_reg_print_t ahd_ovlyrxmsg2_print; | 1171 | ahd_reg_print_t ahd_dchrxmsg2_print; |
1179 | #else | 1172 | #else |
1180 | #define ahd_ovlyrxmsg2_print(regvalue, cur_col, wrap) \ | 1173 | #define ahd_dchrxmsg2_print(regvalue, cur_col, wrap) \ |
1181 | ahd_print_register(NULL, 0, "OVLYRXMSG2", 0x92, regvalue, cur_col, wrap) | 1174 | ahd_print_register(NULL, 0, "DCHRXMSG2", 0x92, regvalue, cur_col, wrap) |
1182 | #endif | 1175 | #endif |
1183 | 1176 | ||
1184 | #if AIC_DEBUG_REGISTERS | 1177 | #if AIC_DEBUG_REGISTERS |
@@ -1196,6 +1189,13 @@ ahd_reg_print_t ahd_ost_print; | |||
1196 | #endif | 1189 | #endif |
1197 | 1190 | ||
1198 | #if AIC_DEBUG_REGISTERS | 1191 | #if AIC_DEBUG_REGISTERS |
1192 | ahd_reg_print_t ahd_ovlyrxmsg2_print; | ||
1193 | #else | ||
1194 | #define ahd_ovlyrxmsg2_print(regvalue, cur_col, wrap) \ | ||
1195 | ahd_print_register(NULL, 0, "OVLYRXMSG2", 0x92, regvalue, cur_col, wrap) | ||
1196 | #endif | ||
1197 | |||
1198 | #if AIC_DEBUG_REGISTERS | ||
1199 | ahd_reg_print_t ahd_dchrxmsg3_print; | 1199 | ahd_reg_print_t ahd_dchrxmsg3_print; |
1200 | #else | 1200 | #else |
1201 | #define ahd_dchrxmsg3_print(regvalue, cur_col, wrap) \ | 1201 | #define ahd_dchrxmsg3_print(regvalue, cur_col, wrap) \ |
@@ -1203,6 +1203,13 @@ ahd_reg_print_t ahd_dchrxmsg3_print; | |||
1203 | #endif | 1203 | #endif |
1204 | 1204 | ||
1205 | #if AIC_DEBUG_REGISTERS | 1205 | #if AIC_DEBUG_REGISTERS |
1206 | ahd_reg_print_t ahd_ovlyrxmsg3_print; | ||
1207 | #else | ||
1208 | #define ahd_ovlyrxmsg3_print(regvalue, cur_col, wrap) \ | ||
1209 | ahd_print_register(NULL, 0, "OVLYRXMSG3", 0x93, regvalue, cur_col, wrap) | ||
1210 | #endif | ||
1211 | |||
1212 | #if AIC_DEBUG_REGISTERS | ||
1206 | ahd_reg_print_t ahd_cmcrxmsg3_print; | 1213 | ahd_reg_print_t ahd_cmcrxmsg3_print; |
1207 | #else | 1214 | #else |
1208 | #define ahd_cmcrxmsg3_print(regvalue, cur_col, wrap) \ | 1215 | #define ahd_cmcrxmsg3_print(regvalue, cur_col, wrap) \ |
@@ -1217,13 +1224,6 @@ ahd_reg_print_t ahd_pcixctl_print; | |||
1217 | #endif | 1224 | #endif |
1218 | 1225 | ||
1219 | #if AIC_DEBUG_REGISTERS | 1226 | #if AIC_DEBUG_REGISTERS |
1220 | ahd_reg_print_t ahd_ovlyrxmsg3_print; | ||
1221 | #else | ||
1222 | #define ahd_ovlyrxmsg3_print(regvalue, cur_col, wrap) \ | ||
1223 | ahd_print_register(NULL, 0, "OVLYRXMSG3", 0x93, regvalue, cur_col, wrap) | ||
1224 | #endif | ||
1225 | |||
1226 | #if AIC_DEBUG_REGISTERS | ||
1227 | ahd_reg_print_t ahd_ovlyseqbcnt_print; | 1227 | ahd_reg_print_t ahd_ovlyseqbcnt_print; |
1228 | #else | 1228 | #else |
1229 | #define ahd_ovlyseqbcnt_print(regvalue, cur_col, wrap) \ | 1229 | #define ahd_ovlyseqbcnt_print(regvalue, cur_col, wrap) \ |
@@ -1231,13 +1231,6 @@ ahd_reg_print_t ahd_ovlyseqbcnt_print; | |||
1231 | #endif | 1231 | #endif |
1232 | 1232 | ||
1233 | #if AIC_DEBUG_REGISTERS | 1233 | #if AIC_DEBUG_REGISTERS |
1234 | ahd_reg_print_t ahd_cmcseqbcnt_print; | ||
1235 | #else | ||
1236 | #define ahd_cmcseqbcnt_print(regvalue, cur_col, wrap) \ | ||
1237 | ahd_print_register(NULL, 0, "CMCSEQBCNT", 0x94, regvalue, cur_col, wrap) | ||
1238 | #endif | ||
1239 | |||
1240 | #if AIC_DEBUG_REGISTERS | ||
1241 | ahd_reg_print_t ahd_dchseqbcnt_print; | 1234 | ahd_reg_print_t ahd_dchseqbcnt_print; |
1242 | #else | 1235 | #else |
1243 | #define ahd_dchseqbcnt_print(regvalue, cur_col, wrap) \ | 1236 | #define ahd_dchseqbcnt_print(regvalue, cur_col, wrap) \ |
@@ -1245,17 +1238,17 @@ ahd_reg_print_t ahd_dchseqbcnt_print; | |||
1245 | #endif | 1238 | #endif |
1246 | 1239 | ||
1247 | #if AIC_DEBUG_REGISTERS | 1240 | #if AIC_DEBUG_REGISTERS |
1248 | ahd_reg_print_t ahd_cmcspltstat0_print; | 1241 | ahd_reg_print_t ahd_cmcseqbcnt_print; |
1249 | #else | 1242 | #else |
1250 | #define ahd_cmcspltstat0_print(regvalue, cur_col, wrap) \ | 1243 | #define ahd_cmcseqbcnt_print(regvalue, cur_col, wrap) \ |
1251 | ahd_print_register(NULL, 0, "CMCSPLTSTAT0", 0x96, regvalue, cur_col, wrap) | 1244 | ahd_print_register(NULL, 0, "CMCSEQBCNT", 0x94, regvalue, cur_col, wrap) |
1252 | #endif | 1245 | #endif |
1253 | 1246 | ||
1254 | #if AIC_DEBUG_REGISTERS | 1247 | #if AIC_DEBUG_REGISTERS |
1255 | ahd_reg_print_t ahd_ovlyspltstat0_print; | 1248 | ahd_reg_print_t ahd_cmcspltstat0_print; |
1256 | #else | 1249 | #else |
1257 | #define ahd_ovlyspltstat0_print(regvalue, cur_col, wrap) \ | 1250 | #define ahd_cmcspltstat0_print(regvalue, cur_col, wrap) \ |
1258 | ahd_print_register(NULL, 0, "OVLYSPLTSTAT0", 0x96, regvalue, cur_col, wrap) | 1251 | ahd_print_register(NULL, 0, "CMCSPLTSTAT0", 0x96, regvalue, cur_col, wrap) |
1259 | #endif | 1252 | #endif |
1260 | 1253 | ||
1261 | #if AIC_DEBUG_REGISTERS | 1254 | #if AIC_DEBUG_REGISTERS |
@@ -1266,10 +1259,10 @@ ahd_reg_print_t ahd_dchspltstat0_print; | |||
1266 | #endif | 1259 | #endif |
1267 | 1260 | ||
1268 | #if AIC_DEBUG_REGISTERS | 1261 | #if AIC_DEBUG_REGISTERS |
1269 | ahd_reg_print_t ahd_dchspltstat1_print; | 1262 | ahd_reg_print_t ahd_ovlyspltstat0_print; |
1270 | #else | 1263 | #else |
1271 | #define ahd_dchspltstat1_print(regvalue, cur_col, wrap) \ | 1264 | #define ahd_ovlyspltstat0_print(regvalue, cur_col, wrap) \ |
1272 | ahd_print_register(NULL, 0, "DCHSPLTSTAT1", 0x97, regvalue, cur_col, wrap) | 1265 | ahd_print_register(NULL, 0, "OVLYSPLTSTAT0", 0x96, regvalue, cur_col, wrap) |
1273 | #endif | 1266 | #endif |
1274 | 1267 | ||
1275 | #if AIC_DEBUG_REGISTERS | 1268 | #if AIC_DEBUG_REGISTERS |
@@ -1287,6 +1280,13 @@ ahd_reg_print_t ahd_ovlyspltstat1_print; | |||
1287 | #endif | 1280 | #endif |
1288 | 1281 | ||
1289 | #if AIC_DEBUG_REGISTERS | 1282 | #if AIC_DEBUG_REGISTERS |
1283 | ahd_reg_print_t ahd_dchspltstat1_print; | ||
1284 | #else | ||
1285 | #define ahd_dchspltstat1_print(regvalue, cur_col, wrap) \ | ||
1286 | ahd_print_register(NULL, 0, "DCHSPLTSTAT1", 0x97, regvalue, cur_col, wrap) | ||
1287 | #endif | ||
1288 | |||
1289 | #if AIC_DEBUG_REGISTERS | ||
1290 | ahd_reg_print_t ahd_sgrxmsg0_print; | 1290 | ahd_reg_print_t ahd_sgrxmsg0_print; |
1291 | #else | 1291 | #else |
1292 | #define ahd_sgrxmsg0_print(regvalue, cur_col, wrap) \ | 1292 | #define ahd_sgrxmsg0_print(regvalue, cur_col, wrap) \ |
@@ -1378,17 +1378,17 @@ ahd_reg_print_t ahd_sgspltstat0_print; | |||
1378 | #endif | 1378 | #endif |
1379 | 1379 | ||
1380 | #if AIC_DEBUG_REGISTERS | 1380 | #if AIC_DEBUG_REGISTERS |
1381 | ahd_reg_print_t ahd_sfunct_print; | 1381 | ahd_reg_print_t ahd_sgspltstat1_print; |
1382 | #else | 1382 | #else |
1383 | #define ahd_sfunct_print(regvalue, cur_col, wrap) \ | 1383 | #define ahd_sgspltstat1_print(regvalue, cur_col, wrap) \ |
1384 | ahd_print_register(NULL, 0, "SFUNCT", 0x9f, regvalue, cur_col, wrap) | 1384 | ahd_print_register(NULL, 0, "SGSPLTSTAT1", 0x9f, regvalue, cur_col, wrap) |
1385 | #endif | 1385 | #endif |
1386 | 1386 | ||
1387 | #if AIC_DEBUG_REGISTERS | 1387 | #if AIC_DEBUG_REGISTERS |
1388 | ahd_reg_print_t ahd_sgspltstat1_print; | 1388 | ahd_reg_print_t ahd_sfunct_print; |
1389 | #else | 1389 | #else |
1390 | #define ahd_sgspltstat1_print(regvalue, cur_col, wrap) \ | 1390 | #define ahd_sfunct_print(regvalue, cur_col, wrap) \ |
1391 | ahd_print_register(NULL, 0, "SGSPLTSTAT1", 0x9f, regvalue, cur_col, wrap) | 1391 | ahd_print_register(NULL, 0, "SFUNCT", 0x9f, regvalue, cur_col, wrap) |
1392 | #endif | 1392 | #endif |
1393 | 1393 | ||
1394 | #if AIC_DEBUG_REGISTERS | 1394 | #if AIC_DEBUG_REGISTERS |
@@ -1504,17 +1504,17 @@ ahd_reg_print_t ahd_ccsgaddr_print; | |||
1504 | #endif | 1504 | #endif |
1505 | 1505 | ||
1506 | #if AIC_DEBUG_REGISTERS | 1506 | #if AIC_DEBUG_REGISTERS |
1507 | ahd_reg_print_t ahd_ccscbaddr_print; | 1507 | ahd_reg_print_t ahd_ccscbadr_bk_print; |
1508 | #else | 1508 | #else |
1509 | #define ahd_ccscbaddr_print(regvalue, cur_col, wrap) \ | 1509 | #define ahd_ccscbadr_bk_print(regvalue, cur_col, wrap) \ |
1510 | ahd_print_register(NULL, 0, "CCSCBADDR", 0xac, regvalue, cur_col, wrap) | 1510 | ahd_print_register(NULL, 0, "CCSCBADR_BK", 0xac, regvalue, cur_col, wrap) |
1511 | #endif | 1511 | #endif |
1512 | 1512 | ||
1513 | #if AIC_DEBUG_REGISTERS | 1513 | #if AIC_DEBUG_REGISTERS |
1514 | ahd_reg_print_t ahd_ccscbadr_bk_print; | 1514 | ahd_reg_print_t ahd_ccscbaddr_print; |
1515 | #else | 1515 | #else |
1516 | #define ahd_ccscbadr_bk_print(regvalue, cur_col, wrap) \ | 1516 | #define ahd_ccscbaddr_print(regvalue, cur_col, wrap) \ |
1517 | ahd_print_register(NULL, 0, "CCSCBADR_BK", 0xac, regvalue, cur_col, wrap) | 1517 | ahd_print_register(NULL, 0, "CCSCBADDR", 0xac, regvalue, cur_col, wrap) |
1518 | #endif | 1518 | #endif |
1519 | 1519 | ||
1520 | #if AIC_DEBUG_REGISTERS | 1520 | #if AIC_DEBUG_REGISTERS |
@@ -1525,17 +1525,17 @@ ahd_reg_print_t ahd_cmc_rambist_print; | |||
1525 | #endif | 1525 | #endif |
1526 | 1526 | ||
1527 | #if AIC_DEBUG_REGISTERS | 1527 | #if AIC_DEBUG_REGISTERS |
1528 | ahd_reg_print_t ahd_ccsgctl_print; | 1528 | ahd_reg_print_t ahd_ccscbctl_print; |
1529 | #else | 1529 | #else |
1530 | #define ahd_ccsgctl_print(regvalue, cur_col, wrap) \ | 1530 | #define ahd_ccscbctl_print(regvalue, cur_col, wrap) \ |
1531 | ahd_print_register(NULL, 0, "CCSGCTL", 0xad, regvalue, cur_col, wrap) | 1531 | ahd_print_register(NULL, 0, "CCSCBCTL", 0xad, regvalue, cur_col, wrap) |
1532 | #endif | 1532 | #endif |
1533 | 1533 | ||
1534 | #if AIC_DEBUG_REGISTERS | 1534 | #if AIC_DEBUG_REGISTERS |
1535 | ahd_reg_print_t ahd_ccscbctl_print; | 1535 | ahd_reg_print_t ahd_ccsgctl_print; |
1536 | #else | 1536 | #else |
1537 | #define ahd_ccscbctl_print(regvalue, cur_col, wrap) \ | 1537 | #define ahd_ccsgctl_print(regvalue, cur_col, wrap) \ |
1538 | ahd_print_register(NULL, 0, "CCSCBCTL", 0xad, regvalue, cur_col, wrap) | 1538 | ahd_print_register(NULL, 0, "CCSGCTL", 0xad, regvalue, cur_col, wrap) |
1539 | #endif | 1539 | #endif |
1540 | 1540 | ||
1541 | #if AIC_DEBUG_REGISTERS | 1541 | #if AIC_DEBUG_REGISTERS |
@@ -1707,13 +1707,6 @@ ahd_reg_print_t ahd_wrtbiascalc_print; | |||
1707 | #endif | 1707 | #endif |
1708 | 1708 | ||
1709 | #if AIC_DEBUG_REGISTERS | 1709 | #if AIC_DEBUG_REGISTERS |
1710 | ahd_reg_print_t ahd_dfptrs_print; | ||
1711 | #else | ||
1712 | #define ahd_dfptrs_print(regvalue, cur_col, wrap) \ | ||
1713 | ahd_print_register(NULL, 0, "DFPTRS", 0xc8, regvalue, cur_col, wrap) | ||
1714 | #endif | ||
1715 | |||
1716 | #if AIC_DEBUG_REGISTERS | ||
1717 | ahd_reg_print_t ahd_rcvrbiascalc_print; | 1710 | ahd_reg_print_t ahd_rcvrbiascalc_print; |
1718 | #else | 1711 | #else |
1719 | #define ahd_rcvrbiascalc_print(regvalue, cur_col, wrap) \ | 1712 | #define ahd_rcvrbiascalc_print(regvalue, cur_col, wrap) \ |
@@ -1721,10 +1714,10 @@ ahd_reg_print_t ahd_rcvrbiascalc_print; | |||
1721 | #endif | 1714 | #endif |
1722 | 1715 | ||
1723 | #if AIC_DEBUG_REGISTERS | 1716 | #if AIC_DEBUG_REGISTERS |
1724 | ahd_reg_print_t ahd_dfbkptr_print; | 1717 | ahd_reg_print_t ahd_dfptrs_print; |
1725 | #else | 1718 | #else |
1726 | #define ahd_dfbkptr_print(regvalue, cur_col, wrap) \ | 1719 | #define ahd_dfptrs_print(regvalue, cur_col, wrap) \ |
1727 | ahd_print_register(NULL, 0, "DFBKPTR", 0xc9, regvalue, cur_col, wrap) | 1720 | ahd_print_register(NULL, 0, "DFPTRS", 0xc8, regvalue, cur_col, wrap) |
1728 | #endif | 1721 | #endif |
1729 | 1722 | ||
1730 | #if AIC_DEBUG_REGISTERS | 1723 | #if AIC_DEBUG_REGISTERS |
@@ -1735,6 +1728,13 @@ ahd_reg_print_t ahd_skewcalc_print; | |||
1735 | #endif | 1728 | #endif |
1736 | 1729 | ||
1737 | #if AIC_DEBUG_REGISTERS | 1730 | #if AIC_DEBUG_REGISTERS |
1731 | ahd_reg_print_t ahd_dfbkptr_print; | ||
1732 | #else | ||
1733 | #define ahd_dfbkptr_print(regvalue, cur_col, wrap) \ | ||
1734 | ahd_print_register(NULL, 0, "DFBKPTR", 0xc9, regvalue, cur_col, wrap) | ||
1735 | #endif | ||
1736 | |||
1737 | #if AIC_DEBUG_REGISTERS | ||
1738 | ahd_reg_print_t ahd_dfdbctl_print; | 1738 | ahd_reg_print_t ahd_dfdbctl_print; |
1739 | #else | 1739 | #else |
1740 | #define ahd_dfdbctl_print(regvalue, cur_col, wrap) \ | 1740 | #define ahd_dfdbctl_print(regvalue, cur_col, wrap) \ |
@@ -1826,17 +1826,17 @@ ahd_reg_print_t ahd_dindex_print; | |||
1826 | #endif | 1826 | #endif |
1827 | 1827 | ||
1828 | #if AIC_DEBUG_REGISTERS | 1828 | #if AIC_DEBUG_REGISTERS |
1829 | ahd_reg_print_t ahd_brkaddr1_print; | 1829 | ahd_reg_print_t ahd_brkaddr0_print; |
1830 | #else | 1830 | #else |
1831 | #define ahd_brkaddr1_print(regvalue, cur_col, wrap) \ | 1831 | #define ahd_brkaddr0_print(regvalue, cur_col, wrap) \ |
1832 | ahd_print_register(NULL, 0, "BRKADDR1", 0xe6, regvalue, cur_col, wrap) | 1832 | ahd_print_register(NULL, 0, "BRKADDR0", 0xe6, regvalue, cur_col, wrap) |
1833 | #endif | 1833 | #endif |
1834 | 1834 | ||
1835 | #if AIC_DEBUG_REGISTERS | 1835 | #if AIC_DEBUG_REGISTERS |
1836 | ahd_reg_print_t ahd_brkaddr0_print; | 1836 | ahd_reg_print_t ahd_brkaddr1_print; |
1837 | #else | 1837 | #else |
1838 | #define ahd_brkaddr0_print(regvalue, cur_col, wrap) \ | 1838 | #define ahd_brkaddr1_print(regvalue, cur_col, wrap) \ |
1839 | ahd_print_register(NULL, 0, "BRKADDR0", 0xe6, regvalue, cur_col, wrap) | 1839 | ahd_print_register(NULL, 0, "BRKADDR1", 0xe6, regvalue, cur_col, wrap) |
1840 | #endif | 1840 | #endif |
1841 | 1841 | ||
1842 | #if AIC_DEBUG_REGISTERS | 1842 | #if AIC_DEBUG_REGISTERS |
@@ -1889,13 +1889,6 @@ ahd_reg_print_t ahd_stack_print; | |||
1889 | #endif | 1889 | #endif |
1890 | 1890 | ||
1891 | #if AIC_DEBUG_REGISTERS | 1891 | #if AIC_DEBUG_REGISTERS |
1892 | ahd_reg_print_t ahd_curaddr_print; | ||
1893 | #else | ||
1894 | #define ahd_curaddr_print(regvalue, cur_col, wrap) \ | ||
1895 | ahd_print_register(NULL, 0, "CURADDR", 0xf4, regvalue, cur_col, wrap) | ||
1896 | #endif | ||
1897 | |||
1898 | #if AIC_DEBUG_REGISTERS | ||
1899 | ahd_reg_print_t ahd_intvec1_addr_print; | 1892 | ahd_reg_print_t ahd_intvec1_addr_print; |
1900 | #else | 1893 | #else |
1901 | #define ahd_intvec1_addr_print(regvalue, cur_col, wrap) \ | 1894 | #define ahd_intvec1_addr_print(regvalue, cur_col, wrap) \ |
@@ -1903,10 +1896,10 @@ ahd_reg_print_t ahd_intvec1_addr_print; | |||
1903 | #endif | 1896 | #endif |
1904 | 1897 | ||
1905 | #if AIC_DEBUG_REGISTERS | 1898 | #if AIC_DEBUG_REGISTERS |
1906 | ahd_reg_print_t ahd_intvec2_addr_print; | 1899 | ahd_reg_print_t ahd_curaddr_print; |
1907 | #else | 1900 | #else |
1908 | #define ahd_intvec2_addr_print(regvalue, cur_col, wrap) \ | 1901 | #define ahd_curaddr_print(regvalue, cur_col, wrap) \ |
1909 | ahd_print_register(NULL, 0, "INTVEC2_ADDR", 0xf6, regvalue, cur_col, wrap) | 1902 | ahd_print_register(NULL, 0, "CURADDR", 0xf4, regvalue, cur_col, wrap) |
1910 | #endif | 1903 | #endif |
1911 | 1904 | ||
1912 | #if AIC_DEBUG_REGISTERS | 1905 | #if AIC_DEBUG_REGISTERS |
@@ -1917,6 +1910,13 @@ ahd_reg_print_t ahd_lastaddr_print; | |||
1917 | #endif | 1910 | #endif |
1918 | 1911 | ||
1919 | #if AIC_DEBUG_REGISTERS | 1912 | #if AIC_DEBUG_REGISTERS |
1913 | ahd_reg_print_t ahd_intvec2_addr_print; | ||
1914 | #else | ||
1915 | #define ahd_intvec2_addr_print(regvalue, cur_col, wrap) \ | ||
1916 | ahd_print_register(NULL, 0, "INTVEC2_ADDR", 0xf6, regvalue, cur_col, wrap) | ||
1917 | #endif | ||
1918 | |||
1919 | #if AIC_DEBUG_REGISTERS | ||
1920 | ahd_reg_print_t ahd_longjmp_addr_print; | 1920 | ahd_reg_print_t ahd_longjmp_addr_print; |
1921 | #else | 1921 | #else |
1922 | #define ahd_longjmp_addr_print(regvalue, cur_col, wrap) \ | 1922 | #define ahd_longjmp_addr_print(regvalue, cur_col, wrap) \ |
@@ -1994,192 +1994,213 @@ ahd_reg_print_t ahd_complete_dma_scb_head_print; | |||
1994 | #endif | 1994 | #endif |
1995 | 1995 | ||
1996 | #if AIC_DEBUG_REGISTERS | 1996 | #if AIC_DEBUG_REGISTERS |
1997 | ahd_reg_print_t ahd_complete_dma_scb_tail_print; | ||
1998 | #else | ||
1999 | #define ahd_complete_dma_scb_tail_print(regvalue, cur_col, wrap) \ | ||
2000 | ahd_print_register(NULL, 0, "COMPLETE_DMA_SCB_TAIL", 0x12e, regvalue, cur_col, wrap) | ||
2001 | #endif | ||
2002 | |||
2003 | #if AIC_DEBUG_REGISTERS | ||
2004 | ahd_reg_print_t ahd_complete_on_qfreeze_head_print; | ||
2005 | #else | ||
2006 | #define ahd_complete_on_qfreeze_head_print(regvalue, cur_col, wrap) \ | ||
2007 | ahd_print_register(NULL, 0, "COMPLETE_ON_QFREEZE_HEAD", 0x130, regvalue, cur_col, wrap) | ||
2008 | #endif | ||
2009 | |||
2010 | #if AIC_DEBUG_REGISTERS | ||
1997 | ahd_reg_print_t ahd_qfreeze_count_print; | 2011 | ahd_reg_print_t ahd_qfreeze_count_print; |
1998 | #else | 2012 | #else |
1999 | #define ahd_qfreeze_count_print(regvalue, cur_col, wrap) \ | 2013 | #define ahd_qfreeze_count_print(regvalue, cur_col, wrap) \ |
2000 | ahd_print_register(NULL, 0, "QFREEZE_COUNT", 0x12e, regvalue, cur_col, wrap) | 2014 | ahd_print_register(NULL, 0, "QFREEZE_COUNT", 0x132, regvalue, cur_col, wrap) |
2015 | #endif | ||
2016 | |||
2017 | #if AIC_DEBUG_REGISTERS | ||
2018 | ahd_reg_print_t ahd_kernel_qfreeze_count_print; | ||
2019 | #else | ||
2020 | #define ahd_kernel_qfreeze_count_print(regvalue, cur_col, wrap) \ | ||
2021 | ahd_print_register(NULL, 0, "KERNEL_QFREEZE_COUNT", 0x134, regvalue, cur_col, wrap) | ||
2001 | #endif | 2022 | #endif |
2002 | 2023 | ||
2003 | #if AIC_DEBUG_REGISTERS | 2024 | #if AIC_DEBUG_REGISTERS |
2004 | ahd_reg_print_t ahd_saved_mode_print; | 2025 | ahd_reg_print_t ahd_saved_mode_print; |
2005 | #else | 2026 | #else |
2006 | #define ahd_saved_mode_print(regvalue, cur_col, wrap) \ | 2027 | #define ahd_saved_mode_print(regvalue, cur_col, wrap) \ |
2007 | ahd_print_register(NULL, 0, "SAVED_MODE", 0x130, regvalue, cur_col, wrap) | 2028 | ahd_print_register(NULL, 0, "SAVED_MODE", 0x136, regvalue, cur_col, wrap) |
2008 | #endif | 2029 | #endif |
2009 | 2030 | ||
2010 | #if AIC_DEBUG_REGISTERS | 2031 | #if AIC_DEBUG_REGISTERS |
2011 | ahd_reg_print_t ahd_msg_out_print; | 2032 | ahd_reg_print_t ahd_msg_out_print; |
2012 | #else | 2033 | #else |
2013 | #define ahd_msg_out_print(regvalue, cur_col, wrap) \ | 2034 | #define ahd_msg_out_print(regvalue, cur_col, wrap) \ |
2014 | ahd_print_register(NULL, 0, "MSG_OUT", 0x131, regvalue, cur_col, wrap) | 2035 | ahd_print_register(NULL, 0, "MSG_OUT", 0x137, regvalue, cur_col, wrap) |
2015 | #endif | 2036 | #endif |
2016 | 2037 | ||
2017 | #if AIC_DEBUG_REGISTERS | 2038 | #if AIC_DEBUG_REGISTERS |
2018 | ahd_reg_print_t ahd_dmaparams_print; | 2039 | ahd_reg_print_t ahd_dmaparams_print; |
2019 | #else | 2040 | #else |
2020 | #define ahd_dmaparams_print(regvalue, cur_col, wrap) \ | 2041 | #define ahd_dmaparams_print(regvalue, cur_col, wrap) \ |
2021 | ahd_print_register(NULL, 0, "DMAPARAMS", 0x132, regvalue, cur_col, wrap) | 2042 | ahd_print_register(NULL, 0, "DMAPARAMS", 0x138, regvalue, cur_col, wrap) |
2022 | #endif | 2043 | #endif |
2023 | 2044 | ||
2024 | #if AIC_DEBUG_REGISTERS | 2045 | #if AIC_DEBUG_REGISTERS |
2025 | ahd_reg_print_t ahd_seq_flags_print; | 2046 | ahd_reg_print_t ahd_seq_flags_print; |
2026 | #else | 2047 | #else |
2027 | #define ahd_seq_flags_print(regvalue, cur_col, wrap) \ | 2048 | #define ahd_seq_flags_print(regvalue, cur_col, wrap) \ |
2028 | ahd_print_register(NULL, 0, "SEQ_FLAGS", 0x133, regvalue, cur_col, wrap) | 2049 | ahd_print_register(NULL, 0, "SEQ_FLAGS", 0x139, regvalue, cur_col, wrap) |
2029 | #endif | 2050 | #endif |
2030 | 2051 | ||
2031 | #if AIC_DEBUG_REGISTERS | 2052 | #if AIC_DEBUG_REGISTERS |
2032 | ahd_reg_print_t ahd_saved_scsiid_print; | 2053 | ahd_reg_print_t ahd_saved_scsiid_print; |
2033 | #else | 2054 | #else |
2034 | #define ahd_saved_scsiid_print(regvalue, cur_col, wrap) \ | 2055 | #define ahd_saved_scsiid_print(regvalue, cur_col, wrap) \ |
2035 | ahd_print_register(NULL, 0, "SAVED_SCSIID", 0x134, regvalue, cur_col, wrap) | 2056 | ahd_print_register(NULL, 0, "SAVED_SCSIID", 0x13a, regvalue, cur_col, wrap) |
2036 | #endif | 2057 | #endif |
2037 | 2058 | ||
2038 | #if AIC_DEBUG_REGISTERS | 2059 | #if AIC_DEBUG_REGISTERS |
2039 | ahd_reg_print_t ahd_saved_lun_print; | 2060 | ahd_reg_print_t ahd_saved_lun_print; |
2040 | #else | 2061 | #else |
2041 | #define ahd_saved_lun_print(regvalue, cur_col, wrap) \ | 2062 | #define ahd_saved_lun_print(regvalue, cur_col, wrap) \ |
2042 | ahd_print_register(NULL, 0, "SAVED_LUN", 0x135, regvalue, cur_col, wrap) | 2063 | ahd_print_register(NULL, 0, "SAVED_LUN", 0x13b, regvalue, cur_col, wrap) |
2043 | #endif | 2064 | #endif |
2044 | 2065 | ||
2045 | #if AIC_DEBUG_REGISTERS | 2066 | #if AIC_DEBUG_REGISTERS |
2046 | ahd_reg_print_t ahd_lastphase_print; | 2067 | ahd_reg_print_t ahd_lastphase_print; |
2047 | #else | 2068 | #else |
2048 | #define ahd_lastphase_print(regvalue, cur_col, wrap) \ | 2069 | #define ahd_lastphase_print(regvalue, cur_col, wrap) \ |
2049 | ahd_print_register(NULL, 0, "LASTPHASE", 0x136, regvalue, cur_col, wrap) | 2070 | ahd_print_register(NULL, 0, "LASTPHASE", 0x13c, regvalue, cur_col, wrap) |
2050 | #endif | 2071 | #endif |
2051 | 2072 | ||
2052 | #if AIC_DEBUG_REGISTERS | 2073 | #if AIC_DEBUG_REGISTERS |
2053 | ahd_reg_print_t ahd_qoutfifo_entry_valid_tag_print; | 2074 | ahd_reg_print_t ahd_qoutfifo_entry_valid_tag_print; |
2054 | #else | 2075 | #else |
2055 | #define ahd_qoutfifo_entry_valid_tag_print(regvalue, cur_col, wrap) \ | 2076 | #define ahd_qoutfifo_entry_valid_tag_print(regvalue, cur_col, wrap) \ |
2056 | ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", 0x137, regvalue, cur_col, wrap) | 2077 | ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", 0x13d, regvalue, cur_col, wrap) |
2057 | #endif | 2078 | #endif |
2058 | 2079 | ||
2059 | #if AIC_DEBUG_REGISTERS | 2080 | #if AIC_DEBUG_REGISTERS |
2060 | ahd_reg_print_t ahd_shared_data_addr_print; | 2081 | ahd_reg_print_t ahd_kernel_tqinpos_print; |
2061 | #else | 2082 | #else |
2062 | #define ahd_shared_data_addr_print(regvalue, cur_col, wrap) \ | 2083 | #define ahd_kernel_tqinpos_print(regvalue, cur_col, wrap) \ |
2063 | ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x138, regvalue, cur_col, wrap) | 2084 | ahd_print_register(NULL, 0, "KERNEL_TQINPOS", 0x13e, regvalue, cur_col, wrap) |
2064 | #endif | 2085 | #endif |
2065 | 2086 | ||
2066 | #if AIC_DEBUG_REGISTERS | 2087 | #if AIC_DEBUG_REGISTERS |
2067 | ahd_reg_print_t ahd_qoutfifo_next_addr_print; | 2088 | ahd_reg_print_t ahd_tqinpos_print; |
2068 | #else | 2089 | #else |
2069 | #define ahd_qoutfifo_next_addr_print(regvalue, cur_col, wrap) \ | 2090 | #define ahd_tqinpos_print(regvalue, cur_col, wrap) \ |
2070 | ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", 0x13c, regvalue, cur_col, wrap) | 2091 | ahd_print_register(NULL, 0, "TQINPOS", 0x13f, regvalue, cur_col, wrap) |
2071 | #endif | 2092 | #endif |
2072 | 2093 | ||
2073 | #if AIC_DEBUG_REGISTERS | 2094 | #if AIC_DEBUG_REGISTERS |
2074 | ahd_reg_print_t ahd_kernel_tqinpos_print; | 2095 | ahd_reg_print_t ahd_shared_data_addr_print; |
2075 | #else | 2096 | #else |
2076 | #define ahd_kernel_tqinpos_print(regvalue, cur_col, wrap) \ | 2097 | #define ahd_shared_data_addr_print(regvalue, cur_col, wrap) \ |
2077 | ahd_print_register(NULL, 0, "KERNEL_TQINPOS", 0x140, regvalue, cur_col, wrap) | 2098 | ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x140, regvalue, cur_col, wrap) |
2078 | #endif | 2099 | #endif |
2079 | 2100 | ||
2080 | #if AIC_DEBUG_REGISTERS | 2101 | #if AIC_DEBUG_REGISTERS |
2081 | ahd_reg_print_t ahd_tqinpos_print; | 2102 | ahd_reg_print_t ahd_qoutfifo_next_addr_print; |
2082 | #else | 2103 | #else |
2083 | #define ahd_tqinpos_print(regvalue, cur_col, wrap) \ | 2104 | #define ahd_qoutfifo_next_addr_print(regvalue, cur_col, wrap) \ |
2084 | ahd_print_register(NULL, 0, "TQINPOS", 0x141, regvalue, cur_col, wrap) | 2105 | ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", 0x144, regvalue, cur_col, wrap) |
2085 | #endif | 2106 | #endif |
2086 | 2107 | ||
2087 | #if AIC_DEBUG_REGISTERS | 2108 | #if AIC_DEBUG_REGISTERS |
2088 | ahd_reg_print_t ahd_arg_1_print; | 2109 | ahd_reg_print_t ahd_arg_1_print; |
2089 | #else | 2110 | #else |
2090 | #define ahd_arg_1_print(regvalue, cur_col, wrap) \ | 2111 | #define ahd_arg_1_print(regvalue, cur_col, wrap) \ |
2091 | ahd_print_register(NULL, 0, "ARG_1", 0x142, regvalue, cur_col, wrap) | 2112 | ahd_print_register(NULL, 0, "ARG_1", 0x148, regvalue, cur_col, wrap) |
2092 | #endif | 2113 | #endif |
2093 | 2114 | ||
2094 | #if AIC_DEBUG_REGISTERS | 2115 | #if AIC_DEBUG_REGISTERS |
2095 | ahd_reg_print_t ahd_arg_2_print; | 2116 | ahd_reg_print_t ahd_arg_2_print; |
2096 | #else | 2117 | #else |
2097 | #define ahd_arg_2_print(regvalue, cur_col, wrap) \ | 2118 | #define ahd_arg_2_print(regvalue, cur_col, wrap) \ |
2098 | ahd_print_register(NULL, 0, "ARG_2", 0x143, regvalue, cur_col, wrap) | 2119 | ahd_print_register(NULL, 0, "ARG_2", 0x149, regvalue, cur_col, wrap) |
2099 | #endif | 2120 | #endif |
2100 | 2121 | ||
2101 | #if AIC_DEBUG_REGISTERS | 2122 | #if AIC_DEBUG_REGISTERS |
2102 | ahd_reg_print_t ahd_last_msg_print; | 2123 | ahd_reg_print_t ahd_last_msg_print; |
2103 | #else | 2124 | #else |
2104 | #define ahd_last_msg_print(regvalue, cur_col, wrap) \ | 2125 | #define ahd_last_msg_print(regvalue, cur_col, wrap) \ |
2105 | ahd_print_register(NULL, 0, "LAST_MSG", 0x144, regvalue, cur_col, wrap) | 2126 | ahd_print_register(NULL, 0, "LAST_MSG", 0x14a, regvalue, cur_col, wrap) |
2106 | #endif | 2127 | #endif |
2107 | 2128 | ||
2108 | #if AIC_DEBUG_REGISTERS | 2129 | #if AIC_DEBUG_REGISTERS |
2109 | ahd_reg_print_t ahd_scsiseq_template_print; | 2130 | ahd_reg_print_t ahd_scsiseq_template_print; |
2110 | #else | 2131 | #else |
2111 | #define ahd_scsiseq_template_print(regvalue, cur_col, wrap) \ | 2132 | #define ahd_scsiseq_template_print(regvalue, cur_col, wrap) \ |
2112 | ahd_print_register(NULL, 0, "SCSISEQ_TEMPLATE", 0x145, regvalue, cur_col, wrap) | 2133 | ahd_print_register(NULL, 0, "SCSISEQ_TEMPLATE", 0x14b, regvalue, cur_col, wrap) |
2113 | #endif | 2134 | #endif |
2114 | 2135 | ||
2115 | #if AIC_DEBUG_REGISTERS | 2136 | #if AIC_DEBUG_REGISTERS |
2116 | ahd_reg_print_t ahd_initiator_tag_print; | 2137 | ahd_reg_print_t ahd_initiator_tag_print; |
2117 | #else | 2138 | #else |
2118 | #define ahd_initiator_tag_print(regvalue, cur_col, wrap) \ | 2139 | #define ahd_initiator_tag_print(regvalue, cur_col, wrap) \ |
2119 | ahd_print_register(NULL, 0, "INITIATOR_TAG", 0x146, regvalue, cur_col, wrap) | 2140 | ahd_print_register(NULL, 0, "INITIATOR_TAG", 0x14c, regvalue, cur_col, wrap) |
2120 | #endif | 2141 | #endif |
2121 | 2142 | ||
2122 | #if AIC_DEBUG_REGISTERS | 2143 | #if AIC_DEBUG_REGISTERS |
2123 | ahd_reg_print_t ahd_seq_flags2_print; | 2144 | ahd_reg_print_t ahd_seq_flags2_print; |
2124 | #else | 2145 | #else |
2125 | #define ahd_seq_flags2_print(regvalue, cur_col, wrap) \ | 2146 | #define ahd_seq_flags2_print(regvalue, cur_col, wrap) \ |
2126 | ahd_print_register(NULL, 0, "SEQ_FLAGS2", 0x147, regvalue, cur_col, wrap) | 2147 | ahd_print_register(NULL, 0, "SEQ_FLAGS2", 0x14d, regvalue, cur_col, wrap) |
2127 | #endif | 2148 | #endif |
2128 | 2149 | ||
2129 | #if AIC_DEBUG_REGISTERS | 2150 | #if AIC_DEBUG_REGISTERS |
2130 | ahd_reg_print_t ahd_allocfifo_scbptr_print; | 2151 | ahd_reg_print_t ahd_allocfifo_scbptr_print; |
2131 | #else | 2152 | #else |
2132 | #define ahd_allocfifo_scbptr_print(regvalue, cur_col, wrap) \ | 2153 | #define ahd_allocfifo_scbptr_print(regvalue, cur_col, wrap) \ |
2133 | ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", 0x148, regvalue, cur_col, wrap) | 2154 | ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", 0x14e, regvalue, cur_col, wrap) |
2134 | #endif | 2155 | #endif |
2135 | 2156 | ||
2136 | #if AIC_DEBUG_REGISTERS | 2157 | #if AIC_DEBUG_REGISTERS |
2137 | ahd_reg_print_t ahd_int_coalescing_timer_print; | 2158 | ahd_reg_print_t ahd_int_coalescing_timer_print; |
2138 | #else | 2159 | #else |
2139 | #define ahd_int_coalescing_timer_print(regvalue, cur_col, wrap) \ | 2160 | #define ahd_int_coalescing_timer_print(regvalue, cur_col, wrap) \ |
2140 | ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", 0x14a, regvalue, cur_col, wrap) | 2161 | ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", 0x150, regvalue, cur_col, wrap) |
2141 | #endif | 2162 | #endif |
2142 | 2163 | ||
2143 | #if AIC_DEBUG_REGISTERS | 2164 | #if AIC_DEBUG_REGISTERS |
2144 | ahd_reg_print_t ahd_int_coalescing_maxcmds_print; | 2165 | ahd_reg_print_t ahd_int_coalescing_maxcmds_print; |
2145 | #else | 2166 | #else |
2146 | #define ahd_int_coalescing_maxcmds_print(regvalue, cur_col, wrap) \ | 2167 | #define ahd_int_coalescing_maxcmds_print(regvalue, cur_col, wrap) \ |
2147 | ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", 0x14c, regvalue, cur_col, wrap) | 2168 | ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", 0x152, regvalue, cur_col, wrap) |
2148 | #endif | 2169 | #endif |
2149 | 2170 | ||
2150 | #if AIC_DEBUG_REGISTERS | 2171 | #if AIC_DEBUG_REGISTERS |
2151 | ahd_reg_print_t ahd_int_coalescing_mincmds_print; | 2172 | ahd_reg_print_t ahd_int_coalescing_mincmds_print; |
2152 | #else | 2173 | #else |
2153 | #define ahd_int_coalescing_mincmds_print(regvalue, cur_col, wrap) \ | 2174 | #define ahd_int_coalescing_mincmds_print(regvalue, cur_col, wrap) \ |
2154 | ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", 0x14d, regvalue, cur_col, wrap) | 2175 | ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", 0x153, regvalue, cur_col, wrap) |
2155 | #endif | 2176 | #endif |
2156 | 2177 | ||
2157 | #if AIC_DEBUG_REGISTERS | 2178 | #if AIC_DEBUG_REGISTERS |
2158 | ahd_reg_print_t ahd_cmds_pending_print; | 2179 | ahd_reg_print_t ahd_cmds_pending_print; |
2159 | #else | 2180 | #else |
2160 | #define ahd_cmds_pending_print(regvalue, cur_col, wrap) \ | 2181 | #define ahd_cmds_pending_print(regvalue, cur_col, wrap) \ |
2161 | ahd_print_register(NULL, 0, "CMDS_PENDING", 0x14e, regvalue, cur_col, wrap) | 2182 | ahd_print_register(NULL, 0, "CMDS_PENDING", 0x154, regvalue, cur_col, wrap) |
2162 | #endif | 2183 | #endif |
2163 | 2184 | ||
2164 | #if AIC_DEBUG_REGISTERS | 2185 | #if AIC_DEBUG_REGISTERS |
2165 | ahd_reg_print_t ahd_int_coalescing_cmdcount_print; | 2186 | ahd_reg_print_t ahd_int_coalescing_cmdcount_print; |
2166 | #else | 2187 | #else |
2167 | #define ahd_int_coalescing_cmdcount_print(regvalue, cur_col, wrap) \ | 2188 | #define ahd_int_coalescing_cmdcount_print(regvalue, cur_col, wrap) \ |
2168 | ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", 0x150, regvalue, cur_col, wrap) | 2189 | ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", 0x156, regvalue, cur_col, wrap) |
2169 | #endif | 2190 | #endif |
2170 | 2191 | ||
2171 | #if AIC_DEBUG_REGISTERS | 2192 | #if AIC_DEBUG_REGISTERS |
2172 | ahd_reg_print_t ahd_local_hs_mailbox_print; | 2193 | ahd_reg_print_t ahd_local_hs_mailbox_print; |
2173 | #else | 2194 | #else |
2174 | #define ahd_local_hs_mailbox_print(regvalue, cur_col, wrap) \ | 2195 | #define ahd_local_hs_mailbox_print(regvalue, cur_col, wrap) \ |
2175 | ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", 0x151, regvalue, cur_col, wrap) | 2196 | ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", 0x157, regvalue, cur_col, wrap) |
2176 | #endif | 2197 | #endif |
2177 | 2198 | ||
2178 | #if AIC_DEBUG_REGISTERS | 2199 | #if AIC_DEBUG_REGISTERS |
2179 | ahd_reg_print_t ahd_cmdsize_table_print; | 2200 | ahd_reg_print_t ahd_cmdsize_table_print; |
2180 | #else | 2201 | #else |
2181 | #define ahd_cmdsize_table_print(regvalue, cur_col, wrap) \ | 2202 | #define ahd_cmdsize_table_print(regvalue, cur_col, wrap) \ |
2182 | ahd_print_register(NULL, 0, "CMDSIZE_TABLE", 0x152, regvalue, cur_col, wrap) | 2203 | ahd_print_register(NULL, 0, "CMDSIZE_TABLE", 0x158, regvalue, cur_col, wrap) |
2183 | #endif | 2204 | #endif |
2184 | 2205 | ||
2185 | #if AIC_DEBUG_REGISTERS | 2206 | #if AIC_DEBUG_REGISTERS |
@@ -2434,13 +2455,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2434 | #define HOST_TQINPOS 0x80 | 2455 | #define HOST_TQINPOS 0x80 |
2435 | #define ENINT_COALESCE 0x40 | 2456 | #define ENINT_COALESCE 0x40 |
2436 | 2457 | ||
2437 | #define CLRSEQINTSTAT 0x0c | ||
2438 | #define CLRSEQ_SWTMRTO 0x10 | ||
2439 | #define CLRSEQ_SEQINT 0x08 | ||
2440 | #define CLRSEQ_SCSIINT 0x04 | ||
2441 | #define CLRSEQ_PCIINT 0x02 | ||
2442 | #define CLRSEQ_SPLTINT 0x01 | ||
2443 | |||
2444 | #define SEQINTSTAT 0x0c | 2458 | #define SEQINTSTAT 0x0c |
2445 | #define SEQ_SWTMRTO 0x10 | 2459 | #define SEQ_SWTMRTO 0x10 |
2446 | #define SEQ_SEQINT 0x08 | 2460 | #define SEQ_SEQINT 0x08 |
@@ -2448,6 +2462,13 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2448 | #define SEQ_PCIINT 0x02 | 2462 | #define SEQ_PCIINT 0x02 |
2449 | #define SEQ_SPLTINT 0x01 | 2463 | #define SEQ_SPLTINT 0x01 |
2450 | 2464 | ||
2465 | #define CLRSEQINTSTAT 0x0c | ||
2466 | #define CLRSEQ_SWTMRTO 0x10 | ||
2467 | #define CLRSEQ_SEQINT 0x08 | ||
2468 | #define CLRSEQ_SCSIINT 0x04 | ||
2469 | #define CLRSEQ_PCIINT 0x02 | ||
2470 | #define CLRSEQ_SPLTINT 0x01 | ||
2471 | |||
2451 | #define SWTIMER 0x0e | 2472 | #define SWTIMER 0x0e |
2452 | 2473 | ||
2453 | #define SNSCB_QOFF 0x10 | 2474 | #define SNSCB_QOFF 0x10 |
@@ -2623,10 +2644,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2623 | #define BIOSCANCELEN 0x10 | 2644 | #define BIOSCANCELEN 0x10 |
2624 | #define SPIOEN 0x08 | 2645 | #define SPIOEN 0x08 |
2625 | 2646 | ||
2626 | #define BUSINITID 0x3c | ||
2627 | |||
2628 | #define DLCOUNT 0x3c | 2647 | #define DLCOUNT 0x3c |
2629 | 2648 | ||
2649 | #define BUSINITID 0x3c | ||
2650 | |||
2630 | #define SXFRCTL1 0x3d | 2651 | #define SXFRCTL1 0x3d |
2631 | #define BITBUCKET 0x80 | 2652 | #define BITBUCKET 0x80 |
2632 | #define ENSACHK 0x40 | 2653 | #define ENSACHK 0x40 |
@@ -2693,13 +2714,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2693 | #define SELID_MASK 0xf0 | 2714 | #define SELID_MASK 0xf0 |
2694 | #define ONEBIT 0x08 | 2715 | #define ONEBIT 0x08 |
2695 | 2716 | ||
2696 | #define SBLKCTL 0x4a | ||
2697 | #define DIAGLEDEN 0x80 | ||
2698 | #define DIAGLEDON 0x40 | ||
2699 | #define ENAB40 0x08 | ||
2700 | #define ENAB20 0x04 | ||
2701 | #define SELWIDE 0x02 | ||
2702 | |||
2703 | #define OPTIONMODE 0x4a | 2717 | #define OPTIONMODE 0x4a |
2704 | #define OPTIONMODE_DEFAULTS 0x02 | 2718 | #define OPTIONMODE_DEFAULTS 0x02 |
2705 | #define BIOSCANCTL 0x80 | 2719 | #define BIOSCANCTL 0x80 |
@@ -2709,15 +2723,12 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2709 | #define ENDGFORMCHK 0x04 | 2723 | #define ENDGFORMCHK 0x04 |
2710 | #define AUTO_MSGOUT_DE 0x02 | 2724 | #define AUTO_MSGOUT_DE 0x02 |
2711 | 2725 | ||
2712 | #define SSTAT0 0x4b | 2726 | #define SBLKCTL 0x4a |
2713 | #define TARGET 0x80 | 2727 | #define DIAGLEDEN 0x80 |
2714 | #define SELDO 0x40 | 2728 | #define DIAGLEDON 0x40 |
2715 | #define SELDI 0x20 | 2729 | #define ENAB40 0x08 |
2716 | #define SELINGO 0x10 | 2730 | #define ENAB20 0x04 |
2717 | #define IOERR 0x08 | 2731 | #define SELWIDE 0x02 |
2718 | #define OVERRUN 0x04 | ||
2719 | #define SPIORDY 0x02 | ||
2720 | #define ARBDO 0x01 | ||
2721 | 2732 | ||
2722 | #define CLRSINT0 0x4b | 2733 | #define CLRSINT0 0x4b |
2723 | #define CLRSELDO 0x40 | 2734 | #define CLRSELDO 0x40 |
@@ -2728,6 +2739,16 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2728 | #define CLRSPIORDY 0x02 | 2739 | #define CLRSPIORDY 0x02 |
2729 | #define CLRARBDO 0x01 | 2740 | #define CLRARBDO 0x01 |
2730 | 2741 | ||
2742 | #define SSTAT0 0x4b | ||
2743 | #define TARGET 0x80 | ||
2744 | #define SELDO 0x40 | ||
2745 | #define SELDI 0x20 | ||
2746 | #define SELINGO 0x10 | ||
2747 | #define IOERR 0x08 | ||
2748 | #define OVERRUN 0x04 | ||
2749 | #define SPIORDY 0x02 | ||
2750 | #define ARBDO 0x01 | ||
2751 | |||
2731 | #define SIMODE0 0x4b | 2752 | #define SIMODE0 0x4b |
2732 | #define ENSELDO 0x40 | 2753 | #define ENSELDO 0x40 |
2733 | #define ENSELDI 0x20 | 2754 | #define ENSELDI 0x20 |
@@ -2768,17 +2789,17 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2768 | #define BUSFREE_DFF0 0x80 | 2789 | #define BUSFREE_DFF0 0x80 |
2769 | #define BUSFREE_LQO 0x40 | 2790 | #define BUSFREE_LQO 0x40 |
2770 | 2791 | ||
2792 | #define SIMODE2 0x4d | ||
2793 | #define ENWIDE_RES 0x04 | ||
2794 | #define ENSDONE 0x02 | ||
2795 | #define ENDMADONE 0x01 | ||
2796 | |||
2771 | #define CLRSINT2 0x4d | 2797 | #define CLRSINT2 0x4d |
2772 | #define CLRNONPACKREQ 0x20 | 2798 | #define CLRNONPACKREQ 0x20 |
2773 | #define CLRWIDE_RES 0x04 | 2799 | #define CLRWIDE_RES 0x04 |
2774 | #define CLRSDONE 0x02 | 2800 | #define CLRSDONE 0x02 |
2775 | #define CLRDMADONE 0x01 | 2801 | #define CLRDMADONE 0x01 |
2776 | 2802 | ||
2777 | #define SIMODE2 0x4d | ||
2778 | #define ENWIDE_RES 0x04 | ||
2779 | #define ENSDONE 0x02 | ||
2780 | #define ENDMADONE 0x01 | ||
2781 | |||
2782 | #define PERRDIAG 0x4e | 2803 | #define PERRDIAG 0x4e |
2783 | #define HIZERO 0x80 | 2804 | #define HIZERO 0x80 |
2784 | #define HIPERR 0x40 | 2805 | #define HIPERR 0x40 |
@@ -2871,13 +2892,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2871 | #define CLRNTRAMPERR 0x02 | 2892 | #define CLRNTRAMPERR 0x02 |
2872 | #define CLROSRAMPERR 0x01 | 2893 | #define CLROSRAMPERR 0x01 |
2873 | 2894 | ||
2874 | #define LQOMODE0 0x54 | ||
2875 | #define ENLQOTARGSCBPERR 0x10 | ||
2876 | #define ENLQOSTOPT2 0x08 | ||
2877 | #define ENLQOATNLQ 0x04 | ||
2878 | #define ENLQOATNPKT 0x02 | ||
2879 | #define ENLQOTCRC 0x01 | ||
2880 | |||
2881 | #define LQOSTAT0 0x54 | 2895 | #define LQOSTAT0 0x54 |
2882 | #define LQOTARGSCBPERR 0x10 | 2896 | #define LQOTARGSCBPERR 0x10 |
2883 | #define LQOSTOPT2 0x08 | 2897 | #define LQOSTOPT2 0x08 |
@@ -2892,6 +2906,20 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2892 | #define CLRLQOATNPKT 0x02 | 2906 | #define CLRLQOATNPKT 0x02 |
2893 | #define CLRLQOTCRC 0x01 | 2907 | #define CLRLQOTCRC 0x01 |
2894 | 2908 | ||
2909 | #define LQOMODE0 0x54 | ||
2910 | #define ENLQOTARGSCBPERR 0x10 | ||
2911 | #define ENLQOSTOPT2 0x08 | ||
2912 | #define ENLQOATNLQ 0x04 | ||
2913 | #define ENLQOATNPKT 0x02 | ||
2914 | #define ENLQOTCRC 0x01 | ||
2915 | |||
2916 | #define LQOMODE1 0x55 | ||
2917 | #define ENLQOINITSCBPERR 0x10 | ||
2918 | #define ENLQOSTOPI2 0x08 | ||
2919 | #define ENLQOBADQAS 0x04 | ||
2920 | #define ENLQOBUSFREE 0x02 | ||
2921 | #define ENLQOPHACHGINPKT 0x01 | ||
2922 | |||
2895 | #define LQOSTAT1 0x55 | 2923 | #define LQOSTAT1 0x55 |
2896 | #define LQOINITSCBPERR 0x10 | 2924 | #define LQOINITSCBPERR 0x10 |
2897 | #define LQOSTOPI2 0x08 | 2925 | #define LQOSTOPI2 0x08 |
@@ -2906,13 +2934,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2906 | #define CLRLQOBUSFREE 0x02 | 2934 | #define CLRLQOBUSFREE 0x02 |
2907 | #define CLRLQOPHACHGINPKT 0x01 | 2935 | #define CLRLQOPHACHGINPKT 0x01 |
2908 | 2936 | ||
2909 | #define LQOMODE1 0x55 | ||
2910 | #define ENLQOINITSCBPERR 0x10 | ||
2911 | #define ENLQOSTOPI2 0x08 | ||
2912 | #define ENLQOBADQAS 0x04 | ||
2913 | #define ENLQOBUSFREE 0x02 | ||
2914 | #define ENLQOPHACHGINPKT 0x01 | ||
2915 | |||
2916 | #define LQOSTAT2 0x56 | 2937 | #define LQOSTAT2 0x56 |
2917 | #define LQOPKT 0xe0 | 2938 | #define LQOPKT 0xe0 |
2918 | #define LQOWAITFIFO 0x10 | 2939 | #define LQOWAITFIFO 0x10 |
@@ -3028,6 +3049,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3028 | 3049 | ||
3029 | #define ANNEXCOL 0x65 | 3050 | #define ANNEXCOL 0x65 |
3030 | 3051 | ||
3052 | #define ANNEXDAT 0x66 | ||
3053 | |||
3031 | #define SCSCHKN 0x66 | 3054 | #define SCSCHKN 0x66 |
3032 | #define STSELSKIDDIS 0x40 | 3055 | #define STSELSKIDDIS 0x40 |
3033 | #define CURRFIFODEF 0x20 | 3056 | #define CURRFIFODEF 0x20 |
@@ -3037,8 +3060,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3037 | #define SHVALIDSTDIS 0x02 | 3060 | #define SHVALIDSTDIS 0x02 |
3038 | #define LSTSGCLRDIS 0x01 | 3061 | #define LSTSGCLRDIS 0x01 |
3039 | 3062 | ||
3040 | #define ANNEXDAT 0x66 | ||
3041 | |||
3042 | #define IOWNID 0x67 | 3063 | #define IOWNID 0x67 |
3043 | 3064 | ||
3044 | #define PLL960CTL0 0x68 | 3065 | #define PLL960CTL0 0x68 |
@@ -3071,10 +3092,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3071 | #define PLL_CNTCLR 0x40 | 3092 | #define PLL_CNTCLR 0x40 |
3072 | #define PLL_RST 0x01 | 3093 | #define PLL_RST 0x01 |
3073 | 3094 | ||
3074 | #define PLL400CNT0 0x6e | ||
3075 | |||
3076 | #define UNFAIRNESS 0x6e | 3095 | #define UNFAIRNESS 0x6e |
3077 | 3096 | ||
3097 | #define PLL400CNT0 0x6e | ||
3098 | |||
3078 | #define HADDR 0x70 | 3099 | #define HADDR 0x70 |
3079 | 3100 | ||
3080 | #define PLLDELAY 0x70 | 3101 | #define PLLDELAY 0x70 |
@@ -3088,14 +3109,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3088 | 3109 | ||
3089 | #define HODMAEN 0x7a | 3110 | #define HODMAEN 0x7a |
3090 | 3111 | ||
3091 | #define SGHADDR 0x7c | ||
3092 | |||
3093 | #define SCBHADDR 0x7c | 3112 | #define SCBHADDR 0x7c |
3094 | 3113 | ||
3095 | #define SGHCNT 0x84 | 3114 | #define SGHADDR 0x7c |
3096 | 3115 | ||
3097 | #define SCBHCNT 0x84 | 3116 | #define SCBHCNT 0x84 |
3098 | 3117 | ||
3118 | #define SGHCNT 0x84 | ||
3119 | |||
3099 | #define DFF_THRSH 0x88 | 3120 | #define DFF_THRSH 0x88 |
3100 | #define WR_DFTHRSH 0x70 | 3121 | #define WR_DFTHRSH 0x70 |
3101 | #define RD_DFTHRSH 0x07 | 3122 | #define RD_DFTHRSH 0x07 |
@@ -3113,8 +3134,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3113 | #define RD_DFTHRSH_63 0x03 | 3134 | #define RD_DFTHRSH_63 0x03 |
3114 | #define RD_DFTHRSH_50 0x02 | 3135 | #define RD_DFTHRSH_50 0x02 |
3115 | #define RD_DFTHRSH_25 0x01 | 3136 | #define RD_DFTHRSH_25 0x01 |
3116 | #define WR_DFTHRSH_MIN 0x00 | ||
3117 | #define RD_DFTHRSH_MIN 0x00 | 3137 | #define RD_DFTHRSH_MIN 0x00 |
3138 | #define WR_DFTHRSH_MIN 0x00 | ||
3118 | 3139 | ||
3119 | #define ROMADDR 0x8a | 3140 | #define ROMADDR 0x8a |
3120 | 3141 | ||
@@ -3150,20 +3171,22 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3150 | #define DCH1NSEN 0x02 | 3171 | #define DCH1NSEN 0x02 |
3151 | #define DCH0NSEN 0x01 | 3172 | #define DCH0NSEN 0x01 |
3152 | 3173 | ||
3153 | #define DCHRXMSG1 0x91 | ||
3154 | |||
3155 | #define CMCRXMSG1 0x91 | 3174 | #define CMCRXMSG1 0x91 |
3156 | 3175 | ||
3157 | #define DCHRXMSG2 0x92 | 3176 | #define DCHRXMSG1 0x91 |
3158 | 3177 | ||
3159 | #define OVLYRXMSG2 0x92 | 3178 | #define DCHRXMSG2 0x92 |
3160 | 3179 | ||
3161 | #define CMCRXMSG2 0x92 | 3180 | #define CMCRXMSG2 0x92 |
3162 | 3181 | ||
3163 | #define OST 0x92 | 3182 | #define OST 0x92 |
3164 | 3183 | ||
3184 | #define OVLYRXMSG2 0x92 | ||
3185 | |||
3165 | #define DCHRXMSG3 0x93 | 3186 | #define DCHRXMSG3 0x93 |
3166 | 3187 | ||
3188 | #define OVLYRXMSG3 0x93 | ||
3189 | |||
3167 | #define CMCRXMSG3 0x93 | 3190 | #define CMCRXMSG3 0x93 |
3168 | 3191 | ||
3169 | #define PCIXCTL 0x93 | 3192 | #define PCIXCTL 0x93 |
@@ -3175,26 +3198,24 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3175 | #define TSCSERREN 0x02 | 3198 | #define TSCSERREN 0x02 |
3176 | #define CMPABCDIS 0x01 | 3199 | #define CMPABCDIS 0x01 |
3177 | 3200 | ||
3178 | #define OVLYRXMSG3 0x93 | ||
3179 | |||
3180 | #define OVLYSEQBCNT 0x94 | 3201 | #define OVLYSEQBCNT 0x94 |
3181 | 3202 | ||
3182 | #define CMCSEQBCNT 0x94 | ||
3183 | |||
3184 | #define DCHSEQBCNT 0x94 | 3203 | #define DCHSEQBCNT 0x94 |
3185 | 3204 | ||
3186 | #define CMCSPLTSTAT0 0x96 | 3205 | #define CMCSEQBCNT 0x94 |
3187 | 3206 | ||
3188 | #define OVLYSPLTSTAT0 0x96 | 3207 | #define CMCSPLTSTAT0 0x96 |
3189 | 3208 | ||
3190 | #define DCHSPLTSTAT0 0x96 | 3209 | #define DCHSPLTSTAT0 0x96 |
3191 | 3210 | ||
3192 | #define DCHSPLTSTAT1 0x97 | 3211 | #define OVLYSPLTSTAT0 0x96 |
3193 | 3212 | ||
3194 | #define CMCSPLTSTAT1 0x97 | 3213 | #define CMCSPLTSTAT1 0x97 |
3195 | 3214 | ||
3196 | #define OVLYSPLTSTAT1 0x97 | 3215 | #define OVLYSPLTSTAT1 0x97 |
3197 | 3216 | ||
3217 | #define DCHSPLTSTAT1 0x97 | ||
3218 | |||
3198 | #define SGRXMSG0 0x98 | 3219 | #define SGRXMSG0 0x98 |
3199 | #define CDNUM 0xf8 | 3220 | #define CDNUM 0xf8 |
3200 | #define CFNUM 0x07 | 3221 | #define CFNUM 0x07 |
@@ -3244,13 +3265,13 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3244 | #define RXSCEMSG 0x02 | 3265 | #define RXSCEMSG 0x02 |
3245 | #define RXSPLTRSP 0x01 | 3266 | #define RXSPLTRSP 0x01 |
3246 | 3267 | ||
3268 | #define SGSPLTSTAT1 0x9f | ||
3269 | #define RXDATABUCKET 0x01 | ||
3270 | |||
3247 | #define SFUNCT 0x9f | 3271 | #define SFUNCT 0x9f |
3248 | #define TEST_GROUP 0xf0 | 3272 | #define TEST_GROUP 0xf0 |
3249 | #define TEST_NUM 0x0f | 3273 | #define TEST_NUM 0x0f |
3250 | 3274 | ||
3251 | #define SGSPLTSTAT1 0x9f | ||
3252 | #define RXDATABUCKET 0x01 | ||
3253 | |||
3254 | #define DF0PCISTAT 0xa0 | 3275 | #define DF0PCISTAT 0xa0 |
3255 | 3276 | ||
3256 | #define REG0 0xa0 | 3277 | #define REG0 0xa0 |
@@ -3299,10 +3320,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3299 | 3320 | ||
3300 | #define CCSGADDR 0xac | 3321 | #define CCSGADDR 0xac |
3301 | 3322 | ||
3302 | #define CCSCBADDR 0xac | ||
3303 | |||
3304 | #define CCSCBADR_BK 0xac | 3323 | #define CCSCBADR_BK 0xac |
3305 | 3324 | ||
3325 | #define CCSCBADDR 0xac | ||
3326 | |||
3306 | #define CMC_RAMBIST 0xad | 3327 | #define CMC_RAMBIST 0xad |
3307 | #define SG_ELEMENT_SIZE 0x80 | 3328 | #define SG_ELEMENT_SIZE 0x80 |
3308 | #define SCBRAMBIST_FAIL 0x40 | 3329 | #define SCBRAMBIST_FAIL 0x40 |
@@ -3311,14 +3332,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3311 | #define CMC_BUFFER_BIST_FAIL 0x02 | 3332 | #define CMC_BUFFER_BIST_FAIL 0x02 |
3312 | #define CMC_BUFFER_BIST_EN 0x01 | 3333 | #define CMC_BUFFER_BIST_EN 0x01 |
3313 | 3334 | ||
3314 | #define CCSGCTL 0xad | ||
3315 | #define CCSGEN 0x0c | ||
3316 | #define CCSGDONE 0x80 | ||
3317 | #define SG_CACHE_AVAIL 0x10 | ||
3318 | #define CCSGENACK 0x08 | ||
3319 | #define SG_FETCH_REQ 0x02 | ||
3320 | #define CCSGRESET 0x01 | ||
3321 | |||
3322 | #define CCSCBCTL 0xad | 3335 | #define CCSCBCTL 0xad |
3323 | #define CCSCBDONE 0x80 | 3336 | #define CCSCBDONE 0x80 |
3324 | #define ARRDONE 0x40 | 3337 | #define ARRDONE 0x40 |
@@ -3327,6 +3340,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3327 | #define CCSCBDIR 0x04 | 3340 | #define CCSCBDIR 0x04 |
3328 | #define CCSCBRESET 0x01 | 3341 | #define CCSCBRESET 0x01 |
3329 | 3342 | ||
3343 | #define CCSGCTL 0xad | ||
3344 | #define CCSGEN 0x0c | ||
3345 | #define CCSGDONE 0x80 | ||
3346 | #define SG_CACHE_AVAIL 0x10 | ||
3347 | #define CCSGENACK 0x08 | ||
3348 | #define SG_FETCH_REQ 0x02 | ||
3349 | #define CCSGRESET 0x01 | ||
3350 | |||
3330 | #define CCSGRAM 0xb0 | 3351 | #define CCSGRAM 0xb0 |
3331 | 3352 | ||
3332 | #define FLEXADR 0xb0 | 3353 | #define FLEXADR 0xb0 |
@@ -3356,8 +3377,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3356 | #define SEEDAT 0xbc | 3377 | #define SEEDAT 0xbc |
3357 | 3378 | ||
3358 | #define SEECTL 0xbe | 3379 | #define SEECTL 0xbe |
3359 | #define SEEOP_EWEN 0x40 | ||
3360 | #define SEEOP_WALL 0x40 | 3380 | #define SEEOP_WALL 0x40 |
3381 | #define SEEOP_EWEN 0x40 | ||
3361 | #define SEEOP_EWDS 0x40 | 3382 | #define SEEOP_EWDS 0x40 |
3362 | #define SEEOPCODE 0x70 | 3383 | #define SEEOPCODE 0x70 |
3363 | #define SEERST 0x02 | 3384 | #define SEERST 0x02 |
@@ -3414,14 +3435,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3414 | 3435 | ||
3415 | #define WRTBIASCALC 0xc7 | 3436 | #define WRTBIASCALC 0xc7 |
3416 | 3437 | ||
3417 | #define DFPTRS 0xc8 | ||
3418 | |||
3419 | #define RCVRBIASCALC 0xc8 | 3438 | #define RCVRBIASCALC 0xc8 |
3420 | 3439 | ||
3421 | #define DFBKPTR 0xc9 | 3440 | #define DFPTRS 0xc8 |
3422 | 3441 | ||
3423 | #define SKEWCALC 0xc9 | 3442 | #define SKEWCALC 0xc9 |
3424 | 3443 | ||
3444 | #define DFBKPTR 0xc9 | ||
3445 | |||
3425 | #define DFDBCTL 0xcb | 3446 | #define DFDBCTL 0xcb |
3426 | #define DFF_CIO_WR_RDY 0x20 | 3447 | #define DFF_CIO_WR_RDY 0x20 |
3427 | #define DFF_CIO_RD_RDY 0x10 | 3448 | #define DFF_CIO_RD_RDY 0x10 |
@@ -3475,11 +3496,11 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3475 | 3496 | ||
3476 | #define DINDEX 0xe4 | 3497 | #define DINDEX 0xe4 |
3477 | 3498 | ||
3499 | #define BRKADDR0 0xe6 | ||
3500 | |||
3478 | #define BRKADDR1 0xe6 | 3501 | #define BRKADDR1 0xe6 |
3479 | #define BRKDIS 0x80 | 3502 | #define BRKDIS 0x80 |
3480 | 3503 | ||
3481 | #define BRKADDR0 0xe6 | ||
3482 | |||
3483 | #define ALLONES 0xe8 | 3504 | #define ALLONES 0xe8 |
3484 | 3505 | ||
3485 | #define ALLZEROS 0xea | 3506 | #define ALLZEROS 0xea |
@@ -3494,14 +3515,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3494 | 3515 | ||
3495 | #define STACK 0xf2 | 3516 | #define STACK 0xf2 |
3496 | 3517 | ||
3497 | #define CURADDR 0xf4 | ||
3498 | |||
3499 | #define INTVEC1_ADDR 0xf4 | 3518 | #define INTVEC1_ADDR 0xf4 |
3500 | 3519 | ||
3501 | #define INTVEC2_ADDR 0xf6 | 3520 | #define CURADDR 0xf4 |
3502 | 3521 | ||
3503 | #define LASTADDR 0xf6 | 3522 | #define LASTADDR 0xf6 |
3504 | 3523 | ||
3524 | #define INTVEC2_ADDR 0xf6 | ||
3525 | |||
3505 | #define LONGJMP_ADDR 0xf8 | 3526 | #define LONGJMP_ADDR 0xf8 |
3506 | 3527 | ||
3507 | #define ACCUM_SAVE 0xfa | 3528 | #define ACCUM_SAVE 0xfa |
@@ -3524,25 +3545,31 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3524 | 3545 | ||
3525 | #define COMPLETE_DMA_SCB_HEAD 0x12c | 3546 | #define COMPLETE_DMA_SCB_HEAD 0x12c |
3526 | 3547 | ||
3527 | #define QFREEZE_COUNT 0x12e | 3548 | #define COMPLETE_DMA_SCB_TAIL 0x12e |
3549 | |||
3550 | #define COMPLETE_ON_QFREEZE_HEAD 0x130 | ||
3551 | |||
3552 | #define QFREEZE_COUNT 0x132 | ||
3528 | 3553 | ||
3529 | #define SAVED_MODE 0x130 | 3554 | #define KERNEL_QFREEZE_COUNT 0x134 |
3530 | 3555 | ||
3531 | #define MSG_OUT 0x131 | 3556 | #define SAVED_MODE 0x136 |
3532 | 3557 | ||
3533 | #define DMAPARAMS 0x132 | 3558 | #define MSG_OUT 0x137 |
3559 | |||
3560 | #define DMAPARAMS 0x138 | ||
3534 | #define PRELOADEN 0x80 | 3561 | #define PRELOADEN 0x80 |
3535 | #define WIDEODD 0x40 | 3562 | #define WIDEODD 0x40 |
3536 | #define SCSIEN 0x20 | 3563 | #define SCSIEN 0x20 |
3537 | #define SDMAEN 0x10 | 3564 | #define SDMAEN 0x10 |
3538 | #define SDMAENACK 0x10 | 3565 | #define SDMAENACK 0x10 |
3539 | #define HDMAENACK 0x08 | ||
3540 | #define HDMAEN 0x08 | 3566 | #define HDMAEN 0x08 |
3567 | #define HDMAENACK 0x08 | ||
3541 | #define DIRECTION 0x04 | 3568 | #define DIRECTION 0x04 |
3542 | #define FIFOFLUSH 0x02 | 3569 | #define FIFOFLUSH 0x02 |
3543 | #define FIFORESET 0x01 | 3570 | #define FIFORESET 0x01 |
3544 | 3571 | ||
3545 | #define SEQ_FLAGS 0x133 | 3572 | #define SEQ_FLAGS 0x139 |
3546 | #define NOT_IDENTIFIED 0x80 | 3573 | #define NOT_IDENTIFIED 0x80 |
3547 | #define NO_CDB_SENT 0x40 | 3574 | #define NO_CDB_SENT 0x40 |
3548 | #define TARGET_CMD_IS_TAGGED 0x40 | 3575 | #define TARGET_CMD_IS_TAGGED 0x40 |
@@ -3553,11 +3580,11 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3553 | #define SPHASE_PENDING 0x02 | 3580 | #define SPHASE_PENDING 0x02 |
3554 | #define NO_DISCONNECT 0x01 | 3581 | #define NO_DISCONNECT 0x01 |
3555 | 3582 | ||
3556 | #define SAVED_SCSIID 0x134 | 3583 | #define SAVED_SCSIID 0x13a |
3557 | 3584 | ||
3558 | #define SAVED_LUN 0x135 | 3585 | #define SAVED_LUN 0x13b |
3559 | 3586 | ||
3560 | #define LASTPHASE 0x136 | 3587 | #define LASTPHASE 0x13c |
3561 | #define PHASE_MASK 0xe0 | 3588 | #define PHASE_MASK 0xe0 |
3562 | #define CDI 0x80 | 3589 | #define CDI 0x80 |
3563 | #define IOI 0x40 | 3590 | #define IOI 0x40 |
@@ -3572,18 +3599,18 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3572 | #define P_DATAOUT_DT 0x20 | 3599 | #define P_DATAOUT_DT 0x20 |
3573 | #define P_DATAOUT 0x00 | 3600 | #define P_DATAOUT 0x00 |
3574 | 3601 | ||
3575 | #define QOUTFIFO_ENTRY_VALID_TAG 0x137 | 3602 | #define QOUTFIFO_ENTRY_VALID_TAG 0x13d |
3576 | 3603 | ||
3577 | #define SHARED_DATA_ADDR 0x138 | 3604 | #define KERNEL_TQINPOS 0x13e |
3578 | 3605 | ||
3579 | #define QOUTFIFO_NEXT_ADDR 0x13c | 3606 | #define TQINPOS 0x13f |
3580 | 3607 | ||
3581 | #define KERNEL_TQINPOS 0x140 | 3608 | #define SHARED_DATA_ADDR 0x140 |
3582 | 3609 | ||
3583 | #define TQINPOS 0x141 | 3610 | #define QOUTFIFO_NEXT_ADDR 0x144 |
3584 | 3611 | ||
3585 | #define ARG_1 0x142 | 3612 | #define ARG_1 0x148 |
3586 | #define RETURN_1 0x142 | 3613 | #define RETURN_1 0x148 |
3587 | #define SEND_MSG 0x80 | 3614 | #define SEND_MSG 0x80 |
3588 | #define SEND_SENSE 0x40 | 3615 | #define SEND_SENSE 0x40 |
3589 | #define SEND_REJ 0x20 | 3616 | #define SEND_REJ 0x20 |
@@ -3593,12 +3620,12 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3593 | #define CONT_MSG_LOOP_READ 0x03 | 3620 | #define CONT_MSG_LOOP_READ 0x03 |
3594 | #define CONT_MSG_LOOP_TARG 0x02 | 3621 | #define CONT_MSG_LOOP_TARG 0x02 |
3595 | 3622 | ||
3596 | #define ARG_2 0x143 | 3623 | #define ARG_2 0x149 |
3597 | #define RETURN_2 0x143 | 3624 | #define RETURN_2 0x149 |
3598 | 3625 | ||
3599 | #define LAST_MSG 0x144 | 3626 | #define LAST_MSG 0x14a |
3600 | 3627 | ||
3601 | #define SCSISEQ_TEMPLATE 0x145 | 3628 | #define SCSISEQ_TEMPLATE 0x14b |
3602 | #define MANUALCTL 0x40 | 3629 | #define MANUALCTL 0x40 |
3603 | #define ENSELI 0x20 | 3630 | #define ENSELI 0x20 |
3604 | #define ENRSELI 0x10 | 3631 | #define ENRSELI 0x10 |
@@ -3606,27 +3633,27 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3606 | #define ENAUTOATNP 0x02 | 3633 | #define ENAUTOATNP 0x02 |
3607 | #define ALTSTIM 0x01 | 3634 | #define ALTSTIM 0x01 |
3608 | 3635 | ||
3609 | #define INITIATOR_TAG 0x146 | 3636 | #define INITIATOR_TAG 0x14c |
3610 | 3637 | ||
3611 | #define SEQ_FLAGS2 0x147 | 3638 | #define SEQ_FLAGS2 0x14d |
3612 | #define SELECTOUT_QFROZEN 0x04 | 3639 | #define SELECTOUT_QFROZEN 0x04 |
3613 | #define TARGET_MSG_PENDING 0x02 | 3640 | #define TARGET_MSG_PENDING 0x02 |
3614 | 3641 | ||
3615 | #define ALLOCFIFO_SCBPTR 0x148 | 3642 | #define ALLOCFIFO_SCBPTR 0x14e |
3616 | 3643 | ||
3617 | #define INT_COALESCING_TIMER 0x14a | 3644 | #define INT_COALESCING_TIMER 0x150 |
3618 | 3645 | ||
3619 | #define INT_COALESCING_MAXCMDS 0x14c | 3646 | #define INT_COALESCING_MAXCMDS 0x152 |
3620 | 3647 | ||
3621 | #define INT_COALESCING_MINCMDS 0x14d | 3648 | #define INT_COALESCING_MINCMDS 0x153 |
3622 | 3649 | ||
3623 | #define CMDS_PENDING 0x14e | 3650 | #define CMDS_PENDING 0x154 |
3624 | 3651 | ||
3625 | #define INT_COALESCING_CMDCOUNT 0x150 | 3652 | #define INT_COALESCING_CMDCOUNT 0x156 |
3626 | 3653 | ||
3627 | #define LOCAL_HS_MAILBOX 0x151 | 3654 | #define LOCAL_HS_MAILBOX 0x157 |
3628 | 3655 | ||
3629 | #define CMDSIZE_TABLE 0x152 | 3656 | #define CMDSIZE_TABLE 0x158 |
3630 | 3657 | ||
3631 | #define SCB_BASE 0x180 | 3658 | #define SCB_BASE 0x180 |
3632 | 3659 | ||
@@ -3701,6 +3728,16 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3701 | #define SCB_DISCONNECTED_LISTS 0x1b8 | 3728 | #define SCB_DISCONNECTED_LISTS 0x1b8 |
3702 | 3729 | ||
3703 | 3730 | ||
3731 | #define AHD_TIMER_MAX_US 0x18ffe7 | ||
3732 | #define AHD_TIMER_MAX_TICKS 0xffff | ||
3733 | #define AHD_SENSE_BUFSIZE 0x100 | ||
3734 | #define BUS_8_BIT 0x00 | ||
3735 | #define TARGET_CMD_CMPLT 0xfe | ||
3736 | #define SEEOP_WRAL_ADDR 0x40 | ||
3737 | #define AHD_AMPLITUDE_DEF 0x07 | ||
3738 | #define AHD_PRECOMP_CUTBACK_37 0x07 | ||
3739 | #define AHD_PRECOMP_SHIFT 0x00 | ||
3740 | #define AHD_ANNEXCOL_PRECOMP_SLEW 0x04 | ||
3704 | #define AHD_TIMER_US_PER_TICK 0x19 | 3741 | #define AHD_TIMER_US_PER_TICK 0x19 |
3705 | #define SCB_TRANSFER_SIZE_FULL_LUN 0x38 | 3742 | #define SCB_TRANSFER_SIZE_FULL_LUN 0x38 |
3706 | #define STATUS_QUEUE_FULL 0x28 | 3743 | #define STATUS_QUEUE_FULL 0x28 |
@@ -3724,28 +3761,18 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3724 | #define B_CURRFIFO_0 0x02 | 3761 | #define B_CURRFIFO_0 0x02 |
3725 | #define LUNLEN_SINGLE_LEVEL_LUN 0x0f | 3762 | #define LUNLEN_SINGLE_LEVEL_LUN 0x0f |
3726 | #define NVRAM_SCB_OFFSET 0x2c | 3763 | #define NVRAM_SCB_OFFSET 0x2c |
3727 | #define AHD_TIMER_MAX_US 0x18ffe7 | ||
3728 | #define AHD_TIMER_MAX_TICKS 0xffff | ||
3729 | #define STATUS_PKT_SENSE 0xff | 3764 | #define STATUS_PKT_SENSE 0xff |
3730 | #define CMD_GROUP_CODE_SHIFT 0x05 | 3765 | #define CMD_GROUP_CODE_SHIFT 0x05 |
3731 | #define AHD_SENSE_BUFSIZE 0x100 | ||
3732 | #define MAX_OFFSET_PACED_BUG 0x7f | 3766 | #define MAX_OFFSET_PACED_BUG 0x7f |
3733 | #define BUS_8_BIT 0x00 | ||
3734 | #define STIMESEL_BUG_ADJ 0x08 | 3767 | #define STIMESEL_BUG_ADJ 0x08 |
3735 | #define STIMESEL_MIN 0x18 | 3768 | #define STIMESEL_MIN 0x18 |
3736 | #define STIMESEL_SHIFT 0x03 | 3769 | #define STIMESEL_SHIFT 0x03 |
3737 | #define CCSGRAM_MAXSEGS 0x10 | 3770 | #define CCSGRAM_MAXSEGS 0x10 |
3738 | #define INVALID_ADDR 0x80 | 3771 | #define INVALID_ADDR 0x80 |
3739 | #define TARGET_CMD_CMPLT 0xfe | ||
3740 | #define SEEOP_WRAL_ADDR 0x40 | ||
3741 | #define SEEOP_ERAL_ADDR 0x80 | 3772 | #define SEEOP_ERAL_ADDR 0x80 |
3742 | #define AHD_AMPLITUDE_DEF 0x07 | ||
3743 | #define AHD_SLEWRATE_DEF_REVB 0x08 | 3773 | #define AHD_SLEWRATE_DEF_REVB 0x08 |
3744 | #define AHD_PRECOMP_CUTBACK_37 0x07 | ||
3745 | #define AHD_PRECOMP_CUTBACK_17 0x04 | 3774 | #define AHD_PRECOMP_CUTBACK_17 0x04 |
3746 | #define AHD_PRECOMP_SHIFT 0x00 | ||
3747 | #define AHD_PRECOMP_MASK 0x07 | 3775 | #define AHD_PRECOMP_MASK 0x07 |
3748 | #define AHD_ANNEXCOL_PRECOMP_SLEW 0x04 | ||
3749 | #define SRC_MODE_SHIFT 0x00 | 3776 | #define SRC_MODE_SHIFT 0x00 |
3750 | #define PKT_OVERRUN_BUFSIZE 0x200 | 3777 | #define PKT_OVERRUN_BUFSIZE 0x200 |
3751 | #define SCB_TRANSFER_SIZE_1BYTE_LUN 0x30 | 3778 | #define SCB_TRANSFER_SIZE_1BYTE_LUN 0x30 |
@@ -3761,6 +3788,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3761 | 3788 | ||
3762 | 3789 | ||
3763 | /* Downloaded Constant Definitions */ | 3790 | /* Downloaded Constant Definitions */ |
3791 | #define CACHELINE_MASK 0x07 | ||
3764 | #define SCB_TRANSFER_SIZE 0x06 | 3792 | #define SCB_TRANSFER_SIZE 0x06 |
3765 | #define PKT_OVERRUN_BUFOFFSET 0x05 | 3793 | #define PKT_OVERRUN_BUFOFFSET 0x05 |
3766 | #define SG_SIZEOF 0x04 | 3794 | #define SG_SIZEOF 0x04 |
@@ -3768,9 +3796,9 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3768 | #define SG_PREFETCH_ALIGN_MASK 0x02 | 3796 | #define SG_PREFETCH_ALIGN_MASK 0x02 |
3769 | #define SG_PREFETCH_CNT_LIMIT 0x01 | 3797 | #define SG_PREFETCH_CNT_LIMIT 0x01 |
3770 | #define SG_PREFETCH_CNT 0x00 | 3798 | #define SG_PREFETCH_CNT 0x00 |
3771 | #define DOWNLOAD_CONST_COUNT 0x07 | 3799 | #define DOWNLOAD_CONST_COUNT 0x08 |
3772 | 3800 | ||
3773 | 3801 | ||
3774 | /* Exported Labels */ | 3802 | /* Exported Labels */ |
3775 | #define LABEL_seq_isr 0x269 | 3803 | #define LABEL_seq_isr 0x285 |
3776 | #define LABEL_timer_isr 0x265 | 3804 | #define LABEL_timer_isr 0x281 |
diff --git a/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped b/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped index 3098a757e3d7..a4137c985376 100644 --- a/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped | |||
@@ -2,8 +2,8 @@ | |||
2 | * DO NOT EDIT - This file is automatically generated | 2 | * DO NOT EDIT - This file is automatically generated |
3 | * from the following source files: | 3 | * from the following source files: |
4 | * | 4 | * |
5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#94 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $ |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "aic79xx_osm.h" | 9 | #include "aic79xx_osm.h" |
@@ -172,21 +172,6 @@ ahd_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
172 | 0x0b, regvalue, cur_col, wrap)); | 172 | 0x0b, regvalue, cur_col, wrap)); |
173 | } | 173 | } |
174 | 174 | ||
175 | static ahd_reg_parse_entry_t CLRSEQINTSTAT_parse_table[] = { | ||
176 | { "CLRSEQ_SPLTINT", 0x01, 0x01 }, | ||
177 | { "CLRSEQ_PCIINT", 0x02, 0x02 }, | ||
178 | { "CLRSEQ_SCSIINT", 0x04, 0x04 }, | ||
179 | { "CLRSEQ_SEQINT", 0x08, 0x08 }, | ||
180 | { "CLRSEQ_SWTMRTO", 0x10, 0x10 } | ||
181 | }; | ||
182 | |||
183 | int | ||
184 | ahd_clrseqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
185 | { | ||
186 | return (ahd_print_register(CLRSEQINTSTAT_parse_table, 5, "CLRSEQINTSTAT", | ||
187 | 0x0c, regvalue, cur_col, wrap)); | ||
188 | } | ||
189 | |||
190 | static ahd_reg_parse_entry_t SEQINTSTAT_parse_table[] = { | 175 | static ahd_reg_parse_entry_t SEQINTSTAT_parse_table[] = { |
191 | { "SEQ_SPLTINT", 0x01, 0x01 }, | 176 | { "SEQ_SPLTINT", 0x01, 0x01 }, |
192 | { "SEQ_PCIINT", 0x02, 0x02 }, | 177 | { "SEQ_PCIINT", 0x02, 0x02 }, |
@@ -202,6 +187,21 @@ ahd_seqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
202 | 0x0c, regvalue, cur_col, wrap)); | 187 | 0x0c, regvalue, cur_col, wrap)); |
203 | } | 188 | } |
204 | 189 | ||
190 | static ahd_reg_parse_entry_t CLRSEQINTSTAT_parse_table[] = { | ||
191 | { "CLRSEQ_SPLTINT", 0x01, 0x01 }, | ||
192 | { "CLRSEQ_PCIINT", 0x02, 0x02 }, | ||
193 | { "CLRSEQ_SCSIINT", 0x04, 0x04 }, | ||
194 | { "CLRSEQ_SEQINT", 0x08, 0x08 }, | ||
195 | { "CLRSEQ_SWTMRTO", 0x10, 0x10 } | ||
196 | }; | ||
197 | |||
198 | int | ||
199 | ahd_clrseqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
200 | { | ||
201 | return (ahd_print_register(CLRSEQINTSTAT_parse_table, 5, "CLRSEQINTSTAT", | ||
202 | 0x0c, regvalue, cur_col, wrap)); | ||
203 | } | ||
204 | |||
205 | int | 205 | int |
206 | ahd_swtimer_print(u_int regvalue, u_int *cur_col, u_int wrap) | 206 | ahd_swtimer_print(u_int regvalue, u_int *cur_col, u_int wrap) |
207 | { | 207 | { |
@@ -670,16 +670,16 @@ ahd_sxfrctl0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
670 | } | 670 | } |
671 | 671 | ||
672 | int | 672 | int |
673 | ahd_businitid_print(u_int regvalue, u_int *cur_col, u_int wrap) | 673 | ahd_dlcount_print(u_int regvalue, u_int *cur_col, u_int wrap) |
674 | { | 674 | { |
675 | return (ahd_print_register(NULL, 0, "BUSINITID", | 675 | return (ahd_print_register(NULL, 0, "DLCOUNT", |
676 | 0x3c, regvalue, cur_col, wrap)); | 676 | 0x3c, regvalue, cur_col, wrap)); |
677 | } | 677 | } |
678 | 678 | ||
679 | int | 679 | int |
680 | ahd_dlcount_print(u_int regvalue, u_int *cur_col, u_int wrap) | 680 | ahd_businitid_print(u_int regvalue, u_int *cur_col, u_int wrap) |
681 | { | 681 | { |
682 | return (ahd_print_register(NULL, 0, "DLCOUNT", | 682 | return (ahd_print_register(NULL, 0, "BUSINITID", |
683 | 0x3c, regvalue, cur_col, wrap)); | 683 | 0x3c, regvalue, cur_col, wrap)); |
684 | } | 684 | } |
685 | 685 | ||
@@ -859,21 +859,6 @@ ahd_selid_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
859 | 0x49, regvalue, cur_col, wrap)); | 859 | 0x49, regvalue, cur_col, wrap)); |
860 | } | 860 | } |
861 | 861 | ||
862 | static ahd_reg_parse_entry_t SBLKCTL_parse_table[] = { | ||
863 | { "SELWIDE", 0x02, 0x02 }, | ||
864 | { "ENAB20", 0x04, 0x04 }, | ||
865 | { "ENAB40", 0x08, 0x08 }, | ||
866 | { "DIAGLEDON", 0x40, 0x40 }, | ||
867 | { "DIAGLEDEN", 0x80, 0x80 } | ||
868 | }; | ||
869 | |||
870 | int | ||
871 | ahd_sblkctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
872 | { | ||
873 | return (ahd_print_register(SBLKCTL_parse_table, 5, "SBLKCTL", | ||
874 | 0x4a, regvalue, cur_col, wrap)); | ||
875 | } | ||
876 | |||
877 | static ahd_reg_parse_entry_t OPTIONMODE_parse_table[] = { | 862 | static ahd_reg_parse_entry_t OPTIONMODE_parse_table[] = { |
878 | { "AUTO_MSGOUT_DE", 0x02, 0x02 }, | 863 | { "AUTO_MSGOUT_DE", 0x02, 0x02 }, |
879 | { "ENDGFORMCHK", 0x04, 0x04 }, | 864 | { "ENDGFORMCHK", 0x04, 0x04 }, |
@@ -891,22 +876,19 @@ ahd_optionmode_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
891 | 0x4a, regvalue, cur_col, wrap)); | 876 | 0x4a, regvalue, cur_col, wrap)); |
892 | } | 877 | } |
893 | 878 | ||
894 | static ahd_reg_parse_entry_t SSTAT0_parse_table[] = { | 879 | static ahd_reg_parse_entry_t SBLKCTL_parse_table[] = { |
895 | { "ARBDO", 0x01, 0x01 }, | 880 | { "SELWIDE", 0x02, 0x02 }, |
896 | { "SPIORDY", 0x02, 0x02 }, | 881 | { "ENAB20", 0x04, 0x04 }, |
897 | { "OVERRUN", 0x04, 0x04 }, | 882 | { "ENAB40", 0x08, 0x08 }, |
898 | { "IOERR", 0x08, 0x08 }, | 883 | { "DIAGLEDON", 0x40, 0x40 }, |
899 | { "SELINGO", 0x10, 0x10 }, | 884 | { "DIAGLEDEN", 0x80, 0x80 } |
900 | { "SELDI", 0x20, 0x20 }, | ||
901 | { "SELDO", 0x40, 0x40 }, | ||
902 | { "TARGET", 0x80, 0x80 } | ||
903 | }; | 885 | }; |
904 | 886 | ||
905 | int | 887 | int |
906 | ahd_sstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 888 | ahd_sblkctl_print(u_int regvalue, u_int *cur_col, u_int wrap) |
907 | { | 889 | { |
908 | return (ahd_print_register(SSTAT0_parse_table, 8, "SSTAT0", | 890 | return (ahd_print_register(SBLKCTL_parse_table, 5, "SBLKCTL", |
909 | 0x4b, regvalue, cur_col, wrap)); | 891 | 0x4a, regvalue, cur_col, wrap)); |
910 | } | 892 | } |
911 | 893 | ||
912 | static ahd_reg_parse_entry_t CLRSINT0_parse_table[] = { | 894 | static ahd_reg_parse_entry_t CLRSINT0_parse_table[] = { |
@@ -926,6 +908,24 @@ ahd_clrsint0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
926 | 0x4b, regvalue, cur_col, wrap)); | 908 | 0x4b, regvalue, cur_col, wrap)); |
927 | } | 909 | } |
928 | 910 | ||
911 | static ahd_reg_parse_entry_t SSTAT0_parse_table[] = { | ||
912 | { "ARBDO", 0x01, 0x01 }, | ||
913 | { "SPIORDY", 0x02, 0x02 }, | ||
914 | { "OVERRUN", 0x04, 0x04 }, | ||
915 | { "IOERR", 0x08, 0x08 }, | ||
916 | { "SELINGO", 0x10, 0x10 }, | ||
917 | { "SELDI", 0x20, 0x20 }, | ||
918 | { "SELDO", 0x40, 0x40 }, | ||
919 | { "TARGET", 0x80, 0x80 } | ||
920 | }; | ||
921 | |||
922 | int | ||
923 | ahd_sstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
924 | { | ||
925 | return (ahd_print_register(SSTAT0_parse_table, 8, "SSTAT0", | ||
926 | 0x4b, regvalue, cur_col, wrap)); | ||
927 | } | ||
928 | |||
929 | static ahd_reg_parse_entry_t SIMODE0_parse_table[] = { | 929 | static ahd_reg_parse_entry_t SIMODE0_parse_table[] = { |
930 | { "ENARBDO", 0x01, 0x01 }, | 930 | { "ENARBDO", 0x01, 0x01 }, |
931 | { "ENSPIORDY", 0x02, 0x02 }, | 931 | { "ENSPIORDY", 0x02, 0x02 }, |
@@ -998,30 +998,30 @@ ahd_sstat2_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
998 | 0x4d, regvalue, cur_col, wrap)); | 998 | 0x4d, regvalue, cur_col, wrap)); |
999 | } | 999 | } |
1000 | 1000 | ||
1001 | static ahd_reg_parse_entry_t CLRSINT2_parse_table[] = { | 1001 | static ahd_reg_parse_entry_t SIMODE2_parse_table[] = { |
1002 | { "CLRDMADONE", 0x01, 0x01 }, | 1002 | { "ENDMADONE", 0x01, 0x01 }, |
1003 | { "CLRSDONE", 0x02, 0x02 }, | 1003 | { "ENSDONE", 0x02, 0x02 }, |
1004 | { "CLRWIDE_RES", 0x04, 0x04 }, | 1004 | { "ENWIDE_RES", 0x04, 0x04 } |
1005 | { "CLRNONPACKREQ", 0x20, 0x20 } | ||
1006 | }; | 1005 | }; |
1007 | 1006 | ||
1008 | int | 1007 | int |
1009 | ahd_clrsint2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1008 | ahd_simode2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1010 | { | 1009 | { |
1011 | return (ahd_print_register(CLRSINT2_parse_table, 4, "CLRSINT2", | 1010 | return (ahd_print_register(SIMODE2_parse_table, 3, "SIMODE2", |
1012 | 0x4d, regvalue, cur_col, wrap)); | 1011 | 0x4d, regvalue, cur_col, wrap)); |
1013 | } | 1012 | } |
1014 | 1013 | ||
1015 | static ahd_reg_parse_entry_t SIMODE2_parse_table[] = { | 1014 | static ahd_reg_parse_entry_t CLRSINT2_parse_table[] = { |
1016 | { "ENDMADONE", 0x01, 0x01 }, | 1015 | { "CLRDMADONE", 0x01, 0x01 }, |
1017 | { "ENSDONE", 0x02, 0x02 }, | 1016 | { "CLRSDONE", 0x02, 0x02 }, |
1018 | { "ENWIDE_RES", 0x04, 0x04 } | 1017 | { "CLRWIDE_RES", 0x04, 0x04 }, |
1018 | { "CLRNONPACKREQ", 0x20, 0x20 } | ||
1019 | }; | 1019 | }; |
1020 | 1020 | ||
1021 | int | 1021 | int |
1022 | ahd_simode2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1022 | ahd_clrsint2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1023 | { | 1023 | { |
1024 | return (ahd_print_register(SIMODE2_parse_table, 3, "SIMODE2", | 1024 | return (ahd_print_register(CLRSINT2_parse_table, 4, "CLRSINT2", |
1025 | 0x4d, regvalue, cur_col, wrap)); | 1025 | 0x4d, regvalue, cur_col, wrap)); |
1026 | } | 1026 | } |
1027 | 1027 | ||
@@ -1220,21 +1220,6 @@ ahd_clrsint3_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1220 | 0x53, regvalue, cur_col, wrap)); | 1220 | 0x53, regvalue, cur_col, wrap)); |
1221 | } | 1221 | } |
1222 | 1222 | ||
1223 | static ahd_reg_parse_entry_t LQOMODE0_parse_table[] = { | ||
1224 | { "ENLQOTCRC", 0x01, 0x01 }, | ||
1225 | { "ENLQOATNPKT", 0x02, 0x02 }, | ||
1226 | { "ENLQOATNLQ", 0x04, 0x04 }, | ||
1227 | { "ENLQOSTOPT2", 0x08, 0x08 }, | ||
1228 | { "ENLQOTARGSCBPERR", 0x10, 0x10 } | ||
1229 | }; | ||
1230 | |||
1231 | int | ||
1232 | ahd_lqomode0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1233 | { | ||
1234 | return (ahd_print_register(LQOMODE0_parse_table, 5, "LQOMODE0", | ||
1235 | 0x54, regvalue, cur_col, wrap)); | ||
1236 | } | ||
1237 | |||
1238 | static ahd_reg_parse_entry_t LQOSTAT0_parse_table[] = { | 1223 | static ahd_reg_parse_entry_t LQOSTAT0_parse_table[] = { |
1239 | { "LQOTCRC", 0x01, 0x01 }, | 1224 | { "LQOTCRC", 0x01, 0x01 }, |
1240 | { "LQOATNPKT", 0x02, 0x02 }, | 1225 | { "LQOATNPKT", 0x02, 0x02 }, |
@@ -1265,6 +1250,36 @@ ahd_clrlqoint0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1265 | 0x54, regvalue, cur_col, wrap)); | 1250 | 0x54, regvalue, cur_col, wrap)); |
1266 | } | 1251 | } |
1267 | 1252 | ||
1253 | static ahd_reg_parse_entry_t LQOMODE0_parse_table[] = { | ||
1254 | { "ENLQOTCRC", 0x01, 0x01 }, | ||
1255 | { "ENLQOATNPKT", 0x02, 0x02 }, | ||
1256 | { "ENLQOATNLQ", 0x04, 0x04 }, | ||
1257 | { "ENLQOSTOPT2", 0x08, 0x08 }, | ||
1258 | { "ENLQOTARGSCBPERR", 0x10, 0x10 } | ||
1259 | }; | ||
1260 | |||
1261 | int | ||
1262 | ahd_lqomode0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1263 | { | ||
1264 | return (ahd_print_register(LQOMODE0_parse_table, 5, "LQOMODE0", | ||
1265 | 0x54, regvalue, cur_col, wrap)); | ||
1266 | } | ||
1267 | |||
1268 | static ahd_reg_parse_entry_t LQOMODE1_parse_table[] = { | ||
1269 | { "ENLQOPHACHGINPKT", 0x01, 0x01 }, | ||
1270 | { "ENLQOBUSFREE", 0x02, 0x02 }, | ||
1271 | { "ENLQOBADQAS", 0x04, 0x04 }, | ||
1272 | { "ENLQOSTOPI2", 0x08, 0x08 }, | ||
1273 | { "ENLQOINITSCBPERR", 0x10, 0x10 } | ||
1274 | }; | ||
1275 | |||
1276 | int | ||
1277 | ahd_lqomode1_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1278 | { | ||
1279 | return (ahd_print_register(LQOMODE1_parse_table, 5, "LQOMODE1", | ||
1280 | 0x55, regvalue, cur_col, wrap)); | ||
1281 | } | ||
1282 | |||
1268 | static ahd_reg_parse_entry_t LQOSTAT1_parse_table[] = { | 1283 | static ahd_reg_parse_entry_t LQOSTAT1_parse_table[] = { |
1269 | { "LQOPHACHGINPKT", 0x01, 0x01 }, | 1284 | { "LQOPHACHGINPKT", 0x01, 0x01 }, |
1270 | { "LQOBUSFREE", 0x02, 0x02 }, | 1285 | { "LQOBUSFREE", 0x02, 0x02 }, |
@@ -1295,21 +1310,6 @@ ahd_clrlqoint1_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1295 | 0x55, regvalue, cur_col, wrap)); | 1310 | 0x55, regvalue, cur_col, wrap)); |
1296 | } | 1311 | } |
1297 | 1312 | ||
1298 | static ahd_reg_parse_entry_t LQOMODE1_parse_table[] = { | ||
1299 | { "ENLQOPHACHGINPKT", 0x01, 0x01 }, | ||
1300 | { "ENLQOBUSFREE", 0x02, 0x02 }, | ||
1301 | { "ENLQOBADQAS", 0x04, 0x04 }, | ||
1302 | { "ENLQOSTOPI2", 0x08, 0x08 }, | ||
1303 | { "ENLQOINITSCBPERR", 0x10, 0x10 } | ||
1304 | }; | ||
1305 | |||
1306 | int | ||
1307 | ahd_lqomode1_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1308 | { | ||
1309 | return (ahd_print_register(LQOMODE1_parse_table, 5, "LQOMODE1", | ||
1310 | 0x55, regvalue, cur_col, wrap)); | ||
1311 | } | ||
1312 | |||
1313 | static ahd_reg_parse_entry_t LQOSTAT2_parse_table[] = { | 1313 | static ahd_reg_parse_entry_t LQOSTAT2_parse_table[] = { |
1314 | { "LQOSTOP0", 0x01, 0x01 }, | 1314 | { "LQOSTOP0", 0x01, 0x01 }, |
1315 | { "LQOPHACHGOUTPKT", 0x02, 0x02 }, | 1315 | { "LQOPHACHGOUTPKT", 0x02, 0x02 }, |
@@ -1594,6 +1594,13 @@ ahd_annexcol_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1594 | 0x65, regvalue, cur_col, wrap)); | 1594 | 0x65, regvalue, cur_col, wrap)); |
1595 | } | 1595 | } |
1596 | 1596 | ||
1597 | int | ||
1598 | ahd_annexdat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1599 | { | ||
1600 | return (ahd_print_register(NULL, 0, "ANNEXDAT", | ||
1601 | 0x66, regvalue, cur_col, wrap)); | ||
1602 | } | ||
1603 | |||
1597 | static ahd_reg_parse_entry_t SCSCHKN_parse_table[] = { | 1604 | static ahd_reg_parse_entry_t SCSCHKN_parse_table[] = { |
1598 | { "LSTSGCLRDIS", 0x01, 0x01 }, | 1605 | { "LSTSGCLRDIS", 0x01, 0x01 }, |
1599 | { "SHVALIDSTDIS", 0x02, 0x02 }, | 1606 | { "SHVALIDSTDIS", 0x02, 0x02 }, |
@@ -1612,13 +1619,6 @@ ahd_scschkn_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1612 | } | 1619 | } |
1613 | 1620 | ||
1614 | int | 1621 | int |
1615 | ahd_annexdat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1616 | { | ||
1617 | return (ahd_print_register(NULL, 0, "ANNEXDAT", | ||
1618 | 0x66, regvalue, cur_col, wrap)); | ||
1619 | } | ||
1620 | |||
1621 | int | ||
1622 | ahd_iownid_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1622 | ahd_iownid_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1623 | { | 1623 | { |
1624 | return (ahd_print_register(NULL, 0, "IOWNID", | 1624 | return (ahd_print_register(NULL, 0, "IOWNID", |
@@ -1728,16 +1728,16 @@ ahd_pll400ctl1_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1728 | } | 1728 | } |
1729 | 1729 | ||
1730 | int | 1730 | int |
1731 | ahd_pll400cnt0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1731 | ahd_unfairness_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1732 | { | 1732 | { |
1733 | return (ahd_print_register(NULL, 0, "PLL400CNT0", | 1733 | return (ahd_print_register(NULL, 0, "UNFAIRNESS", |
1734 | 0x6e, regvalue, cur_col, wrap)); | 1734 | 0x6e, regvalue, cur_col, wrap)); |
1735 | } | 1735 | } |
1736 | 1736 | ||
1737 | int | 1737 | int |
1738 | ahd_unfairness_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1738 | ahd_pll400cnt0_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1739 | { | 1739 | { |
1740 | return (ahd_print_register(NULL, 0, "UNFAIRNESS", | 1740 | return (ahd_print_register(NULL, 0, "PLL400CNT0", |
1741 | 0x6e, regvalue, cur_col, wrap)); | 1741 | 0x6e, regvalue, cur_col, wrap)); |
1742 | } | 1742 | } |
1743 | 1743 | ||
@@ -1788,30 +1788,30 @@ ahd_hodmaen_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1788 | } | 1788 | } |
1789 | 1789 | ||
1790 | int | 1790 | int |
1791 | ahd_sghaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1791 | ahd_scbhaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1792 | { | 1792 | { |
1793 | return (ahd_print_register(NULL, 0, "SGHADDR", | 1793 | return (ahd_print_register(NULL, 0, "SCBHADDR", |
1794 | 0x7c, regvalue, cur_col, wrap)); | 1794 | 0x7c, regvalue, cur_col, wrap)); |
1795 | } | 1795 | } |
1796 | 1796 | ||
1797 | int | 1797 | int |
1798 | ahd_scbhaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1798 | ahd_sghaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1799 | { | 1799 | { |
1800 | return (ahd_print_register(NULL, 0, "SCBHADDR", | 1800 | return (ahd_print_register(NULL, 0, "SGHADDR", |
1801 | 0x7c, regvalue, cur_col, wrap)); | 1801 | 0x7c, regvalue, cur_col, wrap)); |
1802 | } | 1802 | } |
1803 | 1803 | ||
1804 | int | 1804 | int |
1805 | ahd_sghcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1805 | ahd_scbhcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1806 | { | 1806 | { |
1807 | return (ahd_print_register(NULL, 0, "SGHCNT", | 1807 | return (ahd_print_register(NULL, 0, "SCBHCNT", |
1808 | 0x84, regvalue, cur_col, wrap)); | 1808 | 0x84, regvalue, cur_col, wrap)); |
1809 | } | 1809 | } |
1810 | 1810 | ||
1811 | int | 1811 | int |
1812 | ahd_scbhcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1812 | ahd_sghcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1813 | { | 1813 | { |
1814 | return (ahd_print_register(NULL, 0, "SCBHCNT", | 1814 | return (ahd_print_register(NULL, 0, "SGHCNT", |
1815 | 0x84, regvalue, cur_col, wrap)); | 1815 | 0x84, regvalue, cur_col, wrap)); |
1816 | } | 1816 | } |
1817 | 1817 | ||
@@ -1950,25 +1950,25 @@ ahd_nsenable_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1950 | 0x91, regvalue, cur_col, wrap)); | 1950 | 0x91, regvalue, cur_col, wrap)); |
1951 | } | 1951 | } |
1952 | 1952 | ||
1953 | static ahd_reg_parse_entry_t DCHRXMSG1_parse_table[] = { | 1953 | static ahd_reg_parse_entry_t CMCRXMSG1_parse_table[] = { |
1954 | { "CBNUM", 0xff, 0xff } | 1954 | { "CBNUM", 0xff, 0xff } |
1955 | }; | 1955 | }; |
1956 | 1956 | ||
1957 | int | 1957 | int |
1958 | ahd_dchrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1958 | ahd_cmcrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1959 | { | 1959 | { |
1960 | return (ahd_print_register(DCHRXMSG1_parse_table, 1, "DCHRXMSG1", | 1960 | return (ahd_print_register(CMCRXMSG1_parse_table, 1, "CMCRXMSG1", |
1961 | 0x91, regvalue, cur_col, wrap)); | 1961 | 0x91, regvalue, cur_col, wrap)); |
1962 | } | 1962 | } |
1963 | 1963 | ||
1964 | static ahd_reg_parse_entry_t CMCRXMSG1_parse_table[] = { | 1964 | static ahd_reg_parse_entry_t DCHRXMSG1_parse_table[] = { |
1965 | { "CBNUM", 0xff, 0xff } | 1965 | { "CBNUM", 0xff, 0xff } |
1966 | }; | 1966 | }; |
1967 | 1967 | ||
1968 | int | 1968 | int |
1969 | ahd_cmcrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1969 | ahd_dchrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1970 | { | 1970 | { |
1971 | return (ahd_print_register(CMCRXMSG1_parse_table, 1, "CMCRXMSG1", | 1971 | return (ahd_print_register(DCHRXMSG1_parse_table, 1, "DCHRXMSG1", |
1972 | 0x91, regvalue, cur_col, wrap)); | 1972 | 0x91, regvalue, cur_col, wrap)); |
1973 | } | 1973 | } |
1974 | 1974 | ||
@@ -1983,17 +1983,6 @@ ahd_dchrxmsg2_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1983 | 0x92, regvalue, cur_col, wrap)); | 1983 | 0x92, regvalue, cur_col, wrap)); |
1984 | } | 1984 | } |
1985 | 1985 | ||
1986 | static ahd_reg_parse_entry_t OVLYRXMSG2_parse_table[] = { | ||
1987 | { "MINDEX", 0xff, 0xff } | ||
1988 | }; | ||
1989 | |||
1990 | int | ||
1991 | ahd_ovlyrxmsg2_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1992 | { | ||
1993 | return (ahd_print_register(OVLYRXMSG2_parse_table, 1, "OVLYRXMSG2", | ||
1994 | 0x92, regvalue, cur_col, wrap)); | ||
1995 | } | ||
1996 | |||
1997 | static ahd_reg_parse_entry_t CMCRXMSG2_parse_table[] = { | 1986 | static ahd_reg_parse_entry_t CMCRXMSG2_parse_table[] = { |
1998 | { "MINDEX", 0xff, 0xff } | 1987 | { "MINDEX", 0xff, 0xff } |
1999 | }; | 1988 | }; |
@@ -2012,6 +2001,17 @@ ahd_ost_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2012 | 0x92, regvalue, cur_col, wrap)); | 2001 | 0x92, regvalue, cur_col, wrap)); |
2013 | } | 2002 | } |
2014 | 2003 | ||
2004 | static ahd_reg_parse_entry_t OVLYRXMSG2_parse_table[] = { | ||
2005 | { "MINDEX", 0xff, 0xff } | ||
2006 | }; | ||
2007 | |||
2008 | int | ||
2009 | ahd_ovlyrxmsg2_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2010 | { | ||
2011 | return (ahd_print_register(OVLYRXMSG2_parse_table, 1, "OVLYRXMSG2", | ||
2012 | 0x92, regvalue, cur_col, wrap)); | ||
2013 | } | ||
2014 | |||
2015 | static ahd_reg_parse_entry_t DCHRXMSG3_parse_table[] = { | 2015 | static ahd_reg_parse_entry_t DCHRXMSG3_parse_table[] = { |
2016 | { "MCLASS", 0x0f, 0x0f } | 2016 | { "MCLASS", 0x0f, 0x0f } |
2017 | }; | 2017 | }; |
@@ -2023,6 +2023,17 @@ ahd_dchrxmsg3_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2023 | 0x93, regvalue, cur_col, wrap)); | 2023 | 0x93, regvalue, cur_col, wrap)); |
2024 | } | 2024 | } |
2025 | 2025 | ||
2026 | static ahd_reg_parse_entry_t OVLYRXMSG3_parse_table[] = { | ||
2027 | { "MCLASS", 0x0f, 0x0f } | ||
2028 | }; | ||
2029 | |||
2030 | int | ||
2031 | ahd_ovlyrxmsg3_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2032 | { | ||
2033 | return (ahd_print_register(OVLYRXMSG3_parse_table, 1, "OVLYRXMSG3", | ||
2034 | 0x93, regvalue, cur_col, wrap)); | ||
2035 | } | ||
2036 | |||
2026 | static ahd_reg_parse_entry_t CMCRXMSG3_parse_table[] = { | 2037 | static ahd_reg_parse_entry_t CMCRXMSG3_parse_table[] = { |
2027 | { "MCLASS", 0x0f, 0x0f } | 2038 | { "MCLASS", 0x0f, 0x0f } |
2028 | }; | 2039 | }; |
@@ -2051,17 +2062,6 @@ ahd_pcixctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2051 | 0x93, regvalue, cur_col, wrap)); | 2062 | 0x93, regvalue, cur_col, wrap)); |
2052 | } | 2063 | } |
2053 | 2064 | ||
2054 | static ahd_reg_parse_entry_t OVLYRXMSG3_parse_table[] = { | ||
2055 | { "MCLASS", 0x0f, 0x0f } | ||
2056 | }; | ||
2057 | |||
2058 | int | ||
2059 | ahd_ovlyrxmsg3_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2060 | { | ||
2061 | return (ahd_print_register(OVLYRXMSG3_parse_table, 1, "OVLYRXMSG3", | ||
2062 | 0x93, regvalue, cur_col, wrap)); | ||
2063 | } | ||
2064 | |||
2065 | int | 2065 | int |
2066 | ahd_ovlyseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2066 | ahd_ovlyseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2067 | { | 2067 | { |
@@ -2070,16 +2070,16 @@ ahd_ovlyseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2070 | } | 2070 | } |
2071 | 2071 | ||
2072 | int | 2072 | int |
2073 | ahd_cmcseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2073 | ahd_dchseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2074 | { | 2074 | { |
2075 | return (ahd_print_register(NULL, 0, "CMCSEQBCNT", | 2075 | return (ahd_print_register(NULL, 0, "DCHSEQBCNT", |
2076 | 0x94, regvalue, cur_col, wrap)); | 2076 | 0x94, regvalue, cur_col, wrap)); |
2077 | } | 2077 | } |
2078 | 2078 | ||
2079 | int | 2079 | int |
2080 | ahd_dchseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2080 | ahd_cmcseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2081 | { | 2081 | { |
2082 | return (ahd_print_register(NULL, 0, "DCHSEQBCNT", | 2082 | return (ahd_print_register(NULL, 0, "CMCSEQBCNT", |
2083 | 0x94, regvalue, cur_col, wrap)); | 2083 | 0x94, regvalue, cur_col, wrap)); |
2084 | } | 2084 | } |
2085 | 2085 | ||
@@ -2101,7 +2101,7 @@ ahd_cmcspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2101 | 0x96, regvalue, cur_col, wrap)); | 2101 | 0x96, regvalue, cur_col, wrap)); |
2102 | } | 2102 | } |
2103 | 2103 | ||
2104 | static ahd_reg_parse_entry_t OVLYSPLTSTAT0_parse_table[] = { | 2104 | static ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = { |
2105 | { "RXSPLTRSP", 0x01, 0x01 }, | 2105 | { "RXSPLTRSP", 0x01, 0x01 }, |
2106 | { "RXSCEMSG", 0x02, 0x02 }, | 2106 | { "RXSCEMSG", 0x02, 0x02 }, |
2107 | { "RXOVRUN", 0x04, 0x04 }, | 2107 | { "RXOVRUN", 0x04, 0x04 }, |
@@ -2113,13 +2113,13 @@ static ahd_reg_parse_entry_t OVLYSPLTSTAT0_parse_table[] = { | |||
2113 | }; | 2113 | }; |
2114 | 2114 | ||
2115 | int | 2115 | int |
2116 | ahd_ovlyspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2116 | ahd_dchspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2117 | { | 2117 | { |
2118 | return (ahd_print_register(OVLYSPLTSTAT0_parse_table, 8, "OVLYSPLTSTAT0", | 2118 | return (ahd_print_register(DCHSPLTSTAT0_parse_table, 8, "DCHSPLTSTAT0", |
2119 | 0x96, regvalue, cur_col, wrap)); | 2119 | 0x96, regvalue, cur_col, wrap)); |
2120 | } | 2120 | } |
2121 | 2121 | ||
2122 | static ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = { | 2122 | static ahd_reg_parse_entry_t OVLYSPLTSTAT0_parse_table[] = { |
2123 | { "RXSPLTRSP", 0x01, 0x01 }, | 2123 | { "RXSPLTRSP", 0x01, 0x01 }, |
2124 | { "RXSCEMSG", 0x02, 0x02 }, | 2124 | { "RXSCEMSG", 0x02, 0x02 }, |
2125 | { "RXOVRUN", 0x04, 0x04 }, | 2125 | { "RXOVRUN", 0x04, 0x04 }, |
@@ -2131,42 +2131,42 @@ static ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = { | |||
2131 | }; | 2131 | }; |
2132 | 2132 | ||
2133 | int | 2133 | int |
2134 | ahd_dchspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2134 | ahd_ovlyspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2135 | { | 2135 | { |
2136 | return (ahd_print_register(DCHSPLTSTAT0_parse_table, 8, "DCHSPLTSTAT0", | 2136 | return (ahd_print_register(OVLYSPLTSTAT0_parse_table, 8, "OVLYSPLTSTAT0", |
2137 | 0x96, regvalue, cur_col, wrap)); | 2137 | 0x96, regvalue, cur_col, wrap)); |
2138 | } | 2138 | } |
2139 | 2139 | ||
2140 | static ahd_reg_parse_entry_t DCHSPLTSTAT1_parse_table[] = { | 2140 | static ahd_reg_parse_entry_t CMCSPLTSTAT1_parse_table[] = { |
2141 | { "RXDATABUCKET", 0x01, 0x01 } | 2141 | { "RXDATABUCKET", 0x01, 0x01 } |
2142 | }; | 2142 | }; |
2143 | 2143 | ||
2144 | int | 2144 | int |
2145 | ahd_dchspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2145 | ahd_cmcspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2146 | { | 2146 | { |
2147 | return (ahd_print_register(DCHSPLTSTAT1_parse_table, 1, "DCHSPLTSTAT1", | 2147 | return (ahd_print_register(CMCSPLTSTAT1_parse_table, 1, "CMCSPLTSTAT1", |
2148 | 0x97, regvalue, cur_col, wrap)); | 2148 | 0x97, regvalue, cur_col, wrap)); |
2149 | } | 2149 | } |
2150 | 2150 | ||
2151 | static ahd_reg_parse_entry_t CMCSPLTSTAT1_parse_table[] = { | 2151 | static ahd_reg_parse_entry_t OVLYSPLTSTAT1_parse_table[] = { |
2152 | { "RXDATABUCKET", 0x01, 0x01 } | 2152 | { "RXDATABUCKET", 0x01, 0x01 } |
2153 | }; | 2153 | }; |
2154 | 2154 | ||
2155 | int | 2155 | int |
2156 | ahd_cmcspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2156 | ahd_ovlyspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2157 | { | 2157 | { |
2158 | return (ahd_print_register(CMCSPLTSTAT1_parse_table, 1, "CMCSPLTSTAT1", | 2158 | return (ahd_print_register(OVLYSPLTSTAT1_parse_table, 1, "OVLYSPLTSTAT1", |
2159 | 0x97, regvalue, cur_col, wrap)); | 2159 | 0x97, regvalue, cur_col, wrap)); |
2160 | } | 2160 | } |
2161 | 2161 | ||
2162 | static ahd_reg_parse_entry_t OVLYSPLTSTAT1_parse_table[] = { | 2162 | static ahd_reg_parse_entry_t DCHSPLTSTAT1_parse_table[] = { |
2163 | { "RXDATABUCKET", 0x01, 0x01 } | 2163 | { "RXDATABUCKET", 0x01, 0x01 } |
2164 | }; | 2164 | }; |
2165 | 2165 | ||
2166 | int | 2166 | int |
2167 | ahd_ovlyspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2167 | ahd_dchspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2168 | { | 2168 | { |
2169 | return (ahd_print_register(OVLYSPLTSTAT1_parse_table, 1, "OVLYSPLTSTAT1", | 2169 | return (ahd_print_register(DCHSPLTSTAT1_parse_table, 1, "DCHSPLTSTAT1", |
2170 | 0x97, regvalue, cur_col, wrap)); | 2170 | 0x97, regvalue, cur_col, wrap)); |
2171 | } | 2171 | } |
2172 | 2172 | ||
@@ -2320,26 +2320,26 @@ ahd_sgspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2320 | 0x9e, regvalue, cur_col, wrap)); | 2320 | 0x9e, regvalue, cur_col, wrap)); |
2321 | } | 2321 | } |
2322 | 2322 | ||
2323 | static ahd_reg_parse_entry_t SFUNCT_parse_table[] = { | 2323 | static ahd_reg_parse_entry_t SGSPLTSTAT1_parse_table[] = { |
2324 | { "TEST_NUM", 0x0f, 0x0f }, | 2324 | { "RXDATABUCKET", 0x01, 0x01 } |
2325 | { "TEST_GROUP", 0xf0, 0xf0 } | ||
2326 | }; | 2325 | }; |
2327 | 2326 | ||
2328 | int | 2327 | int |
2329 | ahd_sfunct_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2328 | ahd_sgspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2330 | { | 2329 | { |
2331 | return (ahd_print_register(SFUNCT_parse_table, 2, "SFUNCT", | 2330 | return (ahd_print_register(SGSPLTSTAT1_parse_table, 1, "SGSPLTSTAT1", |
2332 | 0x9f, regvalue, cur_col, wrap)); | 2331 | 0x9f, regvalue, cur_col, wrap)); |
2333 | } | 2332 | } |
2334 | 2333 | ||
2335 | static ahd_reg_parse_entry_t SGSPLTSTAT1_parse_table[] = { | 2334 | static ahd_reg_parse_entry_t SFUNCT_parse_table[] = { |
2336 | { "RXDATABUCKET", 0x01, 0x01 } | 2335 | { "TEST_NUM", 0x0f, 0x0f }, |
2336 | { "TEST_GROUP", 0xf0, 0xf0 } | ||
2337 | }; | 2337 | }; |
2338 | 2338 | ||
2339 | int | 2339 | int |
2340 | ahd_sgspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2340 | ahd_sfunct_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2341 | { | 2341 | { |
2342 | return (ahd_print_register(SGSPLTSTAT1_parse_table, 1, "SGSPLTSTAT1", | 2342 | return (ahd_print_register(SFUNCT_parse_table, 2, "SFUNCT", |
2343 | 0x9f, regvalue, cur_col, wrap)); | 2343 | 0x9f, regvalue, cur_col, wrap)); |
2344 | } | 2344 | } |
2345 | 2345 | ||
@@ -2537,16 +2537,16 @@ ahd_ccsgaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2537 | } | 2537 | } |
2538 | 2538 | ||
2539 | int | 2539 | int |
2540 | ahd_ccscbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2540 | ahd_ccscbadr_bk_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2541 | { | 2541 | { |
2542 | return (ahd_print_register(NULL, 0, "CCSCBADDR", | 2542 | return (ahd_print_register(NULL, 0, "CCSCBADR_BK", |
2543 | 0xac, regvalue, cur_col, wrap)); | 2543 | 0xac, regvalue, cur_col, wrap)); |
2544 | } | 2544 | } |
2545 | 2545 | ||
2546 | int | 2546 | int |
2547 | ahd_ccscbadr_bk_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2547 | ahd_ccscbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2548 | { | 2548 | { |
2549 | return (ahd_print_register(NULL, 0, "CCSCBADR_BK", | 2549 | return (ahd_print_register(NULL, 0, "CCSCBADDR", |
2550 | 0xac, regvalue, cur_col, wrap)); | 2550 | 0xac, regvalue, cur_col, wrap)); |
2551 | } | 2551 | } |
2552 | 2552 | ||
@@ -2566,22 +2566,6 @@ ahd_cmc_rambist_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2566 | 0xad, regvalue, cur_col, wrap)); | 2566 | 0xad, regvalue, cur_col, wrap)); |
2567 | } | 2567 | } |
2568 | 2568 | ||
2569 | static ahd_reg_parse_entry_t CCSGCTL_parse_table[] = { | ||
2570 | { "CCSGRESET", 0x01, 0x01 }, | ||
2571 | { "SG_FETCH_REQ", 0x02, 0x02 }, | ||
2572 | { "CCSGENACK", 0x08, 0x08 }, | ||
2573 | { "SG_CACHE_AVAIL", 0x10, 0x10 }, | ||
2574 | { "CCSGDONE", 0x80, 0x80 }, | ||
2575 | { "CCSGEN", 0x0c, 0x0c } | ||
2576 | }; | ||
2577 | |||
2578 | int | ||
2579 | ahd_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2580 | { | ||
2581 | return (ahd_print_register(CCSGCTL_parse_table, 6, "CCSGCTL", | ||
2582 | 0xad, regvalue, cur_col, wrap)); | ||
2583 | } | ||
2584 | |||
2585 | static ahd_reg_parse_entry_t CCSCBCTL_parse_table[] = { | 2569 | static ahd_reg_parse_entry_t CCSCBCTL_parse_table[] = { |
2586 | { "CCSCBRESET", 0x01, 0x01 }, | 2570 | { "CCSCBRESET", 0x01, 0x01 }, |
2587 | { "CCSCBDIR", 0x04, 0x04 }, | 2571 | { "CCSCBDIR", 0x04, 0x04 }, |
@@ -2598,6 +2582,22 @@ ahd_ccscbctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2598 | 0xad, regvalue, cur_col, wrap)); | 2582 | 0xad, regvalue, cur_col, wrap)); |
2599 | } | 2583 | } |
2600 | 2584 | ||
2585 | static ahd_reg_parse_entry_t CCSGCTL_parse_table[] = { | ||
2586 | { "CCSGRESET", 0x01, 0x01 }, | ||
2587 | { "SG_FETCH_REQ", 0x02, 0x02 }, | ||
2588 | { "CCSGENACK", 0x08, 0x08 }, | ||
2589 | { "SG_CACHE_AVAIL", 0x10, 0x10 }, | ||
2590 | { "CCSGDONE", 0x80, 0x80 }, | ||
2591 | { "CCSGEN", 0x0c, 0x0c } | ||
2592 | }; | ||
2593 | |||
2594 | int | ||
2595 | ahd_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2596 | { | ||
2597 | return (ahd_print_register(CCSGCTL_parse_table, 6, "CCSGCTL", | ||
2598 | 0xad, regvalue, cur_col, wrap)); | ||
2599 | } | ||
2600 | |||
2601 | int | 2601 | int |
2602 | ahd_ccsgram_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2602 | ahd_ccsgram_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2603 | { | 2603 | { |
@@ -2841,30 +2841,30 @@ ahd_wrtbiascalc_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2841 | } | 2841 | } |
2842 | 2842 | ||
2843 | int | 2843 | int |
2844 | ahd_dfptrs_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2844 | ahd_rcvrbiascalc_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2845 | { | 2845 | { |
2846 | return (ahd_print_register(NULL, 0, "DFPTRS", | 2846 | return (ahd_print_register(NULL, 0, "RCVRBIASCALC", |
2847 | 0xc8, regvalue, cur_col, wrap)); | 2847 | 0xc8, regvalue, cur_col, wrap)); |
2848 | } | 2848 | } |
2849 | 2849 | ||
2850 | int | 2850 | int |
2851 | ahd_rcvrbiascalc_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2851 | ahd_dfptrs_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2852 | { | 2852 | { |
2853 | return (ahd_print_register(NULL, 0, "RCVRBIASCALC", | 2853 | return (ahd_print_register(NULL, 0, "DFPTRS", |
2854 | 0xc8, regvalue, cur_col, wrap)); | 2854 | 0xc8, regvalue, cur_col, wrap)); |
2855 | } | 2855 | } |
2856 | 2856 | ||
2857 | int | 2857 | int |
2858 | ahd_dfbkptr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2858 | ahd_skewcalc_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2859 | { | 2859 | { |
2860 | return (ahd_print_register(NULL, 0, "DFBKPTR", | 2860 | return (ahd_print_register(NULL, 0, "SKEWCALC", |
2861 | 0xc9, regvalue, cur_col, wrap)); | 2861 | 0xc9, regvalue, cur_col, wrap)); |
2862 | } | 2862 | } |
2863 | 2863 | ||
2864 | int | 2864 | int |
2865 | ahd_skewcalc_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2865 | ahd_dfbkptr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2866 | { | 2866 | { |
2867 | return (ahd_print_register(NULL, 0, "SKEWCALC", | 2867 | return (ahd_print_register(NULL, 0, "DFBKPTR", |
2868 | 0xc9, regvalue, cur_col, wrap)); | 2868 | 0xc9, regvalue, cur_col, wrap)); |
2869 | } | 2869 | } |
2870 | 2870 | ||
@@ -3001,6 +3001,13 @@ ahd_dindex_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3001 | 0xe4, regvalue, cur_col, wrap)); | 3001 | 0xe4, regvalue, cur_col, wrap)); |
3002 | } | 3002 | } |
3003 | 3003 | ||
3004 | int | ||
3005 | ahd_brkaddr0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3006 | { | ||
3007 | return (ahd_print_register(NULL, 0, "BRKADDR0", | ||
3008 | 0xe6, regvalue, cur_col, wrap)); | ||
3009 | } | ||
3010 | |||
3004 | static ahd_reg_parse_entry_t BRKADDR1_parse_table[] = { | 3011 | static ahd_reg_parse_entry_t BRKADDR1_parse_table[] = { |
3005 | { "BRKDIS", 0x80, 0x80 } | 3012 | { "BRKDIS", 0x80, 0x80 } |
3006 | }; | 3013 | }; |
@@ -3013,13 +3020,6 @@ ahd_brkaddr1_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3013 | } | 3020 | } |
3014 | 3021 | ||
3015 | int | 3022 | int |
3016 | ahd_brkaddr0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3017 | { | ||
3018 | return (ahd_print_register(NULL, 0, "BRKADDR0", | ||
3019 | 0xe6, regvalue, cur_col, wrap)); | ||
3020 | } | ||
3021 | |||
3022 | int | ||
3023 | ahd_allones_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3023 | ahd_allones_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3024 | { | 3024 | { |
3025 | return (ahd_print_register(NULL, 0, "ALLONES", | 3025 | return (ahd_print_register(NULL, 0, "ALLONES", |
@@ -3069,30 +3069,30 @@ ahd_stack_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3069 | } | 3069 | } |
3070 | 3070 | ||
3071 | int | 3071 | int |
3072 | ahd_curaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3072 | ahd_intvec1_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3073 | { | 3073 | { |
3074 | return (ahd_print_register(NULL, 0, "CURADDR", | 3074 | return (ahd_print_register(NULL, 0, "INTVEC1_ADDR", |
3075 | 0xf4, regvalue, cur_col, wrap)); | 3075 | 0xf4, regvalue, cur_col, wrap)); |
3076 | } | 3076 | } |
3077 | 3077 | ||
3078 | int | 3078 | int |
3079 | ahd_intvec1_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3079 | ahd_curaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3080 | { | 3080 | { |
3081 | return (ahd_print_register(NULL, 0, "INTVEC1_ADDR", | 3081 | return (ahd_print_register(NULL, 0, "CURADDR", |
3082 | 0xf4, regvalue, cur_col, wrap)); | 3082 | 0xf4, regvalue, cur_col, wrap)); |
3083 | } | 3083 | } |
3084 | 3084 | ||
3085 | int | 3085 | int |
3086 | ahd_intvec2_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3086 | ahd_lastaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3087 | { | 3087 | { |
3088 | return (ahd_print_register(NULL, 0, "INTVEC2_ADDR", | 3088 | return (ahd_print_register(NULL, 0, "LASTADDR", |
3089 | 0xf6, regvalue, cur_col, wrap)); | 3089 | 0xf6, regvalue, cur_col, wrap)); |
3090 | } | 3090 | } |
3091 | 3091 | ||
3092 | int | 3092 | int |
3093 | ahd_lastaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3093 | ahd_intvec2_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3094 | { | 3094 | { |
3095 | return (ahd_print_register(NULL, 0, "LASTADDR", | 3095 | return (ahd_print_register(NULL, 0, "INTVEC2_ADDR", |
3096 | 0xf6, regvalue, cur_col, wrap)); | 3096 | 0xf6, regvalue, cur_col, wrap)); |
3097 | } | 3097 | } |
3098 | 3098 | ||
@@ -3174,24 +3174,45 @@ ahd_complete_dma_scb_head_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3174 | } | 3174 | } |
3175 | 3175 | ||
3176 | int | 3176 | int |
3177 | ahd_complete_dma_scb_tail_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3178 | { | ||
3179 | return (ahd_print_register(NULL, 0, "COMPLETE_DMA_SCB_TAIL", | ||
3180 | 0x12e, regvalue, cur_col, wrap)); | ||
3181 | } | ||
3182 | |||
3183 | int | ||
3184 | ahd_complete_on_qfreeze_head_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3185 | { | ||
3186 | return (ahd_print_register(NULL, 0, "COMPLETE_ON_QFREEZE_HEAD", | ||
3187 | 0x130, regvalue, cur_col, wrap)); | ||
3188 | } | ||
3189 | |||
3190 | int | ||
3177 | ahd_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3191 | ahd_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3178 | { | 3192 | { |
3179 | return (ahd_print_register(NULL, 0, "QFREEZE_COUNT", | 3193 | return (ahd_print_register(NULL, 0, "QFREEZE_COUNT", |
3180 | 0x12e, regvalue, cur_col, wrap)); | 3194 | 0x132, regvalue, cur_col, wrap)); |
3195 | } | ||
3196 | |||
3197 | int | ||
3198 | ahd_kernel_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3199 | { | ||
3200 | return (ahd_print_register(NULL, 0, "KERNEL_QFREEZE_COUNT", | ||
3201 | 0x134, regvalue, cur_col, wrap)); | ||
3181 | } | 3202 | } |
3182 | 3203 | ||
3183 | int | 3204 | int |
3184 | ahd_saved_mode_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3205 | ahd_saved_mode_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3185 | { | 3206 | { |
3186 | return (ahd_print_register(NULL, 0, "SAVED_MODE", | 3207 | return (ahd_print_register(NULL, 0, "SAVED_MODE", |
3187 | 0x130, regvalue, cur_col, wrap)); | 3208 | 0x136, regvalue, cur_col, wrap)); |
3188 | } | 3209 | } |
3189 | 3210 | ||
3190 | int | 3211 | int |
3191 | ahd_msg_out_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3212 | ahd_msg_out_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3192 | { | 3213 | { |
3193 | return (ahd_print_register(NULL, 0, "MSG_OUT", | 3214 | return (ahd_print_register(NULL, 0, "MSG_OUT", |
3194 | 0x131, regvalue, cur_col, wrap)); | 3215 | 0x137, regvalue, cur_col, wrap)); |
3195 | } | 3216 | } |
3196 | 3217 | ||
3197 | static ahd_reg_parse_entry_t DMAPARAMS_parse_table[] = { | 3218 | static ahd_reg_parse_entry_t DMAPARAMS_parse_table[] = { |
@@ -3211,7 +3232,7 @@ int | |||
3211 | ahd_dmaparams_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3232 | ahd_dmaparams_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3212 | { | 3233 | { |
3213 | return (ahd_print_register(DMAPARAMS_parse_table, 10, "DMAPARAMS", | 3234 | return (ahd_print_register(DMAPARAMS_parse_table, 10, "DMAPARAMS", |
3214 | 0x132, regvalue, cur_col, wrap)); | 3235 | 0x138, regvalue, cur_col, wrap)); |
3215 | } | 3236 | } |
3216 | 3237 | ||
3217 | static ahd_reg_parse_entry_t SEQ_FLAGS_parse_table[] = { | 3238 | static ahd_reg_parse_entry_t SEQ_FLAGS_parse_table[] = { |
@@ -3230,21 +3251,21 @@ int | |||
3230 | ahd_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3251 | ahd_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3231 | { | 3252 | { |
3232 | return (ahd_print_register(SEQ_FLAGS_parse_table, 9, "SEQ_FLAGS", | 3253 | return (ahd_print_register(SEQ_FLAGS_parse_table, 9, "SEQ_FLAGS", |
3233 | 0x133, regvalue, cur_col, wrap)); | 3254 | 0x139, regvalue, cur_col, wrap)); |
3234 | } | 3255 | } |
3235 | 3256 | ||
3236 | int | 3257 | int |
3237 | ahd_saved_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3258 | ahd_saved_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3238 | { | 3259 | { |
3239 | return (ahd_print_register(NULL, 0, "SAVED_SCSIID", | 3260 | return (ahd_print_register(NULL, 0, "SAVED_SCSIID", |
3240 | 0x134, regvalue, cur_col, wrap)); | 3261 | 0x13a, regvalue, cur_col, wrap)); |
3241 | } | 3262 | } |
3242 | 3263 | ||
3243 | int | 3264 | int |
3244 | ahd_saved_lun_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3265 | ahd_saved_lun_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3245 | { | 3266 | { |
3246 | return (ahd_print_register(NULL, 0, "SAVED_LUN", | 3267 | return (ahd_print_register(NULL, 0, "SAVED_LUN", |
3247 | 0x135, regvalue, cur_col, wrap)); | 3268 | 0x13b, regvalue, cur_col, wrap)); |
3248 | } | 3269 | } |
3249 | 3270 | ||
3250 | static ahd_reg_parse_entry_t LASTPHASE_parse_table[] = { | 3271 | static ahd_reg_parse_entry_t LASTPHASE_parse_table[] = { |
@@ -3267,42 +3288,42 @@ int | |||
3267 | ahd_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3288 | ahd_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3268 | { | 3289 | { |
3269 | return (ahd_print_register(LASTPHASE_parse_table, 13, "LASTPHASE", | 3290 | return (ahd_print_register(LASTPHASE_parse_table, 13, "LASTPHASE", |
3270 | 0x136, regvalue, cur_col, wrap)); | 3291 | 0x13c, regvalue, cur_col, wrap)); |
3271 | } | 3292 | } |
3272 | 3293 | ||
3273 | int | 3294 | int |
3274 | ahd_qoutfifo_entry_valid_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3295 | ahd_qoutfifo_entry_valid_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3275 | { | 3296 | { |
3276 | return (ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", | 3297 | return (ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", |
3277 | 0x137, regvalue, cur_col, wrap)); | 3298 | 0x13d, regvalue, cur_col, wrap)); |
3278 | } | 3299 | } |
3279 | 3300 | ||
3280 | int | 3301 | int |
3281 | ahd_shared_data_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3302 | ahd_kernel_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3282 | { | 3303 | { |
3283 | return (ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", | 3304 | return (ahd_print_register(NULL, 0, "KERNEL_TQINPOS", |
3284 | 0x138, regvalue, cur_col, wrap)); | 3305 | 0x13e, regvalue, cur_col, wrap)); |
3285 | } | 3306 | } |
3286 | 3307 | ||
3287 | int | 3308 | int |
3288 | ahd_qoutfifo_next_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3309 | ahd_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3289 | { | 3310 | { |
3290 | return (ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", | 3311 | return (ahd_print_register(NULL, 0, "TQINPOS", |
3291 | 0x13c, regvalue, cur_col, wrap)); | 3312 | 0x13f, regvalue, cur_col, wrap)); |
3292 | } | 3313 | } |
3293 | 3314 | ||
3294 | int | 3315 | int |
3295 | ahd_kernel_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3316 | ahd_shared_data_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3296 | { | 3317 | { |
3297 | return (ahd_print_register(NULL, 0, "KERNEL_TQINPOS", | 3318 | return (ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", |
3298 | 0x140, regvalue, cur_col, wrap)); | 3319 | 0x140, regvalue, cur_col, wrap)); |
3299 | } | 3320 | } |
3300 | 3321 | ||
3301 | int | 3322 | int |
3302 | ahd_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3323 | ahd_qoutfifo_next_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3303 | { | 3324 | { |
3304 | return (ahd_print_register(NULL, 0, "TQINPOS", | 3325 | return (ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", |
3305 | 0x141, regvalue, cur_col, wrap)); | 3326 | 0x144, regvalue, cur_col, wrap)); |
3306 | } | 3327 | } |
3307 | 3328 | ||
3308 | static ahd_reg_parse_entry_t ARG_1_parse_table[] = { | 3329 | static ahd_reg_parse_entry_t ARG_1_parse_table[] = { |
@@ -3320,21 +3341,21 @@ int | |||
3320 | ahd_arg_1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3341 | ahd_arg_1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3321 | { | 3342 | { |
3322 | return (ahd_print_register(ARG_1_parse_table, 8, "ARG_1", | 3343 | return (ahd_print_register(ARG_1_parse_table, 8, "ARG_1", |
3323 | 0x142, regvalue, cur_col, wrap)); | 3344 | 0x148, regvalue, cur_col, wrap)); |
3324 | } | 3345 | } |
3325 | 3346 | ||
3326 | int | 3347 | int |
3327 | ahd_arg_2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3348 | ahd_arg_2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3328 | { | 3349 | { |
3329 | return (ahd_print_register(NULL, 0, "ARG_2", | 3350 | return (ahd_print_register(NULL, 0, "ARG_2", |
3330 | 0x143, regvalue, cur_col, wrap)); | 3351 | 0x149, regvalue, cur_col, wrap)); |
3331 | } | 3352 | } |
3332 | 3353 | ||
3333 | int | 3354 | int |
3334 | ahd_last_msg_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3355 | ahd_last_msg_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3335 | { | 3356 | { |
3336 | return (ahd_print_register(NULL, 0, "LAST_MSG", | 3357 | return (ahd_print_register(NULL, 0, "LAST_MSG", |
3337 | 0x144, regvalue, cur_col, wrap)); | 3358 | 0x14a, regvalue, cur_col, wrap)); |
3338 | } | 3359 | } |
3339 | 3360 | ||
3340 | static ahd_reg_parse_entry_t SCSISEQ_TEMPLATE_parse_table[] = { | 3361 | static ahd_reg_parse_entry_t SCSISEQ_TEMPLATE_parse_table[] = { |
@@ -3350,14 +3371,14 @@ int | |||
3350 | ahd_scsiseq_template_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3371 | ahd_scsiseq_template_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3351 | { | 3372 | { |
3352 | return (ahd_print_register(SCSISEQ_TEMPLATE_parse_table, 6, "SCSISEQ_TEMPLATE", | 3373 | return (ahd_print_register(SCSISEQ_TEMPLATE_parse_table, 6, "SCSISEQ_TEMPLATE", |
3353 | 0x145, regvalue, cur_col, wrap)); | 3374 | 0x14b, regvalue, cur_col, wrap)); |
3354 | } | 3375 | } |
3355 | 3376 | ||
3356 | int | 3377 | int |
3357 | ahd_initiator_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3378 | ahd_initiator_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3358 | { | 3379 | { |
3359 | return (ahd_print_register(NULL, 0, "INITIATOR_TAG", | 3380 | return (ahd_print_register(NULL, 0, "INITIATOR_TAG", |
3360 | 0x146, regvalue, cur_col, wrap)); | 3381 | 0x14c, regvalue, cur_col, wrap)); |
3361 | } | 3382 | } |
3362 | 3383 | ||
3363 | static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { | 3384 | static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { |
@@ -3369,63 +3390,63 @@ int | |||
3369 | ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3390 | ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3370 | { | 3391 | { |
3371 | return (ahd_print_register(SEQ_FLAGS2_parse_table, 2, "SEQ_FLAGS2", | 3392 | return (ahd_print_register(SEQ_FLAGS2_parse_table, 2, "SEQ_FLAGS2", |
3372 | 0x147, regvalue, cur_col, wrap)); | 3393 | 0x14d, regvalue, cur_col, wrap)); |
3373 | } | 3394 | } |
3374 | 3395 | ||
3375 | int | 3396 | int |
3376 | ahd_allocfifo_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3397 | ahd_allocfifo_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3377 | { | 3398 | { |
3378 | return (ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", | 3399 | return (ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", |
3379 | 0x148, regvalue, cur_col, wrap)); | 3400 | 0x14e, regvalue, cur_col, wrap)); |
3380 | } | 3401 | } |
3381 | 3402 | ||
3382 | int | 3403 | int |
3383 | ahd_int_coalescing_timer_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3404 | ahd_int_coalescing_timer_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3384 | { | 3405 | { |
3385 | return (ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", | 3406 | return (ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", |
3386 | 0x14a, regvalue, cur_col, wrap)); | 3407 | 0x150, regvalue, cur_col, wrap)); |
3387 | } | 3408 | } |
3388 | 3409 | ||
3389 | int | 3410 | int |
3390 | ahd_int_coalescing_maxcmds_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3411 | ahd_int_coalescing_maxcmds_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3391 | { | 3412 | { |
3392 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", | 3413 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", |
3393 | 0x14c, regvalue, cur_col, wrap)); | 3414 | 0x152, regvalue, cur_col, wrap)); |
3394 | } | 3415 | } |
3395 | 3416 | ||
3396 | int | 3417 | int |
3397 | ahd_int_coalescing_mincmds_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3418 | ahd_int_coalescing_mincmds_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3398 | { | 3419 | { |
3399 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", | 3420 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", |
3400 | 0x14d, regvalue, cur_col, wrap)); | 3421 | 0x153, regvalue, cur_col, wrap)); |
3401 | } | 3422 | } |
3402 | 3423 | ||
3403 | int | 3424 | int |
3404 | ahd_cmds_pending_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3425 | ahd_cmds_pending_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3405 | { | 3426 | { |
3406 | return (ahd_print_register(NULL, 0, "CMDS_PENDING", | 3427 | return (ahd_print_register(NULL, 0, "CMDS_PENDING", |
3407 | 0x14e, regvalue, cur_col, wrap)); | 3428 | 0x154, regvalue, cur_col, wrap)); |
3408 | } | 3429 | } |
3409 | 3430 | ||
3410 | int | 3431 | int |
3411 | ahd_int_coalescing_cmdcount_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3432 | ahd_int_coalescing_cmdcount_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3412 | { | 3433 | { |
3413 | return (ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", | 3434 | return (ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", |
3414 | 0x150, regvalue, cur_col, wrap)); | 3435 | 0x156, regvalue, cur_col, wrap)); |
3415 | } | 3436 | } |
3416 | 3437 | ||
3417 | int | 3438 | int |
3418 | ahd_local_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3439 | ahd_local_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3419 | { | 3440 | { |
3420 | return (ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", | 3441 | return (ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", |
3421 | 0x151, regvalue, cur_col, wrap)); | 3442 | 0x157, regvalue, cur_col, wrap)); |
3422 | } | 3443 | } |
3423 | 3444 | ||
3424 | int | 3445 | int |
3425 | ahd_cmdsize_table_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3446 | ahd_cmdsize_table_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3426 | { | 3447 | { |
3427 | return (ahd_print_register(NULL, 0, "CMDSIZE_TABLE", | 3448 | return (ahd_print_register(NULL, 0, "CMDSIZE_TABLE", |
3428 | 0x152, regvalue, cur_col, wrap)); | 3449 | 0x158, regvalue, cur_col, wrap)); |
3429 | } | 3450 | } |
3430 | 3451 | ||
3431 | int | 3452 | int |
diff --git a/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped b/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped index 77c471f934e0..b1e5365be230 100644 --- a/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped | |||
@@ -2,215 +2,228 @@ | |||
2 | * DO NOT EDIT - This file is automatically generated | 2 | * DO NOT EDIT - This file is automatically generated |
3 | * from the following source files: | 3 | * from the following source files: |
4 | * | 4 | * |
5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#94 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ |
7 | */ | 7 | */ |
8 | static uint8_t seqprog[] = { | 8 | static uint8_t seqprog[] = { |
9 | 0xff, 0x02, 0x06, 0x78, | 9 | 0xff, 0x02, 0x06, 0x78, |
10 | 0x00, 0xea, 0x50, 0x59, | 10 | 0x00, 0xea, 0x64, 0x59, |
11 | 0x01, 0xea, 0x04, 0x30, | 11 | 0x01, 0xea, 0x04, 0x30, |
12 | 0xff, 0x04, 0x0c, 0x78, | 12 | 0xff, 0x04, 0x0c, 0x78, |
13 | 0x19, 0xea, 0x50, 0x59, | 13 | 0x19, 0xea, 0x64, 0x59, |
14 | 0x19, 0xea, 0x04, 0x00, | 14 | 0x19, 0xea, 0x04, 0x00, |
15 | 0x33, 0xea, 0x44, 0x59, | 15 | 0x33, 0xea, 0x5e, 0x59, |
16 | 0x33, 0xea, 0x00, 0x00, | 16 | 0x33, 0xea, 0x00, 0x00, |
17 | 0x60, 0x3a, 0x1a, 0x68, | 17 | 0x60, 0x3a, 0x3a, 0x68, |
18 | 0x04, 0x47, 0x1b, 0x68, | 18 | 0x04, 0x4d, 0x35, 0x78, |
19 | 0xff, 0x21, 0x1b, 0x70, | 19 | 0x01, 0x34, 0xc1, 0x31, |
20 | 0x40, 0x4b, 0x92, 0x69, | 20 | 0x00, 0x32, 0x21, 0x60, |
21 | 0x00, 0xe2, 0x54, 0x59, | 21 | 0x01, 0x35, 0xc1, 0x31, |
22 | 0x40, 0x4b, 0x92, 0x69, | 22 | 0x00, 0x33, 0x21, 0x60, |
23 | 0x20, 0x4b, 0x82, 0x69, | 23 | 0xfb, 0x4d, 0x9b, 0x0a, |
24 | 0xfc, 0x42, 0x24, 0x78, | 24 | 0x00, 0xe2, 0x34, 0x40, |
25 | 0x10, 0x40, 0x24, 0x78, | 25 | 0x50, 0x4b, 0x3a, 0x68, |
26 | 0x00, 0xe2, 0xc4, 0x5d, | 26 | 0xff, 0x31, 0x3b, 0x70, |
27 | 0x20, 0x4d, 0x28, 0x78, | 27 | 0x02, 0x30, 0x51, 0x31, |
28 | 0x00, 0xe2, 0xc4, 0x5d, | 28 | 0xff, 0x8d, 0x2d, 0x70, |
29 | 0x02, 0x8c, 0x51, 0x31, | ||
30 | 0xff, 0x8d, 0x29, 0x60, | ||
31 | 0x02, 0x28, 0x19, 0x33, | ||
32 | 0x02, 0x30, 0x51, 0x32, | ||
33 | 0xff, 0xea, 0x62, 0x02, | ||
34 | 0x00, 0xe2, 0x3a, 0x40, | ||
35 | 0xff, 0x21, 0x3b, 0x70, | ||
36 | 0x40, 0x4b, 0xaa, 0x69, | ||
37 | 0x00, 0xe2, 0x68, 0x59, | ||
38 | 0x40, 0x4b, 0xaa, 0x69, | ||
39 | 0x20, 0x4b, 0x96, 0x69, | ||
40 | 0xfc, 0x42, 0x44, 0x78, | ||
41 | 0x10, 0x40, 0x44, 0x78, | ||
42 | 0x00, 0xe2, 0xfc, 0x5d, | ||
43 | 0x20, 0x4d, 0x48, 0x78, | ||
44 | 0x00, 0xe2, 0xfc, 0x5d, | ||
29 | 0x30, 0x3f, 0xc0, 0x09, | 45 | 0x30, 0x3f, 0xc0, 0x09, |
30 | 0x30, 0xe0, 0x30, 0x60, | 46 | 0x30, 0xe0, 0x50, 0x60, |
31 | 0x7f, 0x4a, 0x94, 0x08, | 47 | 0x7f, 0x4a, 0x94, 0x08, |
32 | 0x00, 0xe2, 0x32, 0x40, | 48 | 0x00, 0xe2, 0x52, 0x40, |
33 | 0xc0, 0x4a, 0x94, 0x00, | 49 | 0xc0, 0x4a, 0x94, 0x00, |
34 | 0x00, 0xe2, 0x3e, 0x58, | 50 | 0x00, 0xe2, 0x5e, 0x58, |
35 | 0x00, 0xe2, 0x56, 0x58, | 51 | 0x00, 0xe2, 0x76, 0x58, |
36 | 0x00, 0xe2, 0x66, 0x58, | 52 | 0x00, 0xe2, 0x86, 0x58, |
37 | 0x00, 0xe2, 0x06, 0x40, | 53 | 0x00, 0xe2, 0x06, 0x40, |
38 | 0x33, 0xea, 0x44, 0x59, | 54 | 0x33, 0xea, 0x5e, 0x59, |
39 | 0x33, 0xea, 0x00, 0x00, | 55 | 0x33, 0xea, 0x00, 0x00, |
40 | 0x01, 0x52, 0x64, 0x78, | 56 | 0x01, 0x52, 0x84, 0x78, |
41 | 0x02, 0x58, 0x50, 0x31, | 57 | 0x02, 0x58, 0x50, 0x31, |
42 | 0xff, 0xea, 0x10, 0x0b, | 58 | 0xff, 0xea, 0x10, 0x0b, |
43 | 0xff, 0x97, 0x4f, 0x78, | 59 | 0xff, 0x97, 0x6f, 0x78, |
44 | 0x50, 0x4b, 0x4a, 0x68, | 60 | 0x50, 0x4b, 0x6a, 0x68, |
45 | 0xbf, 0x3a, 0x74, 0x08, | 61 | 0xbf, 0x3a, 0x74, 0x08, |
46 | 0x14, 0xea, 0x50, 0x59, | 62 | 0x14, 0xea, 0x64, 0x59, |
47 | 0x14, 0xea, 0x04, 0x00, | 63 | 0x14, 0xea, 0x04, 0x00, |
48 | 0x08, 0x92, 0x25, 0x03, | 64 | 0x08, 0x92, 0x25, 0x03, |
49 | 0xff, 0x90, 0x3f, 0x68, | 65 | 0xff, 0x90, 0x5f, 0x68, |
50 | 0x00, 0xe2, 0x56, 0x5b, | 66 | 0x00, 0xe2, 0x76, 0x5b, |
51 | 0x00, 0xe2, 0x3e, 0x40, | 67 | 0x00, 0xe2, 0x5e, 0x40, |
52 | 0x00, 0xea, 0x44, 0x59, | 68 | 0x00, 0xea, 0x5e, 0x59, |
53 | 0x01, 0xea, 0x00, 0x30, | 69 | 0x01, 0xea, 0x00, 0x30, |
54 | 0x80, 0xf9, 0x5e, 0x68, | 70 | 0x80, 0xf9, 0x7e, 0x68, |
55 | 0x00, 0xe2, 0x42, 0x59, | 71 | 0x00, 0xe2, 0x5c, 0x59, |
56 | 0x11, 0xea, 0x44, 0x59, | 72 | 0x11, 0xea, 0x5e, 0x59, |
57 | 0x11, 0xea, 0x00, 0x00, | 73 | 0x11, 0xea, 0x00, 0x00, |
58 | 0x80, 0xf9, 0x42, 0x79, | 74 | 0x80, 0xf9, 0x5c, 0x79, |
59 | 0xff, 0xea, 0xd4, 0x0d, | 75 | 0xff, 0xea, 0xd4, 0x0d, |
60 | 0x22, 0xea, 0x44, 0x59, | 76 | 0x22, 0xea, 0x5e, 0x59, |
61 | 0x22, 0xea, 0x00, 0x00, | 77 | 0x22, 0xea, 0x00, 0x00, |
62 | 0x10, 0x16, 0x70, 0x78, | 78 | 0x10, 0x16, 0x90, 0x78, |
63 | 0x01, 0x0b, 0xa2, 0x32, | ||
64 | 0x10, 0x16, 0x2c, 0x00, | 79 | 0x10, 0x16, 0x2c, 0x00, |
65 | 0x18, 0xad, 0x00, 0x79, | 80 | 0x01, 0x0b, 0xae, 0x32, |
66 | 0x04, 0xad, 0xca, 0x68, | 81 | 0x18, 0xad, 0x12, 0x79, |
67 | 0x80, 0xad, 0x64, 0x78, | 82 | 0x04, 0xad, 0xdc, 0x68, |
68 | 0x10, 0xad, 0x98, 0x78, | 83 | 0x80, 0xad, 0x84, 0x78, |
69 | 0xff, 0x88, 0x83, 0x68, | 84 | 0x10, 0xad, 0xaa, 0x78, |
70 | 0xe7, 0xad, 0x5a, 0x09, | 85 | 0xe7, 0xad, 0x5a, 0x09, |
71 | 0x02, 0x8c, 0x59, 0x32, | 86 | 0x02, 0x8c, 0x59, 0x32, |
87 | 0xff, 0x8d, 0xa1, 0x60, | ||
88 | 0xff, 0xea, 0x5e, 0x02, | ||
89 | 0xff, 0x88, 0xa7, 0x78, | ||
90 | 0x02, 0x30, 0x19, 0x33, | ||
91 | 0x02, 0xa8, 0x60, 0x36, | ||
72 | 0x02, 0x28, 0x19, 0x33, | 92 | 0x02, 0x28, 0x19, 0x33, |
73 | 0x02, 0xa8, 0x50, 0x36, | 93 | 0x02, 0xa8, 0x50, 0x36, |
74 | 0x33, 0xea, 0x44, 0x59, | ||
75 | 0x33, 0xea, 0x00, 0x00, | ||
76 | 0x40, 0x3a, 0x64, 0x68, | ||
77 | 0x50, 0x4b, 0x64, 0x68, | ||
78 | 0x22, 0xea, 0x44, 0x59, | ||
79 | 0x22, 0xea, 0x00, 0x00, | ||
80 | 0xe7, 0xad, 0x5a, 0x09, | ||
81 | 0x02, 0x8c, 0x59, 0x32, | ||
82 | 0x1a, 0xea, 0x50, 0x59, | ||
83 | 0x1a, 0xea, 0x04, 0x00, | ||
84 | 0xff, 0xea, 0xd4, 0x0d, | ||
85 | 0xe7, 0xad, 0x5a, 0x09, | 94 | 0xe7, 0xad, 0x5a, 0x09, |
86 | 0x00, 0xe2, 0xa6, 0x58, | 95 | 0x00, 0xe2, 0xb8, 0x58, |
87 | 0xff, 0xea, 0x56, 0x02, | 96 | 0xff, 0xea, 0x56, 0x02, |
88 | 0x04, 0x7c, 0x78, 0x32, | 97 | 0x04, 0x7c, 0x88, 0x32, |
89 | 0x20, 0x16, 0x64, 0x78, | 98 | 0x20, 0x16, 0x84, 0x78, |
90 | 0x04, 0x38, 0x79, 0x32, | 99 | 0x04, 0x40, 0x89, 0x32, |
91 | 0x80, 0x37, 0x6f, 0x16, | 100 | 0x80, 0x3d, 0x7b, 0x16, |
92 | 0xff, 0x2d, 0xb5, 0x60, | 101 | 0xff, 0x2d, 0xc7, 0x60, |
93 | 0xff, 0x29, 0xb5, 0x60, | 102 | 0xff, 0x29, 0xc7, 0x60, |
94 | 0x40, 0x51, 0xc5, 0x78, | 103 | 0x40, 0x57, 0xd7, 0x78, |
95 | 0xff, 0x4f, 0xb5, 0x68, | 104 | 0xff, 0x55, 0xc7, 0x68, |
96 | 0xff, 0x4d, 0xc1, 0x19, | 105 | 0xff, 0x53, 0xc1, 0x19, |
97 | 0x00, 0x4e, 0xd5, 0x19, | 106 | 0x00, 0x54, 0xd5, 0x19, |
98 | 0x00, 0xe2, 0xc4, 0x50, | 107 | 0x00, 0xe2, 0xd6, 0x50, |
99 | 0x01, 0x4c, 0xc1, 0x31, | 108 | 0x01, 0x52, 0xc1, 0x31, |
100 | 0x00, 0x50, 0xd5, 0x19, | 109 | 0x00, 0x56, 0xd5, 0x19, |
101 | 0x00, 0xe2, 0xc4, 0x48, | 110 | 0x00, 0xe2, 0xd6, 0x48, |
102 | 0x80, 0x18, 0x64, 0x78, | 111 | 0x80, 0x18, 0x84, 0x78, |
103 | 0x02, 0x4a, 0x1d, 0x30, | 112 | 0x02, 0x50, 0x1d, 0x30, |
104 | 0x10, 0xea, 0x18, 0x00, | 113 | 0x10, 0xea, 0x18, 0x00, |
105 | 0x60, 0x18, 0x30, 0x00, | 114 | 0x60, 0x18, 0x30, 0x00, |
106 | 0x7f, 0x18, 0x30, 0x0c, | 115 | 0x7f, 0x18, 0x30, 0x0c, |
107 | 0x02, 0xea, 0x02, 0x00, | 116 | 0x02, 0xea, 0x02, 0x00, |
108 | 0xff, 0xea, 0xa0, 0x0a, | 117 | 0xff, 0xea, 0xac, 0x0a, |
109 | 0x80, 0x18, 0x30, 0x04, | 118 | 0x80, 0x18, 0x30, 0x04, |
110 | 0x40, 0xad, 0x64, 0x78, | 119 | 0x40, 0xad, 0x84, 0x78, |
111 | 0xe7, 0xad, 0x5a, 0x09, | 120 | 0xe7, 0xad, 0x5a, 0x09, |
112 | 0x02, 0xa8, 0x40, 0x31, | 121 | 0x02, 0xa8, 0x40, 0x31, |
113 | 0xff, 0xea, 0xc0, 0x09, | 122 | 0xff, 0xea, 0xc0, 0x09, |
114 | 0x01, 0x4e, 0x9d, 0x1a, | 123 | 0x01, 0x54, 0xa9, 0x1a, |
115 | 0x00, 0x4f, 0x9f, 0x22, | 124 | 0x00, 0x55, 0xab, 0x22, |
116 | 0x01, 0x94, 0x6d, 0x33, | 125 | 0x01, 0x94, 0x6d, 0x33, |
117 | 0x01, 0xea, 0x20, 0x33, | 126 | 0xff, 0xea, 0x20, 0x0b, |
118 | 0x04, 0xac, 0x49, 0x32, | 127 | 0x04, 0xac, 0x49, 0x32, |
119 | 0xff, 0xea, 0x5a, 0x03, | 128 | 0xff, 0xea, 0x5a, 0x03, |
120 | 0xff, 0xea, 0x5e, 0x03, | 129 | 0xff, 0xea, 0x5e, 0x03, |
121 | 0x01, 0x10, 0xd4, 0x31, | 130 | 0x01, 0x10, 0xd4, 0x31, |
122 | 0x10, 0x92, 0xf5, 0x68, | 131 | 0x10, 0x92, 0x07, 0x69, |
123 | 0x3d, 0x93, 0xc5, 0x29, | 132 | 0x3d, 0x93, 0xc5, 0x29, |
124 | 0xfe, 0xe2, 0xc4, 0x09, | 133 | 0xfe, 0xe2, 0xc4, 0x09, |
125 | 0x01, 0xea, 0xc6, 0x01, | 134 | 0x01, 0xea, 0xc6, 0x01, |
126 | 0x02, 0xe2, 0xc8, 0x31, | 135 | 0x02, 0xe2, 0xc8, 0x31, |
127 | 0x02, 0xec, 0x50, 0x31, | 136 | 0x02, 0xec, 0x50, 0x31, |
128 | 0x02, 0xa0, 0xda, 0x31, | 137 | 0x02, 0xa0, 0xda, 0x31, |
129 | 0xff, 0xa9, 0xf4, 0x70, | 138 | 0xff, 0xa9, 0x06, 0x71, |
130 | 0x02, 0xa0, 0x58, 0x37, | 139 | 0x02, 0xa0, 0x58, 0x37, |
131 | 0xff, 0x21, 0xfd, 0x70, | 140 | 0xff, 0x21, 0x0f, 0x71, |
132 | 0x02, 0x22, 0x51, 0x31, | 141 | 0x02, 0x22, 0x51, 0x31, |
133 | 0x02, 0xa0, 0x5c, 0x33, | 142 | 0x02, 0xa0, 0x5c, 0x33, |
134 | 0x02, 0xa0, 0x44, 0x36, | 143 | 0x02, 0xa0, 0x44, 0x36, |
135 | 0x02, 0xa0, 0x40, 0x32, | 144 | 0x02, 0xa0, 0x40, 0x32, |
136 | 0x02, 0xa0, 0x44, 0x36, | 145 | 0x02, 0xa0, 0x44, 0x36, |
137 | 0x04, 0x47, 0x05, 0x69, | 146 | 0x04, 0x4d, 0x17, 0x69, |
138 | 0x40, 0x16, 0x30, 0x69, | 147 | 0x40, 0x16, 0x48, 0x69, |
139 | 0xff, 0x2d, 0x35, 0x61, | 148 | 0xff, 0x2d, 0x4d, 0x61, |
140 | 0xff, 0x29, 0x65, 0x70, | 149 | 0xff, 0x29, 0x85, 0x70, |
141 | 0x01, 0x37, 0xc1, 0x31, | ||
142 | 0x02, 0x28, 0x55, 0x32, | 150 | 0x02, 0x28, 0x55, 0x32, |
143 | 0x01, 0xea, 0x5a, 0x01, | 151 | 0x01, 0xea, 0x5a, 0x01, |
144 | 0x04, 0x3c, 0xf9, 0x30, | 152 | 0x04, 0x44, 0xf9, 0x30, |
153 | 0x01, 0x44, 0xc1, 0x31, | ||
145 | 0x02, 0x28, 0x51, 0x31, | 154 | 0x02, 0x28, 0x51, 0x31, |
146 | 0x01, 0xa8, 0x60, 0x31, | 155 | 0x02, 0xa8, 0x60, 0x31, |
147 | 0x00, 0xa9, 0x60, 0x01, | 156 | 0x01, 0xa4, 0x61, 0x31, |
157 | 0x01, 0x3d, 0x61, 0x31, | ||
148 | 0x01, 0x14, 0xd4, 0x31, | 158 | 0x01, 0x14, 0xd4, 0x31, |
149 | 0x01, 0x50, 0xa1, 0x1a, | 159 | 0x01, 0x56, 0xad, 0x1a, |
150 | 0xff, 0x4e, 0x9d, 0x1a, | 160 | 0xff, 0x54, 0xa9, 0x1a, |
151 | 0xff, 0x4f, 0x9f, 0x22, | 161 | 0xff, 0x55, 0xab, 0x22, |
152 | 0xff, 0x8d, 0x29, 0x71, | 162 | 0xff, 0x8d, 0x41, 0x71, |
153 | 0x80, 0xac, 0x28, 0x71, | 163 | 0x80, 0xac, 0x40, 0x71, |
154 | 0x20, 0x16, 0x28, 0x69, | 164 | 0x20, 0x16, 0x40, 0x69, |
165 | 0x00, 0xac, 0xc4, 0x19, | ||
166 | 0x07, 0xe2, 0x40, 0xf9, | ||
155 | 0x02, 0x8c, 0x51, 0x31, | 167 | 0x02, 0x8c, 0x51, 0x31, |
156 | 0x00, 0xe2, 0x12, 0x41, | 168 | 0x00, 0xe2, 0x24, 0x41, |
157 | 0x01, 0xac, 0x08, 0x31, | 169 | 0x01, 0xac, 0x08, 0x31, |
158 | 0x09, 0xea, 0x5a, 0x01, | 170 | 0x09, 0xea, 0x5a, 0x01, |
159 | 0x02, 0x8c, 0x51, 0x32, | 171 | 0x02, 0x8c, 0x51, 0x32, |
160 | 0xff, 0xea, 0x1a, 0x07, | 172 | 0xff, 0xea, 0x1a, 0x07, |
161 | 0x04, 0x24, 0xf9, 0x30, | 173 | 0x04, 0x24, 0xf9, 0x30, |
162 | 0x1d, 0xea, 0x3a, 0x41, | 174 | 0x1d, 0xea, 0x52, 0x41, |
163 | 0x02, 0x2c, 0x51, 0x31, | 175 | 0x02, 0x2c, 0x51, 0x31, |
164 | 0x04, 0xa8, 0xf9, 0x30, | 176 | 0x04, 0xa8, 0xf9, 0x30, |
165 | 0x19, 0xea, 0x3a, 0x41, | 177 | 0x19, 0xea, 0x52, 0x41, |
166 | 0x06, 0xea, 0x08, 0x81, | 178 | 0x06, 0xea, 0x08, 0x81, |
167 | 0x01, 0xe2, 0x5a, 0x35, | 179 | 0x01, 0xe2, 0x5a, 0x35, |
168 | 0x02, 0xf2, 0xf0, 0x35, | 180 | 0x02, 0xf2, 0xf0, 0x31, |
181 | 0xff, 0xea, 0xd4, 0x0d, | ||
169 | 0x02, 0xf2, 0xf0, 0x31, | 182 | 0x02, 0xf2, 0xf0, 0x31, |
170 | 0x02, 0xf8, 0xe4, 0x35, | 183 | 0x02, 0xf8, 0xe4, 0x35, |
171 | 0x80, 0xea, 0xb2, 0x01, | 184 | 0x80, 0xea, 0xb2, 0x01, |
172 | 0x01, 0xe2, 0x00, 0x30, | 185 | 0x01, 0xe2, 0x00, 0x30, |
173 | 0xff, 0xea, 0xb2, 0x0d, | 186 | 0xff, 0xea, 0xb2, 0x0d, |
174 | 0x80, 0xea, 0xb2, 0x01, | ||
175 | 0x11, 0x00, 0x00, 0x10, | ||
176 | 0xff, 0xea, 0xb2, 0x0d, | ||
177 | 0x01, 0xe2, 0x04, 0x30, | 187 | 0x01, 0xe2, 0x04, 0x30, |
178 | 0x01, 0xea, 0x04, 0x34, | 188 | 0x01, 0xea, 0x04, 0x34, |
179 | 0x02, 0x20, 0xbd, 0x30, | 189 | 0x02, 0x20, 0xbd, 0x30, |
180 | 0x02, 0x20, 0xb9, 0x30, | 190 | 0x02, 0x20, 0xb9, 0x30, |
181 | 0x02, 0x20, 0x51, 0x31, | 191 | 0x02, 0x20, 0x51, 0x31, |
182 | 0x4c, 0x93, 0xd7, 0x28, | 192 | 0x4c, 0x93, 0xd7, 0x28, |
183 | 0x10, 0x92, 0x63, 0x79, | 193 | 0x10, 0x92, 0x77, 0x79, |
184 | 0x01, 0x6b, 0xc0, 0x30, | 194 | 0x01, 0x6b, 0xc0, 0x30, |
185 | 0x02, 0x64, 0xc8, 0x00, | 195 | 0x02, 0x64, 0xc8, 0x00, |
186 | 0x40, 0x3a, 0x74, 0x04, | 196 | 0x40, 0x3a, 0x74, 0x04, |
187 | 0x00, 0xe2, 0x56, 0x58, | 197 | 0x00, 0xe2, 0x76, 0x58, |
188 | 0x33, 0xea, 0x44, 0x59, | 198 | 0x33, 0xea, 0x5e, 0x59, |
189 | 0x33, 0xea, 0x00, 0x00, | 199 | 0x33, 0xea, 0x00, 0x00, |
190 | 0x30, 0x3f, 0xc0, 0x09, | 200 | 0x30, 0x3f, 0xc0, 0x09, |
191 | 0x30, 0xe0, 0x64, 0x61, | 201 | 0x30, 0xe0, 0x78, 0x61, |
192 | 0x20, 0x3f, 0x7a, 0x69, | 202 | 0x20, 0x3f, 0x8e, 0x69, |
193 | 0x10, 0x3f, 0x64, 0x79, | 203 | 0x10, 0x3f, 0x78, 0x79, |
194 | 0x02, 0xea, 0x7e, 0x00, | 204 | 0x02, 0xea, 0x7e, 0x00, |
195 | 0x00, 0xea, 0x44, 0x59, | 205 | 0x00, 0xea, 0x5e, 0x59, |
196 | 0x01, 0xea, 0x00, 0x30, | 206 | 0x01, 0xea, 0x00, 0x30, |
197 | 0x02, 0x48, 0x51, 0x35, | 207 | 0x02, 0x4e, 0x51, 0x35, |
198 | 0x01, 0xea, 0x7e, 0x00, | 208 | 0x01, 0xea, 0x7e, 0x00, |
199 | 0x11, 0xea, 0x44, 0x59, | 209 | 0x11, 0xea, 0x5e, 0x59, |
200 | 0x11, 0xea, 0x00, 0x00, | 210 | 0x11, 0xea, 0x00, 0x00, |
201 | 0x02, 0x48, 0x51, 0x35, | 211 | 0x02, 0x4e, 0x51, 0x35, |
212 | 0xc0, 0x4a, 0x94, 0x00, | ||
213 | 0x04, 0x41, 0x9c, 0x79, | ||
202 | 0x08, 0xea, 0x98, 0x00, | 214 | 0x08, 0xea, 0x98, 0x00, |
203 | 0x08, 0x57, 0xae, 0x00, | 215 | 0x08, 0x57, 0xae, 0x00, |
204 | 0x08, 0x3c, 0x78, 0x00, | 216 | 0x08, 0x3c, 0x78, 0x00, |
205 | 0xf0, 0x49, 0x68, 0x0a, | 217 | 0xf0, 0x49, 0x74, 0x0a, |
206 | 0x0f, 0x67, 0xc0, 0x09, | 218 | 0x0f, 0x67, 0xc0, 0x09, |
207 | 0x00, 0x34, 0x69, 0x02, | 219 | 0x00, 0x3a, 0x75, 0x02, |
208 | 0x20, 0xea, 0x96, 0x00, | 220 | 0x20, 0xea, 0x96, 0x00, |
209 | 0x00, 0xe2, 0xf8, 0x41, | 221 | 0x00, 0xe2, 0x14, 0x42, |
210 | 0x40, 0x3a, 0xae, 0x69, | 222 | 0xc0, 0x4a, 0x94, 0x00, |
223 | 0x40, 0x3a, 0xc8, 0x69, | ||
211 | 0x02, 0x55, 0x06, 0x68, | 224 | 0x02, 0x55, 0x06, 0x68, |
212 | 0x02, 0x56, 0xae, 0x69, | 225 | 0x02, 0x56, 0xc8, 0x69, |
213 | 0xff, 0x5b, 0xae, 0x61, | 226 | 0xff, 0x5b, 0xc8, 0x61, |
214 | 0x02, 0x20, 0x51, 0x31, | 227 | 0x02, 0x20, 0x51, 0x31, |
215 | 0x80, 0xea, 0xb2, 0x01, | 228 | 0x80, 0xea, 0xb2, 0x01, |
216 | 0x44, 0xea, 0x00, 0x00, | 229 | 0x44, 0xea, 0x00, 0x00, |
@@ -218,237 +231,246 @@ static uint8_t seqprog[] = { | |||
218 | 0x33, 0xea, 0x00, 0x00, | 231 | 0x33, 0xea, 0x00, 0x00, |
219 | 0xff, 0xea, 0xb2, 0x09, | 232 | 0xff, 0xea, 0xb2, 0x09, |
220 | 0xff, 0xe0, 0xc0, 0x19, | 233 | 0xff, 0xe0, 0xc0, 0x19, |
221 | 0xff, 0xe0, 0xb0, 0x79, | 234 | 0xff, 0xe0, 0xca, 0x79, |
222 | 0x02, 0xac, 0x51, 0x31, | 235 | 0x02, 0xac, 0x51, 0x31, |
223 | 0x00, 0xe2, 0xa6, 0x41, | 236 | 0x00, 0xe2, 0xc0, 0x41, |
224 | 0x02, 0x5e, 0x50, 0x31, | 237 | 0x02, 0x5e, 0x50, 0x31, |
225 | 0x02, 0xa8, 0xb8, 0x30, | 238 | 0x02, 0xa8, 0xb8, 0x30, |
226 | 0x02, 0x5c, 0x50, 0x31, | 239 | 0x02, 0x5c, 0x50, 0x31, |
227 | 0xff, 0xad, 0xc1, 0x71, | 240 | 0xff, 0xad, 0xdb, 0x71, |
228 | 0x02, 0xac, 0x41, 0x31, | 241 | 0x02, 0xac, 0x41, 0x31, |
229 | 0x02, 0x22, 0x51, 0x31, | 242 | 0x02, 0x22, 0x51, 0x31, |
230 | 0x02, 0xa0, 0x5c, 0x33, | 243 | 0x02, 0xa0, 0x5c, 0x33, |
231 | 0x02, 0xa0, 0x44, 0x32, | 244 | 0x02, 0xa0, 0x44, 0x32, |
232 | 0x00, 0xe2, 0xca, 0x41, | 245 | 0x00, 0xe2, 0xe4, 0x41, |
233 | 0x10, 0x92, 0xcb, 0x69, | 246 | 0x10, 0x92, 0xe5, 0x69, |
234 | 0x3d, 0x93, 0xc9, 0x29, | 247 | 0x3d, 0x93, 0xc9, 0x29, |
235 | 0x01, 0xe4, 0xc8, 0x01, | 248 | 0x01, 0xe4, 0xc8, 0x01, |
236 | 0x01, 0xea, 0xca, 0x01, | 249 | 0x01, 0xea, 0xca, 0x01, |
237 | 0xff, 0xea, 0xda, 0x01, | 250 | 0xff, 0xea, 0xda, 0x01, |
238 | 0x02, 0x20, 0x51, 0x31, | 251 | 0x02, 0x20, 0x51, 0x31, |
239 | 0x02, 0xae, 0x41, 0x32, | 252 | 0x02, 0xae, 0x41, 0x32, |
240 | 0xff, 0x21, 0xd3, 0x61, | 253 | 0xff, 0x21, 0xed, 0x61, |
241 | 0xff, 0xea, 0x46, 0x02, | 254 | 0xff, 0xea, 0x46, 0x02, |
242 | 0x02, 0x5c, 0x50, 0x31, | 255 | 0x02, 0x5c, 0x50, 0x31, |
243 | 0x40, 0xea, 0x96, 0x00, | 256 | 0x40, 0xea, 0x96, 0x00, |
244 | 0x02, 0x56, 0xcc, 0x6d, | 257 | 0x02, 0x56, 0x04, 0x6e, |
245 | 0x01, 0x55, 0xcc, 0x6d, | 258 | 0x01, 0x55, 0x04, 0x6e, |
246 | 0x10, 0x92, 0xdf, 0x79, | 259 | 0x10, 0x92, 0xf9, 0x79, |
247 | 0x10, 0x40, 0xe8, 0x69, | 260 | 0x10, 0x40, 0x02, 0x6a, |
248 | 0x01, 0x56, 0xe8, 0x79, | 261 | 0x01, 0x56, 0x02, 0x7a, |
249 | 0xff, 0x97, 0x07, 0x78, | 262 | 0xff, 0x97, 0x07, 0x78, |
250 | 0x13, 0xea, 0x50, 0x59, | 263 | 0x13, 0xea, 0x64, 0x59, |
251 | 0x13, 0xea, 0x04, 0x00, | 264 | 0x13, 0xea, 0x04, 0x00, |
252 | 0x00, 0xe2, 0x06, 0x40, | 265 | 0x00, 0xe2, 0x06, 0x40, |
253 | 0xbf, 0x3a, 0x74, 0x08, | 266 | 0xbf, 0x3a, 0x74, 0x08, |
267 | 0x04, 0x41, 0x08, 0x7a, | ||
254 | 0x08, 0xea, 0x98, 0x00, | 268 | 0x08, 0xea, 0x98, 0x00, |
255 | 0x08, 0x57, 0xae, 0x00, | 269 | 0x08, 0x57, 0xae, 0x00, |
256 | 0x01, 0x93, 0x69, 0x32, | 270 | 0x01, 0x93, 0x75, 0x32, |
257 | 0x01, 0x94, 0x6b, 0x32, | 271 | 0x01, 0x94, 0x77, 0x32, |
258 | 0x40, 0xea, 0x66, 0x02, | 272 | 0x40, 0xea, 0x72, 0x02, |
259 | 0x08, 0x3c, 0x78, 0x00, | 273 | 0x08, 0x3c, 0x78, 0x00, |
260 | 0x80, 0xea, 0x62, 0x02, | 274 | 0x80, 0xea, 0x6e, 0x02, |
261 | 0x00, 0xe2, 0xb8, 0x5b, | 275 | 0x00, 0xe2, 0xe2, 0x5b, |
262 | 0x01, 0x36, 0xc1, 0x31, | 276 | 0x01, 0x3c, 0xc1, 0x31, |
263 | 0x9f, 0xe0, 0x4c, 0x7c, | 277 | 0x9f, 0xe0, 0x84, 0x7c, |
264 | 0x80, 0xe0, 0x0c, 0x72, | 278 | 0x80, 0xe0, 0x28, 0x72, |
265 | 0xa0, 0xe0, 0x44, 0x72, | 279 | 0xa0, 0xe0, 0x64, 0x72, |
266 | 0xc0, 0xe0, 0x3a, 0x72, | 280 | 0xc0, 0xe0, 0x5a, 0x72, |
267 | 0xe0, 0xe0, 0x74, 0x72, | 281 | 0xe0, 0xe0, 0x94, 0x72, |
268 | 0x01, 0xea, 0x50, 0x59, | 282 | 0x01, 0xea, 0x64, 0x59, |
269 | 0x01, 0xea, 0x04, 0x00, | 283 | 0x01, 0xea, 0x04, 0x00, |
270 | 0x00, 0xe2, 0xf8, 0x41, | 284 | 0x00, 0xe2, 0x14, 0x42, |
271 | 0x80, 0x33, 0x13, 0x7a, | 285 | 0x80, 0x39, 0x2f, 0x7a, |
272 | 0x03, 0xea, 0x50, 0x59, | 286 | 0x03, 0xea, 0x64, 0x59, |
273 | 0x03, 0xea, 0x04, 0x00, | 287 | 0x03, 0xea, 0x04, 0x00, |
274 | 0xee, 0x00, 0x1a, 0x6a, | 288 | 0xee, 0x00, 0x36, 0x6a, |
275 | 0x05, 0xea, 0xb4, 0x00, | 289 | 0x05, 0xea, 0xb4, 0x00, |
276 | 0x33, 0xea, 0x44, 0x59, | 290 | 0x33, 0xea, 0x5e, 0x59, |
277 | 0x33, 0xea, 0x00, 0x00, | 291 | 0x33, 0xea, 0x00, 0x00, |
278 | 0x02, 0xa8, 0x90, 0x32, | 292 | 0x02, 0xa8, 0x9c, 0x32, |
279 | 0x00, 0xe2, 0x6a, 0x59, | 293 | 0x00, 0xe2, 0x7e, 0x59, |
280 | 0xef, 0x96, 0xd5, 0x19, | 294 | 0xef, 0x96, 0xd5, 0x19, |
281 | 0x00, 0xe2, 0x2a, 0x52, | 295 | 0x00, 0xe2, 0x46, 0x52, |
282 | 0x09, 0x80, 0xe1, 0x30, | 296 | 0x09, 0x80, 0xe1, 0x30, |
283 | 0x02, 0xea, 0x36, 0x00, | 297 | 0x02, 0xea, 0x36, 0x00, |
284 | 0xa8, 0xea, 0x32, 0x00, | 298 | 0xa8, 0xea, 0x32, 0x00, |
285 | 0x00, 0xe2, 0x30, 0x42, | 299 | 0x00, 0xe2, 0x4c, 0x42, |
286 | 0x01, 0x96, 0xd1, 0x30, | 300 | 0x01, 0x96, 0xd1, 0x30, |
287 | 0x10, 0x80, 0x89, 0x31, | 301 | 0x10, 0x80, 0x89, 0x31, |
288 | 0x20, 0xea, 0x32, 0x00, | 302 | 0x20, 0xea, 0x32, 0x00, |
289 | 0xbf, 0x33, 0x67, 0x0a, | 303 | 0xbf, 0x39, 0x73, 0x0a, |
290 | 0x20, 0x19, 0x32, 0x6a, | 304 | 0x10, 0x4c, 0x56, 0x6a, |
291 | 0x02, 0x4d, 0xf8, 0x69, | 305 | 0x20, 0x19, 0x4e, 0x6a, |
292 | 0x40, 0x33, 0x67, 0x02, | 306 | 0x20, 0x19, 0x52, 0x6a, |
293 | 0x00, 0xe2, 0xf8, 0x41, | 307 | 0x02, 0x4d, 0x14, 0x6a, |
294 | 0x80, 0x33, 0xb5, 0x6a, | 308 | 0x40, 0x39, 0x73, 0x02, |
309 | 0x00, 0xe2, 0x14, 0x42, | ||
310 | 0x80, 0x39, 0xd5, 0x6a, | ||
295 | 0x01, 0x44, 0x10, 0x33, | 311 | 0x01, 0x44, 0x10, 0x33, |
296 | 0x08, 0x92, 0x25, 0x03, | 312 | 0x08, 0x92, 0x25, 0x03, |
297 | 0x00, 0xe2, 0xf8, 0x41, | 313 | 0x00, 0xe2, 0x14, 0x42, |
298 | 0x10, 0xea, 0x80, 0x00, | 314 | 0x10, 0xea, 0x80, 0x00, |
299 | 0x01, 0x31, 0xc5, 0x31, | 315 | 0x01, 0x37, 0xc5, 0x31, |
300 | 0x80, 0xe2, 0x60, 0x62, | 316 | 0x80, 0xe2, 0x80, 0x62, |
301 | 0x10, 0x92, 0x85, 0x6a, | 317 | 0x10, 0x92, 0xa5, 0x6a, |
302 | 0xc0, 0x94, 0xc5, 0x01, | 318 | 0xc0, 0x94, 0xc5, 0x01, |
303 | 0x40, 0x92, 0x51, 0x6a, | 319 | 0x40, 0x92, 0x71, 0x6a, |
304 | 0xbf, 0xe2, 0xc4, 0x09, | 320 | 0xbf, 0xe2, 0xc4, 0x09, |
305 | 0x20, 0x92, 0x65, 0x7a, | 321 | 0x20, 0x92, 0x85, 0x7a, |
306 | 0x01, 0xe2, 0x88, 0x30, | 322 | 0x01, 0xe2, 0x88, 0x30, |
307 | 0x00, 0xe2, 0xb8, 0x5b, | 323 | 0x00, 0xe2, 0xe2, 0x5b, |
308 | 0xa0, 0x36, 0x6d, 0x62, | 324 | 0xa0, 0x3c, 0x8d, 0x62, |
309 | 0x23, 0x92, 0x89, 0x08, | 325 | 0x23, 0x92, 0x89, 0x08, |
310 | 0x00, 0xe2, 0xb8, 0x5b, | 326 | 0x00, 0xe2, 0xe2, 0x5b, |
311 | 0xa0, 0x36, 0x6d, 0x62, | 327 | 0xa0, 0x3c, 0x8d, 0x62, |
312 | 0x00, 0xa8, 0x64, 0x42, | 328 | 0x00, 0xa8, 0x84, 0x42, |
313 | 0xff, 0xe2, 0x64, 0x62, | 329 | 0xff, 0xe2, 0x84, 0x62, |
314 | 0x00, 0xe2, 0x84, 0x42, | 330 | 0x00, 0xe2, 0xa4, 0x42, |
315 | 0x40, 0xea, 0x98, 0x00, | 331 | 0x40, 0xea, 0x98, 0x00, |
316 | 0x01, 0xe2, 0x88, 0x30, | 332 | 0x01, 0xe2, 0x88, 0x30, |
317 | 0x00, 0xe2, 0xb8, 0x5b, | 333 | 0x00, 0xe2, 0xe2, 0x5b, |
318 | 0xa0, 0x36, 0x43, 0x72, | 334 | 0xa0, 0x3c, 0x63, 0x72, |
319 | 0x40, 0xea, 0x98, 0x00, | 335 | 0x40, 0xea, 0x98, 0x00, |
320 | 0x01, 0x31, 0x89, 0x32, | 336 | 0x01, 0x37, 0x95, 0x32, |
321 | 0x08, 0xea, 0x62, 0x02, | 337 | 0x08, 0xea, 0x6e, 0x02, |
322 | 0x00, 0xe2, 0xf8, 0x41, | 338 | 0x00, 0xe2, 0x14, 0x42, |
323 | 0xe0, 0xea, 0xd4, 0x5b, | 339 | 0xe0, 0xea, 0xfe, 0x5b, |
324 | 0x80, 0xe0, 0xc0, 0x6a, | 340 | 0x80, 0xe0, 0xe0, 0x6a, |
325 | 0x04, 0xe0, 0x66, 0x73, | 341 | 0x04, 0xe0, 0x92, 0x73, |
326 | 0x02, 0xe0, 0x96, 0x73, | 342 | 0x02, 0xe0, 0xc4, 0x73, |
327 | 0x00, 0xea, 0x1e, 0x73, | 343 | 0x00, 0xea, 0x3e, 0x73, |
328 | 0x03, 0xe0, 0xa6, 0x73, | 344 | 0x03, 0xe0, 0xd4, 0x73, |
329 | 0x23, 0xe0, 0x96, 0x72, | 345 | 0x23, 0xe0, 0xb6, 0x72, |
330 | 0x08, 0xe0, 0xbc, 0x72, | 346 | 0x08, 0xe0, 0xdc, 0x72, |
331 | 0x00, 0xe2, 0xb8, 0x5b, | 347 | 0x00, 0xe2, 0xe2, 0x5b, |
332 | 0x07, 0xea, 0x50, 0x59, | 348 | 0x07, 0xea, 0x64, 0x59, |
333 | 0x07, 0xea, 0x04, 0x00, | 349 | 0x07, 0xea, 0x04, 0x00, |
334 | 0x08, 0x42, 0xf9, 0x71, | 350 | 0x08, 0x48, 0x15, 0x72, |
335 | 0x04, 0x42, 0x93, 0x62, | 351 | 0x04, 0x48, 0xb3, 0x62, |
336 | 0x01, 0x43, 0x89, 0x30, | 352 | 0x01, 0x49, 0x89, 0x30, |
337 | 0x00, 0xe2, 0x84, 0x42, | 353 | 0x00, 0xe2, 0xa4, 0x42, |
338 | 0x01, 0x44, 0xd4, 0x31, | 354 | 0x01, 0x44, 0xd4, 0x31, |
339 | 0x00, 0xe2, 0x84, 0x42, | 355 | 0x00, 0xe2, 0xa4, 0x42, |
340 | 0x01, 0x00, 0x60, 0x32, | 356 | 0x01, 0x00, 0x6c, 0x32, |
341 | 0x33, 0xea, 0x44, 0x59, | 357 | 0x33, 0xea, 0x5e, 0x59, |
342 | 0x33, 0xea, 0x00, 0x00, | 358 | 0x33, 0xea, 0x00, 0x00, |
343 | 0x4c, 0x34, 0xc1, 0x28, | 359 | 0x4c, 0x3a, 0xc1, 0x28, |
344 | 0x01, 0x64, 0xc0, 0x31, | 360 | 0x01, 0x64, 0xc0, 0x31, |
345 | 0x00, 0x30, 0x45, 0x59, | 361 | 0x00, 0x36, 0x5f, 0x59, |
346 | 0x01, 0x30, 0x01, 0x30, | 362 | 0x01, 0x36, 0x01, 0x30, |
347 | 0x01, 0xe0, 0xba, 0x7a, | 363 | 0x01, 0xe0, 0xda, 0x7a, |
348 | 0xa0, 0xea, 0xca, 0x5b, | 364 | 0xa0, 0xea, 0xf4, 0x5b, |
349 | 0x01, 0xa0, 0xba, 0x62, | 365 | 0x01, 0xa0, 0xda, 0x62, |
350 | 0x01, 0x84, 0xaf, 0x7a, | 366 | 0x01, 0x84, 0xcf, 0x7a, |
351 | 0x01, 0x95, 0xbd, 0x6a, | 367 | 0x01, 0x95, 0xdd, 0x6a, |
352 | 0x05, 0xea, 0x50, 0x59, | 368 | 0x05, 0xea, 0x64, 0x59, |
353 | 0x05, 0xea, 0x04, 0x00, | 369 | 0x05, 0xea, 0x04, 0x00, |
354 | 0x00, 0xe2, 0xbc, 0x42, | 370 | 0x00, 0xe2, 0xdc, 0x42, |
355 | 0x03, 0xea, 0x50, 0x59, | 371 | 0x03, 0xea, 0x64, 0x59, |
356 | 0x03, 0xea, 0x04, 0x00, | 372 | 0x03, 0xea, 0x04, 0x00, |
357 | 0x00, 0xe2, 0xbc, 0x42, | 373 | 0x00, 0xe2, 0xdc, 0x42, |
358 | 0x07, 0xea, 0xdc, 0x5b, | 374 | 0x07, 0xea, 0x06, 0x5c, |
359 | 0x01, 0x44, 0xd4, 0x31, | 375 | 0x01, 0x44, 0xd4, 0x31, |
360 | 0x00, 0xe2, 0xf8, 0x41, | 376 | 0x00, 0xe2, 0x14, 0x42, |
361 | 0x3f, 0xe0, 0x6a, 0x0a, | 377 | 0x3f, 0xe0, 0x76, 0x0a, |
362 | 0xc0, 0x34, 0xc1, 0x09, | 378 | 0xc0, 0x3a, 0xc1, 0x09, |
363 | 0x00, 0x35, 0x51, 0x01, | 379 | 0x00, 0x3b, 0x51, 0x01, |
364 | 0xff, 0xea, 0x52, 0x09, | 380 | 0xff, 0xea, 0x52, 0x09, |
365 | 0x30, 0x34, 0xc5, 0x09, | 381 | 0x30, 0x3a, 0xc5, 0x09, |
366 | 0x3d, 0xe2, 0xc4, 0x29, | 382 | 0x3d, 0xe2, 0xc4, 0x29, |
367 | 0xb8, 0xe2, 0xc4, 0x19, | 383 | 0xb8, 0xe2, 0xc4, 0x19, |
368 | 0x01, 0xea, 0xc6, 0x01, | 384 | 0x01, 0xea, 0xc6, 0x01, |
369 | 0x02, 0xe2, 0xc8, 0x31, | 385 | 0x02, 0xe2, 0xc8, 0x31, |
370 | 0x02, 0xec, 0x40, 0x31, | 386 | 0x02, 0xec, 0x40, 0x31, |
371 | 0xff, 0xa1, 0xdc, 0x72, | 387 | 0xff, 0xa1, 0xfc, 0x72, |
372 | 0x02, 0xe8, 0xda, 0x31, | 388 | 0x02, 0xe8, 0xda, 0x31, |
373 | 0x02, 0xa0, 0x50, 0x31, | 389 | 0x02, 0xa0, 0x50, 0x31, |
374 | 0x00, 0xe2, 0xfe, 0x42, | 390 | 0x00, 0xe2, 0x1e, 0x43, |
375 | 0x80, 0x33, 0x67, 0x02, | 391 | 0x80, 0x39, 0x73, 0x02, |
376 | 0x01, 0x44, 0xd4, 0x31, | 392 | 0x01, 0x44, 0xd4, 0x31, |
377 | 0x00, 0xe2, 0xb8, 0x5b, | 393 | 0x00, 0xe2, 0xe2, 0x5b, |
378 | 0x01, 0x33, 0x67, 0x02, | 394 | 0x01, 0x39, 0x73, 0x02, |
379 | 0xe0, 0x36, 0x19, 0x63, | 395 | 0xe0, 0x3c, 0x39, 0x63, |
380 | 0x02, 0x33, 0x67, 0x02, | 396 | 0x02, 0x39, 0x73, 0x02, |
381 | 0x20, 0x46, 0x12, 0x63, | 397 | 0x20, 0x46, 0x32, 0x63, |
382 | 0xff, 0xea, 0x52, 0x09, | 398 | 0xff, 0xea, 0x52, 0x09, |
383 | 0xa8, 0xea, 0xca, 0x5b, | 399 | 0xa8, 0xea, 0xf4, 0x5b, |
384 | 0x04, 0x92, 0xf9, 0x7a, | 400 | 0x04, 0x92, 0x19, 0x7b, |
385 | 0x01, 0x34, 0xc1, 0x31, | 401 | 0x01, 0x3a, 0xc1, 0x31, |
386 | 0x00, 0x93, 0xf9, 0x62, | 402 | 0x00, 0x93, 0x19, 0x63, |
387 | 0x01, 0x35, 0xc1, 0x31, | 403 | 0x01, 0x3b, 0xc1, 0x31, |
388 | 0x00, 0x94, 0x03, 0x73, | 404 | 0x00, 0x94, 0x23, 0x73, |
389 | 0x01, 0xa9, 0x52, 0x11, | 405 | 0x01, 0xa9, 0x52, 0x11, |
390 | 0xff, 0xa9, 0xee, 0x6a, | 406 | 0xff, 0xa9, 0x0e, 0x6b, |
391 | 0x00, 0xe2, 0x12, 0x43, | 407 | 0x00, 0xe2, 0x32, 0x43, |
392 | 0x10, 0x33, 0x67, 0x02, | 408 | 0x10, 0x39, 0x73, 0x02, |
393 | 0x04, 0x92, 0x13, 0x7b, | 409 | 0x04, 0x92, 0x33, 0x7b, |
394 | 0xfb, 0x92, 0x25, 0x0b, | 410 | 0xfb, 0x92, 0x25, 0x0b, |
395 | 0xff, 0xea, 0x66, 0x0a, | 411 | 0xff, 0xea, 0x72, 0x0a, |
396 | 0x01, 0xa4, 0x0d, 0x6b, | 412 | 0x01, 0xa4, 0x2d, 0x6b, |
397 | 0x02, 0xa8, 0x90, 0x32, | 413 | 0x02, 0xa8, 0x9c, 0x32, |
398 | 0x00, 0xe2, 0x6a, 0x59, | 414 | 0x00, 0xe2, 0x7e, 0x59, |
399 | 0x10, 0x92, 0xbd, 0x7a, | 415 | 0x10, 0x92, 0xdd, 0x7a, |
400 | 0xff, 0xea, 0xdc, 0x5b, | 416 | 0xff, 0xea, 0x06, 0x5c, |
401 | 0x00, 0xe2, 0xbc, 0x42, | 417 | 0x00, 0xe2, 0xdc, 0x42, |
402 | 0x04, 0xea, 0x50, 0x59, | 418 | 0x04, 0xea, 0x64, 0x59, |
403 | 0x04, 0xea, 0x04, 0x00, | 419 | 0x04, 0xea, 0x04, 0x00, |
404 | 0x00, 0xe2, 0xbc, 0x42, | 420 | 0x00, 0xe2, 0xdc, 0x42, |
405 | 0x04, 0xea, 0x50, 0x59, | 421 | 0x04, 0xea, 0x64, 0x59, |
406 | 0x04, 0xea, 0x04, 0x00, | 422 | 0x04, 0xea, 0x04, 0x00, |
407 | 0x00, 0xe2, 0xf8, 0x41, | 423 | 0x00, 0xe2, 0x14, 0x42, |
408 | 0x08, 0x92, 0xb5, 0x7a, | 424 | 0x08, 0x92, 0xd5, 0x7a, |
409 | 0xc0, 0x33, 0x29, 0x7b, | 425 | 0xc0, 0x39, 0x49, 0x7b, |
410 | 0x80, 0x33, 0xb5, 0x6a, | 426 | 0x80, 0x39, 0xd5, 0x6a, |
411 | 0xff, 0x88, 0x29, 0x6b, | 427 | 0xff, 0x88, 0x49, 0x6b, |
412 | 0x40, 0x33, 0xb5, 0x6a, | 428 | 0x40, 0x39, 0xd5, 0x6a, |
413 | 0x10, 0x92, 0x2f, 0x7b, | 429 | 0x10, 0x92, 0x4f, 0x7b, |
414 | 0x0a, 0xea, 0x50, 0x59, | 430 | 0x0a, 0xea, 0x64, 0x59, |
415 | 0x0a, 0xea, 0x04, 0x00, | 431 | 0x0a, 0xea, 0x04, 0x00, |
416 | 0x00, 0xe2, 0x4e, 0x5b, | 432 | 0x00, 0xe2, 0x6e, 0x5b, |
417 | 0x00, 0xe2, 0x82, 0x43, | 433 | 0x00, 0xe2, 0xae, 0x43, |
418 | 0x50, 0x4b, 0x36, 0x6b, | 434 | 0x50, 0x4b, 0x56, 0x6b, |
419 | 0xbf, 0x3a, 0x74, 0x08, | 435 | 0xbf, 0x3a, 0x74, 0x08, |
420 | 0x01, 0xe0, 0xf4, 0x31, | 436 | 0x01, 0xe0, 0xf4, 0x31, |
421 | 0xff, 0xea, 0xc0, 0x09, | 437 | 0xff, 0xea, 0xc0, 0x09, |
422 | 0x01, 0x2e, 0x5d, 0x1a, | 438 | 0x01, 0x32, 0x65, 0x1a, |
423 | 0x00, 0x2f, 0x5f, 0x22, | 439 | 0x00, 0x33, 0x67, 0x22, |
424 | 0x04, 0x47, 0x8f, 0x02, | 440 | 0x04, 0x4d, 0x9b, 0x02, |
425 | 0x01, 0xfa, 0xc0, 0x35, | 441 | 0x01, 0xfa, 0xc0, 0x35, |
426 | 0x02, 0xa8, 0x84, 0x32, | 442 | 0x02, 0xa8, 0x90, 0x32, |
427 | 0x02, 0xea, 0xb4, 0x00, | 443 | 0x02, 0xea, 0xb4, 0x00, |
428 | 0x33, 0xea, 0x44, 0x59, | 444 | 0x33, 0xea, 0x5e, 0x59, |
429 | 0x33, 0xea, 0x00, 0x00, | 445 | 0x33, 0xea, 0x00, 0x00, |
430 | 0x02, 0x42, 0x51, 0x31, | 446 | 0x02, 0x48, 0x51, 0x31, |
431 | 0xff, 0x90, 0x65, 0x68, | 447 | 0xff, 0x90, 0x85, 0x68, |
432 | 0xff, 0x88, 0x5b, 0x6b, | 448 | 0xff, 0x88, 0x7b, 0x6b, |
433 | 0x01, 0xa4, 0x57, 0x6b, | 449 | 0x01, 0xa4, 0x77, 0x6b, |
434 | 0x02, 0xa4, 0x5f, 0x6b, | 450 | 0x02, 0xa4, 0x7f, 0x6b, |
435 | 0x01, 0x84, 0x5f, 0x7b, | 451 | 0x01, 0x84, 0x7f, 0x7b, |
436 | 0x02, 0x28, 0x19, 0x33, | 452 | 0x02, 0x28, 0x19, 0x33, |
437 | 0x02, 0xa8, 0x50, 0x36, | 453 | 0x02, 0xa8, 0x50, 0x36, |
438 | 0xff, 0x88, 0x5f, 0x73, | 454 | 0xff, 0x88, 0x7f, 0x73, |
439 | 0x00, 0xe2, 0x32, 0x5b, | 455 | 0x00, 0xe2, 0x52, 0x5b, |
440 | 0x02, 0xa8, 0x20, 0x33, | 456 | 0x02, 0xa8, 0x20, 0x33, |
441 | 0x02, 0x2c, 0x19, 0x33, | 457 | 0x04, 0xa4, 0x49, 0x03, |
458 | 0xff, 0xea, 0x1a, 0x03, | ||
459 | 0xff, 0x2d, 0x8b, 0x63, | ||
442 | 0x02, 0xa8, 0x58, 0x32, | 460 | 0x02, 0xa8, 0x58, 0x32, |
443 | 0x04, 0xa4, 0x49, 0x07, | 461 | 0x02, 0xa8, 0x5c, 0x36, |
444 | 0xc0, 0x33, 0xb5, 0x6a, | 462 | 0x02, 0xa8, 0x40, 0x31, |
463 | 0x02, 0x2e, 0x51, 0x31, | ||
464 | 0x02, 0xa0, 0x18, 0x33, | ||
465 | 0x02, 0xa0, 0x5c, 0x36, | ||
466 | 0xc0, 0x39, 0xd5, 0x6a, | ||
445 | 0x04, 0x92, 0x25, 0x03, | 467 | 0x04, 0x92, 0x25, 0x03, |
446 | 0x20, 0x92, 0x83, 0x6b, | 468 | 0x20, 0x92, 0xaf, 0x6b, |
447 | 0x02, 0xa8, 0x40, 0x31, | 469 | 0x02, 0xa8, 0x40, 0x31, |
448 | 0xc0, 0x34, 0xc1, 0x09, | 470 | 0xc0, 0x3a, 0xc1, 0x09, |
449 | 0x00, 0x35, 0x51, 0x01, | 471 | 0x00, 0x3b, 0x51, 0x01, |
450 | 0xff, 0xea, 0x52, 0x09, | 472 | 0xff, 0xea, 0x52, 0x09, |
451 | 0x30, 0x34, 0xc5, 0x09, | 473 | 0x30, 0x3a, 0xc5, 0x09, |
452 | 0x3d, 0xe2, 0xc4, 0x29, | 474 | 0x3d, 0xe2, 0xc4, 0x29, |
453 | 0xb8, 0xe2, 0xc4, 0x19, | 475 | 0xb8, 0xe2, 0xc4, 0x19, |
454 | 0x01, 0xea, 0xc6, 0x01, | 476 | 0x01, 0xea, 0xc6, 0x01, |
@@ -458,69 +480,75 @@ static uint8_t seqprog[] = { | |||
458 | 0xf7, 0x57, 0xae, 0x08, | 480 | 0xf7, 0x57, 0xae, 0x08, |
459 | 0x08, 0xea, 0x98, 0x00, | 481 | 0x08, 0xea, 0x98, 0x00, |
460 | 0x01, 0x44, 0xd4, 0x31, | 482 | 0x01, 0x44, 0xd4, 0x31, |
461 | 0xee, 0x00, 0x8c, 0x6b, | 483 | 0xee, 0x00, 0xb8, 0x6b, |
462 | 0x02, 0xea, 0xb4, 0x00, | 484 | 0x02, 0xea, 0xb4, 0x00, |
463 | 0x00, 0xe2, 0xb4, 0x5b, | 485 | 0xc0, 0xea, 0x72, 0x02, |
464 | 0x09, 0x4c, 0x8e, 0x7b, | 486 | 0x09, 0x4c, 0xba, 0x7b, |
487 | 0x01, 0xea, 0x78, 0x02, | ||
465 | 0x08, 0x4c, 0x06, 0x68, | 488 | 0x08, 0x4c, 0x06, 0x68, |
466 | 0x0b, 0xea, 0x50, 0x59, | 489 | 0x0b, 0xea, 0x64, 0x59, |
467 | 0x0b, 0xea, 0x04, 0x00, | 490 | 0x0b, 0xea, 0x04, 0x00, |
468 | 0x01, 0x44, 0xd4, 0x31, | 491 | 0x01, 0x44, 0xd4, 0x31, |
469 | 0x20, 0x33, 0xf9, 0x79, | 492 | 0x20, 0x39, 0x15, 0x7a, |
470 | 0x00, 0xe2, 0x9e, 0x5b, | 493 | 0x00, 0xe2, 0xcc, 0x5b, |
471 | 0x00, 0xe2, 0xf8, 0x41, | 494 | 0x00, 0xe2, 0x14, 0x42, |
472 | 0x01, 0x84, 0xa3, 0x7b, | 495 | 0x01, 0x84, 0xd1, 0x7b, |
473 | 0x01, 0xa4, 0x49, 0x07, | 496 | 0x01, 0xa4, 0x49, 0x07, |
474 | 0x08, 0x60, 0x30, 0x33, | 497 | 0x08, 0x60, 0x30, 0x33, |
475 | 0x08, 0x80, 0x41, 0x37, | 498 | 0x08, 0x80, 0x41, 0x37, |
476 | 0xdf, 0x33, 0x67, 0x0a, | 499 | 0xdf, 0x39, 0x73, 0x0a, |
477 | 0xee, 0x00, 0xb0, 0x6b, | 500 | 0xee, 0x00, 0xde, 0x6b, |
478 | 0x05, 0xea, 0xb4, 0x00, | 501 | 0x05, 0xea, 0xb4, 0x00, |
479 | 0x33, 0xea, 0x44, 0x59, | 502 | 0x33, 0xea, 0x5e, 0x59, |
480 | 0x33, 0xea, 0x00, 0x00, | 503 | 0x33, 0xea, 0x00, 0x00, |
481 | 0x00, 0xe2, 0x6a, 0x59, | 504 | 0x00, 0xe2, 0x7e, 0x59, |
482 | 0x00, 0xe2, 0xbc, 0x42, | 505 | 0x00, 0xe2, 0xdc, 0x42, |
483 | 0x01, 0xea, 0x6c, 0x02, | 506 | 0xff, 0x42, 0xee, 0x6b, |
484 | 0xc0, 0xea, 0x66, 0x06, | 507 | 0x01, 0x41, 0xe2, 0x6b, |
485 | 0xff, 0x42, 0xc4, 0x6b, | 508 | 0x02, 0x41, 0xe2, 0x7b, |
486 | 0x01, 0x41, 0xb8, 0x6b, | 509 | 0xff, 0x42, 0xee, 0x6b, |
487 | 0x02, 0x41, 0xb8, 0x7b, | 510 | 0x01, 0x41, 0xe2, 0x6b, |
488 | 0xff, 0x42, 0xc4, 0x6b, | 511 | 0x02, 0x41, 0xe2, 0x7b, |
489 | 0x01, 0x41, 0xb8, 0x6b, | 512 | 0xff, 0x42, 0xee, 0x7b, |
490 | 0x02, 0x41, 0xb8, 0x7b, | 513 | 0x04, 0x4c, 0xe2, 0x6b, |
491 | 0xff, 0x42, 0xc4, 0x7b, | 514 | 0xe0, 0x41, 0x78, 0x0e, |
492 | 0x04, 0x4c, 0xb8, 0x6b, | ||
493 | 0xe0, 0x41, 0x6c, 0x0e, | ||
494 | 0x01, 0x44, 0xd4, 0x31, | 515 | 0x01, 0x44, 0xd4, 0x31, |
495 | 0xff, 0x42, 0xcc, 0x7b, | 516 | 0xff, 0x42, 0xf6, 0x7b, |
496 | 0x04, 0x4c, 0xcc, 0x6b, | 517 | 0x04, 0x4c, 0xf6, 0x6b, |
497 | 0xe0, 0x41, 0x6c, 0x0a, | 518 | 0xe0, 0x41, 0x78, 0x0a, |
498 | 0xe0, 0x36, 0xf9, 0x61, | 519 | 0xe0, 0x3c, 0x15, 0x62, |
499 | 0xff, 0xea, 0xca, 0x09, | 520 | 0xff, 0xea, 0xca, 0x09, |
500 | 0x01, 0xe2, 0xc8, 0x31, | 521 | 0x01, 0xe2, 0xc8, 0x31, |
501 | 0x01, 0x46, 0xda, 0x35, | 522 | 0x01, 0x46, 0xda, 0x35, |
502 | 0x01, 0x44, 0xd4, 0x35, | 523 | 0x01, 0x44, 0xd4, 0x35, |
503 | 0x10, 0xea, 0x80, 0x00, | 524 | 0x10, 0xea, 0x80, 0x00, |
504 | 0x01, 0xe2, 0x62, 0x36, | 525 | 0x01, 0xe2, 0x6e, 0x36, |
505 | 0x04, 0xa6, 0xe4, 0x7b, | 526 | 0x04, 0xa6, 0x0e, 0x7c, |
506 | 0xff, 0xea, 0x5a, 0x09, | 527 | 0xff, 0xea, 0x5a, 0x09, |
507 | 0xff, 0xea, 0x4c, 0x0d, | 528 | 0xff, 0xea, 0x4c, 0x0d, |
508 | 0x01, 0xa6, 0x02, 0x6c, | 529 | 0x01, 0xa6, 0x3a, 0x6c, |
509 | 0x10, 0xad, 0x64, 0x78, | 530 | 0x10, 0xad, 0x84, 0x78, |
510 | 0x80, 0xad, 0xfa, 0x6b, | 531 | 0x80, 0xad, 0x32, 0x6c, |
511 | 0x08, 0xad, 0x64, 0x68, | 532 | 0x08, 0xad, 0x84, 0x68, |
533 | 0x20, 0x19, 0x26, 0x7c, | ||
534 | 0x80, 0xea, 0xb2, 0x01, | ||
535 | 0x11, 0x00, 0x00, 0x10, | ||
536 | 0x02, 0xa6, 0x22, 0x7c, | ||
537 | 0xff, 0xea, 0xb2, 0x0d, | ||
538 | 0x11, 0x00, 0x00, 0x10, | ||
539 | 0xff, 0xea, 0xb2, 0x09, | ||
512 | 0x04, 0x84, 0xf9, 0x30, | 540 | 0x04, 0x84, 0xf9, 0x30, |
513 | 0x00, 0xea, 0x08, 0x81, | 541 | 0x00, 0xea, 0x08, 0x81, |
514 | 0xff, 0xea, 0xd4, 0x09, | 542 | 0xff, 0xea, 0xd4, 0x09, |
515 | 0x02, 0x84, 0xf9, 0x88, | 543 | 0x02, 0x84, 0xf9, 0x88, |
516 | 0x0d, 0xea, 0x5a, 0x01, | 544 | 0x0d, 0xea, 0x5a, 0x01, |
517 | 0x04, 0xa6, 0x4c, 0x05, | 545 | 0x04, 0xa6, 0x4c, 0x05, |
518 | 0x04, 0xa6, 0x64, 0x78, | 546 | 0x04, 0xa6, 0x84, 0x78, |
519 | 0xff, 0xea, 0x5a, 0x09, | 547 | 0xff, 0xea, 0x5a, 0x09, |
520 | 0x03, 0x84, 0x59, 0x89, | 548 | 0x03, 0x84, 0x59, 0x89, |
521 | 0x03, 0xea, 0x4c, 0x01, | 549 | 0x03, 0xea, 0x4c, 0x01, |
522 | 0x80, 0x1a, 0x64, 0x78, | 550 | 0x80, 0x1a, 0x84, 0x78, |
523 | 0x08, 0x19, 0x64, 0x78, | 551 | 0x08, 0x19, 0x84, 0x78, |
524 | 0x08, 0xb0, 0xe0, 0x30, | 552 | 0x08, 0xb0, 0xe0, 0x30, |
525 | 0x04, 0xb0, 0xe0, 0x30, | 553 | 0x04, 0xb0, 0xe0, 0x30, |
526 | 0x03, 0xb0, 0xf0, 0x30, | 554 | 0x03, 0xb0, 0xf0, 0x30, |
@@ -533,259 +561,259 @@ static uint8_t seqprog[] = { | |||
533 | 0x00, 0x86, 0x0d, 0x23, | 561 | 0x00, 0x86, 0x0d, 0x23, |
534 | 0x00, 0x87, 0x0f, 0x23, | 562 | 0x00, 0x87, 0x0f, 0x23, |
535 | 0x01, 0x84, 0xc5, 0x31, | 563 | 0x01, 0x84, 0xc5, 0x31, |
536 | 0x80, 0x83, 0x25, 0x7c, | 564 | 0x80, 0x83, 0x5d, 0x7c, |
537 | 0x02, 0xe2, 0xc4, 0x01, | 565 | 0x02, 0xe2, 0xc4, 0x01, |
538 | 0xff, 0xea, 0x4c, 0x09, | 566 | 0xff, 0xea, 0x4c, 0x09, |
539 | 0x01, 0xe2, 0x36, 0x30, | 567 | 0x01, 0xe2, 0x36, 0x30, |
540 | 0xc8, 0x19, 0x32, 0x00, | 568 | 0xc8, 0x19, 0x32, 0x00, |
541 | 0x88, 0x19, 0x32, 0x00, | 569 | 0x88, 0x19, 0x32, 0x00, |
542 | 0x01, 0xac, 0xd4, 0x99, | 570 | 0x01, 0xac, 0xd4, 0x99, |
543 | 0x00, 0xe2, 0x64, 0x50, | 571 | 0x00, 0xe2, 0x84, 0x50, |
544 | 0xfe, 0xa6, 0x4c, 0x0d, | 572 | 0xfe, 0xa6, 0x4c, 0x0d, |
545 | 0x0b, 0x98, 0xe1, 0x30, | 573 | 0x0b, 0x98, 0xe1, 0x30, |
546 | 0xfd, 0xa4, 0x49, 0x09, | 574 | 0xfd, 0xa4, 0x49, 0x09, |
547 | 0x80, 0xa3, 0x39, 0x7c, | 575 | 0x80, 0xa3, 0x71, 0x7c, |
548 | 0x02, 0xa4, 0x48, 0x01, | 576 | 0x02, 0xa4, 0x48, 0x01, |
549 | 0x01, 0xa4, 0x36, 0x30, | 577 | 0x01, 0xa4, 0x36, 0x30, |
550 | 0xa8, 0xea, 0x32, 0x00, | 578 | 0xa8, 0xea, 0x32, 0x00, |
551 | 0xfd, 0xa4, 0x49, 0x0b, | 579 | 0xfd, 0xa4, 0x49, 0x0b, |
552 | 0x05, 0xa3, 0x07, 0x33, | 580 | 0x05, 0xa3, 0x07, 0x33, |
553 | 0x80, 0x83, 0x45, 0x6c, | 581 | 0x80, 0x83, 0x7d, 0x6c, |
554 | 0x02, 0xea, 0x4c, 0x05, | 582 | 0x02, 0xea, 0x4c, 0x05, |
555 | 0xff, 0xea, 0x4c, 0x0d, | 583 | 0xff, 0xea, 0x4c, 0x0d, |
556 | 0x00, 0xe2, 0x3e, 0x59, | 584 | 0x00, 0xe2, 0x56, 0x59, |
557 | 0x02, 0xa6, 0xe6, 0x6b, | 585 | 0x02, 0xa6, 0x10, 0x6c, |
558 | 0x80, 0xf9, 0xf2, 0x05, | 586 | 0x80, 0xf9, 0xf2, 0x05, |
559 | 0xc0, 0x33, 0x53, 0x7c, | 587 | 0xc0, 0x39, 0x8b, 0x7c, |
560 | 0x03, 0xea, 0x50, 0x59, | 588 | 0x03, 0xea, 0x64, 0x59, |
561 | 0x03, 0xea, 0x04, 0x00, | 589 | 0x03, 0xea, 0x04, 0x00, |
562 | 0x20, 0x33, 0x77, 0x7c, | 590 | 0x20, 0x39, 0xaf, 0x7c, |
563 | 0x01, 0x84, 0x5d, 0x6c, | 591 | 0x01, 0x84, 0x95, 0x6c, |
564 | 0x06, 0xea, 0x50, 0x59, | 592 | 0x06, 0xea, 0x64, 0x59, |
565 | 0x06, 0xea, 0x04, 0x00, | 593 | 0x06, 0xea, 0x04, 0x00, |
566 | 0x00, 0xe2, 0x7a, 0x44, | 594 | 0x00, 0xe2, 0xb2, 0x44, |
567 | 0x01, 0x00, 0x60, 0x32, | 595 | 0x01, 0x00, 0x6c, 0x32, |
568 | 0xee, 0x00, 0x66, 0x6c, | 596 | 0xee, 0x00, 0x9e, 0x6c, |
569 | 0x05, 0xea, 0xb4, 0x00, | 597 | 0x05, 0xea, 0xb4, 0x00, |
570 | 0x33, 0xea, 0x44, 0x59, | 598 | 0x33, 0xea, 0x5e, 0x59, |
571 | 0x33, 0xea, 0x00, 0x00, | 599 | 0x33, 0xea, 0x00, 0x00, |
572 | 0x80, 0x3d, 0x7a, 0x00, | 600 | 0x80, 0x3d, 0x7a, 0x00, |
573 | 0xfc, 0x42, 0x68, 0x7c, | 601 | 0xfc, 0x42, 0xa0, 0x7c, |
574 | 0x7f, 0x3d, 0x7a, 0x08, | 602 | 0x7f, 0x3d, 0x7a, 0x08, |
575 | 0x00, 0x30, 0x45, 0x59, | 603 | 0x00, 0x36, 0x5f, 0x59, |
576 | 0x01, 0x30, 0x01, 0x30, | 604 | 0x01, 0x36, 0x01, 0x30, |
577 | 0x09, 0xea, 0x50, 0x59, | 605 | 0x09, 0xea, 0x64, 0x59, |
578 | 0x09, 0xea, 0x04, 0x00, | 606 | 0x09, 0xea, 0x04, 0x00, |
579 | 0x00, 0xe2, 0xf8, 0x41, | 607 | 0x00, 0xe2, 0x14, 0x42, |
580 | 0x01, 0xa4, 0x5d, 0x6c, | 608 | 0x01, 0xa4, 0x95, 0x6c, |
581 | 0x00, 0xe2, 0x30, 0x5c, | 609 | 0x00, 0xe2, 0x68, 0x5c, |
582 | 0x20, 0x33, 0x67, 0x02, | 610 | 0x20, 0x39, 0x73, 0x02, |
583 | 0x01, 0x00, 0x60, 0x32, | 611 | 0x01, 0x00, 0x6c, 0x32, |
584 | 0x02, 0xa6, 0x82, 0x7c, | 612 | 0x02, 0xa6, 0xba, 0x7c, |
585 | 0x00, 0xe2, 0x46, 0x5c, | 613 | 0x00, 0xe2, 0x7e, 0x5c, |
586 | 0x00, 0xe2, 0x56, 0x58, | 614 | 0x00, 0xe2, 0x76, 0x58, |
587 | 0x00, 0xe2, 0x66, 0x58, | 615 | 0x00, 0xe2, 0x86, 0x58, |
588 | 0x00, 0xe2, 0x3a, 0x58, | 616 | 0x00, 0xe2, 0x5a, 0x58, |
589 | 0x00, 0x30, 0x45, 0x59, | 617 | 0x00, 0x36, 0x5f, 0x59, |
590 | 0x01, 0x30, 0x01, 0x30, | 618 | 0x01, 0x36, 0x01, 0x30, |
591 | 0x20, 0x19, 0x82, 0x6c, | 619 | 0x20, 0x19, 0xba, 0x6c, |
592 | 0x00, 0xe2, 0xb2, 0x5c, | 620 | 0x00, 0xe2, 0xea, 0x5c, |
593 | 0x04, 0x19, 0x9c, 0x6c, | 621 | 0x04, 0x19, 0xd4, 0x6c, |
594 | 0x02, 0x19, 0x32, 0x00, | 622 | 0x02, 0x19, 0x32, 0x00, |
595 | 0x01, 0x84, 0x9d, 0x7c, | 623 | 0x01, 0x84, 0xd5, 0x7c, |
596 | 0x01, 0x1b, 0x96, 0x7c, | 624 | 0x01, 0x1b, 0xce, 0x7c, |
597 | 0x01, 0x1a, 0x9c, 0x6c, | 625 | 0x01, 0x1a, 0xd4, 0x6c, |
598 | 0x00, 0xe2, 0x4c, 0x44, | 626 | 0x00, 0xe2, 0x84, 0x44, |
599 | 0x80, 0x4b, 0xa2, 0x6c, | 627 | 0x80, 0x4b, 0xda, 0x6c, |
600 | 0x01, 0x4c, 0x9e, 0x7c, | 628 | 0x01, 0x4c, 0xd6, 0x7c, |
601 | 0x03, 0x42, 0x4c, 0x6c, | 629 | 0x03, 0x42, 0x84, 0x6c, |
602 | 0x00, 0xe2, 0xe0, 0x5b, | 630 | 0x00, 0xe2, 0x0a, 0x5c, |
603 | 0x80, 0xf9, 0xf2, 0x01, | 631 | 0x80, 0xf9, 0xf2, 0x01, |
604 | 0x04, 0x33, 0xf9, 0x79, | 632 | 0x04, 0x39, 0x15, 0x7a, |
605 | 0x00, 0xe2, 0xf8, 0x41, | 633 | 0x00, 0xe2, 0x14, 0x42, |
606 | 0x08, 0x5d, 0xba, 0x6c, | 634 | 0x08, 0x5d, 0xf2, 0x6c, |
607 | 0x00, 0xe2, 0x56, 0x58, | 635 | 0x00, 0xe2, 0x76, 0x58, |
608 | 0x00, 0x30, 0x45, 0x59, | 636 | 0x00, 0x36, 0x5f, 0x59, |
609 | 0x01, 0x30, 0x01, 0x30, | 637 | 0x01, 0x36, 0x01, 0x30, |
610 | 0x02, 0x1b, 0xaa, 0x7c, | 638 | 0x02, 0x1b, 0xe2, 0x7c, |
611 | 0x08, 0x5d, 0xb8, 0x7c, | 639 | 0x08, 0x5d, 0xf0, 0x7c, |
612 | 0x03, 0x68, 0x00, 0x37, | 640 | 0x03, 0x68, 0x00, 0x37, |
613 | 0x01, 0x84, 0x09, 0x07, | 641 | 0x01, 0x84, 0x09, 0x07, |
614 | 0x80, 0x1b, 0xc4, 0x7c, | 642 | 0x80, 0x1b, 0xfc, 0x7c, |
615 | 0x80, 0x84, 0xc5, 0x6c, | 643 | 0x80, 0x84, 0xfd, 0x6c, |
616 | 0xff, 0x85, 0x0b, 0x1b, | 644 | 0xff, 0x85, 0x0b, 0x1b, |
617 | 0xff, 0x86, 0x0d, 0x23, | 645 | 0xff, 0x86, 0x0d, 0x23, |
618 | 0xff, 0x87, 0x0f, 0x23, | 646 | 0xff, 0x87, 0x0f, 0x23, |
619 | 0xf8, 0x1b, 0x08, 0x0b, | 647 | 0xf8, 0x1b, 0x08, 0x0b, |
620 | 0xff, 0xea, 0x06, 0x0b, | 648 | 0xff, 0xea, 0x06, 0x0b, |
621 | 0x03, 0x68, 0x00, 0x37, | 649 | 0x03, 0x68, 0x00, 0x37, |
622 | 0x00, 0xe2, 0xc4, 0x58, | 650 | 0x00, 0xe2, 0xd6, 0x58, |
623 | 0x10, 0xea, 0x18, 0x00, | 651 | 0x10, 0xea, 0x18, 0x00, |
624 | 0xf9, 0xd9, 0xb2, 0x0d, | 652 | 0xf9, 0xd9, 0xb2, 0x0d, |
625 | 0x01, 0xd9, 0xb2, 0x05, | 653 | 0x01, 0xd9, 0xb2, 0x05, |
626 | 0x01, 0x52, 0x48, 0x31, | 654 | 0x01, 0x52, 0x48, 0x31, |
627 | 0x20, 0xa4, 0xee, 0x7c, | 655 | 0x20, 0xa4, 0x26, 0x7d, |
628 | 0x20, 0x5b, 0xee, 0x7c, | 656 | 0x20, 0x5b, 0x26, 0x7d, |
629 | 0x80, 0xf9, 0xfc, 0x7c, | 657 | 0x80, 0xf9, 0x34, 0x7d, |
630 | 0x02, 0xea, 0xb4, 0x00, | 658 | 0x02, 0xea, 0xb4, 0x00, |
631 | 0x11, 0x00, 0x00, 0x10, | 659 | 0x11, 0x00, 0x00, 0x10, |
632 | 0x04, 0x19, 0x08, 0x7d, | 660 | 0x04, 0x19, 0x40, 0x7d, |
633 | 0xdf, 0x19, 0x32, 0x08, | 661 | 0xdf, 0x19, 0x32, 0x08, |
634 | 0x60, 0x5b, 0xe6, 0x6c, | 662 | 0x60, 0x5b, 0x40, 0x6d, |
635 | 0x01, 0x4c, 0xe2, 0x7c, | 663 | 0x01, 0x4c, 0x1a, 0x7d, |
636 | 0x20, 0x19, 0x32, 0x00, | 664 | 0x20, 0x19, 0x32, 0x00, |
637 | 0x01, 0xd9, 0xb2, 0x05, | 665 | 0x01, 0xd9, 0xb2, 0x05, |
638 | 0x02, 0xea, 0xb4, 0x00, | 666 | 0x02, 0xea, 0xb4, 0x00, |
639 | 0x01, 0xd9, 0xb2, 0x05, | 667 | 0x01, 0xd9, 0xb2, 0x05, |
640 | 0x10, 0x5b, 0x00, 0x6d, | 668 | 0x10, 0x5b, 0x38, 0x6d, |
641 | 0x08, 0x5b, 0x0a, 0x6d, | 669 | 0x08, 0x5b, 0x42, 0x6d, |
642 | 0x20, 0x5b, 0xfa, 0x6c, | 670 | 0x20, 0x5b, 0x32, 0x6d, |
643 | 0x02, 0x5b, 0x2a, 0x6d, | 671 | 0x02, 0x5b, 0x62, 0x6d, |
644 | 0x0e, 0xea, 0x50, 0x59, | 672 | 0x0e, 0xea, 0x64, 0x59, |
645 | 0x0e, 0xea, 0x04, 0x00, | 673 | 0x0e, 0xea, 0x04, 0x00, |
646 | 0x80, 0xf9, 0xea, 0x6c, | 674 | 0x80, 0xf9, 0x22, 0x6d, |
647 | 0xdf, 0x5c, 0xb8, 0x08, | 675 | 0xdf, 0x5c, 0xb8, 0x08, |
648 | 0x01, 0xd9, 0xb2, 0x05, | 676 | 0x01, 0xd9, 0xb2, 0x05, |
649 | 0x01, 0xa4, 0xe5, 0x6d, | 677 | 0x01, 0xa4, 0x1d, 0x6e, |
650 | 0x00, 0xe2, 0x30, 0x5c, | 678 | 0x00, 0xe2, 0x68, 0x5c, |
651 | 0x00, 0xe2, 0x34, 0x5d, | 679 | 0x00, 0xe2, 0x6c, 0x5d, |
652 | 0x01, 0x90, 0x21, 0x1b, | 680 | 0x01, 0x90, 0x21, 0x1b, |
653 | 0x01, 0xd9, 0xb2, 0x05, | 681 | 0x01, 0xd9, 0xb2, 0x05, |
654 | 0x00, 0xe2, 0x32, 0x5b, | 682 | 0x00, 0xe2, 0x52, 0x5b, |
655 | 0xf3, 0x96, 0xd5, 0x19, | 683 | 0xf3, 0x96, 0xd5, 0x19, |
656 | 0x00, 0xe2, 0x18, 0x55, | 684 | 0x00, 0xe2, 0x50, 0x55, |
657 | 0x80, 0x96, 0x19, 0x6d, | 685 | 0x80, 0x96, 0x51, 0x6d, |
658 | 0x0f, 0xea, 0x50, 0x59, | 686 | 0x0f, 0xea, 0x64, 0x59, |
659 | 0x0f, 0xea, 0x04, 0x00, | 687 | 0x0f, 0xea, 0x04, 0x00, |
660 | 0x00, 0xe2, 0x20, 0x45, | 688 | 0x00, 0xe2, 0x58, 0x45, |
661 | 0x04, 0x8c, 0xe1, 0x30, | 689 | 0x04, 0x8c, 0xe1, 0x30, |
662 | 0x01, 0xea, 0xf2, 0x00, | 690 | 0x01, 0xea, 0xf2, 0x00, |
663 | 0x02, 0xea, 0x36, 0x00, | 691 | 0x02, 0xea, 0x36, 0x00, |
664 | 0xa8, 0xea, 0x32, 0x00, | 692 | 0xa8, 0xea, 0x32, 0x00, |
665 | 0xff, 0x97, 0x27, 0x7d, | 693 | 0xff, 0x97, 0x5f, 0x7d, |
666 | 0x14, 0xea, 0x50, 0x59, | 694 | 0x14, 0xea, 0x64, 0x59, |
667 | 0x14, 0xea, 0x04, 0x00, | 695 | 0x14, 0xea, 0x04, 0x00, |
668 | 0x00, 0xe2, 0x96, 0x5d, | 696 | 0x00, 0xe2, 0xce, 0x5d, |
669 | 0x01, 0xd9, 0xb2, 0x05, | 697 | 0x01, 0xd9, 0xb2, 0x05, |
670 | 0x09, 0x80, 0xe1, 0x30, | 698 | 0x09, 0x80, 0xe1, 0x30, |
671 | 0x02, 0xea, 0x36, 0x00, | 699 | 0x02, 0xea, 0x36, 0x00, |
672 | 0xa8, 0xea, 0x32, 0x00, | 700 | 0xa8, 0xea, 0x32, 0x00, |
673 | 0x00, 0xe2, 0x8e, 0x5d, | 701 | 0x00, 0xe2, 0xc6, 0x5d, |
674 | 0x01, 0xd9, 0xb2, 0x05, | 702 | 0x01, 0xd9, 0xb2, 0x05, |
675 | 0x02, 0xa6, 0x44, 0x7d, | 703 | 0x02, 0xa6, 0x7c, 0x7d, |
676 | 0x00, 0xe2, 0x3e, 0x59, | 704 | 0x00, 0xe2, 0x56, 0x59, |
677 | 0x20, 0x5b, 0x52, 0x6d, | 705 | 0x20, 0x5b, 0x8a, 0x6d, |
678 | 0xfc, 0x42, 0x3e, 0x7d, | 706 | 0xfc, 0x42, 0x76, 0x7d, |
679 | 0x10, 0x40, 0x40, 0x6d, | 707 | 0x10, 0x40, 0x78, 0x6d, |
680 | 0x20, 0x4d, 0x42, 0x7d, | 708 | 0x20, 0x4d, 0x7a, 0x7d, |
681 | 0x08, 0x5d, 0x52, 0x6d, | 709 | 0x08, 0x5d, 0x8a, 0x6d, |
682 | 0x02, 0xa6, 0xe6, 0x6b, | 710 | 0x02, 0xa6, 0x10, 0x6c, |
683 | 0x00, 0xe2, 0x3e, 0x59, | 711 | 0x00, 0xe2, 0x56, 0x59, |
684 | 0x20, 0x5b, 0x52, 0x6d, | 712 | 0x20, 0x5b, 0x8a, 0x6d, |
685 | 0x01, 0x1b, 0x72, 0x6d, | 713 | 0x01, 0x1b, 0xaa, 0x6d, |
686 | 0xfc, 0x42, 0x4e, 0x7d, | 714 | 0xfc, 0x42, 0x86, 0x7d, |
687 | 0x10, 0x40, 0x50, 0x6d, | 715 | 0x10, 0x40, 0x88, 0x6d, |
688 | 0x20, 0x4d, 0x64, 0x78, | 716 | 0x20, 0x4d, 0x84, 0x78, |
689 | 0x08, 0x5d, 0x64, 0x78, | 717 | 0x08, 0x5d, 0x84, 0x78, |
690 | 0x02, 0x19, 0x32, 0x00, | 718 | 0x02, 0x19, 0x32, 0x00, |
691 | 0x01, 0x5b, 0x40, 0x31, | 719 | 0x01, 0x5b, 0x40, 0x31, |
692 | 0x00, 0xe2, 0xb2, 0x5c, | 720 | 0x00, 0xe2, 0xea, 0x5c, |
693 | 0x00, 0xe2, 0x9e, 0x5b, | 721 | 0x00, 0xe2, 0xcc, 0x5b, |
694 | 0x20, 0xea, 0xb6, 0x00, | 722 | 0x20, 0xea, 0xb6, 0x00, |
695 | 0x00, 0xe2, 0xe0, 0x5b, | 723 | 0x00, 0xe2, 0x0a, 0x5c, |
696 | 0x20, 0x5c, 0xb8, 0x00, | 724 | 0x20, 0x5c, 0xb8, 0x00, |
697 | 0x04, 0x19, 0x68, 0x6d, | 725 | 0x04, 0x19, 0xa0, 0x6d, |
698 | 0x01, 0x1a, 0x68, 0x6d, | 726 | 0x01, 0x1a, 0xa0, 0x6d, |
699 | 0x00, 0xe2, 0x3e, 0x59, | 727 | 0x00, 0xe2, 0x56, 0x59, |
700 | 0x01, 0x1a, 0x64, 0x78, | 728 | 0x01, 0x1a, 0x84, 0x78, |
701 | 0x80, 0xf9, 0xf2, 0x01, | 729 | 0x80, 0xf9, 0xf2, 0x01, |
702 | 0x20, 0xa0, 0xcc, 0x7d, | 730 | 0x20, 0xa0, 0x04, 0x7e, |
703 | 0xff, 0x90, 0x21, 0x1b, | 731 | 0xff, 0x90, 0x21, 0x1b, |
704 | 0x08, 0x92, 0x43, 0x6b, | 732 | 0x08, 0x92, 0x63, 0x6b, |
705 | 0x02, 0xea, 0xb4, 0x04, | 733 | 0x02, 0xea, 0xb4, 0x04, |
706 | 0x01, 0xa4, 0x49, 0x03, | 734 | 0x01, 0xa4, 0x49, 0x03, |
707 | 0x40, 0x5b, 0x82, 0x6d, | 735 | 0x40, 0x5b, 0xba, 0x6d, |
708 | 0x00, 0xe2, 0x3e, 0x59, | 736 | 0x00, 0xe2, 0x56, 0x59, |
709 | 0x40, 0x5b, 0x82, 0x6d, | 737 | 0x40, 0x5b, 0xba, 0x6d, |
710 | 0x04, 0x5d, 0xe6, 0x7d, | 738 | 0x04, 0x5d, 0x1e, 0x7e, |
711 | 0x01, 0x1a, 0xe6, 0x7d, | 739 | 0x01, 0x1a, 0x1e, 0x7e, |
712 | 0x20, 0x4d, 0x64, 0x78, | 740 | 0x20, 0x4d, 0x84, 0x78, |
713 | 0x40, 0x5b, 0xcc, 0x7d, | 741 | 0x40, 0x5b, 0x04, 0x7e, |
714 | 0x04, 0x5d, 0xe6, 0x7d, | 742 | 0x04, 0x5d, 0x1e, 0x7e, |
715 | 0x01, 0x1a, 0xe6, 0x7d, | 743 | 0x01, 0x1a, 0x1e, 0x7e, |
716 | 0x80, 0xf9, 0xf2, 0x01, | 744 | 0x80, 0xf9, 0xf2, 0x01, |
717 | 0xff, 0x90, 0x21, 0x1b, | 745 | 0xff, 0x90, 0x21, 0x1b, |
718 | 0x08, 0x92, 0x43, 0x6b, | 746 | 0x08, 0x92, 0x63, 0x6b, |
719 | 0x02, 0xea, 0xb4, 0x04, | 747 | 0x02, 0xea, 0xb4, 0x04, |
720 | 0x00, 0xe2, 0x3e, 0x59, | 748 | 0x00, 0xe2, 0x56, 0x59, |
721 | 0x01, 0x1b, 0x64, 0x78, | 749 | 0x01, 0x1b, 0x84, 0x78, |
722 | 0x80, 0xf9, 0xf2, 0x01, | 750 | 0x80, 0xf9, 0xf2, 0x01, |
723 | 0x02, 0xea, 0xb4, 0x04, | 751 | 0x02, 0xea, 0xb4, 0x04, |
724 | 0x00, 0xe2, 0x3e, 0x59, | 752 | 0x00, 0xe2, 0x56, 0x59, |
725 | 0x01, 0x1b, 0xaa, 0x6d, | 753 | 0x01, 0x1b, 0xe2, 0x6d, |
726 | 0x40, 0x5b, 0xb8, 0x7d, | 754 | 0x40, 0x5b, 0xf0, 0x7d, |
727 | 0x01, 0x1b, 0xaa, 0x6d, | 755 | 0x01, 0x1b, 0xe2, 0x6d, |
728 | 0x02, 0x19, 0x32, 0x00, | 756 | 0x02, 0x19, 0x32, 0x00, |
729 | 0x01, 0x1a, 0x64, 0x78, | 757 | 0x01, 0x1a, 0x84, 0x78, |
730 | 0x80, 0xf9, 0xf2, 0x01, | 758 | 0x80, 0xf9, 0xf2, 0x01, |
731 | 0xff, 0xea, 0x10, 0x03, | 759 | 0xff, 0xea, 0x10, 0x03, |
732 | 0x08, 0x92, 0x25, 0x03, | 760 | 0x08, 0x92, 0x25, 0x03, |
733 | 0x00, 0xe2, 0x42, 0x43, | 761 | 0x00, 0xe2, 0x62, 0x43, |
734 | 0x01, 0x1a, 0xb4, 0x7d, | 762 | 0x01, 0x1a, 0xec, 0x7d, |
735 | 0x40, 0x5b, 0xb0, 0x7d, | 763 | 0x40, 0x5b, 0xe8, 0x7d, |
736 | 0x01, 0x1a, 0x9e, 0x6d, | 764 | 0x01, 0x1a, 0xd6, 0x6d, |
737 | 0xfc, 0x42, 0x64, 0x78, | 765 | 0xfc, 0x42, 0x84, 0x78, |
738 | 0x01, 0x1a, 0xb8, 0x6d, | 766 | 0x01, 0x1a, 0xf0, 0x6d, |
739 | 0x10, 0xea, 0x50, 0x59, | 767 | 0x10, 0xea, 0x64, 0x59, |
740 | 0x10, 0xea, 0x04, 0x00, | 768 | 0x10, 0xea, 0x04, 0x00, |
741 | 0xfc, 0x42, 0x64, 0x78, | 769 | 0xfc, 0x42, 0x84, 0x78, |
742 | 0x10, 0x40, 0xbe, 0x6d, | 770 | 0x10, 0x40, 0xf6, 0x6d, |
743 | 0x20, 0x4d, 0x64, 0x78, | 771 | 0x20, 0x4d, 0x84, 0x78, |
744 | 0x40, 0x5b, 0x9e, 0x6d, | 772 | 0x40, 0x5b, 0xd6, 0x6d, |
745 | 0x01, 0x1a, 0x64, 0x78, | 773 | 0x01, 0x1a, 0x84, 0x78, |
746 | 0x01, 0x90, 0x21, 0x1b, | 774 | 0x01, 0x90, 0x21, 0x1b, |
747 | 0x30, 0x3f, 0xc0, 0x09, | 775 | 0x30, 0x3f, 0xc0, 0x09, |
748 | 0x30, 0xe0, 0x64, 0x60, | 776 | 0x30, 0xe0, 0x84, 0x60, |
749 | 0x40, 0x4b, 0x64, 0x68, | 777 | 0x40, 0x4b, 0x84, 0x68, |
750 | 0xff, 0xea, 0x52, 0x01, | 778 | 0xff, 0xea, 0x52, 0x01, |
751 | 0xee, 0x00, 0xd2, 0x6d, | 779 | 0xee, 0x00, 0x0c, 0x6e, |
752 | 0x80, 0xf9, 0xf2, 0x01, | 780 | 0x80, 0xf9, 0xf2, 0x01, |
753 | 0xff, 0x90, 0x21, 0x1b, | 781 | 0xff, 0x90, 0x21, 0x1b, |
754 | 0x02, 0xea, 0xb4, 0x00, | 782 | 0x02, 0xea, 0xb4, 0x00, |
755 | 0x20, 0xea, 0x9a, 0x00, | 783 | 0x20, 0xea, 0x9a, 0x00, |
756 | 0xf3, 0x42, 0xde, 0x6d, | 784 | 0xf3, 0x42, 0x16, 0x6e, |
757 | 0x12, 0xea, 0x50, 0x59, | 785 | 0x12, 0xea, 0x64, 0x59, |
758 | 0x12, 0xea, 0x04, 0x00, | 786 | 0x12, 0xea, 0x04, 0x00, |
759 | 0x00, 0xe2, 0xf8, 0x41, | 787 | 0x00, 0xe2, 0x14, 0x42, |
760 | 0x0d, 0xea, 0x50, 0x59, | 788 | 0x0d, 0xea, 0x64, 0x59, |
761 | 0x0d, 0xea, 0x04, 0x00, | 789 | 0x0d, 0xea, 0x04, 0x00, |
762 | 0x00, 0xe2, 0xf8, 0x41, | 790 | 0x00, 0xe2, 0x14, 0x42, |
763 | 0x01, 0x90, 0x21, 0x1b, | 791 | 0x01, 0x90, 0x21, 0x1b, |
764 | 0x11, 0xea, 0x50, 0x59, | 792 | 0x11, 0xea, 0x64, 0x59, |
765 | 0x11, 0xea, 0x04, 0x00, | 793 | 0x11, 0xea, 0x04, 0x00, |
766 | 0x00, 0xe2, 0x32, 0x5b, | 794 | 0x00, 0xe2, 0x52, 0x5b, |
767 | 0x08, 0x5a, 0xb4, 0x00, | 795 | 0x08, 0x5a, 0xb4, 0x00, |
768 | 0x00, 0xe2, 0x0c, 0x5e, | 796 | 0x00, 0xe2, 0x44, 0x5e, |
769 | 0xa8, 0xea, 0x32, 0x00, | 797 | 0xa8, 0xea, 0x32, 0x00, |
770 | 0x00, 0xe2, 0x3e, 0x59, | 798 | 0x00, 0xe2, 0x56, 0x59, |
771 | 0x80, 0x1a, 0xfa, 0x7d, | 799 | 0x80, 0x1a, 0x32, 0x7e, |
772 | 0x00, 0xe2, 0x0c, 0x5e, | 800 | 0x00, 0xe2, 0x44, 0x5e, |
773 | 0x80, 0x19, 0x32, 0x00, | 801 | 0x80, 0x19, 0x32, 0x00, |
774 | 0x40, 0x5b, 0x00, 0x6e, | 802 | 0x40, 0x5b, 0x38, 0x6e, |
775 | 0x08, 0x5a, 0x00, 0x7e, | 803 | 0x08, 0x5a, 0x38, 0x7e, |
776 | 0x20, 0x4d, 0x64, 0x78, | 804 | 0x20, 0x4d, 0x84, 0x78, |
777 | 0x02, 0x84, 0x09, 0x03, | 805 | 0x02, 0x84, 0x09, 0x03, |
778 | 0x40, 0x5b, 0xcc, 0x7d, | 806 | 0x40, 0x5b, 0x04, 0x7e, |
779 | 0xff, 0x90, 0x21, 0x1b, | 807 | 0xff, 0x90, 0x21, 0x1b, |
780 | 0x80, 0xf9, 0xf2, 0x01, | 808 | 0x80, 0xf9, 0xf2, 0x01, |
781 | 0x08, 0x92, 0x43, 0x6b, | 809 | 0x08, 0x92, 0x63, 0x6b, |
782 | 0x02, 0xea, 0xb4, 0x04, | 810 | 0x02, 0xea, 0xb4, 0x04, |
783 | 0x01, 0x38, 0xe1, 0x30, | 811 | 0x01, 0x40, 0xe1, 0x30, |
784 | 0x05, 0x39, 0xe3, 0x98, | 812 | 0x05, 0x41, 0xe3, 0x98, |
785 | 0x01, 0xe0, 0xf4, 0x31, | 813 | 0x01, 0xe0, 0xf4, 0x31, |
786 | 0xff, 0xea, 0xc0, 0x09, | 814 | 0xff, 0xea, 0xc0, 0x09, |
787 | 0x00, 0x3a, 0xe5, 0x20, | 815 | 0x00, 0x42, 0xe5, 0x20, |
788 | 0x00, 0x3b, 0xe7, 0x20, | 816 | 0x00, 0x43, 0xe7, 0x20, |
789 | 0x01, 0xfa, 0xc0, 0x31, | 817 | 0x01, 0xfa, 0xc0, 0x31, |
790 | 0x04, 0xea, 0xe8, 0x30, | 818 | 0x04, 0xea, 0xe8, 0x30, |
791 | 0xff, 0xea, 0xf0, 0x08, | 819 | 0xff, 0xea, 0xf0, 0x08, |
@@ -794,12 +822,20 @@ static uint8_t seqprog[] = { | |||
794 | }; | 822 | }; |
795 | 823 | ||
796 | typedef int ahd_patch_func_t (struct ahd_softc *ahd); | 824 | typedef int ahd_patch_func_t (struct ahd_softc *ahd); |
825 | static ahd_patch_func_t ahd_patch23_func; | ||
826 | |||
827 | static int | ||
828 | ahd_patch23_func(struct ahd_softc *ahd) | ||
829 | { | ||
830 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0); | ||
831 | } | ||
832 | |||
797 | static ahd_patch_func_t ahd_patch22_func; | 833 | static ahd_patch_func_t ahd_patch22_func; |
798 | 834 | ||
799 | static int | 835 | static int |
800 | ahd_patch22_func(struct ahd_softc *ahd) | 836 | ahd_patch22_func(struct ahd_softc *ahd) |
801 | { | 837 | { |
802 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0); | 838 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0); |
803 | } | 839 | } |
804 | 840 | ||
805 | static ahd_patch_func_t ahd_patch21_func; | 841 | static ahd_patch_func_t ahd_patch21_func; |
@@ -807,7 +843,7 @@ static ahd_patch_func_t ahd_patch21_func; | |||
807 | static int | 843 | static int |
808 | ahd_patch21_func(struct ahd_softc *ahd) | 844 | ahd_patch21_func(struct ahd_softc *ahd) |
809 | { | 845 | { |
810 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0); | 846 | return ((ahd->flags & AHD_INITIATORROLE) != 0); |
811 | } | 847 | } |
812 | 848 | ||
813 | static ahd_patch_func_t ahd_patch20_func; | 849 | static ahd_patch_func_t ahd_patch20_func; |
@@ -815,7 +851,7 @@ static ahd_patch_func_t ahd_patch20_func; | |||
815 | static int | 851 | static int |
816 | ahd_patch20_func(struct ahd_softc *ahd) | 852 | ahd_patch20_func(struct ahd_softc *ahd) |
817 | { | 853 | { |
818 | return ((ahd->features & AHD_RTI) == 0); | 854 | return ((ahd->flags & AHD_TARGETROLE) != 0); |
819 | } | 855 | } |
820 | 856 | ||
821 | static ahd_patch_func_t ahd_patch19_func; | 857 | static ahd_patch_func_t ahd_patch19_func; |
@@ -823,7 +859,7 @@ static ahd_patch_func_t ahd_patch19_func; | |||
823 | static int | 859 | static int |
824 | ahd_patch19_func(struct ahd_softc *ahd) | 860 | ahd_patch19_func(struct ahd_softc *ahd) |
825 | { | 861 | { |
826 | return ((ahd->flags & AHD_INITIATORROLE) != 0); | 862 | return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0); |
827 | } | 863 | } |
828 | 864 | ||
829 | static ahd_patch_func_t ahd_patch18_func; | 865 | static ahd_patch_func_t ahd_patch18_func; |
@@ -831,7 +867,7 @@ static ahd_patch_func_t ahd_patch18_func; | |||
831 | static int | 867 | static int |
832 | ahd_patch18_func(struct ahd_softc *ahd) | 868 | ahd_patch18_func(struct ahd_softc *ahd) |
833 | { | 869 | { |
834 | return ((ahd->flags & AHD_TARGETROLE) != 0); | 870 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0); |
835 | } | 871 | } |
836 | 872 | ||
837 | static ahd_patch_func_t ahd_patch17_func; | 873 | static ahd_patch_func_t ahd_patch17_func; |
@@ -839,7 +875,7 @@ static ahd_patch_func_t ahd_patch17_func; | |||
839 | static int | 875 | static int |
840 | ahd_patch17_func(struct ahd_softc *ahd) | 876 | ahd_patch17_func(struct ahd_softc *ahd) |
841 | { | 877 | { |
842 | return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0); | 878 | return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0); |
843 | } | 879 | } |
844 | 880 | ||
845 | static ahd_patch_func_t ahd_patch16_func; | 881 | static ahd_patch_func_t ahd_patch16_func; |
@@ -847,7 +883,7 @@ static ahd_patch_func_t ahd_patch16_func; | |||
847 | static int | 883 | static int |
848 | ahd_patch16_func(struct ahd_softc *ahd) | 884 | ahd_patch16_func(struct ahd_softc *ahd) |
849 | { | 885 | { |
850 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0); | 886 | return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0); |
851 | } | 887 | } |
852 | 888 | ||
853 | static ahd_patch_func_t ahd_patch15_func; | 889 | static ahd_patch_func_t ahd_patch15_func; |
@@ -855,7 +891,7 @@ static ahd_patch_func_t ahd_patch15_func; | |||
855 | static int | 891 | static int |
856 | ahd_patch15_func(struct ahd_softc *ahd) | 892 | ahd_patch15_func(struct ahd_softc *ahd) |
857 | { | 893 | { |
858 | return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0); | 894 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0); |
859 | } | 895 | } |
860 | 896 | ||
861 | static ahd_patch_func_t ahd_patch14_func; | 897 | static ahd_patch_func_t ahd_patch14_func; |
@@ -863,7 +899,7 @@ static ahd_patch_func_t ahd_patch14_func; | |||
863 | static int | 899 | static int |
864 | ahd_patch14_func(struct ahd_softc *ahd) | 900 | ahd_patch14_func(struct ahd_softc *ahd) |
865 | { | 901 | { |
866 | return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0); | 902 | return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0); |
867 | } | 903 | } |
868 | 904 | ||
869 | static ahd_patch_func_t ahd_patch13_func; | 905 | static ahd_patch_func_t ahd_patch13_func; |
@@ -871,7 +907,7 @@ static ahd_patch_func_t ahd_patch13_func; | |||
871 | static int | 907 | static int |
872 | ahd_patch13_func(struct ahd_softc *ahd) | 908 | ahd_patch13_func(struct ahd_softc *ahd) |
873 | { | 909 | { |
874 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0); | 910 | return ((ahd->features & AHD_RTI) == 0); |
875 | } | 911 | } |
876 | 912 | ||
877 | static ahd_patch_func_t ahd_patch12_func; | 913 | static ahd_patch_func_t ahd_patch12_func; |
@@ -879,7 +915,7 @@ static ahd_patch_func_t ahd_patch12_func; | |||
879 | static int | 915 | static int |
880 | ahd_patch12_func(struct ahd_softc *ahd) | 916 | ahd_patch12_func(struct ahd_softc *ahd) |
881 | { | 917 | { |
882 | return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0); | 918 | return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0); |
883 | } | 919 | } |
884 | 920 | ||
885 | static ahd_patch_func_t ahd_patch11_func; | 921 | static ahd_patch_func_t ahd_patch11_func; |
@@ -887,7 +923,7 @@ static ahd_patch_func_t ahd_patch11_func; | |||
887 | static int | 923 | static int |
888 | ahd_patch11_func(struct ahd_softc *ahd) | 924 | ahd_patch11_func(struct ahd_softc *ahd) |
889 | { | 925 | { |
890 | return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0); | 926 | return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0); |
891 | } | 927 | } |
892 | 928 | ||
893 | static ahd_patch_func_t ahd_patch10_func; | 929 | static ahd_patch_func_t ahd_patch10_func; |
@@ -895,7 +931,7 @@ static ahd_patch_func_t ahd_patch10_func; | |||
895 | static int | 931 | static int |
896 | ahd_patch10_func(struct ahd_softc *ahd) | 932 | ahd_patch10_func(struct ahd_softc *ahd) |
897 | { | 933 | { |
898 | return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0); | 934 | return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0); |
899 | } | 935 | } |
900 | 936 | ||
901 | static ahd_patch_func_t ahd_patch9_func; | 937 | static ahd_patch_func_t ahd_patch9_func; |
@@ -903,7 +939,7 @@ static ahd_patch_func_t ahd_patch9_func; | |||
903 | static int | 939 | static int |
904 | ahd_patch9_func(struct ahd_softc *ahd) | 940 | ahd_patch9_func(struct ahd_softc *ahd) |
905 | { | 941 | { |
906 | return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0); | 942 | return ((ahd->features & AHD_FAST_CDB_DELIVERY) != 0); |
907 | } | 943 | } |
908 | 944 | ||
909 | static ahd_patch_func_t ahd_patch8_func; | 945 | static ahd_patch_func_t ahd_patch8_func; |
@@ -992,147 +1028,149 @@ static struct patch { | |||
992 | { ahd_patch0_func, 5, 1, 1 }, | 1028 | { ahd_patch0_func, 5, 1, 1 }, |
993 | { ahd_patch2_func, 6, 1, 2 }, | 1029 | { ahd_patch2_func, 6, 1, 2 }, |
994 | { ahd_patch0_func, 7, 1, 1 }, | 1030 | { ahd_patch0_func, 7, 1, 1 }, |
995 | { ahd_patch3_func, 20, 5, 1 }, | 1031 | { ahd_patch3_func, 36, 5, 1 }, |
996 | { ahd_patch2_func, 29, 1, 2 }, | 1032 | { ahd_patch2_func, 45, 1, 2 }, |
997 | { ahd_patch0_func, 30, 1, 1 }, | 1033 | { ahd_patch0_func, 46, 1, 1 }, |
998 | { ahd_patch1_func, 37, 1, 2 }, | 1034 | { ahd_patch1_func, 53, 1, 2 }, |
999 | { ahd_patch0_func, 38, 1, 1 }, | 1035 | { ahd_patch0_func, 54, 1, 1 }, |
1000 | { ahd_patch2_func, 43, 1, 2 }, | 1036 | { ahd_patch2_func, 59, 1, 2 }, |
1001 | { ahd_patch0_func, 44, 1, 1 }, | 1037 | { ahd_patch0_func, 60, 1, 1 }, |
1002 | { ahd_patch2_func, 47, 1, 2 }, | 1038 | { ahd_patch2_func, 63, 1, 2 }, |
1003 | { ahd_patch0_func, 48, 1, 1 }, | 1039 | { ahd_patch0_func, 64, 1, 1 }, |
1004 | { ahd_patch2_func, 51, 1, 2 }, | 1040 | { ahd_patch2_func, 67, 1, 2 }, |
1005 | { ahd_patch0_func, 52, 1, 1 }, | 1041 | { ahd_patch0_func, 68, 1, 1 }, |
1006 | { ahd_patch2_func, 65, 1, 2 }, | 1042 | { ahd_patch4_func, 116, 1, 1 }, |
1007 | { ahd_patch0_func, 66, 1, 1 }, | 1043 | { ahd_patch2_func, 175, 3, 1 }, |
1008 | { ahd_patch2_func, 69, 1, 2 }, | 1044 | { ahd_patch1_func, 178, 2, 1 }, |
1009 | { ahd_patch0_func, 70, 1, 1 }, | 1045 | { ahd_patch5_func, 180, 1, 1 }, |
1010 | { ahd_patch1_func, 73, 1, 2 }, | 1046 | { ahd_patch2_func, 189, 1, 2 }, |
1011 | { ahd_patch0_func, 74, 1, 1 }, | 1047 | { ahd_patch0_func, 190, 1, 1 }, |
1012 | { ahd_patch4_func, 107, 1, 1 }, | 1048 | { ahd_patch6_func, 191, 2, 2 }, |
1013 | { ahd_patch2_func, 162, 6, 1 }, | 1049 | { ahd_patch0_func, 193, 6, 3 }, |
1014 | { ahd_patch1_func, 168, 2, 1 }, | 1050 | { ahd_patch2_func, 196, 1, 2 }, |
1015 | { ahd_patch5_func, 170, 1, 1 }, | 1051 | { ahd_patch0_func, 197, 1, 1 }, |
1016 | { ahd_patch2_func, 179, 1, 2 }, | 1052 | { ahd_patch2_func, 200, 1, 2 }, |
1017 | { ahd_patch0_func, 180, 1, 1 }, | 1053 | { ahd_patch0_func, 201, 1, 1 }, |
1018 | { ahd_patch6_func, 181, 2, 2 }, | 1054 | { ahd_patch3_func, 203, 1, 1 }, |
1019 | { ahd_patch0_func, 183, 6, 3 }, | 1055 | { ahd_patch7_func, 204, 3, 1 }, |
1020 | { ahd_patch2_func, 186, 1, 2 }, | 1056 | { ahd_patch3_func, 213, 1, 1 }, |
1021 | { ahd_patch0_func, 187, 1, 1 }, | 1057 | { ahd_patch5_func, 214, 16, 2 }, |
1022 | { ahd_patch2_func, 190, 1, 2 }, | 1058 | { ahd_patch0_func, 230, 1, 1 }, |
1023 | { ahd_patch0_func, 191, 1, 1 }, | 1059 | { ahd_patch8_func, 250, 2, 1 }, |
1024 | { ahd_patch7_func, 193, 2, 1 }, | 1060 | { ahd_patch1_func, 254, 1, 2 }, |
1025 | { ahd_patch5_func, 201, 16, 2 }, | 1061 | { ahd_patch0_func, 255, 1, 1 }, |
1026 | { ahd_patch0_func, 217, 1, 1 }, | 1062 | { ahd_patch7_func, 258, 3, 1 }, |
1027 | { ahd_patch8_func, 237, 2, 1 }, | 1063 | { ahd_patch1_func, 273, 1, 2 }, |
1028 | { ahd_patch1_func, 241, 1, 2 }, | 1064 | { ahd_patch0_func, 274, 1, 1 }, |
1029 | { ahd_patch0_func, 242, 1, 1 }, | 1065 | { ahd_patch1_func, 277, 1, 2 }, |
1030 | { ahd_patch7_func, 245, 2, 1 }, | 1066 | { ahd_patch0_func, 278, 1, 1 }, |
1031 | { ahd_patch1_func, 259, 1, 2 }, | 1067 | { ahd_patch2_func, 281, 1, 2 }, |
1032 | { ahd_patch0_func, 260, 1, 1 }, | 1068 | { ahd_patch0_func, 282, 1, 1 }, |
1033 | { ahd_patch1_func, 263, 1, 2 }, | 1069 | { ahd_patch9_func, 295, 2, 2 }, |
1034 | { ahd_patch0_func, 264, 1, 1 }, | 1070 | { ahd_patch0_func, 297, 1, 1 }, |
1035 | { ahd_patch2_func, 267, 1, 2 }, | 1071 | { ahd_patch1_func, 339, 1, 2 }, |
1036 | { ahd_patch0_func, 268, 1, 1 }, | 1072 | { ahd_patch0_func, 340, 1, 1 }, |
1037 | { ahd_patch1_func, 323, 1, 2 }, | 1073 | { ahd_patch2_func, 348, 1, 2 }, |
1038 | { ahd_patch0_func, 324, 1, 1 }, | 1074 | { ahd_patch0_func, 349, 1, 1 }, |
1039 | { ahd_patch2_func, 332, 1, 2 }, | 1075 | { ahd_patch2_func, 352, 1, 2 }, |
1040 | { ahd_patch0_func, 333, 1, 1 }, | 1076 | { ahd_patch0_func, 353, 1, 1 }, |
1041 | { ahd_patch2_func, 336, 1, 2 }, | 1077 | { ahd_patch1_func, 359, 1, 2 }, |
1042 | { ahd_patch0_func, 337, 1, 1 }, | 1078 | { ahd_patch0_func, 360, 1, 1 }, |
1043 | { ahd_patch1_func, 343, 1, 2 }, | 1079 | { ahd_patch1_func, 362, 1, 2 }, |
1044 | { ahd_patch0_func, 344, 1, 1 }, | 1080 | { ahd_patch0_func, 363, 1, 1 }, |
1045 | { ahd_patch1_func, 346, 1, 2 }, | 1081 | { ahd_patch10_func, 382, 1, 1 }, |
1046 | { ahd_patch0_func, 347, 1, 1 }, | 1082 | { ahd_patch10_func, 385, 1, 1 }, |
1047 | { ahd_patch9_func, 366, 1, 1 }, | 1083 | { ahd_patch10_func, 387, 1, 1 }, |
1048 | { ahd_patch9_func, 369, 1, 1 }, | 1084 | { ahd_patch10_func, 399, 1, 1 }, |
1049 | { ahd_patch9_func, 371, 1, 1 }, | 1085 | { ahd_patch1_func, 409, 1, 2 }, |
1050 | { ahd_patch9_func, 383, 1, 1 }, | 1086 | { ahd_patch0_func, 410, 1, 1 }, |
1051 | { ahd_patch1_func, 393, 1, 2 }, | 1087 | { ahd_patch1_func, 412, 1, 2 }, |
1052 | { ahd_patch0_func, 394, 1, 1 }, | 1088 | { ahd_patch0_func, 413, 1, 1 }, |
1053 | { ahd_patch1_func, 396, 1, 2 }, | 1089 | { ahd_patch1_func, 421, 1, 2 }, |
1054 | { ahd_patch0_func, 397, 1, 1 }, | 1090 | { ahd_patch0_func, 422, 1, 1 }, |
1055 | { ahd_patch1_func, 405, 1, 2 }, | 1091 | { ahd_patch2_func, 435, 1, 2 }, |
1056 | { ahd_patch0_func, 406, 1, 1 }, | 1092 | { ahd_patch0_func, 436, 1, 1 }, |
1057 | { ahd_patch2_func, 419, 1, 2 }, | 1093 | { ahd_patch11_func, 472, 1, 1 }, |
1058 | { ahd_patch0_func, 420, 1, 1 }, | 1094 | { ahd_patch1_func, 480, 1, 2 }, |
1059 | { ahd_patch10_func, 450, 1, 1 }, | 1095 | { ahd_patch0_func, 481, 1, 1 }, |
1060 | { ahd_patch1_func, 457, 1, 2 }, | 1096 | { ahd_patch2_func, 493, 1, 2 }, |
1061 | { ahd_patch0_func, 458, 1, 1 }, | 1097 | { ahd_patch0_func, 494, 1, 1 }, |
1062 | { ahd_patch2_func, 470, 1, 2 }, | 1098 | { ahd_patch12_func, 497, 6, 2 }, |
1063 | { ahd_patch0_func, 471, 1, 1 }, | 1099 | { ahd_patch0_func, 503, 1, 1 }, |
1064 | { ahd_patch11_func, 476, 6, 2 }, | 1100 | { ahd_patch13_func, 524, 7, 1 }, |
1065 | { ahd_patch0_func, 482, 1, 1 }, | 1101 | { ahd_patch14_func, 533, 1, 1 }, |
1066 | { ahd_patch12_func, 505, 1, 1 }, | 1102 | { ahd_patch15_func, 542, 1, 1 }, |
1067 | { ahd_patch13_func, 514, 1, 1 }, | 1103 | { ahd_patch16_func, 543, 1, 2 }, |
1068 | { ahd_patch14_func, 515, 1, 2 }, | 1104 | { ahd_patch0_func, 544, 1, 1 }, |
1069 | { ahd_patch0_func, 516, 1, 1 }, | 1105 | { ahd_patch17_func, 547, 1, 1 }, |
1070 | { ahd_patch15_func, 519, 1, 1 }, | 1106 | { ahd_patch16_func, 548, 1, 1 }, |
1071 | { ahd_patch14_func, 520, 1, 1 }, | 1107 | { ahd_patch18_func, 559, 1, 2 }, |
1072 | { ahd_patch16_func, 531, 1, 2 }, | 1108 | { ahd_patch0_func, 560, 1, 1 }, |
1073 | { ahd_patch0_func, 532, 1, 1 }, | 1109 | { ahd_patch1_func, 579, 1, 2 }, |
1074 | { ahd_patch1_func, 551, 1, 2 }, | 1110 | { ahd_patch0_func, 580, 1, 1 }, |
1075 | { ahd_patch0_func, 552, 1, 1 }, | 1111 | { ahd_patch1_func, 583, 1, 2 }, |
1076 | { ahd_patch1_func, 555, 1, 2 }, | 1112 | { ahd_patch0_func, 584, 1, 1 }, |
1077 | { ahd_patch0_func, 556, 1, 1 }, | 1113 | { ahd_patch2_func, 589, 1, 2 }, |
1078 | { ahd_patch2_func, 561, 1, 2 }, | 1114 | { ahd_patch0_func, 590, 1, 1 }, |
1079 | { ahd_patch0_func, 562, 1, 1 }, | 1115 | { ahd_patch2_func, 594, 1, 2 }, |
1080 | { ahd_patch2_func, 566, 1, 2 }, | 1116 | { ahd_patch0_func, 595, 1, 1 }, |
1081 | { ahd_patch0_func, 567, 1, 1 }, | 1117 | { ahd_patch1_func, 596, 1, 2 }, |
1082 | { ahd_patch1_func, 568, 1, 2 }, | 1118 | { ahd_patch0_func, 597, 1, 1 }, |
1083 | { ahd_patch0_func, 569, 1, 1 }, | 1119 | { ahd_patch2_func, 608, 1, 2 }, |
1084 | { ahd_patch2_func, 580, 1, 2 }, | 1120 | { ahd_patch0_func, 609, 1, 1 }, |
1085 | { ahd_patch0_func, 581, 1, 1 }, | 1121 | { ahd_patch19_func, 613, 1, 1 }, |
1086 | { ahd_patch17_func, 585, 1, 1 }, | 1122 | { ahd_patch20_func, 618, 1, 1 }, |
1087 | { ahd_patch18_func, 590, 1, 1 }, | 1123 | { ahd_patch21_func, 619, 2, 1 }, |
1088 | { ahd_patch19_func, 591, 2, 1 }, | 1124 | { ahd_patch20_func, 623, 1, 2 }, |
1089 | { ahd_patch18_func, 595, 1, 2 }, | 1125 | { ahd_patch0_func, 624, 1, 1 }, |
1090 | { ahd_patch0_func, 596, 1, 1 }, | 1126 | { ahd_patch2_func, 627, 1, 2 }, |
1091 | { ahd_patch2_func, 599, 1, 2 }, | 1127 | { ahd_patch0_func, 628, 1, 1 }, |
1092 | { ahd_patch0_func, 600, 1, 1 }, | 1128 | { ahd_patch2_func, 643, 1, 2 }, |
1093 | { ahd_patch2_func, 615, 1, 2 }, | 1129 | { ahd_patch0_func, 644, 1, 1 }, |
1094 | { ahd_patch0_func, 616, 1, 1 }, | 1130 | { ahd_patch13_func, 645, 14, 1 }, |
1095 | { ahd_patch20_func, 617, 14, 1 }, | 1131 | { ahd_patch1_func, 663, 1, 2 }, |
1096 | { ahd_patch1_func, 635, 1, 2 }, | 1132 | { ahd_patch0_func, 664, 1, 1 }, |
1097 | { ahd_patch0_func, 636, 1, 1 }, | 1133 | { ahd_patch13_func, 665, 1, 1 }, |
1098 | { ahd_patch20_func, 637, 1, 1 }, | 1134 | { ahd_patch1_func, 677, 1, 2 }, |
1099 | { ahd_patch1_func, 649, 1, 2 }, | 1135 | { ahd_patch0_func, 678, 1, 1 }, |
1100 | { ahd_patch0_func, 650, 1, 1 }, | 1136 | { ahd_patch1_func, 685, 1, 2 }, |
1101 | { ahd_patch1_func, 657, 1, 2 }, | 1137 | { ahd_patch0_func, 686, 1, 1 }, |
1102 | { ahd_patch0_func, 658, 1, 1 }, | 1138 | { ahd_patch19_func, 709, 1, 1 }, |
1103 | { ahd_patch17_func, 681, 1, 1 }, | 1139 | { ahd_patch19_func, 747, 1, 1 }, |
1104 | { ahd_patch17_func, 719, 1, 1 }, | 1140 | { ahd_patch1_func, 758, 1, 2 }, |
1105 | { ahd_patch1_func, 730, 1, 2 }, | 1141 | { ahd_patch0_func, 759, 1, 1 }, |
1106 | { ahd_patch0_func, 731, 1, 1 }, | 1142 | { ahd_patch1_func, 776, 1, 2 }, |
1107 | { ahd_patch1_func, 748, 1, 2 }, | 1143 | { ahd_patch0_func, 777, 1, 1 }, |
1108 | { ahd_patch0_func, 749, 1, 1 }, | 1144 | { ahd_patch1_func, 779, 1, 2 }, |
1109 | { ahd_patch1_func, 751, 1, 2 }, | 1145 | { ahd_patch0_func, 780, 1, 1 }, |
1110 | { ahd_patch0_func, 752, 1, 1 }, | 1146 | { ahd_patch1_func, 783, 1, 2 }, |
1111 | { ahd_patch1_func, 755, 1, 2 }, | 1147 | { ahd_patch0_func, 784, 1, 1 }, |
1112 | { ahd_patch0_func, 756, 1, 1 }, | 1148 | { ahd_patch22_func, 786, 1, 2 }, |
1113 | { ahd_patch21_func, 758, 1, 2 }, | 1149 | { ahd_patch0_func, 787, 2, 1 }, |
1114 | { ahd_patch0_func, 759, 2, 1 }, | 1150 | { ahd_patch23_func, 790, 4, 2 }, |
1115 | { ahd_patch22_func, 762, 4, 2 }, | 1151 | { ahd_patch0_func, 794, 1, 1 }, |
1116 | { ahd_patch0_func, 766, 1, 1 }, | 1152 | { ahd_patch23_func, 802, 11, 1 } |
1117 | { ahd_patch22_func, 774, 11, 1 } | ||
1118 | }; | 1153 | }; |
1119 | 1154 | ||
1120 | static struct cs { | 1155 | static struct cs { |
1121 | uint16_t begin; | 1156 | uint16_t begin; |
1122 | uint16_t end; | 1157 | uint16_t end; |
1123 | } critical_sections[] = { | 1158 | } critical_sections[] = { |
1124 | { 11, 12 }, | 1159 | { 17, 28 }, |
1125 | { 13, 14 }, | 1160 | { 29, 30 }, |
1126 | { 29, 42 }, | 1161 | { 47, 58 }, |
1127 | { 56, 59 }, | 1162 | { 61, 63 }, |
1128 | { 101, 128 }, | 1163 | { 65, 66 }, |
1129 | { 129, 157 }, | 1164 | { 72, 92 }, |
1130 | { 159, 162 }, | 1165 | { 110, 137 }, |
1131 | { 170, 178 }, | 1166 | { 138, 175 }, |
1132 | { 201, 250 }, | 1167 | { 180, 188 }, |
1133 | { 681, 697 }, | 1168 | { 213, 264 }, |
1134 | { 697, 711 }, | 1169 | { 425, 433 }, |
1135 | { 721, 725 } | 1170 | { 443, 445 }, |
1171 | { 448, 457 }, | ||
1172 | { 709, 739 }, | ||
1173 | { 749, 753 } | ||
1136 | }; | 1174 | }; |
1137 | 1175 | ||
1138 | static const int num_critical_sections = sizeof(critical_sections) | 1176 | static const int num_critical_sections = sizeof(critical_sections) |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c index d866213f42b8..051970efba68 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c | |||
@@ -375,7 +375,7 @@ static void ahc_linux_queue_cmd_complete(struct ahc_softc *ahc, | |||
375 | struct scsi_cmnd *cmd); | 375 | struct scsi_cmnd *cmd); |
376 | static void ahc_linux_sem_timeout(u_long arg); | 376 | static void ahc_linux_sem_timeout(u_long arg); |
377 | static void ahc_linux_freeze_simq(struct ahc_softc *ahc); | 377 | static void ahc_linux_freeze_simq(struct ahc_softc *ahc); |
378 | static void ahc_linux_release_simq(u_long arg); | 378 | static void ahc_linux_release_simq(struct ahc_softc *ahc); |
379 | static int ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag); | 379 | static int ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag); |
380 | static void ahc_linux_initialize_scsi_bus(struct ahc_softc *ahc); | 380 | static void ahc_linux_initialize_scsi_bus(struct ahc_softc *ahc); |
381 | static u_int ahc_linux_user_tagdepth(struct ahc_softc *ahc, | 381 | static u_int ahc_linux_user_tagdepth(struct ahc_softc *ahc, |
@@ -1061,10 +1061,11 @@ uint32_t aic7xxx_verbose; | |||
1061 | int | 1061 | int |
1062 | ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *template) | 1062 | ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *template) |
1063 | { | 1063 | { |
1064 | char buf[80]; | 1064 | char buf[80]; |
1065 | struct Scsi_Host *host; | 1065 | struct Scsi_Host *host; |
1066 | char *new_name; | 1066 | char *new_name; |
1067 | u_long s; | 1067 | u_long s; |
1068 | int retval; | ||
1068 | 1069 | ||
1069 | template->name = ahc->description; | 1070 | template->name = ahc->description; |
1070 | host = scsi_host_alloc(template, sizeof(struct ahc_softc *)); | 1071 | host = scsi_host_alloc(template, sizeof(struct ahc_softc *)); |
@@ -1072,7 +1073,6 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa | |||
1072 | return (ENOMEM); | 1073 | return (ENOMEM); |
1073 | 1074 | ||
1074 | *((struct ahc_softc **)host->hostdata) = ahc; | 1075 | *((struct ahc_softc **)host->hostdata) = ahc; |
1075 | ahc_lock(ahc, &s); | ||
1076 | ahc->platform_data->host = host; | 1076 | ahc->platform_data->host = host; |
1077 | host->can_queue = AHC_MAX_QUEUE; | 1077 | host->can_queue = AHC_MAX_QUEUE; |
1078 | host->cmd_per_lun = 2; | 1078 | host->cmd_per_lun = 2; |
@@ -1083,7 +1083,9 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa | |||
1083 | host->max_lun = AHC_NUM_LUNS; | 1083 | host->max_lun = AHC_NUM_LUNS; |
1084 | host->max_channel = (ahc->features & AHC_TWIN) ? 1 : 0; | 1084 | host->max_channel = (ahc->features & AHC_TWIN) ? 1 : 0; |
1085 | host->sg_tablesize = AHC_NSEG; | 1085 | host->sg_tablesize = AHC_NSEG; |
1086 | ahc_lock(ahc, &s); | ||
1086 | ahc_set_unit(ahc, ahc_linux_unit++); | 1087 | ahc_set_unit(ahc, ahc_linux_unit++); |
1088 | ahc_unlock(ahc, &s); | ||
1087 | sprintf(buf, "scsi%d", host->host_no); | 1089 | sprintf(buf, "scsi%d", host->host_no); |
1088 | new_name = malloc(strlen(buf) + 1, M_DEVBUF, M_NOWAIT); | 1090 | new_name = malloc(strlen(buf) + 1, M_DEVBUF, M_NOWAIT); |
1089 | if (new_name != NULL) { | 1091 | if (new_name != NULL) { |
@@ -1093,13 +1095,19 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa | |||
1093 | host->unique_id = ahc->unit; | 1095 | host->unique_id = ahc->unit; |
1094 | ahc_linux_initialize_scsi_bus(ahc); | 1096 | ahc_linux_initialize_scsi_bus(ahc); |
1095 | ahc_intr_enable(ahc, TRUE); | 1097 | ahc_intr_enable(ahc, TRUE); |
1096 | ahc_unlock(ahc, &s); | ||
1097 | 1098 | ||
1098 | host->transportt = ahc_linux_transport_template; | 1099 | host->transportt = ahc_linux_transport_template; |
1099 | 1100 | ||
1100 | scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); /* XXX handle failure */ | 1101 | retval = scsi_add_host(host, |
1102 | (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); | ||
1103 | if (retval) { | ||
1104 | printk(KERN_WARNING "aic7xxx: scsi_add_host failed\n"); | ||
1105 | scsi_host_put(host); | ||
1106 | return retval; | ||
1107 | } | ||
1108 | |||
1101 | scsi_scan_host(host); | 1109 | scsi_scan_host(host); |
1102 | return (0); | 1110 | return 0; |
1103 | } | 1111 | } |
1104 | 1112 | ||
1105 | /* | 1113 | /* |
@@ -1112,10 +1120,13 @@ ahc_linux_initialize_scsi_bus(struct ahc_softc *ahc) | |||
1112 | { | 1120 | { |
1113 | int i; | 1121 | int i; |
1114 | int numtarg; | 1122 | int numtarg; |
1123 | unsigned long s; | ||
1115 | 1124 | ||
1116 | i = 0; | 1125 | i = 0; |
1117 | numtarg = 0; | 1126 | numtarg = 0; |
1118 | 1127 | ||
1128 | ahc_lock(ahc, &s); | ||
1129 | |||
1119 | if (aic7xxx_no_reset != 0) | 1130 | if (aic7xxx_no_reset != 0) |
1120 | ahc->flags &= ~(AHC_RESET_BUS_A|AHC_RESET_BUS_B); | 1131 | ahc->flags &= ~(AHC_RESET_BUS_A|AHC_RESET_BUS_B); |
1121 | 1132 | ||
@@ -1162,16 +1173,12 @@ ahc_linux_initialize_scsi_bus(struct ahc_softc *ahc) | |||
1162 | ahc_update_neg_request(ahc, &devinfo, tstate, | 1173 | ahc_update_neg_request(ahc, &devinfo, tstate, |
1163 | tinfo, AHC_NEG_ALWAYS); | 1174 | tinfo, AHC_NEG_ALWAYS); |
1164 | } | 1175 | } |
1176 | ahc_unlock(ahc, &s); | ||
1165 | /* Give the bus some time to recover */ | 1177 | /* Give the bus some time to recover */ |
1166 | if ((ahc->flags & (AHC_RESET_BUS_A|AHC_RESET_BUS_B)) != 0) { | 1178 | if ((ahc->flags & (AHC_RESET_BUS_A|AHC_RESET_BUS_B)) != 0) { |
1167 | ahc_linux_freeze_simq(ahc); | 1179 | ahc_linux_freeze_simq(ahc); |
1168 | init_timer(&ahc->platform_data->reset_timer); | 1180 | msleep(AIC7XXX_RESET_DELAY); |
1169 | ahc->platform_data->reset_timer.data = (u_long)ahc; | 1181 | ahc_linux_release_simq(ahc); |
1170 | ahc->platform_data->reset_timer.expires = | ||
1171 | jiffies + (AIC7XXX_RESET_DELAY * HZ)/1000; | ||
1172 | ahc->platform_data->reset_timer.function = | ||
1173 | ahc_linux_release_simq; | ||
1174 | add_timer(&ahc->platform_data->reset_timer); | ||
1175 | } | 1182 | } |
1176 | } | 1183 | } |
1177 | 1184 | ||
@@ -2051,6 +2058,9 @@ ahc_linux_sem_timeout(u_long arg) | |||
2051 | static void | 2058 | static void |
2052 | ahc_linux_freeze_simq(struct ahc_softc *ahc) | 2059 | ahc_linux_freeze_simq(struct ahc_softc *ahc) |
2053 | { | 2060 | { |
2061 | unsigned long s; | ||
2062 | |||
2063 | ahc_lock(ahc, &s); | ||
2054 | ahc->platform_data->qfrozen++; | 2064 | ahc->platform_data->qfrozen++; |
2055 | if (ahc->platform_data->qfrozen == 1) { | 2065 | if (ahc->platform_data->qfrozen == 1) { |
2056 | scsi_block_requests(ahc->platform_data->host); | 2066 | scsi_block_requests(ahc->platform_data->host); |
@@ -2060,17 +2070,15 @@ ahc_linux_freeze_simq(struct ahc_softc *ahc) | |||
2060 | CAM_LUN_WILDCARD, SCB_LIST_NULL, | 2070 | CAM_LUN_WILDCARD, SCB_LIST_NULL, |
2061 | ROLE_INITIATOR, CAM_REQUEUE_REQ); | 2071 | ROLE_INITIATOR, CAM_REQUEUE_REQ); |
2062 | } | 2072 | } |
2073 | ahc_unlock(ahc, &s); | ||
2063 | } | 2074 | } |
2064 | 2075 | ||
2065 | static void | 2076 | static void |
2066 | ahc_linux_release_simq(u_long arg) | 2077 | ahc_linux_release_simq(struct ahc_softc *ahc) |
2067 | { | 2078 | { |
2068 | struct ahc_softc *ahc; | ||
2069 | u_long s; | 2079 | u_long s; |
2070 | int unblock_reqs; | 2080 | int unblock_reqs; |
2071 | 2081 | ||
2072 | ahc = (struct ahc_softc *)arg; | ||
2073 | |||
2074 | unblock_reqs = 0; | 2082 | unblock_reqs = 0; |
2075 | ahc_lock(ahc, &s); | 2083 | ahc_lock(ahc, &s); |
2076 | if (ahc->platform_data->qfrozen > 0) | 2084 | if (ahc->platform_data->qfrozen > 0) |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h index f2a95447142c..e0edacae895f 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.h +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h | |||
@@ -223,9 +223,6 @@ int ahc_dmamap_unload(struct ahc_softc *, bus_dma_tag_t, bus_dmamap_t); | |||
223 | */ | 223 | */ |
224 | #define ahc_dmamap_sync(ahc, dma_tag, dmamap, offset, len, op) | 224 | #define ahc_dmamap_sync(ahc, dma_tag, dmamap, offset, len, op) |
225 | 225 | ||
226 | /************************** Timer DataStructures ******************************/ | ||
227 | typedef struct timer_list ahc_timer_t; | ||
228 | |||
229 | /********************************** Includes **********************************/ | 226 | /********************************** Includes **********************************/ |
230 | #ifdef CONFIG_AIC7XXX_REG_PRETTY_PRINT | 227 | #ifdef CONFIG_AIC7XXX_REG_PRETTY_PRINT |
231 | #define AIC_DEBUG_REGISTERS 1 | 228 | #define AIC_DEBUG_REGISTERS 1 |
@@ -235,30 +232,9 @@ typedef struct timer_list ahc_timer_t; | |||
235 | #include "aic7xxx.h" | 232 | #include "aic7xxx.h" |
236 | 233 | ||
237 | /***************************** Timer Facilities *******************************/ | 234 | /***************************** Timer Facilities *******************************/ |
238 | #define ahc_timer_init init_timer | ||
239 | #define ahc_timer_stop del_timer_sync | ||
240 | typedef void ahc_linux_callback_t (u_long); | ||
241 | static __inline void ahc_timer_reset(ahc_timer_t *timer, int usec, | ||
242 | ahc_callback_t *func, void *arg); | ||
243 | static __inline void ahc_scb_timer_reset(struct scb *scb, u_int usec); | ||
244 | |||
245 | static __inline void | ||
246 | ahc_timer_reset(ahc_timer_t *timer, int usec, ahc_callback_t *func, void *arg) | ||
247 | { | ||
248 | struct ahc_softc *ahc; | ||
249 | |||
250 | ahc = (struct ahc_softc *)arg; | ||
251 | del_timer(timer); | ||
252 | timer->data = (u_long)arg; | ||
253 | timer->expires = jiffies + (usec * HZ)/1000000; | ||
254 | timer->function = (ahc_linux_callback_t*)func; | ||
255 | add_timer(timer); | ||
256 | } | ||
257 | |||
258 | static __inline void | 235 | static __inline void |
259 | ahc_scb_timer_reset(struct scb *scb, u_int usec) | 236 | ahc_scb_timer_reset(struct scb *scb, u_int usec) |
260 | { | 237 | { |
261 | mod_timer(&scb->io_ctx->eh_timeout, jiffies + (usec * HZ)/1000000); | ||
262 | } | 238 | } |
263 | 239 | ||
264 | /***************************** SMP support ************************************/ | 240 | /***************************** SMP support ************************************/ |
@@ -393,7 +369,6 @@ struct ahc_platform_data { | |||
393 | 369 | ||
394 | spinlock_t spin_lock; | 370 | spinlock_t spin_lock; |
395 | u_int qfrozen; | 371 | u_int qfrozen; |
396 | struct timer_list reset_timer; | ||
397 | struct semaphore eh_sem; | 372 | struct semaphore eh_sem; |
398 | struct Scsi_Host *host; /* pointer to scsi host */ | 373 | struct Scsi_Host *host; /* pointer to scsi host */ |
399 | #define AHC_LINUX_NOIRQ ((uint32_t)~0) | 374 | #define AHC_LINUX_NOIRQ ((uint32_t)~0) |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_pci.c b/drivers/scsi/aic7xxx/aic7xxx_pci.c index b3b2e2237eb3..5f586140e057 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_pci.c +++ b/drivers/scsi/aic7xxx/aic7xxx_pci.c | |||
@@ -39,9 +39,7 @@ | |||
39 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 39 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
40 | * POSSIBILITY OF SUCH DAMAGES. | 40 | * POSSIBILITY OF SUCH DAMAGES. |
41 | * | 41 | * |
42 | * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#69 $ | 42 | * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#79 $ |
43 | * | ||
44 | * $FreeBSD$ | ||
45 | */ | 43 | */ |
46 | 44 | ||
47 | #ifdef __linux__ | 45 | #ifdef __linux__ |
@@ -393,6 +391,12 @@ struct ahc_pci_identity ahc_pci_ident_table [] = | |||
393 | "Adaptec aic7892 Ultra160 SCSI adapter (ARO)", | 391 | "Adaptec aic7892 Ultra160 SCSI adapter (ARO)", |
394 | ahc_aic7892_setup | 392 | ahc_aic7892_setup |
395 | }, | 393 | }, |
394 | { | ||
395 | ID_AHA_2915_30LP, | ||
396 | ID_ALL_MASK, | ||
397 | "Adaptec 2915/30LP Ultra160 SCSI adapter", | ||
398 | ahc_aic7892_setup | ||
399 | }, | ||
396 | /* aic7895 based controllers */ | 400 | /* aic7895 based controllers */ |
397 | { | 401 | { |
398 | ID_AHA_2940U_DUAL, | 402 | ID_AHA_2940U_DUAL, |
@@ -1193,9 +1197,19 @@ ahc_pci_test_register_access(struct ahc_softc *ahc) | |||
1193 | * use for this test. | 1197 | * use for this test. |
1194 | */ | 1198 | */ |
1195 | hcntrl = ahc_inb(ahc, HCNTRL); | 1199 | hcntrl = ahc_inb(ahc, HCNTRL); |
1200 | |||
1196 | if (hcntrl == 0xFF) | 1201 | if (hcntrl == 0xFF) |
1197 | goto fail; | 1202 | goto fail; |
1198 | 1203 | ||
1204 | if ((hcntrl & CHIPRST) != 0) { | ||
1205 | /* | ||
1206 | * The chip has not been initialized since | ||
1207 | * PCI/EISA/VLB bus reset. Don't trust | ||
1208 | * "left over BIOS data". | ||
1209 | */ | ||
1210 | ahc->flags |= AHC_NO_BIOS_INIT; | ||
1211 | } | ||
1212 | |||
1199 | /* | 1213 | /* |
1200 | * Next create a situation where write combining | 1214 | * Next create a situation where write combining |
1201 | * or read prefetching could be initiated by the | 1215 | * or read prefetching could be initiated by the |
@@ -1307,6 +1321,10 @@ check_extport(struct ahc_softc *ahc, u_int *sxfrctl1) | |||
1307 | sd.sd_chip = C56_66; | 1321 | sd.sd_chip = C56_66; |
1308 | } | 1322 | } |
1309 | ahc_release_seeprom(&sd); | 1323 | ahc_release_seeprom(&sd); |
1324 | |||
1325 | /* Remember the SEEPROM type for later */ | ||
1326 | if (sd.sd_chip == C56_66) | ||
1327 | ahc->flags |= AHC_LARGE_SEEPROM; | ||
1310 | } | 1328 | } |
1311 | 1329 | ||
1312 | if (!have_seeprom) { | 1330 | if (!have_seeprom) { |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_pci.h b/drivers/scsi/aic7xxx/aic7xxx_pci.h index be27fcb20346..263f85da405e 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_pci.h +++ b/drivers/scsi/aic7xxx/aic7xxx_pci.h | |||
@@ -105,6 +105,7 @@ | |||
105 | #define ID_AHA_29160C 0x0080900562209005ull | 105 | #define ID_AHA_29160C 0x0080900562209005ull |
106 | #define ID_AHA_29160B 0x00809005E2209005ull | 106 | #define ID_AHA_29160B 0x00809005E2209005ull |
107 | #define ID_AHA_19160B 0x0081900562A19005ull | 107 | #define ID_AHA_19160B 0x0081900562A19005ull |
108 | #define ID_AHA_2915_30LP 0x0082900502109005ull | ||
108 | 109 | ||
109 | #define ID_AIC7896 0x005F9005FFFF9005ull | 110 | #define ID_AIC7896 0x005F9005FFFF9005ull |
110 | #define ID_AIC7896_ARO 0x00539005FFFF9005ull | 111 | #define ID_AIC7896_ARO 0x00539005FFFF9005ull |
diff --git a/drivers/scsi/aic7xxx_old.c b/drivers/scsi/aic7xxx_old.c index 33d56c344944..770f1647e4d6 100644 --- a/drivers/scsi/aic7xxx_old.c +++ b/drivers/scsi/aic7xxx_old.c | |||
@@ -1290,7 +1290,7 @@ static void aic7xxx_check_scbs(struct aic7xxx_host *p, char *buffer); | |||
1290 | * | 1290 | * |
1291 | ***************************************************************************/ | 1291 | ***************************************************************************/ |
1292 | 1292 | ||
1293 | static inline unsigned char | 1293 | static unsigned char |
1294 | aic_inb(struct aic7xxx_host *p, long port) | 1294 | aic_inb(struct aic7xxx_host *p, long port) |
1295 | { | 1295 | { |
1296 | #ifdef MMAPIO | 1296 | #ifdef MMAPIO |
@@ -1309,7 +1309,7 @@ aic_inb(struct aic7xxx_host *p, long port) | |||
1309 | #endif | 1309 | #endif |
1310 | } | 1310 | } |
1311 | 1311 | ||
1312 | static inline void | 1312 | static void |
1313 | aic_outb(struct aic7xxx_host *p, unsigned char val, long port) | 1313 | aic_outb(struct aic7xxx_host *p, unsigned char val, long port) |
1314 | { | 1314 | { |
1315 | #ifdef MMAPIO | 1315 | #ifdef MMAPIO |
diff --git a/drivers/scsi/arm/Kconfig b/drivers/scsi/arm/Kconfig index 13f23043c8a3..06d7601cdf56 100644 --- a/drivers/scsi/arm/Kconfig +++ b/drivers/scsi/arm/Kconfig | |||
@@ -4,6 +4,7 @@ | |||
4 | config SCSI_ACORNSCSI_3 | 4 | config SCSI_ACORNSCSI_3 |
5 | tristate "Acorn SCSI card (aka30) support" | 5 | tristate "Acorn SCSI card (aka30) support" |
6 | depends on ARCH_ACORN && SCSI && BROKEN | 6 | depends on ARCH_ACORN && SCSI && BROKEN |
7 | select SCSI_SPI_ATTRS | ||
7 | help | 8 | help |
8 | This enables support for the Acorn SCSI card (aka30). If you have an | 9 | This enables support for the Acorn SCSI card (aka30). If you have an |
9 | Acorn system with one of these, say Y. If unsure, say N. | 10 | Acorn system with one of these, say Y. If unsure, say N. |
diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c index b7b20c689c24..dda5a5f79c53 100644 --- a/drivers/scsi/arm/acornscsi.c +++ b/drivers/scsi/arm/acornscsi.c | |||
@@ -146,12 +146,12 @@ | |||
146 | 146 | ||
147 | #include <asm/system.h> | 147 | #include <asm/system.h> |
148 | #include <asm/io.h> | 148 | #include <asm/io.h> |
149 | #include <asm/irq.h> | ||
150 | #include <asm/ecard.h> | 149 | #include <asm/ecard.h> |
151 | 150 | ||
152 | #include "../scsi.h" | 151 | #include "../scsi.h" |
153 | #include <scsi/scsi_dbg.h> | 152 | #include <scsi/scsi_dbg.h> |
154 | #include <scsi/scsi_host.h> | 153 | #include <scsi/scsi_host.h> |
154 | #include <scsi/scsi_transport_spi.h> | ||
155 | #include "acornscsi.h" | 155 | #include "acornscsi.h" |
156 | #include "msgqueue.h" | 156 | #include "msgqueue.h" |
157 | #include "scsi.h" | 157 | #include "scsi.h" |
@@ -1370,7 +1370,7 @@ void acornscsi_sendmessage(AS_Host *host) | |||
1370 | 1370 | ||
1371 | host->scsi.last_message = msg->msg[0]; | 1371 | host->scsi.last_message = msg->msg[0]; |
1372 | #if (DEBUG & DEBUG_MESSAGES) | 1372 | #if (DEBUG & DEBUG_MESSAGES) |
1373 | scsi_print_msg(msg->msg); | 1373 | spi_print_msg(msg->msg); |
1374 | #endif | 1374 | #endif |
1375 | break; | 1375 | break; |
1376 | 1376 | ||
@@ -1392,7 +1392,7 @@ void acornscsi_sendmessage(AS_Host *host) | |||
1392 | while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) { | 1392 | while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) { |
1393 | unsigned int i; | 1393 | unsigned int i; |
1394 | #if (DEBUG & DEBUG_MESSAGES) | 1394 | #if (DEBUG & DEBUG_MESSAGES) |
1395 | scsi_print_msg(msg); | 1395 | spi_print_msg(msg); |
1396 | #endif | 1396 | #endif |
1397 | i = 0; | 1397 | i = 0; |
1398 | if (acornscsi_write_pio(host, msg->msg, &i, msg->length, 1000000)) | 1398 | if (acornscsi_write_pio(host, msg->msg, &i, msg->length, 1000000)) |
@@ -1488,7 +1488,7 @@ void acornscsi_message(AS_Host *host) | |||
1488 | #if (DEBUG & DEBUG_MESSAGES) | 1488 | #if (DEBUG & DEBUG_MESSAGES) |
1489 | printk("scsi%d.%c: message in: ", | 1489 | printk("scsi%d.%c: message in: ", |
1490 | host->host->host_no, acornscsi_target(host)); | 1490 | host->host->host_no, acornscsi_target(host)); |
1491 | scsi_print_msg(message); | 1491 | spi_print_msg(message); |
1492 | printk("\n"); | 1492 | printk("\n"); |
1493 | #endif | 1493 | #endif |
1494 | 1494 | ||
diff --git a/drivers/scsi/arm/arxescsi.c b/drivers/scsi/arm/arxescsi.c index 804125e35fc3..a28940156703 100644 --- a/drivers/scsi/arm/arxescsi.c +++ b/drivers/scsi/arm/arxescsi.c | |||
@@ -33,7 +33,6 @@ | |||
33 | 33 | ||
34 | #include <asm/dma.h> | 34 | #include <asm/dma.h> |
35 | #include <asm/io.h> | 35 | #include <asm/io.h> |
36 | #include <asm/irq.h> | ||
37 | #include <asm/ecard.h> | 36 | #include <asm/ecard.h> |
38 | 37 | ||
39 | #include "../scsi.h" | 38 | #include "../scsi.h" |
diff --git a/drivers/scsi/arm/cumana_1.c b/drivers/scsi/arm/cumana_1.c index 81e266be26d0..e6c9491dc5c0 100644 --- a/drivers/scsi/arm/cumana_1.c +++ b/drivers/scsi/arm/cumana_1.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <asm/ecard.h> | 14 | #include <asm/ecard.h> |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/irq.h> | ||
17 | #include <asm/system.h> | 16 | #include <asm/system.h> |
18 | 17 | ||
19 | #include "../scsi.h" | 18 | #include "../scsi.h" |
diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c index 3a7a46b0dc41..583d2d8c8335 100644 --- a/drivers/scsi/arm/cumana_2.c +++ b/drivers/scsi/arm/cumana_2.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/dma.h> | 31 | #include <asm/dma.h> |
32 | #include <asm/ecard.h> | 32 | #include <asm/ecard.h> |
33 | #include <asm/io.h> | 33 | #include <asm/io.h> |
34 | #include <asm/irq.h> | ||
35 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
36 | 35 | ||
37 | #include "../scsi.h" | 36 | #include "../scsi.h" |
diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c index 4d1e8f52c924..3ffec7efc9d5 100644 --- a/drivers/scsi/arm/eesox.c +++ b/drivers/scsi/arm/eesox.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/dma-mapping.h> | 35 | #include <linux/dma-mapping.h> |
36 | 36 | ||
37 | #include <asm/io.h> | 37 | #include <asm/io.h> |
38 | #include <asm/irq.h> | ||
39 | #include <asm/dma.h> | 38 | #include <asm/dma.h> |
40 | #include <asm/ecard.h> | 39 | #include <asm/ecard.h> |
41 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c index 3333d7b39139..3113bdcedb13 100644 --- a/drivers/scsi/arm/powertec.c +++ b/drivers/scsi/arm/powertec.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/dma.h> | 22 | #include <asm/dma.h> |
23 | #include <asm/ecard.h> | 23 | #include <asm/ecard.h> |
24 | #include <asm/io.h> | 24 | #include <asm/io.h> |
25 | #include <asm/irq.h> | ||
26 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
27 | 26 | ||
28 | #include "../scsi.h" | 27 | #include "../scsi.h" |
diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c index 0ea27873b9ff..557788ec4eec 100644 --- a/drivers/scsi/ata_piix.c +++ b/drivers/scsi/ata_piix.c | |||
@@ -166,6 +166,8 @@ static struct pci_driver piix_pci_driver = { | |||
166 | .id_table = piix_pci_tbl, | 166 | .id_table = piix_pci_tbl, |
167 | .probe = piix_init_one, | 167 | .probe = piix_init_one, |
168 | .remove = ata_pci_remove_one, | 168 | .remove = ata_pci_remove_one, |
169 | .suspend = ata_pci_device_suspend, | ||
170 | .resume = ata_pci_device_resume, | ||
169 | }; | 171 | }; |
170 | 172 | ||
171 | static struct scsi_host_template piix_sht = { | 173 | static struct scsi_host_template piix_sht = { |
@@ -185,7 +187,8 @@ static struct scsi_host_template piix_sht = { | |||
185 | .dma_boundary = ATA_DMA_BOUNDARY, | 187 | .dma_boundary = ATA_DMA_BOUNDARY, |
186 | .slave_configure = ata_scsi_slave_config, | 188 | .slave_configure = ata_scsi_slave_config, |
187 | .bios_param = ata_std_bios_param, | 189 | .bios_param = ata_std_bios_param, |
188 | .ordered_flush = 1, | 190 | .resume = ata_scsi_device_resume, |
191 | .suspend = ata_scsi_device_suspend, | ||
189 | }; | 192 | }; |
190 | 193 | ||
191 | static const struct ata_port_operations piix_pata_ops = { | 194 | static const struct ata_port_operations piix_pata_ops = { |
diff --git a/drivers/scsi/atari_NCR5380.c b/drivers/scsi/atari_NCR5380.c index 2ae31ceb32a8..57295bcea3e7 100644 --- a/drivers/scsi/atari_NCR5380.c +++ b/drivers/scsi/atari_NCR5380.c | |||
@@ -74,6 +74,7 @@ | |||
74 | * the high level code. | 74 | * the high level code. |
75 | */ | 75 | */ |
76 | #include <scsi/scsi_dbg.h> | 76 | #include <scsi/scsi_dbg.h> |
77 | #include <scsi/scsi_transport_spi.h> | ||
77 | 78 | ||
78 | #if (NDEBUG & NDEBUG_LISTS) | 79 | #if (NDEBUG & NDEBUG_LISTS) |
79 | #define LIST(x,y) \ | 80 | #define LIST(x,y) \ |
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance) | |||
2355 | * 3..length+1 arguments | 2356 | * 3..length+1 arguments |
2356 | * | 2357 | * |
2357 | * Start the extended message buffer with the EXTENDED_MESSAGE | 2358 | * Start the extended message buffer with the EXTENDED_MESSAGE |
2358 | * byte, since scsi_print_msg() wants the whole thing. | 2359 | * byte, since spi_print_msg() wants the whole thing. |
2359 | */ | 2360 | */ |
2360 | extended_msg[0] = EXTENDED_MESSAGE; | 2361 | extended_msg[0] = EXTENDED_MESSAGE; |
2361 | /* Accept first byte by clearing ACK */ | 2362 | /* Accept first byte by clearing ACK */ |
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance) | |||
2408 | default: | 2409 | default: |
2409 | if (!tmp) { | 2410 | if (!tmp) { |
2410 | printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO); | 2411 | printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO); |
2411 | scsi_print_msg (extended_msg); | 2412 | spi_print_msg(extended_msg); |
2412 | printk("\n"); | 2413 | printk("\n"); |
2413 | } else if (tmp != EXTENDED_MESSAGE) | 2414 | } else if (tmp != EXTENDED_MESSAGE) |
2414 | printk(KERN_DEBUG "scsi%d: rejecting unknown " | 2415 | printk(KERN_DEBUG "scsi%d: rejecting unknown " |
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance) | |||
2541 | 2542 | ||
2542 | if (!(msg[0] & 0x80)) { | 2543 | if (!(msg[0] & 0x80)) { |
2543 | printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO); | 2544 | printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO); |
2544 | scsi_print_msg(msg); | 2545 | spi_print_msg(msg); |
2545 | do_abort(instance); | 2546 | do_abort(instance); |
2546 | return; | 2547 | return; |
2547 | } | 2548 | } |
diff --git a/drivers/scsi/blz1230.c b/drivers/scsi/blz1230.c index 763e409a1ff3..3867ac2de4c2 100644 --- a/drivers/scsi/blz1230.c +++ b/drivers/scsi/blz1230.c | |||
@@ -224,7 +224,7 @@ static int dma_can_transfer(struct NCR_ESP *esp, Scsi_Cmnd *sp) | |||
224 | static void dma_dump_state(struct NCR_ESP *esp) | 224 | static void dma_dump_state(struct NCR_ESP *esp) |
225 | { | 225 | { |
226 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", | 226 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", |
227 | custom.intreqr, custom.intenar)); | 227 | amiga_custom.intreqr, amiga_custom.intenar)); |
228 | } | 228 | } |
229 | 229 | ||
230 | void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) | 230 | void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) |
@@ -298,7 +298,7 @@ static int dma_irq_p(struct NCR_ESP *esp) | |||
298 | 298 | ||
299 | static int dma_ports_p(struct NCR_ESP *esp) | 299 | static int dma_ports_p(struct NCR_ESP *esp) |
300 | { | 300 | { |
301 | return ((custom.intenar) & IF_PORTS); | 301 | return ((amiga_custom.intenar) & IF_PORTS); |
302 | } | 302 | } |
303 | 303 | ||
304 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) | 304 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) |
diff --git a/drivers/scsi/blz2060.c b/drivers/scsi/blz2060.c index d72d05fffdfa..4ebe69e32756 100644 --- a/drivers/scsi/blz2060.c +++ b/drivers/scsi/blz2060.c | |||
@@ -190,7 +190,7 @@ static int dma_can_transfer(struct NCR_ESP *esp, Scsi_Cmnd *sp) | |||
190 | static void dma_dump_state(struct NCR_ESP *esp) | 190 | static void dma_dump_state(struct NCR_ESP *esp) |
191 | { | 191 | { |
192 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", | 192 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", |
193 | custom.intreqr, custom.intenar)); | 193 | amiga_custom.intreqr, amiga_custom.intenar)); |
194 | } | 194 | } |
195 | 195 | ||
196 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) | 196 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) |
@@ -251,7 +251,7 @@ static void dma_led_on(struct NCR_ESP *esp) | |||
251 | 251 | ||
252 | static int dma_ports_p(struct NCR_ESP *esp) | 252 | static int dma_ports_p(struct NCR_ESP *esp) |
253 | { | 253 | { |
254 | return ((custom.intenar) & IF_PORTS); | 254 | return ((amiga_custom.intenar) & IF_PORTS); |
255 | } | 255 | } |
256 | 256 | ||
257 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) | 257 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) |
diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c index ccbbae2bf478..c3f27285db1b 100644 --- a/drivers/scsi/ch.c +++ b/drivers/scsi/ch.c | |||
@@ -20,9 +20,9 @@ | |||
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/blkdev.h> | 21 | #include <linux/blkdev.h> |
22 | #include <linux/completion.h> | 22 | #include <linux/completion.h> |
23 | #include <linux/ioctl32.h> | ||
24 | #include <linux/compat.h> | 23 | #include <linux/compat.h> |
25 | #include <linux/chio.h> /* here are all the ioctls */ | 24 | #include <linux/chio.h> /* here are all the ioctls */ |
25 | #include <linux/mutex.h> | ||
26 | 26 | ||
27 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
28 | #include <scsi/scsi_cmnd.h> | 28 | #include <scsi/scsi_cmnd.h> |
@@ -75,7 +75,7 @@ static int vendor_counts[CH_TYPES-4]; | |||
75 | module_param_array(vendor_firsts, int, NULL, 0444); | 75 | module_param_array(vendor_firsts, int, NULL, 0444); |
76 | module_param_array(vendor_counts, int, NULL, 0444); | 76 | module_param_array(vendor_counts, int, NULL, 0444); |
77 | 77 | ||
78 | static char *vendor_labels[CH_TYPES-4] = { | 78 | static const char * vendor_labels[CH_TYPES-4] = { |
79 | "v0", "v1", "v2", "v3" | 79 | "v0", "v1", "v2", "v3" |
80 | }; | 80 | }; |
81 | // module_param_string_array(vendor_labels, NULL, 0444); | 81 | // module_param_string_array(vendor_labels, NULL, 0444); |
@@ -112,7 +112,7 @@ typedef struct { | |||
112 | u_int counts[CH_TYPES]; | 112 | u_int counts[CH_TYPES]; |
113 | u_int unit_attention; | 113 | u_int unit_attention; |
114 | u_int voltags; | 114 | u_int voltags; |
115 | struct semaphore lock; | 115 | struct mutex lock; |
116 | } scsi_changer; | 116 | } scsi_changer; |
117 | 117 | ||
118 | static LIST_HEAD(ch_devlist); | 118 | static LIST_HEAD(ch_devlist); |
@@ -140,7 +140,7 @@ static struct file_operations changer_fops = | |||
140 | #endif | 140 | #endif |
141 | }; | 141 | }; |
142 | 142 | ||
143 | static struct { | 143 | static const struct { |
144 | unsigned char sense; | 144 | unsigned char sense; |
145 | unsigned char asc; | 145 | unsigned char asc; |
146 | unsigned char ascq; | 146 | unsigned char ascq; |
@@ -566,7 +566,7 @@ static int ch_gstatus(scsi_changer *ch, int type, unsigned char __user *dest) | |||
566 | u_char data[16]; | 566 | u_char data[16]; |
567 | unsigned int i; | 567 | unsigned int i; |
568 | 568 | ||
569 | down(&ch->lock); | 569 | mutex_lock(&ch->lock); |
570 | for (i = 0; i < ch->counts[type]; i++) { | 570 | for (i = 0; i < ch->counts[type]; i++) { |
571 | if (0 != ch_read_element_status | 571 | if (0 != ch_read_element_status |
572 | (ch, ch->firsts[type]+i,data)) { | 572 | (ch, ch->firsts[type]+i,data)) { |
@@ -583,7 +583,7 @@ static int ch_gstatus(scsi_changer *ch, int type, unsigned char __user *dest) | |||
583 | if (0 != retval) | 583 | if (0 != retval) |
584 | break; | 584 | break; |
585 | } | 585 | } |
586 | up(&ch->lock); | 586 | mutex_unlock(&ch->lock); |
587 | return retval; | 587 | return retval; |
588 | } | 588 | } |
589 | 589 | ||
@@ -688,11 +688,11 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
688 | dprintk("CHIOPOSITION: invalid parameter\n"); | 688 | dprintk("CHIOPOSITION: invalid parameter\n"); |
689 | return -EBADSLT; | 689 | return -EBADSLT; |
690 | } | 690 | } |
691 | down(&ch->lock); | 691 | mutex_lock(&ch->lock); |
692 | retval = ch_position(ch,0, | 692 | retval = ch_position(ch,0, |
693 | ch->firsts[pos.cp_type] + pos.cp_unit, | 693 | ch->firsts[pos.cp_type] + pos.cp_unit, |
694 | pos.cp_flags & CP_INVERT); | 694 | pos.cp_flags & CP_INVERT); |
695 | up(&ch->lock); | 695 | mutex_unlock(&ch->lock); |
696 | return retval; | 696 | return retval; |
697 | } | 697 | } |
698 | 698 | ||
@@ -709,12 +709,12 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
709 | return -EBADSLT; | 709 | return -EBADSLT; |
710 | } | 710 | } |
711 | 711 | ||
712 | down(&ch->lock); | 712 | mutex_lock(&ch->lock); |
713 | retval = ch_move(ch,0, | 713 | retval = ch_move(ch,0, |
714 | ch->firsts[mv.cm_fromtype] + mv.cm_fromunit, | 714 | ch->firsts[mv.cm_fromtype] + mv.cm_fromunit, |
715 | ch->firsts[mv.cm_totype] + mv.cm_tounit, | 715 | ch->firsts[mv.cm_totype] + mv.cm_tounit, |
716 | mv.cm_flags & CM_INVERT); | 716 | mv.cm_flags & CM_INVERT); |
717 | up(&ch->lock); | 717 | mutex_unlock(&ch->lock); |
718 | return retval; | 718 | return retval; |
719 | } | 719 | } |
720 | 720 | ||
@@ -732,14 +732,14 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
732 | return -EBADSLT; | 732 | return -EBADSLT; |
733 | } | 733 | } |
734 | 734 | ||
735 | down(&ch->lock); | 735 | mutex_lock(&ch->lock); |
736 | retval = ch_exchange | 736 | retval = ch_exchange |
737 | (ch,0, | 737 | (ch,0, |
738 | ch->firsts[mv.ce_srctype] + mv.ce_srcunit, | 738 | ch->firsts[mv.ce_srctype] + mv.ce_srcunit, |
739 | ch->firsts[mv.ce_fdsttype] + mv.ce_fdstunit, | 739 | ch->firsts[mv.ce_fdsttype] + mv.ce_fdstunit, |
740 | ch->firsts[mv.ce_sdsttype] + mv.ce_sdstunit, | 740 | ch->firsts[mv.ce_sdsttype] + mv.ce_sdstunit, |
741 | mv.ce_flags & CE_INVERT1, mv.ce_flags & CE_INVERT2); | 741 | mv.ce_flags & CE_INVERT1, mv.ce_flags & CE_INVERT2); |
742 | up(&ch->lock); | 742 | mutex_unlock(&ch->lock); |
743 | return retval; | 743 | return retval; |
744 | } | 744 | } |
745 | 745 | ||
@@ -773,7 +773,7 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
773 | buffer = kmalloc(512, GFP_KERNEL | GFP_DMA); | 773 | buffer = kmalloc(512, GFP_KERNEL | GFP_DMA); |
774 | if (!buffer) | 774 | if (!buffer) |
775 | return -ENOMEM; | 775 | return -ENOMEM; |
776 | down(&ch->lock); | 776 | mutex_lock(&ch->lock); |
777 | 777 | ||
778 | voltag_retry: | 778 | voltag_retry: |
779 | memset(cmd,0,sizeof(cmd)); | 779 | memset(cmd,0,sizeof(cmd)); |
@@ -824,7 +824,7 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
824 | goto voltag_retry; | 824 | goto voltag_retry; |
825 | } | 825 | } |
826 | kfree(buffer); | 826 | kfree(buffer); |
827 | up(&ch->lock); | 827 | mutex_unlock(&ch->lock); |
828 | 828 | ||
829 | if (copy_to_user(argp, &cge, sizeof (cge))) | 829 | if (copy_to_user(argp, &cge, sizeof (cge))) |
830 | return -EFAULT; | 830 | return -EFAULT; |
@@ -833,9 +833,9 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
833 | 833 | ||
834 | case CHIOINITELEM: | 834 | case CHIOINITELEM: |
835 | { | 835 | { |
836 | down(&ch->lock); | 836 | mutex_lock(&ch->lock); |
837 | retval = ch_init_elem(ch); | 837 | retval = ch_init_elem(ch); |
838 | up(&ch->lock); | 838 | mutex_unlock(&ch->lock); |
839 | return retval; | 839 | return retval; |
840 | } | 840 | } |
841 | 841 | ||
@@ -852,12 +852,12 @@ static int ch_ioctl(struct inode * inode, struct file * file, | |||
852 | return -EBADSLT; | 852 | return -EBADSLT; |
853 | } | 853 | } |
854 | elem = ch->firsts[csv.csv_type] + csv.csv_unit; | 854 | elem = ch->firsts[csv.csv_type] + csv.csv_unit; |
855 | down(&ch->lock); | 855 | mutex_lock(&ch->lock); |
856 | retval = ch_set_voltag(ch, elem, | 856 | retval = ch_set_voltag(ch, elem, |
857 | csv.csv_flags & CSV_AVOLTAG, | 857 | csv.csv_flags & CSV_AVOLTAG, |
858 | csv.csv_flags & CSV_CLEARTAG, | 858 | csv.csv_flags & CSV_CLEARTAG, |
859 | csv.csv_voltag); | 859 | csv.csv_voltag); |
860 | up(&ch->lock); | 860 | mutex_unlock(&ch->lock); |
861 | return retval; | 861 | return retval; |
862 | } | 862 | } |
863 | 863 | ||
@@ -930,7 +930,7 @@ static int ch_probe(struct device *dev) | |||
930 | memset(ch,0,sizeof(*ch)); | 930 | memset(ch,0,sizeof(*ch)); |
931 | ch->minor = ch_devcount; | 931 | ch->minor = ch_devcount; |
932 | sprintf(ch->name,"ch%d",ch->minor); | 932 | sprintf(ch->name,"ch%d",ch->minor); |
933 | init_MUTEX(&ch->lock); | 933 | mutex_init(&ch->lock); |
934 | ch->device = sd; | 934 | ch->device = sd; |
935 | ch_readconfig(ch); | 935 | ch_readconfig(ch); |
936 | if (init) | 936 | if (init) |
diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c index 09bc81557b6e..30a335349cee 100644 --- a/drivers/scsi/constants.c +++ b/drivers/scsi/constants.c | |||
@@ -1065,7 +1065,7 @@ struct error_info2 { | |||
1065 | const char * fmt; | 1065 | const char * fmt; |
1066 | }; | 1066 | }; |
1067 | 1067 | ||
1068 | static struct error_info2 additional2[] = | 1068 | static const struct error_info2 additional2[] = |
1069 | { | 1069 | { |
1070 | {0x40,0x00,0x7f,"Ram failure (%x)"}, | 1070 | {0x40,0x00,0x7f,"Ram failure (%x)"}, |
1071 | {0x40,0x80,0xff,"Diagnostic failure on component (%x)"}, | 1071 | {0x40,0x80,0xff,"Diagnostic failure on component (%x)"}, |
@@ -1077,7 +1077,7 @@ static struct error_info2 additional2[] = | |||
1077 | }; | 1077 | }; |
1078 | 1078 | ||
1079 | /* description of the sense key values */ | 1079 | /* description of the sense key values */ |
1080 | static const char *snstext[] = { | 1080 | static const char * const snstext[] = { |
1081 | "No Sense", /* 0: There is no sense information */ | 1081 | "No Sense", /* 0: There is no sense information */ |
1082 | "Recovered Error", /* 1: The last command completed successfully | 1082 | "Recovered Error", /* 1: The last command completed successfully |
1083 | but used error correction */ | 1083 | but used error correction */ |
@@ -1278,114 +1278,6 @@ void scsi_print_req_sense(const char *devclass, struct scsi_request *sreq) | |||
1278 | } | 1278 | } |
1279 | EXPORT_SYMBOL(scsi_print_req_sense); | 1279 | EXPORT_SYMBOL(scsi_print_req_sense); |
1280 | 1280 | ||
1281 | #ifdef CONFIG_SCSI_CONSTANTS | ||
1282 | static const char *one_byte_msgs[] = { | ||
1283 | /* 0x00 */ "Command Complete", NULL, "Save Pointers", | ||
1284 | /* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error", | ||
1285 | /* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error", | ||
1286 | /* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag", | ||
1287 | /* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue", | ||
1288 | /* 0x0f */ "Initiate Recovery", "Release Recovery" | ||
1289 | }; | ||
1290 | #define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs) / sizeof (const char *)) | ||
1291 | |||
1292 | static const char *two_byte_msgs[] = { | ||
1293 | /* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag" | ||
1294 | /* 0x23 */ "Ignore Wide Residue" | ||
1295 | }; | ||
1296 | #define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs) / sizeof (const char *)) | ||
1297 | |||
1298 | static const char *extended_msgs[] = { | ||
1299 | /* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request", | ||
1300 | /* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request" | ||
1301 | }; | ||
1302 | #define NO_EXTENDED_MSGS (sizeof(two_byte_msgs) / sizeof (const char *)) | ||
1303 | |||
1304 | |||
1305 | int scsi_print_msg (const unsigned char *msg) | ||
1306 | { | ||
1307 | int len = 0, i; | ||
1308 | if (msg[0] == EXTENDED_MESSAGE) { | ||
1309 | len = 3 + msg[1]; | ||
1310 | if (msg[2] < NO_EXTENDED_MSGS) | ||
1311 | printk ("%s ", extended_msgs[msg[2]]); | ||
1312 | else | ||
1313 | printk ("Extended Message, reserved code (0x%02x) ", | ||
1314 | (int) msg[2]); | ||
1315 | switch (msg[2]) { | ||
1316 | case EXTENDED_MODIFY_DATA_POINTER: | ||
1317 | printk("pointer = %d", (int) (msg[3] << 24) | | ||
1318 | (msg[4] << 16) | (msg[5] << 8) | msg[6]); | ||
1319 | break; | ||
1320 | case EXTENDED_SDTR: | ||
1321 | printk("period = %d ns, offset = %d", | ||
1322 | (int) msg[3] * 4, (int) msg[4]); | ||
1323 | break; | ||
1324 | case EXTENDED_WDTR: | ||
1325 | printk("width = 2^%d bytes", msg[3]); | ||
1326 | break; | ||
1327 | default: | ||
1328 | for (i = 2; i < len; ++i) | ||
1329 | printk("%02x ", msg[i]); | ||
1330 | } | ||
1331 | /* Identify */ | ||
1332 | } else if (msg[0] & 0x80) { | ||
1333 | printk("Identify disconnect %sallowed %s %d ", | ||
1334 | (msg[0] & 0x40) ? "" : "not ", | ||
1335 | (msg[0] & 0x20) ? "target routine" : "lun", | ||
1336 | msg[0] & 0x7); | ||
1337 | len = 1; | ||
1338 | /* Normal One byte */ | ||
1339 | } else if (msg[0] < 0x1f) { | ||
1340 | if (msg[0] < NO_ONE_BYTE_MSGS) | ||
1341 | printk(one_byte_msgs[msg[0]]); | ||
1342 | else | ||
1343 | printk("reserved (%02x) ", msg[0]); | ||
1344 | len = 1; | ||
1345 | /* Two byte */ | ||
1346 | } else if (msg[0] <= 0x2f) { | ||
1347 | if ((msg[0] - 0x20) < NO_TWO_BYTE_MSGS) | ||
1348 | printk("%s %02x ", two_byte_msgs[msg[0] - 0x20], | ||
1349 | msg[1]); | ||
1350 | else | ||
1351 | printk("reserved two byte (%02x %02x) ", | ||
1352 | msg[0], msg[1]); | ||
1353 | len = 2; | ||
1354 | } else | ||
1355 | printk("reserved"); | ||
1356 | return len; | ||
1357 | } | ||
1358 | EXPORT_SYMBOL(scsi_print_msg); | ||
1359 | |||
1360 | #else /* ifndef CONFIG_SCSI_CONSTANTS */ | ||
1361 | |||
1362 | int scsi_print_msg (const unsigned char *msg) | ||
1363 | { | ||
1364 | int len = 0, i; | ||
1365 | |||
1366 | if (msg[0] == EXTENDED_MESSAGE) { | ||
1367 | len = 3 + msg[1]; | ||
1368 | for (i = 0; i < len; ++i) | ||
1369 | printk("%02x ", msg[i]); | ||
1370 | /* Identify */ | ||
1371 | } else if (msg[0] & 0x80) { | ||
1372 | printk("%02x ", msg[0]); | ||
1373 | len = 1; | ||
1374 | /* Normal One byte */ | ||
1375 | } else if (msg[0] < 0x1f) { | ||
1376 | printk("%02x ", msg[0]); | ||
1377 | len = 1; | ||
1378 | /* Two byte */ | ||
1379 | } else if (msg[0] <= 0x2f) { | ||
1380 | printk("%02x %02x", msg[0], msg[1]); | ||
1381 | len = 2; | ||
1382 | } else | ||
1383 | printk("%02x ", msg[0]); | ||
1384 | return len; | ||
1385 | } | ||
1386 | EXPORT_SYMBOL(scsi_print_msg); | ||
1387 | #endif /* ! CONFIG_SCSI_CONSTANTS */ | ||
1388 | |||
1389 | void scsi_print_command(struct scsi_cmnd *cmd) | 1281 | void scsi_print_command(struct scsi_cmnd *cmd) |
1390 | { | 1282 | { |
1391 | /* Assume appended output (i.e. not at start of line) */ | 1283 | /* Assume appended output (i.e. not at start of line) */ |
@@ -1397,7 +1289,7 @@ EXPORT_SYMBOL(scsi_print_command); | |||
1397 | 1289 | ||
1398 | #ifdef CONFIG_SCSI_CONSTANTS | 1290 | #ifdef CONFIG_SCSI_CONSTANTS |
1399 | 1291 | ||
1400 | static const char * hostbyte_table[]={ | 1292 | static const char * const hostbyte_table[]={ |
1401 | "DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET", | 1293 | "DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET", |
1402 | "DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR", | 1294 | "DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR", |
1403 | "DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"}; | 1295 | "DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"}; |
@@ -1422,12 +1314,12 @@ void scsi_print_hostbyte(int scsiresult) | |||
1422 | 1314 | ||
1423 | #ifdef CONFIG_SCSI_CONSTANTS | 1315 | #ifdef CONFIG_SCSI_CONSTANTS |
1424 | 1316 | ||
1425 | static const char * driverbyte_table[]={ | 1317 | static const char * const driverbyte_table[]={ |
1426 | "DRIVER_OK", "DRIVER_BUSY", "DRIVER_SOFT", "DRIVER_MEDIA", "DRIVER_ERROR", | 1318 | "DRIVER_OK", "DRIVER_BUSY", "DRIVER_SOFT", "DRIVER_MEDIA", "DRIVER_ERROR", |
1427 | "DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"}; | 1319 | "DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"}; |
1428 | #define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *)) | 1320 | #define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *)) |
1429 | 1321 | ||
1430 | static const char * driversuggest_table[]={"SUGGEST_OK", | 1322 | static const char * const driversuggest_table[]={"SUGGEST_OK", |
1431 | "SUGGEST_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE", | 1323 | "SUGGEST_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE", |
1432 | "SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"}; | 1324 | "SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"}; |
1433 | #define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *)) | 1325 | #define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *)) |
diff --git a/drivers/scsi/cyberstorm.c b/drivers/scsi/cyberstorm.c index f9b940e56430..a4a4fac5c0a1 100644 --- a/drivers/scsi/cyberstorm.c +++ b/drivers/scsi/cyberstorm.c | |||
@@ -223,7 +223,7 @@ static void dma_dump_state(struct NCR_ESP *esp) | |||
223 | esp->esp_id, ((struct cyber_dma_registers *) | 223 | esp->esp_id, ((struct cyber_dma_registers *) |
224 | (esp->dregs))->cond_reg)); | 224 | (esp->dregs))->cond_reg)); |
225 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", | 225 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", |
226 | custom.intreqr, custom.intenar)); | 226 | amiga_custom.intreqr, amiga_custom.intenar)); |
227 | } | 227 | } |
228 | 228 | ||
229 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) | 229 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) |
@@ -322,7 +322,7 @@ static void dma_led_on(struct NCR_ESP *esp) | |||
322 | 322 | ||
323 | static int dma_ports_p(struct NCR_ESP *esp) | 323 | static int dma_ports_p(struct NCR_ESP *esp) |
324 | { | 324 | { |
325 | return ((custom.intenar) & IF_PORTS); | 325 | return ((amiga_custom.intenar) & IF_PORTS); |
326 | } | 326 | } |
327 | 327 | ||
328 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) | 328 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) |
diff --git a/drivers/scsi/cyberstormII.c b/drivers/scsi/cyberstormII.c index a3caabfd7557..3a803d73bc5f 100644 --- a/drivers/scsi/cyberstormII.c +++ b/drivers/scsi/cyberstormII.c | |||
@@ -200,7 +200,7 @@ static void dma_dump_state(struct NCR_ESP *esp) | |||
200 | esp->esp_id, ((struct cyberII_dma_registers *) | 200 | esp->esp_id, ((struct cyberII_dma_registers *) |
201 | (esp->dregs))->cond_reg)); | 201 | (esp->dregs))->cond_reg)); |
202 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", | 202 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", |
203 | custom.intreqr, custom.intenar)); | 203 | amiga_custom.intreqr, amiga_custom.intenar)); |
204 | } | 204 | } |
205 | 205 | ||
206 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) | 206 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) |
@@ -259,7 +259,7 @@ static void dma_led_on(struct NCR_ESP *esp) | |||
259 | 259 | ||
260 | static int dma_ports_p(struct NCR_ESP *esp) | 260 | static int dma_ports_p(struct NCR_ESP *esp) |
261 | { | 261 | { |
262 | return ((custom.intenar) & IF_PORTS); | 262 | return ((amiga_custom.intenar) & IF_PORTS); |
263 | } | 263 | } |
264 | 264 | ||
265 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) | 265 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) |
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c index 6252b9ddc01e..6e6b293dcb28 100644 --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c | |||
@@ -61,6 +61,7 @@ MODULE_DESCRIPTION("Adaptec I2O RAID Driver"); | |||
61 | #include <linux/timer.h> | 61 | #include <linux/timer.h> |
62 | #include <linux/string.h> | 62 | #include <linux/string.h> |
63 | #include <linux/ioport.h> | 63 | #include <linux/ioport.h> |
64 | #include <linux/mutex.h> | ||
64 | 65 | ||
65 | #include <asm/processor.h> /* for boot_cpu_data */ | 66 | #include <asm/processor.h> /* for boot_cpu_data */ |
66 | #include <asm/pgtable.h> | 67 | #include <asm/pgtable.h> |
@@ -106,7 +107,7 @@ static dpt_sig_S DPTI_sig = { | |||
106 | *============================================================================ | 107 | *============================================================================ |
107 | */ | 108 | */ |
108 | 109 | ||
109 | static DECLARE_MUTEX(adpt_configuration_lock); | 110 | static DEFINE_MUTEX(adpt_configuration_lock); |
110 | 111 | ||
111 | static struct i2o_sys_tbl *sys_tbl = NULL; | 112 | static struct i2o_sys_tbl *sys_tbl = NULL; |
112 | static int sys_tbl_ind = 0; | 113 | static int sys_tbl_ind = 0; |
@@ -537,13 +538,13 @@ static int adpt_proc_info(struct Scsi_Host *host, char *buffer, char **start, of | |||
537 | */ | 538 | */ |
538 | 539 | ||
539 | // Find HBA (host bus adapter) we are looking for | 540 | // Find HBA (host bus adapter) we are looking for |
540 | down(&adpt_configuration_lock); | 541 | mutex_lock(&adpt_configuration_lock); |
541 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 542 | for (pHba = hba_chain; pHba; pHba = pHba->next) { |
542 | if (pHba->host == host) { | 543 | if (pHba->host == host) { |
543 | break; /* found adapter */ | 544 | break; /* found adapter */ |
544 | } | 545 | } |
545 | } | 546 | } |
546 | up(&adpt_configuration_lock); | 547 | mutex_unlock(&adpt_configuration_lock); |
547 | if (pHba == NULL) { | 548 | if (pHba == NULL) { |
548 | return 0; | 549 | return 0; |
549 | } | 550 | } |
@@ -898,6 +899,12 @@ static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev | |||
898 | if(pci_enable_device(pDev)) { | 899 | if(pci_enable_device(pDev)) { |
899 | return -EINVAL; | 900 | return -EINVAL; |
900 | } | 901 | } |
902 | |||
903 | if (pci_request_regions(pDev, "dpt_i2o")) { | ||
904 | PERROR("dpti: adpt_config_hba: pci request region failed\n"); | ||
905 | return -EINVAL; | ||
906 | } | ||
907 | |||
901 | pci_set_master(pDev); | 908 | pci_set_master(pDev); |
902 | if (pci_set_dma_mask(pDev, 0xffffffffffffffffULL) && | 909 | if (pci_set_dma_mask(pDev, 0xffffffffffffffffULL) && |
903 | pci_set_dma_mask(pDev, 0xffffffffULL)) | 910 | pci_set_dma_mask(pDev, 0xffffffffULL)) |
@@ -923,10 +930,6 @@ static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev | |||
923 | raptorFlag = TRUE; | 930 | raptorFlag = TRUE; |
924 | } | 931 | } |
925 | 932 | ||
926 | if (pci_request_regions(pDev, "dpt_i2o")) { | ||
927 | PERROR("dpti: adpt_config_hba: pci request region failed\n"); | ||
928 | return -EINVAL; | ||
929 | } | ||
930 | base_addr_virt = ioremap(base_addr0_phys,hba_map0_area_size); | 933 | base_addr_virt = ioremap(base_addr0_phys,hba_map0_area_size); |
931 | if (!base_addr_virt) { | 934 | if (!base_addr_virt) { |
932 | pci_release_regions(pDev); | 935 | pci_release_regions(pDev); |
@@ -958,7 +961,7 @@ static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev | |||
958 | } | 961 | } |
959 | memset(pHba, 0, sizeof(adpt_hba)); | 962 | memset(pHba, 0, sizeof(adpt_hba)); |
960 | 963 | ||
961 | down(&adpt_configuration_lock); | 964 | mutex_lock(&adpt_configuration_lock); |
962 | 965 | ||
963 | if(hba_chain != NULL){ | 966 | if(hba_chain != NULL){ |
964 | for(p = hba_chain; p->next; p = p->next); | 967 | for(p = hba_chain; p->next; p = p->next); |
@@ -971,7 +974,7 @@ static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev | |||
971 | sprintf(pHba->name, "dpti%d", hba_count); | 974 | sprintf(pHba->name, "dpti%d", hba_count); |
972 | hba_count++; | 975 | hba_count++; |
973 | 976 | ||
974 | up(&adpt_configuration_lock); | 977 | mutex_unlock(&adpt_configuration_lock); |
975 | 978 | ||
976 | pHba->pDev = pDev; | 979 | pHba->pDev = pDev; |
977 | pHba->base_addr_phys = base_addr0_phys; | 980 | pHba->base_addr_phys = base_addr0_phys; |
@@ -1027,7 +1030,7 @@ static void adpt_i2o_delete_hba(adpt_hba* pHba) | |||
1027 | struct adpt_device* pNext; | 1030 | struct adpt_device* pNext; |
1028 | 1031 | ||
1029 | 1032 | ||
1030 | down(&adpt_configuration_lock); | 1033 | mutex_lock(&adpt_configuration_lock); |
1031 | // scsi_unregister calls our adpt_release which | 1034 | // scsi_unregister calls our adpt_release which |
1032 | // does a quiese | 1035 | // does a quiese |
1033 | if(pHba->host){ | 1036 | if(pHba->host){ |
@@ -1046,7 +1049,7 @@ static void adpt_i2o_delete_hba(adpt_hba* pHba) | |||
1046 | } | 1049 | } |
1047 | 1050 | ||
1048 | hba_count--; | 1051 | hba_count--; |
1049 | up(&adpt_configuration_lock); | 1052 | mutex_unlock(&adpt_configuration_lock); |
1050 | 1053 | ||
1051 | iounmap(pHba->base_addr_virt); | 1054 | iounmap(pHba->base_addr_virt); |
1052 | pci_release_regions(pHba->pDev); | 1055 | pci_release_regions(pHba->pDev); |
@@ -1549,7 +1552,7 @@ static int adpt_i2o_parse_lct(adpt_hba* pHba) | |||
1549 | 1552 | ||
1550 | static int adpt_i2o_install_device(adpt_hba* pHba, struct i2o_device *d) | 1553 | static int adpt_i2o_install_device(adpt_hba* pHba, struct i2o_device *d) |
1551 | { | 1554 | { |
1552 | down(&adpt_configuration_lock); | 1555 | mutex_lock(&adpt_configuration_lock); |
1553 | d->controller=pHba; | 1556 | d->controller=pHba; |
1554 | d->owner=NULL; | 1557 | d->owner=NULL; |
1555 | d->next=pHba->devices; | 1558 | d->next=pHba->devices; |
@@ -1560,7 +1563,7 @@ static int adpt_i2o_install_device(adpt_hba* pHba, struct i2o_device *d) | |||
1560 | pHba->devices=d; | 1563 | pHba->devices=d; |
1561 | *d->dev_name = 0; | 1564 | *d->dev_name = 0; |
1562 | 1565 | ||
1563 | up(&adpt_configuration_lock); | 1566 | mutex_unlock(&adpt_configuration_lock); |
1564 | return 0; | 1567 | return 0; |
1565 | } | 1568 | } |
1566 | 1569 | ||
@@ -1575,24 +1578,24 @@ static int adpt_open(struct inode *inode, struct file *file) | |||
1575 | if (minor >= hba_count) { | 1578 | if (minor >= hba_count) { |
1576 | return -ENXIO; | 1579 | return -ENXIO; |
1577 | } | 1580 | } |
1578 | down(&adpt_configuration_lock); | 1581 | mutex_lock(&adpt_configuration_lock); |
1579 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 1582 | for (pHba = hba_chain; pHba; pHba = pHba->next) { |
1580 | if (pHba->unit == minor) { | 1583 | if (pHba->unit == minor) { |
1581 | break; /* found adapter */ | 1584 | break; /* found adapter */ |
1582 | } | 1585 | } |
1583 | } | 1586 | } |
1584 | if (pHba == NULL) { | 1587 | if (pHba == NULL) { |
1585 | up(&adpt_configuration_lock); | 1588 | mutex_unlock(&adpt_configuration_lock); |
1586 | return -ENXIO; | 1589 | return -ENXIO; |
1587 | } | 1590 | } |
1588 | 1591 | ||
1589 | // if(pHba->in_use){ | 1592 | // if(pHba->in_use){ |
1590 | // up(&adpt_configuration_lock); | 1593 | // mutex_unlock(&adpt_configuration_lock); |
1591 | // return -EBUSY; | 1594 | // return -EBUSY; |
1592 | // } | 1595 | // } |
1593 | 1596 | ||
1594 | pHba->in_use = 1; | 1597 | pHba->in_use = 1; |
1595 | up(&adpt_configuration_lock); | 1598 | mutex_unlock(&adpt_configuration_lock); |
1596 | 1599 | ||
1597 | return 0; | 1600 | return 0; |
1598 | } | 1601 | } |
@@ -1606,13 +1609,13 @@ static int adpt_close(struct inode *inode, struct file *file) | |||
1606 | if (minor >= hba_count) { | 1609 | if (minor >= hba_count) { |
1607 | return -ENXIO; | 1610 | return -ENXIO; |
1608 | } | 1611 | } |
1609 | down(&adpt_configuration_lock); | 1612 | mutex_lock(&adpt_configuration_lock); |
1610 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 1613 | for (pHba = hba_chain; pHba; pHba = pHba->next) { |
1611 | if (pHba->unit == minor) { | 1614 | if (pHba->unit == minor) { |
1612 | break; /* found adapter */ | 1615 | break; /* found adapter */ |
1613 | } | 1616 | } |
1614 | } | 1617 | } |
1615 | up(&adpt_configuration_lock); | 1618 | mutex_unlock(&adpt_configuration_lock); |
1616 | if (pHba == NULL) { | 1619 | if (pHba == NULL) { |
1617 | return -ENXIO; | 1620 | return -ENXIO; |
1618 | } | 1621 | } |
@@ -1910,13 +1913,13 @@ static int adpt_ioctl(struct inode *inode, struct file *file, uint cmd, | |||
1910 | if (minor >= DPTI_MAX_HBA){ | 1913 | if (minor >= DPTI_MAX_HBA){ |
1911 | return -ENXIO; | 1914 | return -ENXIO; |
1912 | } | 1915 | } |
1913 | down(&adpt_configuration_lock); | 1916 | mutex_lock(&adpt_configuration_lock); |
1914 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 1917 | for (pHba = hba_chain; pHba; pHba = pHba->next) { |
1915 | if (pHba->unit == minor) { | 1918 | if (pHba->unit == minor) { |
1916 | break; /* found adapter */ | 1919 | break; /* found adapter */ |
1917 | } | 1920 | } |
1918 | } | 1921 | } |
1919 | up(&adpt_configuration_lock); | 1922 | mutex_unlock(&adpt_configuration_lock); |
1920 | if(pHba == NULL){ | 1923 | if(pHba == NULL){ |
1921 | return -ENXIO; | 1924 | return -ENXIO; |
1922 | } | 1925 | } |
diff --git a/drivers/scsi/fastlane.c b/drivers/scsi/fastlane.c index ccee68b52f7e..8ae9c406a83b 100644 --- a/drivers/scsi/fastlane.c +++ b/drivers/scsi/fastlane.c | |||
@@ -268,7 +268,7 @@ static void dma_dump_state(struct NCR_ESP *esp) | |||
268 | esp->esp_id, ((struct fastlane_dma_registers *) | 268 | esp->esp_id, ((struct fastlane_dma_registers *) |
269 | (esp->dregs))->cond_reg)); | 269 | (esp->dregs))->cond_reg)); |
270 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", | 270 | ESPLOG(("intreq:<%04x>, intena:<%04x>\n", |
271 | custom.intreqr, custom.intenar)); | 271 | amiga_custom.intreqr, amiga_custom.intenar)); |
272 | } | 272 | } |
273 | 273 | ||
274 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) | 274 | static void dma_init_read(struct NCR_ESP *esp, __u32 addr, int length) |
@@ -368,7 +368,7 @@ static void dma_led_on(struct NCR_ESP *esp) | |||
368 | 368 | ||
369 | static int dma_ports_p(struct NCR_ESP *esp) | 369 | static int dma_ports_p(struct NCR_ESP *esp) |
370 | { | 370 | { |
371 | return ((custom.intenar) & IF_PORTS); | 371 | return ((amiga_custom.intenar) & IF_PORTS); |
372 | } | 372 | } |
373 | 373 | ||
374 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) | 374 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) |
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c index a6deb016584c..bd3ffdf6c800 100644 --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c | |||
@@ -328,7 +328,7 @@ | |||
328 | * hdr_channel:x x - number of virtual bus for host drives | 328 | * hdr_channel:x x - number of virtual bus for host drives |
329 | * shared_access:Y disable driver reserve/release protocol to | 329 | * shared_access:Y disable driver reserve/release protocol to |
330 | * access a shared resource from several nodes, | 330 | * access a shared resource from several nodes, |
331 | * appropiate controller firmware required | 331 | * appropriate controller firmware required |
332 | * shared_access:N enable driver reserve/release protocol | 332 | * shared_access:N enable driver reserve/release protocol |
333 | * probe_eisa_isa:Y scan for EISA/ISA controllers | 333 | * probe_eisa_isa:Y scan for EISA/ISA controllers |
334 | * probe_eisa_isa:N do not scan for EISA/ISA controllers | 334 | * probe_eisa_isa:N do not scan for EISA/ISA controllers |
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c index 5b9c2c5a7f0e..588107923499 100644 --- a/drivers/scsi/hosts.c +++ b/drivers/scsi/hosts.c | |||
@@ -156,16 +156,16 @@ EXPORT_SYMBOL(scsi_host_set_state); | |||
156 | void scsi_remove_host(struct Scsi_Host *shost) | 156 | void scsi_remove_host(struct Scsi_Host *shost) |
157 | { | 157 | { |
158 | unsigned long flags; | 158 | unsigned long flags; |
159 | down(&shost->scan_mutex); | 159 | mutex_lock(&shost->scan_mutex); |
160 | spin_lock_irqsave(shost->host_lock, flags); | 160 | spin_lock_irqsave(shost->host_lock, flags); |
161 | if (scsi_host_set_state(shost, SHOST_CANCEL)) | 161 | if (scsi_host_set_state(shost, SHOST_CANCEL)) |
162 | if (scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY)) { | 162 | if (scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY)) { |
163 | spin_unlock_irqrestore(shost->host_lock, flags); | 163 | spin_unlock_irqrestore(shost->host_lock, flags); |
164 | up(&shost->scan_mutex); | 164 | mutex_unlock(&shost->scan_mutex); |
165 | return; | 165 | return; |
166 | } | 166 | } |
167 | spin_unlock_irqrestore(shost->host_lock, flags); | 167 | spin_unlock_irqrestore(shost->host_lock, flags); |
168 | up(&shost->scan_mutex); | 168 | mutex_unlock(&shost->scan_mutex); |
169 | scsi_forget_host(shost); | 169 | scsi_forget_host(shost); |
170 | scsi_proc_host_rm(shost); | 170 | scsi_proc_host_rm(shost); |
171 | 171 | ||
@@ -320,7 +320,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize) | |||
320 | INIT_LIST_HEAD(&shost->starved_list); | 320 | INIT_LIST_HEAD(&shost->starved_list); |
321 | init_waitqueue_head(&shost->host_wait); | 321 | init_waitqueue_head(&shost->host_wait); |
322 | 322 | ||
323 | init_MUTEX(&shost->scan_mutex); | 323 | mutex_init(&shost->scan_mutex); |
324 | 324 | ||
325 | shost->host_no = scsi_host_next_hn++; /* XXX(hch): still racy */ | 325 | shost->host_no = scsi_host_next_hn++; /* XXX(hch): still racy */ |
326 | shost->dma_channel = 0xff; | 326 | shost->dma_channel = 0xff; |
@@ -347,17 +347,8 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize) | |||
347 | shost->cmd_per_lun = sht->cmd_per_lun; | 347 | shost->cmd_per_lun = sht->cmd_per_lun; |
348 | shost->unchecked_isa_dma = sht->unchecked_isa_dma; | 348 | shost->unchecked_isa_dma = sht->unchecked_isa_dma; |
349 | shost->use_clustering = sht->use_clustering; | 349 | shost->use_clustering = sht->use_clustering; |
350 | shost->ordered_flush = sht->ordered_flush; | ||
351 | shost->ordered_tag = sht->ordered_tag; | 350 | shost->ordered_tag = sht->ordered_tag; |
352 | 351 | ||
353 | /* | ||
354 | * hosts/devices that do queueing must support ordered tags | ||
355 | */ | ||
356 | if (shost->can_queue > 1 && shost->ordered_flush) { | ||
357 | printk(KERN_ERR "scsi: ordered flushes don't support queueing\n"); | ||
358 | shost->ordered_flush = 0; | ||
359 | } | ||
360 | |||
361 | if (sht->max_host_blocked) | 352 | if (sht->max_host_blocked) |
362 | shost->max_host_blocked = sht->max_host_blocked; | 353 | shost->max_host_blocked = sht->max_host_blocked; |
363 | else | 354 | else |
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 4cb1f3ed9100..3c688ef54660 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c | |||
@@ -1046,7 +1046,7 @@ static int idescsi_eh_reset (struct scsi_cmnd *cmd) | |||
1046 | 1046 | ||
1047 | /* kill current request */ | 1047 | /* kill current request */ |
1048 | blkdev_dequeue_request(req); | 1048 | blkdev_dequeue_request(req); |
1049 | end_that_request_last(req); | 1049 | end_that_request_last(req, 0); |
1050 | if (req->flags & REQ_SENSE) | 1050 | if (req->flags & REQ_SENSE) |
1051 | kfree(scsi->pc->buffer); | 1051 | kfree(scsi->pc->buffer); |
1052 | kfree(scsi->pc); | 1052 | kfree(scsi->pc); |
@@ -1056,7 +1056,7 @@ static int idescsi_eh_reset (struct scsi_cmnd *cmd) | |||
1056 | /* now nuke the drive queue */ | 1056 | /* now nuke the drive queue */ |
1057 | while ((req = elv_next_request(drive->queue))) { | 1057 | while ((req = elv_next_request(drive->queue))) { |
1058 | blkdev_dequeue_request(req); | 1058 | blkdev_dequeue_request(req); |
1059 | end_that_request_last(req); | 1059 | end_that_request_last(req, 0); |
1060 | } | 1060 | } |
1061 | 1061 | ||
1062 | HWGROUP(drive)->rq = NULL; | 1062 | HWGROUP(drive)->rq = NULL; |
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index fa2cb3582cfa..27acf78cf8d8 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -2132,7 +2132,7 @@ restart: | |||
2132 | } | 2132 | } |
2133 | 2133 | ||
2134 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); | 2134 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); |
2135 | kobject_uevent(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE, NULL); | 2135 | kobject_uevent(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE); |
2136 | LEAVE; | 2136 | LEAVE; |
2137 | } | 2137 | } |
2138 | 2138 | ||
@@ -5887,7 +5887,12 @@ static int __devinit ipr_probe_ioa_part2(struct ipr_ioa_cfg *ioa_cfg) | |||
5887 | ENTER; | 5887 | ENTER; |
5888 | spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); | 5888 | spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); |
5889 | dev_dbg(&ioa_cfg->pdev->dev, "ioa_cfg adx: 0x%p\n", ioa_cfg); | 5889 | dev_dbg(&ioa_cfg->pdev->dev, "ioa_cfg adx: 0x%p\n", ioa_cfg); |
5890 | _ipr_initiate_ioa_reset(ioa_cfg, ipr_reset_enable_ioa, IPR_SHUTDOWN_NONE); | 5890 | if (ioa_cfg->needs_hard_reset) { |
5891 | ioa_cfg->needs_hard_reset = 0; | ||
5892 | ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE); | ||
5893 | } else | ||
5894 | _ipr_initiate_ioa_reset(ioa_cfg, ipr_reset_enable_ioa, | ||
5895 | IPR_SHUTDOWN_NONE); | ||
5891 | 5896 | ||
5892 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); | 5897 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); |
5893 | wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); | 5898 | wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); |
@@ -6264,6 +6269,7 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev, | |||
6264 | unsigned long ipr_regs_pci; | 6269 | unsigned long ipr_regs_pci; |
6265 | void __iomem *ipr_regs; | 6270 | void __iomem *ipr_regs; |
6266 | u32 rc = PCIBIOS_SUCCESSFUL; | 6271 | u32 rc = PCIBIOS_SUCCESSFUL; |
6272 | volatile u32 mask, uproc; | ||
6267 | 6273 | ||
6268 | ENTER; | 6274 | ENTER; |
6269 | 6275 | ||
@@ -6356,6 +6362,15 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev, | |||
6356 | goto cleanup_nomem; | 6362 | goto cleanup_nomem; |
6357 | } | 6363 | } |
6358 | 6364 | ||
6365 | /* | ||
6366 | * If HRRQ updated interrupt is not masked, or reset alert is set, | ||
6367 | * the card is in an unknown state and needs a hard reset | ||
6368 | */ | ||
6369 | mask = readl(ioa_cfg->regs.sense_interrupt_mask_reg); | ||
6370 | uproc = readl(ioa_cfg->regs.sense_uproc_interrupt_reg); | ||
6371 | if ((mask & IPR_PCII_HRRQ_UPDATED) == 0 || (uproc & IPR_UPROCI_RESET_ALERT)) | ||
6372 | ioa_cfg->needs_hard_reset = 1; | ||
6373 | |||
6359 | ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER); | 6374 | ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER); |
6360 | rc = request_irq(pdev->irq, ipr_isr, SA_SHIRQ, IPR_NAME, ioa_cfg); | 6375 | rc = request_irq(pdev->irq, ipr_isr, SA_SHIRQ, IPR_NAME, ioa_cfg); |
6361 | 6376 | ||
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index 6bec673c925c..b639332131f1 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h | |||
@@ -36,8 +36,8 @@ | |||
36 | /* | 36 | /* |
37 | * Literals | 37 | * Literals |
38 | */ | 38 | */ |
39 | #define IPR_DRIVER_VERSION "2.1.0" | 39 | #define IPR_DRIVER_VERSION "2.1.1" |
40 | #define IPR_DRIVER_DATE "(October 31, 2005)" | 40 | #define IPR_DRIVER_DATE "(November 15, 2005)" |
41 | 41 | ||
42 | /* | 42 | /* |
43 | * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding | 43 | * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding |
@@ -922,6 +922,7 @@ struct ipr_ioa_cfg { | |||
922 | u8 dump_taken:1; | 922 | u8 dump_taken:1; |
923 | u8 allow_cmds:1; | 923 | u8 allow_cmds:1; |
924 | u8 allow_ml_add_del:1; | 924 | u8 allow_ml_add_del:1; |
925 | u8 needs_hard_reset:1; | ||
925 | 926 | ||
926 | enum ipr_cache_state cache_state; | 927 | enum ipr_cache_state cache_state; |
927 | u16 type; /* CCIN of the card */ | 928 | u16 type; /* CCIN of the card */ |
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 3882d48a42bf..e5e1ca44e1ee 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c | |||
@@ -1319,6 +1319,9 @@ ips_slave_configure(struct scsi_device * SDptr) | |||
1319 | min = ha->max_cmds - 1; | 1319 | min = ha->max_cmds - 1; |
1320 | scsi_adjust_queue_depth(SDptr, MSG_ORDERED_TAG, min); | 1320 | scsi_adjust_queue_depth(SDptr, MSG_ORDERED_TAG, min); |
1321 | } | 1321 | } |
1322 | |||
1323 | SDptr->skip_ms_page_8 = 1; | ||
1324 | SDptr->skip_ms_page_3f = 1; | ||
1322 | return 0; | 1325 | return 0; |
1323 | } | 1326 | } |
1324 | #endif | 1327 | #endif |
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c index 3d8009f55342..780bfcc67096 100644 --- a/drivers/scsi/iscsi_tcp.c +++ b/drivers/scsi/iscsi_tcp.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/delay.h> | 33 | #include <linux/delay.h> |
34 | #include <linux/kfifo.h> | 34 | #include <linux/kfifo.h> |
35 | #include <linux/scatterlist.h> | 35 | #include <linux/scatterlist.h> |
36 | #include <linux/mutex.h> | ||
36 | #include <net/tcp.h> | 37 | #include <net/tcp.h> |
37 | #include <scsi/scsi_cmnd.h> | 38 | #include <scsi/scsi_cmnd.h> |
38 | #include <scsi/scsi_device.h> | 39 | #include <scsi/scsi_device.h> |
@@ -49,7 +50,7 @@ MODULE_AUTHOR("Dmitry Yusupov <dmitry_yus@yahoo.com>, " | |||
49 | "Alex Aizman <itn780@yahoo.com>"); | 50 | "Alex Aizman <itn780@yahoo.com>"); |
50 | MODULE_DESCRIPTION("iSCSI/TCP data-path"); | 51 | MODULE_DESCRIPTION("iSCSI/TCP data-path"); |
51 | MODULE_LICENSE("GPL"); | 52 | MODULE_LICENSE("GPL"); |
52 | MODULE_VERSION("0:4.409"); | 53 | MODULE_VERSION("0:4.445"); |
53 | /* #define DEBUG_TCP */ | 54 | /* #define DEBUG_TCP */ |
54 | /* #define DEBUG_SCSI */ | 55 | /* #define DEBUG_SCSI */ |
55 | #define DEBUG_ASSERT | 56 | #define DEBUG_ASSERT |
@@ -86,35 +87,32 @@ iscsi_buf_init_virt(struct iscsi_buf *ibuf, char *vbuf, int size) | |||
86 | { | 87 | { |
87 | sg_init_one(&ibuf->sg, (u8 *)vbuf, size); | 88 | sg_init_one(&ibuf->sg, (u8 *)vbuf, size); |
88 | ibuf->sent = 0; | 89 | ibuf->sent = 0; |
90 | ibuf->use_sendmsg = 0; | ||
89 | } | 91 | } |
90 | 92 | ||
91 | static inline void | 93 | static inline void |
92 | iscsi_buf_init_iov(struct iscsi_buf *ibuf, char *vbuf, int size) | 94 | iscsi_buf_init_iov(struct iscsi_buf *ibuf, char *vbuf, int size) |
93 | { | 95 | { |
94 | ibuf->sg.page = (void*)vbuf; | 96 | ibuf->sg.page = virt_to_page(vbuf); |
95 | ibuf->sg.offset = (unsigned int)-1; | 97 | ibuf->sg.offset = offset_in_page(vbuf); |
96 | ibuf->sg.length = size; | 98 | ibuf->sg.length = size; |
97 | ibuf->sent = 0; | 99 | ibuf->sent = 0; |
98 | } | 100 | ibuf->use_sendmsg = 1; |
99 | |||
100 | static inline void* | ||
101 | iscsi_buf_iov_base(struct iscsi_buf *ibuf) | ||
102 | { | ||
103 | return (char*)ibuf->sg.page + ibuf->sent; | ||
104 | } | 101 | } |
105 | 102 | ||
106 | static inline void | 103 | static inline void |
107 | iscsi_buf_init_sg(struct iscsi_buf *ibuf, struct scatterlist *sg) | 104 | iscsi_buf_init_sg(struct iscsi_buf *ibuf, struct scatterlist *sg) |
108 | { | 105 | { |
106 | ibuf->sg.page = sg->page; | ||
107 | ibuf->sg.offset = sg->offset; | ||
108 | ibuf->sg.length = sg->length; | ||
109 | /* | 109 | /* |
110 | * Fastpath: sg element fits into single page | 110 | * Fastpath: sg element fits into single page |
111 | */ | 111 | */ |
112 | if (sg->length + sg->offset <= PAGE_SIZE && page_count(sg->page) >= 2) { | 112 | if (sg->length + sg->offset <= PAGE_SIZE && !PageSlab(sg->page)) |
113 | ibuf->sg.page = sg->page; | 113 | ibuf->use_sendmsg = 0; |
114 | ibuf->sg.offset = sg->offset; | 114 | else |
115 | ibuf->sg.length = sg->length; | 115 | ibuf->use_sendmsg = 1; |
116 | } else | ||
117 | iscsi_buf_init_iov(ibuf, page_address(sg->page), sg->length); | ||
118 | ibuf->sent = 0; | 116 | ibuf->sent = 0; |
119 | } | 117 | } |
120 | 118 | ||
@@ -356,7 +354,7 @@ iscsi_data_rsp(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
356 | struct scsi_cmnd *sc = ctask->sc; | 354 | struct scsi_cmnd *sc = ctask->sc; |
357 | 355 | ||
358 | conn->exp_statsn = be32_to_cpu(rhdr->statsn) + 1; | 356 | conn->exp_statsn = be32_to_cpu(rhdr->statsn) + 1; |
359 | if (rhdr->flags & ISCSI_FLAG_CMD_UNDERFLOW) { | 357 | if (rhdr->flags & ISCSI_FLAG_DATA_UNDERFLOW) { |
360 | int res_count = be32_to_cpu(rhdr->residual_count); | 358 | int res_count = be32_to_cpu(rhdr->residual_count); |
361 | 359 | ||
362 | if (res_count > 0 && | 360 | if (res_count > 0 && |
@@ -366,9 +364,7 @@ iscsi_data_rsp(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
366 | } else | 364 | } else |
367 | sc->result = (DID_BAD_TARGET << 16) | | 365 | sc->result = (DID_BAD_TARGET << 16) | |
368 | rhdr->cmd_status; | 366 | rhdr->cmd_status; |
369 | } else if (rhdr->flags & ISCSI_FLAG_CMD_BIDI_UNDERFLOW) | 367 | } else if (rhdr->flags & ISCSI_FLAG_DATA_OVERFLOW) { |
370 | sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status; | ||
371 | else if (rhdr->flags & ISCSI_FLAG_CMD_OVERFLOW) { | ||
372 | sc->resid = be32_to_cpu(rhdr->residual_count); | 368 | sc->resid = be32_to_cpu(rhdr->residual_count); |
373 | sc->result = (DID_OK << 16) | rhdr->cmd_status; | 369 | sc->result = (DID_OK << 16) | rhdr->cmd_status; |
374 | } else | 370 | } else |
@@ -529,7 +525,7 @@ iscsi_r2t_rsp(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
529 | __kfifo_put(ctask->r2tqueue, (void*)&r2t, sizeof(void*)); | 525 | __kfifo_put(ctask->r2tqueue, (void*)&r2t, sizeof(void*)); |
530 | __kfifo_put(conn->writequeue, (void*)&ctask, sizeof(void*)); | 526 | __kfifo_put(conn->writequeue, (void*)&ctask, sizeof(void*)); |
531 | 527 | ||
532 | schedule_work(&conn->xmitwork); | 528 | scsi_queue_work(session->host, &conn->xmitwork); |
533 | conn->r2t_pdus_cnt++; | 529 | conn->r2t_pdus_cnt++; |
534 | spin_unlock(&session->lock); | 530 | spin_unlock(&session->lock); |
535 | 531 | ||
@@ -581,10 +577,16 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
581 | crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst); | 577 | crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst); |
582 | rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) + | 578 | rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) + |
583 | conn->in.ahslen); | 579 | conn->in.ahslen); |
580 | if (cdgst != rdgst) { | ||
581 | printk(KERN_ERR "iscsi_tcp: itt %x: hdrdgst error " | ||
582 | "recv 0x%x calc 0x%x\n", conn->in.itt, rdgst, | ||
583 | cdgst); | ||
584 | return ISCSI_ERR_HDR_DGST; | ||
585 | } | ||
584 | } | 586 | } |
585 | 587 | ||
586 | /* save opcode for later */ | 588 | /* save opcode for later */ |
587 | conn->in.opcode = hdr->opcode; | 589 | conn->in.opcode = hdr->opcode & ISCSI_OPCODE_MASK; |
588 | 590 | ||
589 | /* verify itt (itt encoding: age+cid+itt) */ | 591 | /* verify itt (itt encoding: age+cid+itt) */ |
590 | if (hdr->itt != cpu_to_be32(ISCSI_RESERVED_TAG)) { | 592 | if (hdr->itt != cpu_to_be32(ISCSI_RESERVED_TAG)) { |
@@ -610,13 +612,6 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
610 | conn->in.ahslen, conn->in.datalen); | 612 | conn->in.ahslen, conn->in.datalen); |
611 | 613 | ||
612 | if (conn->in.itt < session->cmds_max) { | 614 | if (conn->in.itt < session->cmds_max) { |
613 | if (conn->hdrdgst_en && cdgst != rdgst) { | ||
614 | printk(KERN_ERR "iscsi_tcp: itt %x: hdrdgst error " | ||
615 | "recv 0x%x calc 0x%x\n", conn->in.itt, rdgst, | ||
616 | cdgst); | ||
617 | return ISCSI_ERR_HDR_DGST; | ||
618 | } | ||
619 | |||
620 | ctask = (struct iscsi_cmd_task *)session->cmds[conn->in.itt]; | 615 | ctask = (struct iscsi_cmd_task *)session->cmds[conn->in.itt]; |
621 | 616 | ||
622 | if (!ctask->sc) { | 617 | if (!ctask->sc) { |
@@ -642,9 +637,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
642 | switch(conn->in.opcode) { | 637 | switch(conn->in.opcode) { |
643 | case ISCSI_OP_SCSI_CMD_RSP: | 638 | case ISCSI_OP_SCSI_CMD_RSP: |
644 | BUG_ON((void*)ctask != ctask->sc->SCp.ptr); | 639 | BUG_ON((void*)ctask != ctask->sc->SCp.ptr); |
645 | if (ctask->hdr.flags & ISCSI_FLAG_CMD_WRITE) | 640 | if (!conn->in.datalen) |
646 | rc = iscsi_cmd_rsp(conn, ctask); | ||
647 | else if (!conn->in.datalen) | ||
648 | rc = iscsi_cmd_rsp(conn, ctask); | 641 | rc = iscsi_cmd_rsp(conn, ctask); |
649 | else | 642 | else |
650 | /* | 643 | /* |
@@ -666,8 +659,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
666 | break; | 659 | break; |
667 | case ISCSI_OP_R2T: | 660 | case ISCSI_OP_R2T: |
668 | BUG_ON((void*)ctask != ctask->sc->SCp.ptr); | 661 | BUG_ON((void*)ctask != ctask->sc->SCp.ptr); |
669 | if (ctask->hdr.flags & ISCSI_FLAG_CMD_WRITE && | 662 | if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) |
670 | ctask->sc->sc_data_direction == DMA_TO_DEVICE) | ||
671 | rc = iscsi_r2t_rsp(conn, ctask); | 663 | rc = iscsi_r2t_rsp(conn, ctask); |
672 | else | 664 | else |
673 | rc = ISCSI_ERR_PROTO; | 665 | rc = ISCSI_ERR_PROTO; |
@@ -690,7 +682,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
690 | switch(conn->in.opcode) { | 682 | switch(conn->in.opcode) { |
691 | case ISCSI_OP_LOGIN_RSP: | 683 | case ISCSI_OP_LOGIN_RSP: |
692 | case ISCSI_OP_TEXT_RSP: | 684 | case ISCSI_OP_TEXT_RSP: |
693 | case ISCSI_OP_LOGOUT_RSP: | 685 | case ISCSI_OP_LOGOUT_RSP: |
694 | rc = iscsi_check_assign_cmdsn(session, | 686 | rc = iscsi_check_assign_cmdsn(session, |
695 | (struct iscsi_nopin*)hdr); | 687 | (struct iscsi_nopin*)hdr); |
696 | if (rc) | 688 | if (rc) |
@@ -731,12 +723,12 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
731 | } | 723 | } |
732 | spin_unlock(&session->lock); | 724 | spin_unlock(&session->lock); |
733 | break; | 725 | break; |
734 | case ISCSI_OP_NOOP_IN: | 726 | case ISCSI_OP_NOOP_IN: |
735 | if (hdr->ttt != ISCSI_RESERVED_TAG) { | 727 | if (hdr->ttt != ISCSI_RESERVED_TAG) { |
736 | rc = ISCSI_ERR_PROTO; | 728 | rc = ISCSI_ERR_PROTO; |
737 | break; | 729 | break; |
738 | } | 730 | } |
739 | rc = iscsi_check_assign_cmdsn(session, | 731 | rc = iscsi_check_assign_cmdsn(session, |
740 | (struct iscsi_nopin*)hdr); | 732 | (struct iscsi_nopin*)hdr); |
741 | if (rc) | 733 | if (rc) |
742 | break; | 734 | break; |
@@ -771,7 +763,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn) | |||
771 | if (!rc && hdr->ttt != ISCSI_RESERVED_TAG) | 763 | if (!rc && hdr->ttt != ISCSI_RESERVED_TAG) |
772 | rc = iscsi_recv_pdu(iscsi_handle(conn), | 764 | rc = iscsi_recv_pdu(iscsi_handle(conn), |
773 | hdr, NULL, 0); | 765 | hdr, NULL, 0); |
774 | } else | 766 | } else |
775 | rc = ISCSI_ERR_PROTO; | 767 | rc = ISCSI_ERR_PROTO; |
776 | break; | 768 | break; |
777 | case ISCSI_OP_REJECT: | 769 | case ISCSI_OP_REJECT: |
@@ -906,11 +898,20 @@ partial_sg_digest_update(struct iscsi_conn *conn, struct scatterlist *sg, | |||
906 | crypto_digest_update(conn->data_rx_tfm, &temp, 1); | 898 | crypto_digest_update(conn->data_rx_tfm, &temp, 1); |
907 | } | 899 | } |
908 | 900 | ||
901 | static void | ||
902 | iscsi_recv_digest_update(struct iscsi_conn *conn, char* buf, int len) | ||
903 | { | ||
904 | struct scatterlist tmp; | ||
905 | |||
906 | sg_init_one(&tmp, buf, len); | ||
907 | crypto_digest_update(conn->data_rx_tfm, &tmp, 1); | ||
908 | } | ||
909 | |||
909 | static int iscsi_scsi_data_in(struct iscsi_conn *conn) | 910 | static int iscsi_scsi_data_in(struct iscsi_conn *conn) |
910 | { | 911 | { |
911 | struct iscsi_cmd_task *ctask = conn->in.ctask; | 912 | struct iscsi_cmd_task *ctask = conn->in.ctask; |
912 | struct scsi_cmnd *sc = ctask->sc; | 913 | struct scsi_cmnd *sc = ctask->sc; |
913 | struct scatterlist tmp, *sg; | 914 | struct scatterlist *sg; |
914 | int i, offset, rc = 0; | 915 | int i, offset, rc = 0; |
915 | 916 | ||
916 | BUG_ON((void*)ctask != sc->SCp.ptr); | 917 | BUG_ON((void*)ctask != sc->SCp.ptr); |
@@ -924,10 +925,8 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn) | |||
924 | sc->request_bufflen, ctask->data_offset); | 925 | sc->request_bufflen, ctask->data_offset); |
925 | if (rc == -EAGAIN) | 926 | if (rc == -EAGAIN) |
926 | return rc; | 927 | return rc; |
927 | if (conn->datadgst_en) { | 928 | if (conn->datadgst_en) |
928 | sg_init_one(&tmp, sc->request_buffer, i); | 929 | iscsi_recv_digest_update(conn, sc->request_buffer, i); |
929 | crypto_digest_update(conn->data_rx_tfm, &tmp, 1); | ||
930 | } | ||
931 | rc = 0; | 930 | rc = 0; |
932 | goto done; | 931 | goto done; |
933 | } | 932 | } |
@@ -1021,6 +1020,9 @@ iscsi_data_recv(struct iscsi_conn *conn) | |||
1021 | conn->in.hdr = &conn->hdr; | 1020 | conn->in.hdr = &conn->hdr; |
1022 | conn->senselen = (conn->data[0] << 8) | conn->data[1]; | 1021 | conn->senselen = (conn->data[0] << 8) | conn->data[1]; |
1023 | rc = iscsi_cmd_rsp(conn, conn->in.ctask); | 1022 | rc = iscsi_cmd_rsp(conn, conn->in.ctask); |
1023 | if (!rc && conn->datadgst_en) | ||
1024 | iscsi_recv_digest_update(conn, conn->data, | ||
1025 | conn->in.datalen); | ||
1024 | } | 1026 | } |
1025 | break; | 1027 | break; |
1026 | case ISCSI_OP_TEXT_RSP: | 1028 | case ISCSI_OP_TEXT_RSP: |
@@ -1045,6 +1047,11 @@ iscsi_data_recv(struct iscsi_conn *conn) | |||
1045 | rc = iscsi_recv_pdu(iscsi_handle(conn), conn->in.hdr, | 1047 | rc = iscsi_recv_pdu(iscsi_handle(conn), conn->in.hdr, |
1046 | conn->data, conn->in.datalen); | 1048 | conn->data, conn->in.datalen); |
1047 | 1049 | ||
1050 | if (!rc && conn->datadgst_en && | ||
1051 | conn->in.opcode != ISCSI_OP_LOGIN_RSP) | ||
1052 | iscsi_recv_digest_update(conn, conn->data, | ||
1053 | conn->in.datalen); | ||
1054 | |||
1048 | if (mtask && conn->login_mtask != mtask) { | 1055 | if (mtask && conn->login_mtask != mtask) { |
1049 | spin_lock(&session->lock); | 1056 | spin_lock(&session->lock); |
1050 | __kfifo_put(session->mgmtpool.queue, (void*)&mtask, | 1057 | __kfifo_put(session->mgmtpool.queue, (void*)&mtask, |
@@ -1053,6 +1060,8 @@ iscsi_data_recv(struct iscsi_conn *conn) | |||
1053 | } | 1060 | } |
1054 | } | 1061 | } |
1055 | break; | 1062 | break; |
1063 | case ISCSI_OP_ASYNC_EVENT: | ||
1064 | case ISCSI_OP_REJECT: | ||
1056 | default: | 1065 | default: |
1057 | BUG_ON(1); | 1066 | BUG_ON(1); |
1058 | } | 1067 | } |
@@ -1114,8 +1123,7 @@ more: | |||
1114 | */ | 1123 | */ |
1115 | rc = iscsi_hdr_recv(conn); | 1124 | rc = iscsi_hdr_recv(conn); |
1116 | if (!rc && conn->in.datalen) { | 1125 | if (!rc && conn->in.datalen) { |
1117 | if (conn->datadgst_en && | 1126 | if (conn->datadgst_en) { |
1118 | conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) { | ||
1119 | BUG_ON(!conn->data_rx_tfm); | 1127 | BUG_ON(!conn->data_rx_tfm); |
1120 | crypto_digest_init(conn->data_rx_tfm); | 1128 | crypto_digest_init(conn->data_rx_tfm); |
1121 | } | 1129 | } |
@@ -1127,26 +1135,24 @@ more: | |||
1127 | } | 1135 | } |
1128 | 1136 | ||
1129 | if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) { | 1137 | if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) { |
1138 | uint32_t recv_digest; | ||
1130 | debug_tcp("extra data_recv offset %d copy %d\n", | 1139 | debug_tcp("extra data_recv offset %d copy %d\n", |
1131 | conn->in.offset, conn->in.copy); | 1140 | conn->in.offset, conn->in.copy); |
1132 | if (conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) { | 1141 | skb_copy_bits(conn->in.skb, conn->in.offset, |
1133 | uint32_t recv_digest; | 1142 | &recv_digest, 4); |
1134 | skb_copy_bits(conn->in.skb, conn->in.offset, | 1143 | conn->in.offset += 4; |
1135 | &recv_digest, 4); | 1144 | conn->in.copy -= 4; |
1136 | conn->in.offset += 4; | 1145 | if (recv_digest != conn->in.datadgst) { |
1137 | conn->in.copy -= 4; | 1146 | debug_tcp("iscsi_tcp: data digest error!" |
1138 | if (recv_digest != conn->in.datadgst) { | 1147 | "0x%x != 0x%x\n", recv_digest, |
1139 | debug_tcp("iscsi_tcp: data digest error!" | 1148 | conn->in.datadgst); |
1140 | "0x%x != 0x%x\n", recv_digest, | 1149 | iscsi_conn_failure(conn, ISCSI_ERR_DATA_DGST); |
1141 | conn->in.datadgst); | 1150 | return 0; |
1142 | iscsi_conn_failure(conn, ISCSI_ERR_DATA_DGST); | 1151 | } else { |
1143 | return 0; | 1152 | debug_tcp("iscsi_tcp: data digest match!" |
1144 | } else { | 1153 | "0x%x == 0x%x\n", recv_digest, |
1145 | debug_tcp("iscsi_tcp: data digest match!" | 1154 | conn->in.datadgst); |
1146 | "0x%x == 0x%x\n", recv_digest, | 1155 | conn->in_progress = IN_PROGRESS_WAIT_HEADER; |
1147 | conn->in.datadgst); | ||
1148 | conn->in_progress = IN_PROGRESS_WAIT_HEADER; | ||
1149 | } | ||
1150 | } | 1156 | } |
1151 | } | 1157 | } |
1152 | 1158 | ||
@@ -1167,8 +1173,7 @@ more: | |||
1167 | } | 1173 | } |
1168 | conn->in.copy -= conn->in.padding; | 1174 | conn->in.copy -= conn->in.padding; |
1169 | conn->in.offset += conn->in.padding; | 1175 | conn->in.offset += conn->in.padding; |
1170 | if (conn->datadgst_en && | 1176 | if (conn->datadgst_en) { |
1171 | conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) { | ||
1172 | if (conn->in.padding) { | 1177 | if (conn->in.padding) { |
1173 | debug_tcp("padding -> %d\n", conn->in.padding); | 1178 | debug_tcp("padding -> %d\n", conn->in.padding); |
1174 | memset(pad, 0, conn->in.padding); | 1179 | memset(pad, 0, conn->in.padding); |
@@ -1237,8 +1242,9 @@ iscsi_tcp_state_change(struct sock *sk) | |||
1237 | conn = (struct iscsi_conn*)sk->sk_user_data; | 1242 | conn = (struct iscsi_conn*)sk->sk_user_data; |
1238 | session = conn->session; | 1243 | session = conn->session; |
1239 | 1244 | ||
1240 | if (sk->sk_state == TCP_CLOSE_WAIT || | 1245 | if ((sk->sk_state == TCP_CLOSE_WAIT || |
1241 | sk->sk_state == TCP_CLOSE) { | 1246 | sk->sk_state == TCP_CLOSE) && |
1247 | !atomic_read(&sk->sk_rmem_alloc)) { | ||
1242 | debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n"); | 1248 | debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n"); |
1243 | iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); | 1249 | iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); |
1244 | } | 1250 | } |
@@ -1261,7 +1267,7 @@ iscsi_write_space(struct sock *sk) | |||
1261 | conn->old_write_space(sk); | 1267 | conn->old_write_space(sk); |
1262 | debug_tcp("iscsi_write_space: cid %d\n", conn->id); | 1268 | debug_tcp("iscsi_write_space: cid %d\n", conn->id); |
1263 | clear_bit(SUSPEND_BIT, &conn->suspend_tx); | 1269 | clear_bit(SUSPEND_BIT, &conn->suspend_tx); |
1264 | schedule_work(&conn->xmitwork); | 1270 | scsi_queue_work(conn->session->host, &conn->xmitwork); |
1265 | } | 1271 | } |
1266 | 1272 | ||
1267 | static void | 1273 | static void |
@@ -1302,35 +1308,25 @@ iscsi_conn_restore_callbacks(struct iscsi_conn *conn) | |||
1302 | * @buf: buffer to write from | 1308 | * @buf: buffer to write from |
1303 | * @size: actual size to write | 1309 | * @size: actual size to write |
1304 | * @flags: socket's flags | 1310 | * @flags: socket's flags |
1305 | * | ||
1306 | * Notes: | ||
1307 | * depending on buffer will use tcp_sendpage() or tcp_sendmsg(). | ||
1308 | * buf->sg.offset == -1 tells us that buffer is non S/G and forces | ||
1309 | * to use tcp_sendmsg(). | ||
1310 | */ | 1311 | */ |
1311 | static inline int | 1312 | static inline int |
1312 | iscsi_send(struct socket *sk, struct iscsi_buf *buf, int size, int flags) | 1313 | iscsi_send(struct iscsi_conn *conn, struct iscsi_buf *buf, int size, int flags) |
1313 | { | 1314 | { |
1314 | int res; | 1315 | struct socket *sk = conn->sock; |
1315 | 1316 | int offset = buf->sg.offset + buf->sent; | |
1316 | if ((int)buf->sg.offset >= 0) { | ||
1317 | int offset = buf->sg.offset + buf->sent; | ||
1318 | |||
1319 | /* tcp_sendpage */ | ||
1320 | res = sk->ops->sendpage(sk, buf->sg.page, offset, size, flags); | ||
1321 | } else { | ||
1322 | struct msghdr msg; | ||
1323 | |||
1324 | buf->iov.iov_base = iscsi_buf_iov_base(buf); | ||
1325 | buf->iov.iov_len = size; | ||
1326 | |||
1327 | memset(&msg, 0, sizeof(struct msghdr)); | ||
1328 | |||
1329 | /* tcp_sendmsg */ | ||
1330 | res = kernel_sendmsg(sk, &msg, &buf->iov, 1, size); | ||
1331 | } | ||
1332 | 1317 | ||
1333 | return res; | 1318 | /* |
1319 | * if we got use_sg=0 or are sending something we kmallocd | ||
1320 | * then we did not have to do kmap (kmap returns page_address) | ||
1321 | * | ||
1322 | * if we got use_sg > 0, but had to drop down, we do not | ||
1323 | * set clustering so this should only happen for that | ||
1324 | * slab case. | ||
1325 | */ | ||
1326 | if (buf->use_sendmsg) | ||
1327 | return sock_no_sendpage(sk, buf->sg.page, offset, size, flags); | ||
1328 | else | ||
1329 | return conn->sendpage(sk, buf->sg.page, offset, size, flags); | ||
1334 | } | 1330 | } |
1335 | 1331 | ||
1336 | /** | 1332 | /** |
@@ -1345,7 +1341,6 @@ iscsi_send(struct socket *sk, struct iscsi_buf *buf, int size, int flags) | |||
1345 | static inline int | 1341 | static inline int |
1346 | iscsi_sendhdr(struct iscsi_conn *conn, struct iscsi_buf *buf, int datalen) | 1342 | iscsi_sendhdr(struct iscsi_conn *conn, struct iscsi_buf *buf, int datalen) |
1347 | { | 1343 | { |
1348 | struct socket *sk = conn->sock; | ||
1349 | int flags = 0; /* MSG_DONTWAIT; */ | 1344 | int flags = 0; /* MSG_DONTWAIT; */ |
1350 | int res, size; | 1345 | int res, size; |
1351 | 1346 | ||
@@ -1354,7 +1349,7 @@ iscsi_sendhdr(struct iscsi_conn *conn, struct iscsi_buf *buf, int datalen) | |||
1354 | if (buf->sent + size != buf->sg.length || datalen) | 1349 | if (buf->sent + size != buf->sg.length || datalen) |
1355 | flags |= MSG_MORE; | 1350 | flags |= MSG_MORE; |
1356 | 1351 | ||
1357 | res = iscsi_send(sk, buf, size, flags); | 1352 | res = iscsi_send(conn, buf, size, flags); |
1358 | debug_tcp("sendhdr %d bytes, sent %d res %d\n", size, buf->sent, res); | 1353 | debug_tcp("sendhdr %d bytes, sent %d res %d\n", size, buf->sent, res); |
1359 | if (res >= 0) { | 1354 | if (res >= 0) { |
1360 | conn->txdata_octets += res; | 1355 | conn->txdata_octets += res; |
@@ -1385,7 +1380,6 @@ static inline int | |||
1385 | iscsi_sendpage(struct iscsi_conn *conn, struct iscsi_buf *buf, | 1380 | iscsi_sendpage(struct iscsi_conn *conn, struct iscsi_buf *buf, |
1386 | int *count, int *sent) | 1381 | int *count, int *sent) |
1387 | { | 1382 | { |
1388 | struct socket *sk = conn->sock; | ||
1389 | int flags = 0; /* MSG_DONTWAIT; */ | 1383 | int flags = 0; /* MSG_DONTWAIT; */ |
1390 | int res, size; | 1384 | int res, size; |
1391 | 1385 | ||
@@ -1396,7 +1390,7 @@ iscsi_sendpage(struct iscsi_conn *conn, struct iscsi_buf *buf, | |||
1396 | if (buf->sent + size != buf->sg.length || *count != size) | 1390 | if (buf->sent + size != buf->sg.length || *count != size) |
1397 | flags |= MSG_MORE; | 1391 | flags |= MSG_MORE; |
1398 | 1392 | ||
1399 | res = iscsi_send(sk, buf, size, flags); | 1393 | res = iscsi_send(conn, buf, size, flags); |
1400 | debug_tcp("sendpage: %d bytes, sent %d left %d sent %d res %d\n", | 1394 | debug_tcp("sendpage: %d bytes, sent %d left %d sent %d res %d\n", |
1401 | size, buf->sent, *count, *sent, res); | 1395 | size, buf->sent, *count, *sent, res); |
1402 | if (res >= 0) { | 1396 | if (res >= 0) { |
@@ -1424,20 +1418,7 @@ iscsi_data_digest_init(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
1424 | ctask->digest_count = 4; | 1418 | ctask->digest_count = 4; |
1425 | } | 1419 | } |
1426 | 1420 | ||
1427 | static inline void | 1421 | static int |
1428 | iscsi_buf_data_digest_update(struct iscsi_conn *conn, struct iscsi_buf *buf) | ||
1429 | { | ||
1430 | struct scatterlist sg; | ||
1431 | |||
1432 | if (buf->sg.offset != -1) | ||
1433 | crypto_digest_update(conn->data_tx_tfm, &buf->sg, 1); | ||
1434 | else { | ||
1435 | sg_init_one(&sg, (char *)buf->sg.page, buf->sg.length); | ||
1436 | crypto_digest_update(conn->data_tx_tfm, &sg, 1); | ||
1437 | } | ||
1438 | } | ||
1439 | |||
1440 | static inline int | ||
1441 | iscsi_digest_final_send(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask, | 1422 | iscsi_digest_final_send(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask, |
1442 | struct iscsi_buf *buf, uint32_t *digest, int final) | 1423 | struct iscsi_buf *buf, uint32_t *digest, int final) |
1443 | { | 1424 | { |
@@ -1670,7 +1651,7 @@ iscsi_cmd_init(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask, | |||
1670 | zero_data(ctask->hdr.dlength); | 1651 | zero_data(ctask->hdr.dlength); |
1671 | } | 1652 | } |
1672 | 1653 | ||
1673 | iscsi_buf_init_virt(&ctask->headbuf, (char*)&ctask->hdr, | 1654 | iscsi_buf_init_virt(&ctask->headbuf, (char*)&ctask->hdr, |
1674 | sizeof(struct iscsi_hdr)); | 1655 | sizeof(struct iscsi_hdr)); |
1675 | conn->scsicmd_pdus_cnt++; | 1656 | conn->scsicmd_pdus_cnt++; |
1676 | } | 1657 | } |
@@ -1736,7 +1717,7 @@ static inline int | |||
1736 | handle_xmstate_r_hdr(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | 1717 | handle_xmstate_r_hdr(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) |
1737 | { | 1718 | { |
1738 | ctask->xmstate &= ~XMSTATE_R_HDR; | 1719 | ctask->xmstate &= ~XMSTATE_R_HDR; |
1739 | if (conn->hdrdgst_en) | 1720 | if (conn->hdrdgst_en) |
1740 | iscsi_hdr_digest(conn, &ctask->headbuf, (u8*)ctask->hdrext); | 1721 | iscsi_hdr_digest(conn, &ctask->headbuf, (u8*)ctask->hdrext); |
1741 | if (!iscsi_sendhdr(conn, &ctask->headbuf, 0)) { | 1722 | if (!iscsi_sendhdr(conn, &ctask->headbuf, 0)) { |
1742 | BUG_ON(ctask->xmstate != XMSTATE_IDLE); | 1723 | BUG_ON(ctask->xmstate != XMSTATE_IDLE); |
@@ -1750,7 +1731,7 @@ static inline int | |||
1750 | handle_xmstate_w_hdr(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | 1731 | handle_xmstate_w_hdr(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) |
1751 | { | 1732 | { |
1752 | ctask->xmstate &= ~XMSTATE_W_HDR; | 1733 | ctask->xmstate &= ~XMSTATE_W_HDR; |
1753 | if (conn->hdrdgst_en) | 1734 | if (conn->hdrdgst_en) |
1754 | iscsi_hdr_digest(conn, &ctask->headbuf, (u8*)ctask->hdrext); | 1735 | iscsi_hdr_digest(conn, &ctask->headbuf, (u8*)ctask->hdrext); |
1755 | if (iscsi_sendhdr(conn, &ctask->headbuf, ctask->imm_count)) { | 1736 | if (iscsi_sendhdr(conn, &ctask->headbuf, ctask->imm_count)) { |
1756 | ctask->xmstate |= XMSTATE_W_HDR; | 1737 | ctask->xmstate |= XMSTATE_W_HDR; |
@@ -1799,7 +1780,8 @@ handle_xmstate_imm_data(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
1799 | return -EAGAIN; | 1780 | return -EAGAIN; |
1800 | } | 1781 | } |
1801 | if (conn->datadgst_en) | 1782 | if (conn->datadgst_en) |
1802 | iscsi_buf_data_digest_update(conn, &ctask->sendbuf); | 1783 | crypto_digest_update(conn->data_tx_tfm, |
1784 | &ctask->sendbuf.sg, 1); | ||
1803 | 1785 | ||
1804 | if (!ctask->imm_count) | 1786 | if (!ctask->imm_count) |
1805 | break; | 1787 | break; |
@@ -1884,7 +1866,8 @@ handle_xmstate_uns_data(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
1884 | * so pass it | 1866 | * so pass it |
1885 | */ | 1867 | */ |
1886 | if (conn->datadgst_en && ctask->sent - start > 0) | 1868 | if (conn->datadgst_en && ctask->sent - start > 0) |
1887 | iscsi_buf_data_digest_update(conn, &ctask->sendbuf); | 1869 | crypto_digest_update(conn->data_tx_tfm, |
1870 | &ctask->sendbuf.sg, 1); | ||
1888 | 1871 | ||
1889 | if (!ctask->data_count) | 1872 | if (!ctask->data_count) |
1890 | break; | 1873 | break; |
@@ -1962,7 +1945,7 @@ solicit_again: | |||
1962 | 1945 | ||
1963 | BUG_ON(r2t->data_count < 0); | 1946 | BUG_ON(r2t->data_count < 0); |
1964 | if (conn->datadgst_en) | 1947 | if (conn->datadgst_en) |
1965 | iscsi_buf_data_digest_update(conn, &r2t->sendbuf); | 1948 | crypto_digest_update(conn->data_tx_tfm, &r2t->sendbuf.sg, 1); |
1966 | 1949 | ||
1967 | if (r2t->data_count) { | 1950 | if (r2t->data_count) { |
1968 | BUG_ON(ctask->sc->use_sg == 0); | 1951 | BUG_ON(ctask->sc->use_sg == 0); |
@@ -2044,7 +2027,7 @@ handle_xmstate_w_pad(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask) | |||
2044 | } | 2027 | } |
2045 | 2028 | ||
2046 | if (conn->datadgst_en) { | 2029 | if (conn->datadgst_en) { |
2047 | iscsi_buf_data_digest_update(conn, &ctask->sendbuf); | 2030 | crypto_digest_update(conn->data_tx_tfm, &ctask->sendbuf.sg, 1); |
2048 | /* imm data? */ | 2031 | /* imm data? */ |
2049 | if (!dtask) { | 2032 | if (!dtask) { |
2050 | if (iscsi_digest_final_send(conn, ctask, &ctask->immbuf, | 2033 | if (iscsi_digest_final_send(conn, ctask, &ctask->immbuf, |
@@ -2138,7 +2121,7 @@ unsolicit_head_again: | |||
2138 | solicit_head_again: | 2121 | solicit_head_again: |
2139 | r2t = ctask->r2t; | 2122 | r2t = ctask->r2t; |
2140 | if (conn->hdrdgst_en) | 2123 | if (conn->hdrdgst_en) |
2141 | iscsi_hdr_digest(conn, &r2t->headbuf, | 2124 | iscsi_hdr_digest(conn, &r2t->headbuf, |
2142 | (u8*)r2t->dtask->hdrext); | 2125 | (u8*)r2t->dtask->hdrext); |
2143 | if (iscsi_sendhdr(conn, &r2t->headbuf, r2t->data_count)) { | 2126 | if (iscsi_sendhdr(conn, &r2t->headbuf, r2t->data_count)) { |
2144 | ctask->xmstate &= ~XMSTATE_SOL_DATA; | 2127 | ctask->xmstate &= ~XMSTATE_SOL_DATA; |
@@ -2290,10 +2273,10 @@ iscsi_xmitworker(void *data) | |||
2290 | /* | 2273 | /* |
2291 | * serialize Xmit worker on a per-connection basis. | 2274 | * serialize Xmit worker on a per-connection basis. |
2292 | */ | 2275 | */ |
2293 | down(&conn->xmitsema); | 2276 | mutex_lock(&conn->xmitmutex); |
2294 | if (iscsi_data_xmit(conn)) | 2277 | if (iscsi_data_xmit(conn)) |
2295 | schedule_work(&conn->xmitwork); | 2278 | scsi_queue_work(conn->session->host, &conn->xmitwork); |
2296 | up(&conn->xmitsema); | 2279 | mutex_unlock(&conn->xmitmutex); |
2297 | } | 2280 | } |
2298 | 2281 | ||
2299 | #define FAILURE_BAD_HOST 1 | 2282 | #define FAILURE_BAD_HOST 1 |
@@ -2357,15 +2340,7 @@ iscsi_queuecommand(struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) | |||
2357 | session->cmdsn, session->max_cmdsn - session->exp_cmdsn + 1); | 2340 | session->cmdsn, session->max_cmdsn - session->exp_cmdsn + 1); |
2358 | spin_unlock(&session->lock); | 2341 | spin_unlock(&session->lock); |
2359 | 2342 | ||
2360 | if (!in_interrupt() && !down_trylock(&conn->xmitsema)) { | 2343 | scsi_queue_work(host, &conn->xmitwork); |
2361 | spin_unlock_irq(host->host_lock); | ||
2362 | if (iscsi_data_xmit(conn)) | ||
2363 | schedule_work(&conn->xmitwork); | ||
2364 | up(&conn->xmitsema); | ||
2365 | spin_lock_irq(host->host_lock); | ||
2366 | } else | ||
2367 | schedule_work(&conn->xmitwork); | ||
2368 | |||
2369 | return 0; | 2344 | return 0; |
2370 | 2345 | ||
2371 | reject: | 2346 | reject: |
@@ -2389,6 +2364,15 @@ fault: | |||
2389 | } | 2364 | } |
2390 | 2365 | ||
2391 | static int | 2366 | static int |
2367 | iscsi_change_queue_depth(struct scsi_device *sdev, int depth) | ||
2368 | { | ||
2369 | if (depth > ISCSI_MAX_CMD_PER_LUN) | ||
2370 | depth = ISCSI_MAX_CMD_PER_LUN; | ||
2371 | scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth); | ||
2372 | return sdev->queue_depth; | ||
2373 | } | ||
2374 | |||
2375 | static int | ||
2392 | iscsi_pool_init(struct iscsi_queue *q, int max, void ***items, int item_size) | 2376 | iscsi_pool_init(struct iscsi_queue *q, int max, void ***items, int item_size) |
2393 | { | 2377 | { |
2394 | int i; | 2378 | int i; |
@@ -2443,17 +2427,20 @@ iscsi_pool_free(struct iscsi_queue *q, void **items) | |||
2443 | kfree(items); | 2427 | kfree(items); |
2444 | } | 2428 | } |
2445 | 2429 | ||
2446 | static iscsi_connh_t | 2430 | static struct iscsi_cls_conn * |
2447 | iscsi_conn_create(iscsi_sessionh_t sessionh, uint32_t conn_idx) | 2431 | iscsi_conn_create(struct Scsi_Host *shost, uint32_t conn_idx) |
2448 | { | 2432 | { |
2449 | struct iscsi_session *session = iscsi_ptr(sessionh); | 2433 | struct iscsi_session *session = iscsi_hostdata(shost->hostdata); |
2450 | struct iscsi_conn *conn = NULL; | 2434 | struct iscsi_conn *conn; |
2435 | struct iscsi_cls_conn *cls_conn; | ||
2451 | 2436 | ||
2452 | conn = kmalloc(sizeof(struct iscsi_conn), GFP_KERNEL); | 2437 | cls_conn = iscsi_create_conn(hostdata_session(shost->hostdata), |
2453 | if (conn == NULL) | 2438 | conn_idx); |
2454 | goto conn_alloc_fail; | 2439 | if (!cls_conn) |
2455 | memset(conn, 0, sizeof(struct iscsi_conn)); | 2440 | return NULL; |
2441 | conn = cls_conn->dd_data; | ||
2456 | 2442 | ||
2443 | memset(conn, 0, sizeof(struct iscsi_conn)); | ||
2457 | conn->c_stage = ISCSI_CONN_INITIAL_STAGE; | 2444 | conn->c_stage = ISCSI_CONN_INITIAL_STAGE; |
2458 | conn->in_progress = IN_PROGRESS_WAIT_HEADER; | 2445 | conn->in_progress = IN_PROGRESS_WAIT_HEADER; |
2459 | conn->id = conn_idx; | 2446 | conn->id = conn_idx; |
@@ -2512,10 +2499,10 @@ iscsi_conn_create(iscsi_sessionh_t sessionh, uint32_t conn_idx) | |||
2512 | goto max_recv_dlenght_alloc_fail; | 2499 | goto max_recv_dlenght_alloc_fail; |
2513 | 2500 | ||
2514 | init_timer(&conn->tmabort_timer); | 2501 | init_timer(&conn->tmabort_timer); |
2515 | init_MUTEX(&conn->xmitsema); | 2502 | mutex_init(&conn->xmitmutex); |
2516 | init_waitqueue_head(&conn->ehwait); | 2503 | init_waitqueue_head(&conn->ehwait); |
2517 | 2504 | ||
2518 | return iscsi_handle(conn); | 2505 | return cls_conn; |
2519 | 2506 | ||
2520 | max_recv_dlenght_alloc_fail: | 2507 | max_recv_dlenght_alloc_fail: |
2521 | spin_lock_bh(&session->lock); | 2508 | spin_lock_bh(&session->lock); |
@@ -2531,18 +2518,18 @@ immqueue_alloc_fail: | |||
2531 | writequeue_alloc_fail: | 2518 | writequeue_alloc_fail: |
2532 | kfifo_free(conn->xmitqueue); | 2519 | kfifo_free(conn->xmitqueue); |
2533 | xmitqueue_alloc_fail: | 2520 | xmitqueue_alloc_fail: |
2534 | kfree(conn); | 2521 | iscsi_destroy_conn(cls_conn); |
2535 | conn_alloc_fail: | 2522 | return NULL; |
2536 | return iscsi_handle(NULL); | ||
2537 | } | 2523 | } |
2538 | 2524 | ||
2539 | static void | 2525 | static void |
2540 | iscsi_conn_destroy(iscsi_connh_t connh) | 2526 | iscsi_conn_destroy(struct iscsi_cls_conn *cls_conn) |
2541 | { | 2527 | { |
2542 | struct iscsi_conn *conn = iscsi_ptr(connh); | 2528 | struct iscsi_conn *conn = cls_conn->dd_data; |
2543 | struct iscsi_session *session = conn->session; | 2529 | struct iscsi_session *session = conn->session; |
2530 | unsigned long flags; | ||
2544 | 2531 | ||
2545 | down(&conn->xmitsema); | 2532 | mutex_lock(&conn->xmitmutex); |
2546 | set_bit(SUSPEND_BIT, &conn->suspend_tx); | 2533 | set_bit(SUSPEND_BIT, &conn->suspend_tx); |
2547 | if (conn->c_stage == ISCSI_CONN_INITIAL_STAGE && conn->sock) { | 2534 | if (conn->c_stage == ISCSI_CONN_INITIAL_STAGE && conn->sock) { |
2548 | struct sock *sk = conn->sock->sk; | 2535 | struct sock *sk = conn->sock->sk; |
@@ -2573,19 +2560,19 @@ iscsi_conn_destroy(iscsi_connh_t connh) | |||
2573 | } | 2560 | } |
2574 | spin_unlock_bh(&session->lock); | 2561 | spin_unlock_bh(&session->lock); |
2575 | 2562 | ||
2576 | up(&conn->xmitsema); | 2563 | mutex_unlock(&conn->xmitmutex); |
2577 | 2564 | ||
2578 | /* | 2565 | /* |
2579 | * Block until all in-progress commands for this connection | 2566 | * Block until all in-progress commands for this connection |
2580 | * time out or fail. | 2567 | * time out or fail. |
2581 | */ | 2568 | */ |
2582 | for (;;) { | 2569 | for (;;) { |
2583 | spin_lock_bh(&conn->lock); | 2570 | spin_lock_irqsave(session->host->host_lock, flags); |
2584 | if (!session->host->host_busy) { /* OK for ERL == 0 */ | 2571 | if (!session->host->host_busy) { /* OK for ERL == 0 */ |
2585 | spin_unlock_bh(&conn->lock); | 2572 | spin_unlock_irqrestore(session->host->host_lock, flags); |
2586 | break; | 2573 | break; |
2587 | } | 2574 | } |
2588 | spin_unlock_bh(&conn->lock); | 2575 | spin_unlock_irqrestore(session->host->host_lock, flags); |
2589 | msleep_interruptible(500); | 2576 | msleep_interruptible(500); |
2590 | printk("conn_destroy(): host_busy %d host_failed %d\n", | 2577 | printk("conn_destroy(): host_busy %d host_failed %d\n", |
2591 | session->host->host_busy, session->host->host_failed); | 2578 | session->host->host_busy, session->host->host_failed); |
@@ -2633,7 +2620,8 @@ iscsi_conn_destroy(iscsi_connh_t connh) | |||
2633 | kfifo_free(conn->writequeue); | 2620 | kfifo_free(conn->writequeue); |
2634 | kfifo_free(conn->immqueue); | 2621 | kfifo_free(conn->immqueue); |
2635 | kfifo_free(conn->mgmtqueue); | 2622 | kfifo_free(conn->mgmtqueue); |
2636 | kfree(conn); | 2623 | |
2624 | iscsi_destroy_conn(cls_conn); | ||
2637 | } | 2625 | } |
2638 | 2626 | ||
2639 | static int | 2627 | static int |
@@ -2694,6 +2682,8 @@ iscsi_conn_bind(iscsi_sessionh_t sessionh, iscsi_connh_t connh, | |||
2694 | */ | 2682 | */ |
2695 | iscsi_conn_set_callbacks(conn); | 2683 | iscsi_conn_set_callbacks(conn); |
2696 | 2684 | ||
2685 | conn->sendpage = conn->sock->ops->sendpage; | ||
2686 | |||
2697 | /* | 2687 | /* |
2698 | * set receive state machine into initial state | 2688 | * set receive state machine into initial state |
2699 | */ | 2689 | */ |
@@ -2777,7 +2767,7 @@ iscsi_conn_stop(iscsi_connh_t connh, int flag) | |||
2777 | set_bit(SUSPEND_BIT, &conn->suspend_rx); | 2767 | set_bit(SUSPEND_BIT, &conn->suspend_rx); |
2778 | write_unlock_bh(&sk->sk_callback_lock); | 2768 | write_unlock_bh(&sk->sk_callback_lock); |
2779 | 2769 | ||
2780 | down(&conn->xmitsema); | 2770 | mutex_lock(&conn->xmitmutex); |
2781 | 2771 | ||
2782 | spin_lock_irqsave(session->host->host_lock, flags); | 2772 | spin_lock_irqsave(session->host->host_lock, flags); |
2783 | spin_lock(&session->lock); | 2773 | spin_lock(&session->lock); |
@@ -2853,10 +2843,13 @@ iscsi_conn_stop(iscsi_connh_t connh, int flag) | |||
2853 | * in hdr_extract() and will be re-negotiated at | 2843 | * in hdr_extract() and will be re-negotiated at |
2854 | * set_param() time. | 2844 | * set_param() time. |
2855 | */ | 2845 | */ |
2856 | if (flag == STOP_CONN_RECOVER) | 2846 | if (flag == STOP_CONN_RECOVER) { |
2857 | conn->hdr_size = sizeof(struct iscsi_hdr); | 2847 | conn->hdr_size = sizeof(struct iscsi_hdr); |
2848 | conn->hdrdgst_en = 0; | ||
2849 | conn->datadgst_en = 0; | ||
2850 | } | ||
2858 | } | 2851 | } |
2859 | up(&conn->xmitsema); | 2852 | mutex_unlock(&conn->xmitmutex); |
2860 | } | 2853 | } |
2861 | 2854 | ||
2862 | static int | 2855 | static int |
@@ -2941,8 +2934,7 @@ iscsi_conn_send_generic(struct iscsi_conn *conn, struct iscsi_hdr *hdr, | |||
2941 | else | 2934 | else |
2942 | __kfifo_put(conn->mgmtqueue, (void*)&mtask, sizeof(void*)); | 2935 | __kfifo_put(conn->mgmtqueue, (void*)&mtask, sizeof(void*)); |
2943 | 2936 | ||
2944 | schedule_work(&conn->xmitwork); | 2937 | scsi_queue_work(session->host, &conn->xmitwork); |
2945 | |||
2946 | return 0; | 2938 | return 0; |
2947 | } | 2939 | } |
2948 | 2940 | ||
@@ -3007,12 +2999,12 @@ iscsi_eh_abort(struct scsi_cmnd *sc) | |||
3007 | * 1) connection-level failure; | 2999 | * 1) connection-level failure; |
3008 | * 2) recovery due protocol error; | 3000 | * 2) recovery due protocol error; |
3009 | */ | 3001 | */ |
3010 | down(&conn->xmitsema); | 3002 | mutex_lock(&conn->xmitmutex); |
3011 | spin_lock_bh(&session->lock); | 3003 | spin_lock_bh(&session->lock); |
3012 | if (session->state != ISCSI_STATE_LOGGED_IN) { | 3004 | if (session->state != ISCSI_STATE_LOGGED_IN) { |
3013 | if (session->state == ISCSI_STATE_TERMINATE) { | 3005 | if (session->state == ISCSI_STATE_TERMINATE) { |
3014 | spin_unlock_bh(&session->lock); | 3006 | spin_unlock_bh(&session->lock); |
3015 | up(&conn->xmitsema); | 3007 | mutex_unlock(&conn->xmitmutex); |
3016 | goto failed; | 3008 | goto failed; |
3017 | } | 3009 | } |
3018 | spin_unlock_bh(&session->lock); | 3010 | spin_unlock_bh(&session->lock); |
@@ -3030,7 +3022,7 @@ iscsi_eh_abort(struct scsi_cmnd *sc) | |||
3030 | * 2) session was re-open during time out of ctask. | 3022 | * 2) session was re-open during time out of ctask. |
3031 | */ | 3023 | */ |
3032 | spin_unlock_bh(&session->lock); | 3024 | spin_unlock_bh(&session->lock); |
3033 | up(&conn->xmitsema); | 3025 | mutex_unlock(&conn->xmitmutex); |
3034 | goto success; | 3026 | goto success; |
3035 | } | 3027 | } |
3036 | conn->tmabort_state = TMABORT_INITIAL; | 3028 | conn->tmabort_state = TMABORT_INITIAL; |
@@ -3085,7 +3077,7 @@ iscsi_eh_abort(struct scsi_cmnd *sc) | |||
3085 | conn->tmabort_state == TMABORT_SUCCESS) { | 3077 | conn->tmabort_state == TMABORT_SUCCESS) { |
3086 | conn->tmabort_state = TMABORT_INITIAL; | 3078 | conn->tmabort_state = TMABORT_INITIAL; |
3087 | spin_unlock_bh(&session->lock); | 3079 | spin_unlock_bh(&session->lock); |
3088 | up(&conn->xmitsema); | 3080 | mutex_unlock(&conn->xmitmutex); |
3089 | goto success; | 3081 | goto success; |
3090 | } | 3082 | } |
3091 | conn->tmabort_state = TMABORT_INITIAL; | 3083 | conn->tmabort_state = TMABORT_INITIAL; |
@@ -3094,7 +3086,7 @@ iscsi_eh_abort(struct scsi_cmnd *sc) | |||
3094 | spin_unlock_bh(&session->lock); | 3086 | spin_unlock_bh(&session->lock); |
3095 | } | 3087 | } |
3096 | } | 3088 | } |
3097 | up(&conn->xmitsema); | 3089 | mutex_unlock(&conn->xmitmutex); |
3098 | 3090 | ||
3099 | 3091 | ||
3100 | /* | 3092 | /* |
@@ -3160,7 +3152,7 @@ failed: | |||
3160 | exit: | 3152 | exit: |
3161 | del_timer_sync(&conn->tmabort_timer); | 3153 | del_timer_sync(&conn->tmabort_timer); |
3162 | 3154 | ||
3163 | down(&conn->xmitsema); | 3155 | mutex_lock(&conn->xmitmutex); |
3164 | if (conn->sock) { | 3156 | if (conn->sock) { |
3165 | struct sock *sk = conn->sock->sk; | 3157 | struct sock *sk = conn->sock->sk; |
3166 | 3158 | ||
@@ -3168,7 +3160,7 @@ exit: | |||
3168 | iscsi_ctask_cleanup(conn, ctask); | 3160 | iscsi_ctask_cleanup(conn, ctask); |
3169 | write_unlock_bh(&sk->sk_callback_lock); | 3161 | write_unlock_bh(&sk->sk_callback_lock); |
3170 | } | 3162 | } |
3171 | up(&conn->xmitsema); | 3163 | mutex_unlock(&conn->xmitmutex); |
3172 | return rc; | 3164 | return rc; |
3173 | } | 3165 | } |
3174 | 3166 | ||
@@ -3247,28 +3239,35 @@ iscsi_r2tpool_free(struct iscsi_session *session) | |||
3247 | static struct scsi_host_template iscsi_sht = { | 3239 | static struct scsi_host_template iscsi_sht = { |
3248 | .name = "iSCSI Initiator over TCP/IP, v." | 3240 | .name = "iSCSI Initiator over TCP/IP, v." |
3249 | ISCSI_VERSION_STR, | 3241 | ISCSI_VERSION_STR, |
3250 | .queuecommand = iscsi_queuecommand, | 3242 | .queuecommand = iscsi_queuecommand, |
3243 | .change_queue_depth = iscsi_change_queue_depth, | ||
3251 | .can_queue = ISCSI_XMIT_CMDS_MAX - 1, | 3244 | .can_queue = ISCSI_XMIT_CMDS_MAX - 1, |
3252 | .sg_tablesize = ISCSI_SG_TABLESIZE, | 3245 | .sg_tablesize = ISCSI_SG_TABLESIZE, |
3253 | .cmd_per_lun = ISCSI_CMD_PER_LUN, | 3246 | .cmd_per_lun = ISCSI_DEF_CMD_PER_LUN, |
3254 | .eh_abort_handler = iscsi_eh_abort, | 3247 | .eh_abort_handler = iscsi_eh_abort, |
3255 | .eh_host_reset_handler = iscsi_eh_host_reset, | 3248 | .eh_host_reset_handler = iscsi_eh_host_reset, |
3256 | .use_clustering = DISABLE_CLUSTERING, | 3249 | .use_clustering = DISABLE_CLUSTERING, |
3257 | .proc_name = "iscsi_tcp", | 3250 | .proc_name = "iscsi_tcp", |
3258 | .this_id = -1, | 3251 | .this_id = -1, |
3259 | }; | 3252 | }; |
3260 | 3253 | ||
3261 | static iscsi_sessionh_t | 3254 | static struct iscsi_transport iscsi_tcp_transport; |
3262 | iscsi_session_create(uint32_t initial_cmdsn, struct Scsi_Host *host) | 3255 | |
3256 | static struct Scsi_Host * | ||
3257 | iscsi_session_create(struct scsi_transport_template *scsit, | ||
3258 | uint32_t initial_cmdsn) | ||
3263 | { | 3259 | { |
3264 | int cmd_i; | 3260 | struct Scsi_Host *shost; |
3265 | struct iscsi_session *session; | 3261 | struct iscsi_session *session; |
3262 | int cmd_i; | ||
3266 | 3263 | ||
3267 | session = iscsi_hostdata(host->hostdata); | 3264 | shost = iscsi_transport_create_session(scsit, &iscsi_tcp_transport); |
3268 | memset(session, 0, sizeof(struct iscsi_session)); | 3265 | if (!shost) |
3266 | return NULL; | ||
3269 | 3267 | ||
3270 | session->host = host; | 3268 | session = iscsi_hostdata(shost->hostdata); |
3271 | session->id = host->host_no; | 3269 | memset(session, 0, sizeof(struct iscsi_session)); |
3270 | session->host = shost; | ||
3272 | session->state = ISCSI_STATE_LOGGED_IN; | 3271 | session->state = ISCSI_STATE_LOGGED_IN; |
3273 | session->mgmtpool_max = ISCSI_MGMT_CMDS_MAX; | 3272 | session->mgmtpool_max = ISCSI_MGMT_CMDS_MAX; |
3274 | session->cmds_max = ISCSI_XMIT_CMDS_MAX; | 3273 | session->cmds_max = ISCSI_XMIT_CMDS_MAX; |
@@ -3312,7 +3311,7 @@ iscsi_session_create(uint32_t initial_cmdsn, struct Scsi_Host *host) | |||
3312 | if (iscsi_r2tpool_alloc(session)) | 3311 | if (iscsi_r2tpool_alloc(session)) |
3313 | goto r2tpool_alloc_fail; | 3312 | goto r2tpool_alloc_fail; |
3314 | 3313 | ||
3315 | return iscsi_handle(session); | 3314 | return shost; |
3316 | 3315 | ||
3317 | r2tpool_alloc_fail: | 3316 | r2tpool_alloc_fail: |
3318 | for (cmd_i = 0; cmd_i < session->mgmtpool_max; cmd_i++) | 3317 | for (cmd_i = 0; cmd_i < session->mgmtpool_max; cmd_i++) |
@@ -3322,15 +3321,15 @@ immdata_alloc_fail: | |||
3322 | mgmtpool_alloc_fail: | 3321 | mgmtpool_alloc_fail: |
3323 | iscsi_pool_free(&session->cmdpool, (void**)session->cmds); | 3322 | iscsi_pool_free(&session->cmdpool, (void**)session->cmds); |
3324 | cmdpool_alloc_fail: | 3323 | cmdpool_alloc_fail: |
3325 | return iscsi_handle(NULL); | 3324 | return NULL; |
3326 | } | 3325 | } |
3327 | 3326 | ||
3328 | static void | 3327 | static void |
3329 | iscsi_session_destroy(iscsi_sessionh_t sessionh) | 3328 | iscsi_session_destroy(struct Scsi_Host *shost) |
3330 | { | 3329 | { |
3330 | struct iscsi_session *session = iscsi_hostdata(shost->hostdata); | ||
3331 | int cmd_i; | 3331 | int cmd_i; |
3332 | struct iscsi_data_task *dtask, *n; | 3332 | struct iscsi_data_task *dtask, *n; |
3333 | struct iscsi_session *session = iscsi_ptr(sessionh); | ||
3334 | 3333 | ||
3335 | for (cmd_i = 0; cmd_i < session->cmds_max; cmd_i++) { | 3334 | for (cmd_i = 0; cmd_i < session->cmds_max; cmd_i++) { |
3336 | struct iscsi_cmd_task *ctask = session->cmds[cmd_i]; | 3335 | struct iscsi_cmd_task *ctask = session->cmds[cmd_i]; |
@@ -3346,6 +3345,8 @@ iscsi_session_destroy(iscsi_sessionh_t sessionh) | |||
3346 | iscsi_r2tpool_free(session); | 3345 | iscsi_r2tpool_free(session); |
3347 | iscsi_pool_free(&session->mgmtpool, (void**)session->mgmt_cmds); | 3346 | iscsi_pool_free(&session->mgmtpool, (void**)session->mgmt_cmds); |
3348 | iscsi_pool_free(&session->cmdpool, (void**)session->cmds); | 3347 | iscsi_pool_free(&session->cmdpool, (void**)session->cmds); |
3348 | |||
3349 | iscsi_transport_destroy_session(shost); | ||
3349 | } | 3350 | } |
3350 | 3351 | ||
3351 | static int | 3352 | static int |
@@ -3444,6 +3445,8 @@ iscsi_conn_set_param(iscsi_connh_t connh, enum iscsi_param param, | |||
3444 | if (conn->data_rx_tfm) | 3445 | if (conn->data_rx_tfm) |
3445 | crypto_free_tfm(conn->data_rx_tfm); | 3446 | crypto_free_tfm(conn->data_rx_tfm); |
3446 | } | 3447 | } |
3448 | conn->sendpage = conn->datadgst_en ? | ||
3449 | sock_no_sendpage : conn->sock->ops->sendpage; | ||
3447 | break; | 3450 | break; |
3448 | case ISCSI_PARAM_INITIAL_R2T_EN: | 3451 | case ISCSI_PARAM_INITIAL_R2T_EN: |
3449 | session->initial_r2t_en = value; | 3452 | session->initial_r2t_en = value; |
@@ -3492,25 +3495,12 @@ iscsi_conn_set_param(iscsi_connh_t connh, enum iscsi_param param, | |||
3492 | } | 3495 | } |
3493 | 3496 | ||
3494 | static int | 3497 | static int |
3495 | iscsi_conn_get_param(iscsi_connh_t connh, enum iscsi_param param, | 3498 | iscsi_session_get_param(struct Scsi_Host *shost, |
3496 | uint32_t *value) | 3499 | enum iscsi_param param, uint32_t *value) |
3497 | { | 3500 | { |
3498 | struct iscsi_conn *conn = iscsi_ptr(connh); | 3501 | struct iscsi_session *session = iscsi_hostdata(shost->hostdata); |
3499 | struct iscsi_session *session = conn->session; | ||
3500 | 3502 | ||
3501 | switch(param) { | 3503 | switch(param) { |
3502 | case ISCSI_PARAM_MAX_RECV_DLENGTH: | ||
3503 | *value = conn->max_recv_dlength; | ||
3504 | break; | ||
3505 | case ISCSI_PARAM_MAX_XMIT_DLENGTH: | ||
3506 | *value = conn->max_xmit_dlength; | ||
3507 | break; | ||
3508 | case ISCSI_PARAM_HDRDGST_EN: | ||
3509 | *value = conn->hdrdgst_en; | ||
3510 | break; | ||
3511 | case ISCSI_PARAM_DATADGST_EN: | ||
3512 | *value = conn->datadgst_en; | ||
3513 | break; | ||
3514 | case ISCSI_PARAM_INITIAL_R2T_EN: | 3504 | case ISCSI_PARAM_INITIAL_R2T_EN: |
3515 | *value = session->initial_r2t_en; | 3505 | *value = session->initial_r2t_en; |
3516 | break; | 3506 | break; |
@@ -3548,6 +3538,31 @@ iscsi_conn_get_param(iscsi_connh_t connh, enum iscsi_param param, | |||
3548 | return 0; | 3538 | return 0; |
3549 | } | 3539 | } |
3550 | 3540 | ||
3541 | static int | ||
3542 | iscsi_conn_get_param(void *data, enum iscsi_param param, uint32_t *value) | ||
3543 | { | ||
3544 | struct iscsi_conn *conn = data; | ||
3545 | |||
3546 | switch(param) { | ||
3547 | case ISCSI_PARAM_MAX_RECV_DLENGTH: | ||
3548 | *value = conn->max_recv_dlength; | ||
3549 | break; | ||
3550 | case ISCSI_PARAM_MAX_XMIT_DLENGTH: | ||
3551 | *value = conn->max_xmit_dlength; | ||
3552 | break; | ||
3553 | case ISCSI_PARAM_HDRDGST_EN: | ||
3554 | *value = conn->hdrdgst_en; | ||
3555 | break; | ||
3556 | case ISCSI_PARAM_DATADGST_EN: | ||
3557 | *value = conn->datadgst_en; | ||
3558 | break; | ||
3559 | default: | ||
3560 | return ISCSI_ERR_PARAM_NOT_FOUND; | ||
3561 | } | ||
3562 | |||
3563 | return 0; | ||
3564 | } | ||
3565 | |||
3551 | static void | 3566 | static void |
3552 | iscsi_conn_get_stats(iscsi_connh_t connh, struct iscsi_stats *stats) | 3567 | iscsi_conn_get_stats(iscsi_connh_t connh, struct iscsi_stats *stats) |
3553 | { | 3568 | { |
@@ -3578,9 +3593,9 @@ iscsi_conn_send_pdu(iscsi_connh_t connh, struct iscsi_hdr *hdr, char *data, | |||
3578 | struct iscsi_conn *conn = iscsi_ptr(connh); | 3593 | struct iscsi_conn *conn = iscsi_ptr(connh); |
3579 | int rc; | 3594 | int rc; |
3580 | 3595 | ||
3581 | down(&conn->xmitsema); | 3596 | mutex_lock(&conn->xmitmutex); |
3582 | rc = iscsi_conn_send_generic(conn, hdr, data, data_size); | 3597 | rc = iscsi_conn_send_generic(conn, hdr, data, data_size); |
3583 | up(&conn->xmitsema); | 3598 | mutex_unlock(&conn->xmitmutex); |
3584 | 3599 | ||
3585 | return rc; | 3600 | return rc; |
3586 | } | 3601 | } |
@@ -3592,6 +3607,7 @@ static struct iscsi_transport iscsi_tcp_transport = { | |||
3592 | | CAP_DATADGST, | 3607 | | CAP_DATADGST, |
3593 | .host_template = &iscsi_sht, | 3608 | .host_template = &iscsi_sht, |
3594 | .hostdata_size = sizeof(struct iscsi_session), | 3609 | .hostdata_size = sizeof(struct iscsi_session), |
3610 | .conndata_size = sizeof(struct iscsi_conn), | ||
3595 | .max_conn = 1, | 3611 | .max_conn = 1, |
3596 | .max_cmd_len = ISCSI_TCP_MAX_CMD_LEN, | 3612 | .max_cmd_len = ISCSI_TCP_MAX_CMD_LEN, |
3597 | .create_session = iscsi_session_create, | 3613 | .create_session = iscsi_session_create, |
@@ -3600,7 +3616,8 @@ static struct iscsi_transport iscsi_tcp_transport = { | |||
3600 | .bind_conn = iscsi_conn_bind, | 3616 | .bind_conn = iscsi_conn_bind, |
3601 | .destroy_conn = iscsi_conn_destroy, | 3617 | .destroy_conn = iscsi_conn_destroy, |
3602 | .set_param = iscsi_conn_set_param, | 3618 | .set_param = iscsi_conn_set_param, |
3603 | .get_param = iscsi_conn_get_param, | 3619 | .get_conn_param = iscsi_conn_get_param, |
3620 | .get_session_param = iscsi_session_get_param, | ||
3604 | .start_conn = iscsi_conn_start, | 3621 | .start_conn = iscsi_conn_start, |
3605 | .stop_conn = iscsi_conn_stop, | 3622 | .stop_conn = iscsi_conn_stop, |
3606 | .send_pdu = iscsi_conn_send_pdu, | 3623 | .send_pdu = iscsi_conn_send_pdu, |
@@ -3610,8 +3627,6 @@ static struct iscsi_transport iscsi_tcp_transport = { | |||
3610 | static int __init | 3627 | static int __init |
3611 | iscsi_tcp_init(void) | 3628 | iscsi_tcp_init(void) |
3612 | { | 3629 | { |
3613 | int error; | ||
3614 | |||
3615 | if (iscsi_max_lun < 1) { | 3630 | if (iscsi_max_lun < 1) { |
3616 | printk(KERN_ERR "Invalid max_lun value of %u\n", iscsi_max_lun); | 3631 | printk(KERN_ERR "Invalid max_lun value of %u\n", iscsi_max_lun); |
3617 | return -EINVAL; | 3632 | return -EINVAL; |
@@ -3624,11 +3639,10 @@ iscsi_tcp_init(void) | |||
3624 | if (!taskcache) | 3639 | if (!taskcache) |
3625 | return -ENOMEM; | 3640 | return -ENOMEM; |
3626 | 3641 | ||
3627 | error = iscsi_register_transport(&iscsi_tcp_transport); | 3642 | if (!iscsi_register_transport(&iscsi_tcp_transport)) |
3628 | if (error) | ||
3629 | kmem_cache_destroy(taskcache); | 3643 | kmem_cache_destroy(taskcache); |
3630 | 3644 | ||
3631 | return error; | 3645 | return 0; |
3632 | } | 3646 | } |
3633 | 3647 | ||
3634 | static void __exit | 3648 | static void __exit |
diff --git a/drivers/scsi/iscsi_tcp.h b/drivers/scsi/iscsi_tcp.h index d23ae68fae0d..f95e61b76f70 100644 --- a/drivers/scsi/iscsi_tcp.h +++ b/drivers/scsi/iscsi_tcp.h | |||
@@ -71,7 +71,8 @@ | |||
71 | #define ISCSI_MGMT_CMDS_MAX 32 /* must be power of 2 */ | 71 | #define ISCSI_MGMT_CMDS_MAX 32 /* must be power of 2 */ |
72 | #define ISCSI_MGMT_ITT_OFFSET 0xa00 | 72 | #define ISCSI_MGMT_ITT_OFFSET 0xa00 |
73 | #define ISCSI_SG_TABLESIZE SG_ALL | 73 | #define ISCSI_SG_TABLESIZE SG_ALL |
74 | #define ISCSI_CMD_PER_LUN 128 | 74 | #define ISCSI_DEF_CMD_PER_LUN 32 |
75 | #define ISCSI_MAX_CMD_PER_LUN 128 | ||
75 | #define ISCSI_TCP_MAX_CMD_LEN 16 | 76 | #define ISCSI_TCP_MAX_CMD_LEN 16 |
76 | 77 | ||
77 | #define ITT_MASK (0xfff) | 78 | #define ITT_MASK (0xfff) |
@@ -157,7 +158,7 @@ struct iscsi_conn { | |||
157 | struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ | 158 | struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ |
158 | struct kfifo *xmitqueue; /* data-path cmd queue */ | 159 | struct kfifo *xmitqueue; /* data-path cmd queue */ |
159 | struct work_struct xmitwork; /* per-conn. xmit workqueue */ | 160 | struct work_struct xmitwork; /* per-conn. xmit workqueue */ |
160 | struct semaphore xmitsema; /* serializes connection xmit, | 161 | struct mutex xmitmutex; /* serializes connection xmit, |
161 | * access to kfifos: * | 162 | * access to kfifos: * |
162 | * xmitqueue, writequeue, * | 163 | * xmitqueue, writequeue, * |
163 | * immqueue, mgmtqueue */ | 164 | * immqueue, mgmtqueue */ |
@@ -190,6 +191,8 @@ struct iscsi_conn { | |||
190 | uint32_t sendpage_failures_cnt; | 191 | uint32_t sendpage_failures_cnt; |
191 | uint32_t discontiguous_hdr_cnt; | 192 | uint32_t discontiguous_hdr_cnt; |
192 | uint32_t eh_abort_cnt; | 193 | uint32_t eh_abort_cnt; |
194 | |||
195 | ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int); | ||
193 | }; | 196 | }; |
194 | 197 | ||
195 | struct iscsi_session { | 198 | struct iscsi_session { |
@@ -239,8 +242,8 @@ struct iscsi_session { | |||
239 | 242 | ||
240 | struct iscsi_buf { | 243 | struct iscsi_buf { |
241 | struct scatterlist sg; | 244 | struct scatterlist sg; |
242 | struct kvec iov; | ||
243 | unsigned int sent; | 245 | unsigned int sent; |
246 | char use_sendmsg; | ||
244 | }; | 247 | }; |
245 | 248 | ||
246 | struct iscsi_data_task { | 249 | struct iscsi_data_task { |
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 4fd98fceee51..4a61061d0bde 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -563,16 +563,28 @@ static const u8 ata_rw_cmds[] = { | |||
563 | ATA_CMD_WRITE_MULTI, | 563 | ATA_CMD_WRITE_MULTI, |
564 | ATA_CMD_READ_MULTI_EXT, | 564 | ATA_CMD_READ_MULTI_EXT, |
565 | ATA_CMD_WRITE_MULTI_EXT, | 565 | ATA_CMD_WRITE_MULTI_EXT, |
566 | 0, | ||
567 | 0, | ||
568 | 0, | ||
569 | ATA_CMD_WRITE_MULTI_FUA_EXT, | ||
566 | /* pio */ | 570 | /* pio */ |
567 | ATA_CMD_PIO_READ, | 571 | ATA_CMD_PIO_READ, |
568 | ATA_CMD_PIO_WRITE, | 572 | ATA_CMD_PIO_WRITE, |
569 | ATA_CMD_PIO_READ_EXT, | 573 | ATA_CMD_PIO_READ_EXT, |
570 | ATA_CMD_PIO_WRITE_EXT, | 574 | ATA_CMD_PIO_WRITE_EXT, |
575 | 0, | ||
576 | 0, | ||
577 | 0, | ||
578 | 0, | ||
571 | /* dma */ | 579 | /* dma */ |
572 | ATA_CMD_READ, | 580 | ATA_CMD_READ, |
573 | ATA_CMD_WRITE, | 581 | ATA_CMD_WRITE, |
574 | ATA_CMD_READ_EXT, | 582 | ATA_CMD_READ_EXT, |
575 | ATA_CMD_WRITE_EXT | 583 | ATA_CMD_WRITE_EXT, |
584 | 0, | ||
585 | 0, | ||
586 | 0, | ||
587 | ATA_CMD_WRITE_FUA_EXT | ||
576 | }; | 588 | }; |
577 | 589 | ||
578 | /** | 590 | /** |
@@ -585,25 +597,32 @@ static const u8 ata_rw_cmds[] = { | |||
585 | * LOCKING: | 597 | * LOCKING: |
586 | * caller. | 598 | * caller. |
587 | */ | 599 | */ |
588 | void ata_rwcmd_protocol(struct ata_queued_cmd *qc) | 600 | int ata_rwcmd_protocol(struct ata_queued_cmd *qc) |
589 | { | 601 | { |
590 | struct ata_taskfile *tf = &qc->tf; | 602 | struct ata_taskfile *tf = &qc->tf; |
591 | struct ata_device *dev = qc->dev; | 603 | struct ata_device *dev = qc->dev; |
604 | u8 cmd; | ||
592 | 605 | ||
593 | int index, lba48, write; | 606 | int index, fua, lba48, write; |
594 | 607 | ||
608 | fua = (tf->flags & ATA_TFLAG_FUA) ? 4 : 0; | ||
595 | lba48 = (tf->flags & ATA_TFLAG_LBA48) ? 2 : 0; | 609 | lba48 = (tf->flags & ATA_TFLAG_LBA48) ? 2 : 0; |
596 | write = (tf->flags & ATA_TFLAG_WRITE) ? 1 : 0; | 610 | write = (tf->flags & ATA_TFLAG_WRITE) ? 1 : 0; |
597 | 611 | ||
598 | if (dev->flags & ATA_DFLAG_PIO) { | 612 | if (dev->flags & ATA_DFLAG_PIO) { |
599 | tf->protocol = ATA_PROT_PIO; | 613 | tf->protocol = ATA_PROT_PIO; |
600 | index = dev->multi_count ? 0 : 4; | 614 | index = dev->multi_count ? 0 : 8; |
601 | } else { | 615 | } else { |
602 | tf->protocol = ATA_PROT_DMA; | 616 | tf->protocol = ATA_PROT_DMA; |
603 | index = 8; | 617 | index = 16; |
604 | } | 618 | } |
605 | 619 | ||
606 | tf->command = ata_rw_cmds[index + lba48 + write]; | 620 | cmd = ata_rw_cmds[index + fua + lba48 + write]; |
621 | if (cmd) { | ||
622 | tf->command = cmd; | ||
623 | return 0; | ||
624 | } | ||
625 | return -1; | ||
607 | } | 626 | } |
608 | 627 | ||
609 | static const char * const xfer_mode_str[] = { | 628 | static const char * const xfer_mode_str[] = { |
@@ -1033,18 +1052,22 @@ static unsigned int ata_pio_modes(const struct ata_device *adev) | |||
1033 | { | 1052 | { |
1034 | u16 modes; | 1053 | u16 modes; |
1035 | 1054 | ||
1036 | /* Usual case. Word 53 indicates word 88 is valid */ | 1055 | /* Usual case. Word 53 indicates word 64 is valid */ |
1037 | if (adev->id[ATA_ID_FIELD_VALID] & (1 << 2)) { | 1056 | if (adev->id[ATA_ID_FIELD_VALID] & (1 << 1)) { |
1038 | modes = adev->id[ATA_ID_PIO_MODES] & 0x03; | 1057 | modes = adev->id[ATA_ID_PIO_MODES] & 0x03; |
1039 | modes <<= 3; | 1058 | modes <<= 3; |
1040 | modes |= 0x7; | 1059 | modes |= 0x7; |
1041 | return modes; | 1060 | return modes; |
1042 | } | 1061 | } |
1043 | 1062 | ||
1044 | /* If word 88 isn't valid then Word 51 holds the PIO timing number | 1063 | /* If word 64 isn't valid then Word 51 high byte holds the PIO timing |
1045 | for the maximum. Turn it into a mask and return it */ | 1064 | number for the maximum. Turn it into a mask and return it */ |
1046 | modes = (2 << (adev->id[ATA_ID_OLD_PIO_MODES] & 0xFF)) - 1 ; | 1065 | modes = (2 << ((adev->id[ATA_ID_OLD_PIO_MODES] >> 8) & 0xFF)) - 1 ; |
1047 | return modes; | 1066 | return modes; |
1067 | /* But wait.. there's more. Design your standards by committee and | ||
1068 | you too can get a free iordy field to process. However its the | ||
1069 | speeds not the modes that are supported... Note drivers using the | ||
1070 | timing API will get this right anyway */ | ||
1048 | } | 1071 | } |
1049 | 1072 | ||
1050 | struct ata_exec_internal_arg { | 1073 | struct ata_exec_internal_arg { |
@@ -1147,6 +1170,39 @@ ata_exec_internal(struct ata_port *ap, struct ata_device *dev, | |||
1147 | } | 1170 | } |
1148 | 1171 | ||
1149 | /** | 1172 | /** |
1173 | * ata_pio_need_iordy - check if iordy needed | ||
1174 | * @adev: ATA device | ||
1175 | * | ||
1176 | * Check if the current speed of the device requires IORDY. Used | ||
1177 | * by various controllers for chip configuration. | ||
1178 | */ | ||
1179 | |||
1180 | unsigned int ata_pio_need_iordy(const struct ata_device *adev) | ||
1181 | { | ||
1182 | int pio; | ||
1183 | int speed = adev->pio_mode - XFER_PIO_0; | ||
1184 | |||
1185 | if (speed < 2) | ||
1186 | return 0; | ||
1187 | if (speed > 2) | ||
1188 | return 1; | ||
1189 | |||
1190 | /* If we have no drive specific rule, then PIO 2 is non IORDY */ | ||
1191 | |||
1192 | if (adev->id[ATA_ID_FIELD_VALID] & 2) { /* EIDE */ | ||
1193 | pio = adev->id[ATA_ID_EIDE_PIO]; | ||
1194 | /* Is the speed faster than the drive allows non IORDY ? */ | ||
1195 | if (pio) { | ||
1196 | /* This is cycle times not frequency - watch the logic! */ | ||
1197 | if (pio > 240) /* PIO2 is 240nS per cycle */ | ||
1198 | return 1; | ||
1199 | return 0; | ||
1200 | } | ||
1201 | } | ||
1202 | return 0; | ||
1203 | } | ||
1204 | |||
1205 | /** | ||
1150 | * ata_dev_identify - obtain IDENTIFY x DEVICE page | 1206 | * ata_dev_identify - obtain IDENTIFY x DEVICE page |
1151 | * @ap: port on which device we wish to probe resides | 1207 | * @ap: port on which device we wish to probe resides |
1152 | * @device: device bus address, starting at zero | 1208 | * @device: device bus address, starting at zero |
@@ -1738,7 +1794,7 @@ static const struct { | |||
1738 | { ATA_SHIFT_PIO, XFER_PIO_0 }, | 1794 | { ATA_SHIFT_PIO, XFER_PIO_0 }, |
1739 | }; | 1795 | }; |
1740 | 1796 | ||
1741 | static inline u8 base_from_shift(unsigned int shift) | 1797 | static u8 base_from_shift(unsigned int shift) |
1742 | { | 1798 | { |
1743 | int i; | 1799 | int i; |
1744 | 1800 | ||
@@ -4420,6 +4476,96 @@ irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs) | |||
4420 | * Inherited from caller. | 4476 | * Inherited from caller. |
4421 | */ | 4477 | */ |
4422 | 4478 | ||
4479 | /* | ||
4480 | * Execute a 'simple' command, that only consists of the opcode 'cmd' itself, | ||
4481 | * without filling any other registers | ||
4482 | */ | ||
4483 | static int ata_do_simple_cmd(struct ata_port *ap, struct ata_device *dev, | ||
4484 | u8 cmd) | ||
4485 | { | ||
4486 | struct ata_taskfile tf; | ||
4487 | int err; | ||
4488 | |||
4489 | ata_tf_init(ap, &tf, dev->devno); | ||
4490 | |||
4491 | tf.command = cmd; | ||
4492 | tf.flags |= ATA_TFLAG_DEVICE; | ||
4493 | tf.protocol = ATA_PROT_NODATA; | ||
4494 | |||
4495 | err = ata_exec_internal(ap, dev, &tf, DMA_NONE, NULL, 0); | ||
4496 | if (err) | ||
4497 | printk(KERN_ERR "%s: ata command failed: %d\n", | ||
4498 | __FUNCTION__, err); | ||
4499 | |||
4500 | return err; | ||
4501 | } | ||
4502 | |||
4503 | static int ata_flush_cache(struct ata_port *ap, struct ata_device *dev) | ||
4504 | { | ||
4505 | u8 cmd; | ||
4506 | |||
4507 | if (!ata_try_flush_cache(dev)) | ||
4508 | return 0; | ||
4509 | |||
4510 | if (ata_id_has_flush_ext(dev->id)) | ||
4511 | cmd = ATA_CMD_FLUSH_EXT; | ||
4512 | else | ||
4513 | cmd = ATA_CMD_FLUSH; | ||
4514 | |||
4515 | return ata_do_simple_cmd(ap, dev, cmd); | ||
4516 | } | ||
4517 | |||
4518 | static int ata_standby_drive(struct ata_port *ap, struct ata_device *dev) | ||
4519 | { | ||
4520 | return ata_do_simple_cmd(ap, dev, ATA_CMD_STANDBYNOW1); | ||
4521 | } | ||
4522 | |||
4523 | static int ata_start_drive(struct ata_port *ap, struct ata_device *dev) | ||
4524 | { | ||
4525 | return ata_do_simple_cmd(ap, dev, ATA_CMD_IDLEIMMEDIATE); | ||
4526 | } | ||
4527 | |||
4528 | /** | ||
4529 | * ata_device_resume - wakeup a previously suspended devices | ||
4530 | * | ||
4531 | * Kick the drive back into action, by sending it an idle immediate | ||
4532 | * command and making sure its transfer mode matches between drive | ||
4533 | * and host. | ||
4534 | * | ||
4535 | */ | ||
4536 | int ata_device_resume(struct ata_port *ap, struct ata_device *dev) | ||
4537 | { | ||
4538 | if (ap->flags & ATA_FLAG_SUSPENDED) { | ||
4539 | ap->flags &= ~ATA_FLAG_SUSPENDED; | ||
4540 | ata_set_mode(ap); | ||
4541 | } | ||
4542 | if (!ata_dev_present(dev)) | ||
4543 | return 0; | ||
4544 | if (dev->class == ATA_DEV_ATA) | ||
4545 | ata_start_drive(ap, dev); | ||
4546 | |||
4547 | return 0; | ||
4548 | } | ||
4549 | |||
4550 | /** | ||
4551 | * ata_device_suspend - prepare a device for suspend | ||
4552 | * | ||
4553 | * Flush the cache on the drive, if appropriate, then issue a | ||
4554 | * standbynow command. | ||
4555 | * | ||
4556 | */ | ||
4557 | int ata_device_suspend(struct ata_port *ap, struct ata_device *dev) | ||
4558 | { | ||
4559 | if (!ata_dev_present(dev)) | ||
4560 | return 0; | ||
4561 | if (dev->class == ATA_DEV_ATA) | ||
4562 | ata_flush_cache(ap, dev); | ||
4563 | |||
4564 | ata_standby_drive(ap, dev); | ||
4565 | ap->flags |= ATA_FLAG_SUSPENDED; | ||
4566 | return 0; | ||
4567 | } | ||
4568 | |||
4423 | int ata_port_start (struct ata_port *ap) | 4569 | int ata_port_start (struct ata_port *ap) |
4424 | { | 4570 | { |
4425 | struct device *dev = ap->host_set->dev; | 4571 | struct device *dev = ap->host_set->dev; |
@@ -5167,6 +5313,23 @@ int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits) | |||
5167 | 5313 | ||
5168 | return (tmp == bits->val) ? 1 : 0; | 5314 | return (tmp == bits->val) ? 1 : 0; |
5169 | } | 5315 | } |
5316 | |||
5317 | int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state) | ||
5318 | { | ||
5319 | pci_save_state(pdev); | ||
5320 | pci_disable_device(pdev); | ||
5321 | pci_set_power_state(pdev, PCI_D3hot); | ||
5322 | return 0; | ||
5323 | } | ||
5324 | |||
5325 | int ata_pci_device_resume(struct pci_dev *pdev) | ||
5326 | { | ||
5327 | pci_set_power_state(pdev, PCI_D0); | ||
5328 | pci_restore_state(pdev); | ||
5329 | pci_enable_device(pdev); | ||
5330 | pci_set_master(pdev); | ||
5331 | return 0; | ||
5332 | } | ||
5170 | #endif /* CONFIG_PCI */ | 5333 | #endif /* CONFIG_PCI */ |
5171 | 5334 | ||
5172 | 5335 | ||
@@ -5261,6 +5424,7 @@ EXPORT_SYMBOL_GPL(ata_dev_id_string); | |||
5261 | EXPORT_SYMBOL_GPL(ata_dev_config); | 5424 | EXPORT_SYMBOL_GPL(ata_dev_config); |
5262 | EXPORT_SYMBOL_GPL(ata_scsi_simulate); | 5425 | EXPORT_SYMBOL_GPL(ata_scsi_simulate); |
5263 | 5426 | ||
5427 | EXPORT_SYMBOL_GPL(ata_pio_need_iordy); | ||
5264 | EXPORT_SYMBOL_GPL(ata_timing_compute); | 5428 | EXPORT_SYMBOL_GPL(ata_timing_compute); |
5265 | EXPORT_SYMBOL_GPL(ata_timing_merge); | 5429 | EXPORT_SYMBOL_GPL(ata_timing_merge); |
5266 | 5430 | ||
@@ -5270,4 +5434,11 @@ EXPORT_SYMBOL_GPL(ata_pci_host_stop); | |||
5270 | EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); | 5434 | EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); |
5271 | EXPORT_SYMBOL_GPL(ata_pci_init_one); | 5435 | EXPORT_SYMBOL_GPL(ata_pci_init_one); |
5272 | EXPORT_SYMBOL_GPL(ata_pci_remove_one); | 5436 | EXPORT_SYMBOL_GPL(ata_pci_remove_one); |
5437 | EXPORT_SYMBOL_GPL(ata_pci_device_suspend); | ||
5438 | EXPORT_SYMBOL_GPL(ata_pci_device_resume); | ||
5273 | #endif /* CONFIG_PCI */ | 5439 | #endif /* CONFIG_PCI */ |
5440 | |||
5441 | EXPORT_SYMBOL_GPL(ata_device_suspend); | ||
5442 | EXPORT_SYMBOL_GPL(ata_device_resume); | ||
5443 | EXPORT_SYMBOL_GPL(ata_scsi_device_suspend); | ||
5444 | EXPORT_SYMBOL_GPL(ata_scsi_device_resume); | ||
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c index e0439be4b573..cfbceb504718 100644 --- a/drivers/scsi/libata-scsi.c +++ b/drivers/scsi/libata-scsi.c | |||
@@ -396,6 +396,22 @@ void ata_dump_status(unsigned id, struct ata_taskfile *tf) | |||
396 | } | 396 | } |
397 | } | 397 | } |
398 | 398 | ||
399 | int ata_scsi_device_resume(struct scsi_device *sdev) | ||
400 | { | ||
401 | struct ata_port *ap = (struct ata_port *) &sdev->host->hostdata[0]; | ||
402 | struct ata_device *dev = &ap->device[sdev->id]; | ||
403 | |||
404 | return ata_device_resume(ap, dev); | ||
405 | } | ||
406 | |||
407 | int ata_scsi_device_suspend(struct scsi_device *sdev) | ||
408 | { | ||
409 | struct ata_port *ap = (struct ata_port *) &sdev->host->hostdata[0]; | ||
410 | struct ata_device *dev = &ap->device[sdev->id]; | ||
411 | |||
412 | return ata_device_suspend(ap, dev); | ||
413 | } | ||
414 | |||
399 | /** | 415 | /** |
400 | * ata_to_sense_error - convert ATA error to SCSI error | 416 | * ata_to_sense_error - convert ATA error to SCSI error |
401 | * @id: ATA device number | 417 | * @id: ATA device number |
@@ -1080,11 +1096,13 @@ static unsigned int ata_scsi_rw_xlat(struct ata_queued_cmd *qc, const u8 *scsicm | |||
1080 | scsicmd[0] == WRITE_16) | 1096 | scsicmd[0] == WRITE_16) |
1081 | tf->flags |= ATA_TFLAG_WRITE; | 1097 | tf->flags |= ATA_TFLAG_WRITE; |
1082 | 1098 | ||
1083 | /* Calculate the SCSI LBA and transfer length. */ | 1099 | /* Calculate the SCSI LBA, transfer length and FUA. */ |
1084 | switch (scsicmd[0]) { | 1100 | switch (scsicmd[0]) { |
1085 | case READ_10: | 1101 | case READ_10: |
1086 | case WRITE_10: | 1102 | case WRITE_10: |
1087 | scsi_10_lba_len(scsicmd, &block, &n_block); | 1103 | scsi_10_lba_len(scsicmd, &block, &n_block); |
1104 | if (unlikely(scsicmd[1] & (1 << 3))) | ||
1105 | tf->flags |= ATA_TFLAG_FUA; | ||
1088 | break; | 1106 | break; |
1089 | case READ_6: | 1107 | case READ_6: |
1090 | case WRITE_6: | 1108 | case WRITE_6: |
@@ -1099,6 +1117,8 @@ static unsigned int ata_scsi_rw_xlat(struct ata_queued_cmd *qc, const u8 *scsicm | |||
1099 | case READ_16: | 1117 | case READ_16: |
1100 | case WRITE_16: | 1118 | case WRITE_16: |
1101 | scsi_16_lba_len(scsicmd, &block, &n_block); | 1119 | scsi_16_lba_len(scsicmd, &block, &n_block); |
1120 | if (unlikely(scsicmd[1] & (1 << 3))) | ||
1121 | tf->flags |= ATA_TFLAG_FUA; | ||
1102 | break; | 1122 | break; |
1103 | default: | 1123 | default: |
1104 | DPRINTK("no-byte command\n"); | 1124 | DPRINTK("no-byte command\n"); |
@@ -1142,7 +1162,8 @@ static unsigned int ata_scsi_rw_xlat(struct ata_queued_cmd *qc, const u8 *scsicm | |||
1142 | tf->device |= (block >> 24) & 0xf; | 1162 | tf->device |= (block >> 24) & 0xf; |
1143 | } | 1163 | } |
1144 | 1164 | ||
1145 | ata_rwcmd_protocol(qc); | 1165 | if (unlikely(ata_rwcmd_protocol(qc) < 0)) |
1166 | goto invalid_fld; | ||
1146 | 1167 | ||
1147 | qc->nsect = n_block; | 1168 | qc->nsect = n_block; |
1148 | tf->nsect = n_block & 0xff; | 1169 | tf->nsect = n_block & 0xff; |
@@ -1160,7 +1181,8 @@ static unsigned int ata_scsi_rw_xlat(struct ata_queued_cmd *qc, const u8 *scsicm | |||
1160 | if ((block >> 28) || (n_block > 256)) | 1181 | if ((block >> 28) || (n_block > 256)) |
1161 | goto out_of_range; | 1182 | goto out_of_range; |
1162 | 1183 | ||
1163 | ata_rwcmd_protocol(qc); | 1184 | if (unlikely(ata_rwcmd_protocol(qc) < 0)) |
1185 | goto invalid_fld; | ||
1164 | 1186 | ||
1165 | /* Convert LBA to CHS */ | 1187 | /* Convert LBA to CHS */ |
1166 | track = (u32)block / dev->sectors; | 1188 | track = (u32)block / dev->sectors; |
@@ -1695,6 +1717,7 @@ static unsigned int ata_msense_rw_recovery(u8 **ptr_io, const u8 *last) | |||
1695 | unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf, | 1717 | unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf, |
1696 | unsigned int buflen) | 1718 | unsigned int buflen) |
1697 | { | 1719 | { |
1720 | struct ata_device *dev = args->dev; | ||
1698 | u8 *scsicmd = args->cmd->cmnd, *p, *last; | 1721 | u8 *scsicmd = args->cmd->cmnd, *p, *last; |
1699 | const u8 sat_blk_desc[] = { | 1722 | const u8 sat_blk_desc[] = { |
1700 | 0, 0, 0, 0, /* number of blocks: sat unspecified */ | 1723 | 0, 0, 0, 0, /* number of blocks: sat unspecified */ |
@@ -1703,6 +1726,7 @@ unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf, | |||
1703 | }; | 1726 | }; |
1704 | u8 pg, spg; | 1727 | u8 pg, spg; |
1705 | unsigned int ebd, page_control, six_byte, output_len, alloc_len, minlen; | 1728 | unsigned int ebd, page_control, six_byte, output_len, alloc_len, minlen; |
1729 | u8 dpofua; | ||
1706 | 1730 | ||
1707 | VPRINTK("ENTER\n"); | 1731 | VPRINTK("ENTER\n"); |
1708 | 1732 | ||
@@ -1771,9 +1795,17 @@ unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf, | |||
1771 | 1795 | ||
1772 | if (minlen < 1) | 1796 | if (minlen < 1) |
1773 | return 0; | 1797 | return 0; |
1798 | |||
1799 | dpofua = 0; | ||
1800 | if (ata_id_has_fua(args->id) && dev->flags & ATA_DFLAG_LBA48 && | ||
1801 | (!(dev->flags & ATA_DFLAG_PIO) || dev->multi_count)) | ||
1802 | dpofua = 1 << 4; | ||
1803 | |||
1774 | if (six_byte) { | 1804 | if (six_byte) { |
1775 | output_len--; | 1805 | output_len--; |
1776 | rbuf[0] = output_len; | 1806 | rbuf[0] = output_len; |
1807 | if (minlen > 2) | ||
1808 | rbuf[2] |= dpofua; | ||
1777 | if (ebd) { | 1809 | if (ebd) { |
1778 | if (minlen > 3) | 1810 | if (minlen > 3) |
1779 | rbuf[3] = sizeof(sat_blk_desc); | 1811 | rbuf[3] = sizeof(sat_blk_desc); |
@@ -1786,6 +1818,8 @@ unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf, | |||
1786 | rbuf[0] = output_len >> 8; | 1818 | rbuf[0] = output_len >> 8; |
1787 | if (minlen > 1) | 1819 | if (minlen > 1) |
1788 | rbuf[1] = output_len; | 1820 | rbuf[1] = output_len; |
1821 | if (minlen > 3) | ||
1822 | rbuf[3] |= dpofua; | ||
1789 | if (ebd) { | 1823 | if (ebd) { |
1790 | if (minlen > 7) | 1824 | if (minlen > 7) |
1791 | rbuf[7] = sizeof(sat_blk_desc); | 1825 | rbuf[7] = sizeof(sat_blk_desc); |
@@ -2446,7 +2480,7 @@ int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) | |||
2446 | if (xlat_func) | 2480 | if (xlat_func) |
2447 | ata_scsi_translate(ap, dev, cmd, done, xlat_func); | 2481 | ata_scsi_translate(ap, dev, cmd, done, xlat_func); |
2448 | else | 2482 | else |
2449 | ata_scsi_simulate(dev->id, cmd, done); | 2483 | ata_scsi_simulate(ap, dev, cmd, done); |
2450 | } else | 2484 | } else |
2451 | ata_scsi_translate(ap, dev, cmd, done, atapi_xlat); | 2485 | ata_scsi_translate(ap, dev, cmd, done, atapi_xlat); |
2452 | 2486 | ||
@@ -2469,14 +2503,16 @@ out_unlock: | |||
2469 | * spin_lock_irqsave(host_set lock) | 2503 | * spin_lock_irqsave(host_set lock) |
2470 | */ | 2504 | */ |
2471 | 2505 | ||
2472 | void ata_scsi_simulate(u16 *id, | 2506 | void ata_scsi_simulate(struct ata_port *ap, struct ata_device *dev, |
2473 | struct scsi_cmnd *cmd, | 2507 | struct scsi_cmnd *cmd, |
2474 | void (*done)(struct scsi_cmnd *)) | 2508 | void (*done)(struct scsi_cmnd *)) |
2475 | { | 2509 | { |
2476 | struct ata_scsi_args args; | 2510 | struct ata_scsi_args args; |
2477 | const u8 *scsicmd = cmd->cmnd; | 2511 | const u8 *scsicmd = cmd->cmnd; |
2478 | 2512 | ||
2479 | args.id = id; | 2513 | args.ap = ap; |
2514 | args.dev = dev; | ||
2515 | args.id = dev->id; | ||
2480 | args.cmd = cmd; | 2516 | args.cmd = cmd; |
2481 | args.done = done; | 2517 | args.done = done; |
2482 | 2518 | ||
diff --git a/drivers/scsi/libata.h b/drivers/scsi/libata.h index 251e53bdc6e0..e03ce48b7b4b 100644 --- a/drivers/scsi/libata.h +++ b/drivers/scsi/libata.h | |||
@@ -32,6 +32,8 @@ | |||
32 | #define DRV_VERSION "1.20" /* must be exactly four chars */ | 32 | #define DRV_VERSION "1.20" /* must be exactly four chars */ |
33 | 33 | ||
34 | struct ata_scsi_args { | 34 | struct ata_scsi_args { |
35 | struct ata_port *ap; | ||
36 | struct ata_device *dev; | ||
35 | u16 *id; | 37 | u16 *id; |
36 | struct scsi_cmnd *cmd; | 38 | struct scsi_cmnd *cmd; |
37 | void (*done)(struct scsi_cmnd *); | 39 | void (*done)(struct scsi_cmnd *); |
@@ -41,7 +43,7 @@ struct ata_scsi_args { | |||
41 | extern int atapi_enabled; | 43 | extern int atapi_enabled; |
42 | extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, | 44 | extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, |
43 | struct ata_device *dev); | 45 | struct ata_device *dev); |
44 | extern void ata_rwcmd_protocol(struct ata_queued_cmd *qc); | 46 | extern int ata_rwcmd_protocol(struct ata_queued_cmd *qc); |
45 | extern void ata_qc_free(struct ata_queued_cmd *qc); | 47 | extern void ata_qc_free(struct ata_queued_cmd *qc); |
46 | extern int ata_qc_issue(struct ata_queued_cmd *qc); | 48 | extern int ata_qc_issue(struct ata_queued_cmd *qc); |
47 | extern int ata_check_atapi_dma(struct ata_queued_cmd *qc); | 49 | extern int ata_check_atapi_dma(struct ata_queued_cmd *qc); |
diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h index 3062b39fbdb9..38ffa8d6e629 100644 --- a/drivers/scsi/lpfc/lpfc.h +++ b/drivers/scsi/lpfc/lpfc.h | |||
@@ -29,9 +29,10 @@ struct lpfc_sli2_slim; | |||
29 | #define LPFC_LC_HBA_Q_DEPTH 1024 /* max cmds per low cost hba */ | 29 | #define LPFC_LC_HBA_Q_DEPTH 1024 /* max cmds per low cost hba */ |
30 | #define LPFC_LP101_HBA_Q_DEPTH 128 /* max cmds per low cost hba */ | 30 | #define LPFC_LP101_HBA_Q_DEPTH 128 /* max cmds per low cost hba */ |
31 | 31 | ||
32 | #define LPFC_CMD_PER_LUN 30 /* max outstanding cmds per lun */ | 32 | #define LPFC_CMD_PER_LUN 3 /* max outstanding cmds per lun */ |
33 | #define LPFC_SG_SEG_CNT 64 /* sg element count per scsi cmnd */ | 33 | #define LPFC_SG_SEG_CNT 64 /* sg element count per scsi cmnd */ |
34 | #define LPFC_IOCB_LIST_CNT 2250 /* list of IOCBs for fast-path usage. */ | 34 | #define LPFC_IOCB_LIST_CNT 2250 /* list of IOCBs for fast-path usage. */ |
35 | #define LPFC_Q_RAMP_UP_INTERVAL 120 /* lun q_depth ramp up interval */ | ||
35 | 36 | ||
36 | /* Define macros for 64 bit support */ | 37 | /* Define macros for 64 bit support */ |
37 | #define putPaddrLow(addr) ((uint32_t) (0xffffffff & (u64)(addr))) | 38 | #define putPaddrLow(addr) ((uint32_t) (0xffffffff & (u64)(addr))) |
@@ -45,6 +46,11 @@ struct lpfc_sli2_slim; | |||
45 | 46 | ||
46 | #define MAX_HBAEVT 32 | 47 | #define MAX_HBAEVT 32 |
47 | 48 | ||
49 | enum lpfc_polling_flags { | ||
50 | ENABLE_FCP_RING_POLLING = 0x1, | ||
51 | DISABLE_FCP_RING_INT = 0x2 | ||
52 | }; | ||
53 | |||
48 | /* Provide DMA memory definitions the driver uses per port instance. */ | 54 | /* Provide DMA memory definitions the driver uses per port instance. */ |
49 | struct lpfc_dmabuf { | 55 | struct lpfc_dmabuf { |
50 | struct list_head list; | 56 | struct list_head list; |
@@ -167,6 +173,7 @@ struct lpfc_hba { | |||
167 | dma_addr_t slim2p_mapping; | 173 | dma_addr_t slim2p_mapping; |
168 | uint16_t pci_cfg_value; | 174 | uint16_t pci_cfg_value; |
169 | 175 | ||
176 | struct semaphore hba_can_block; | ||
170 | uint32_t hba_state; | 177 | uint32_t hba_state; |
171 | 178 | ||
172 | #define LPFC_INIT_START 1 /* Initial state after board reset */ | 179 | #define LPFC_INIT_START 1 /* Initial state after board reset */ |
@@ -286,6 +293,8 @@ struct lpfc_hba { | |||
286 | uint32_t cfg_fcp_bind_method; | 293 | uint32_t cfg_fcp_bind_method; |
287 | uint32_t cfg_discovery_threads; | 294 | uint32_t cfg_discovery_threads; |
288 | uint32_t cfg_max_luns; | 295 | uint32_t cfg_max_luns; |
296 | uint32_t cfg_poll; | ||
297 | uint32_t cfg_poll_tmo; | ||
289 | uint32_t cfg_sg_seg_cnt; | 298 | uint32_t cfg_sg_seg_cnt; |
290 | uint32_t cfg_sg_dma_buf_size; | 299 | uint32_t cfg_sg_dma_buf_size; |
291 | 300 | ||
@@ -337,7 +346,9 @@ struct lpfc_hba { | |||
337 | #define VPD_PORT 0x8 /* valid vpd port data */ | 346 | #define VPD_PORT 0x8 /* valid vpd port data */ |
338 | #define VPD_MASK 0xf /* mask for any vpd data */ | 347 | #define VPD_MASK 0xf /* mask for any vpd data */ |
339 | 348 | ||
349 | struct timer_list fcp_poll_timer; | ||
340 | struct timer_list els_tmofunc; | 350 | struct timer_list els_tmofunc; |
351 | |||
341 | /* | 352 | /* |
342 | * stat counters | 353 | * stat counters |
343 | */ | 354 | */ |
@@ -348,6 +359,7 @@ struct lpfc_hba { | |||
348 | struct lpfc_sysfs_mbox sysfs_mbox; | 359 | struct lpfc_sysfs_mbox sysfs_mbox; |
349 | 360 | ||
350 | /* fastpath list. */ | 361 | /* fastpath list. */ |
362 | spinlock_t scsi_buf_list_lock; | ||
351 | struct list_head lpfc_scsi_buf_list; | 363 | struct list_head lpfc_scsi_buf_list; |
352 | uint32_t total_scsi_bufs; | 364 | uint32_t total_scsi_bufs; |
353 | struct list_head lpfc_iocb_list; | 365 | struct list_head lpfc_iocb_list; |
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c index 89e8222bc7cc..5625a8c2a8fd 100644 --- a/drivers/scsi/lpfc/lpfc_attr.c +++ b/drivers/scsi/lpfc/lpfc_attr.c | |||
@@ -278,6 +278,71 @@ lpfc_board_online_store(struct class_device *cdev, const char *buf, | |||
278 | return -EIO; | 278 | return -EIO; |
279 | } | 279 | } |
280 | 280 | ||
281 | static ssize_t | ||
282 | lpfc_poll_show(struct class_device *cdev, char *buf) | ||
283 | { | ||
284 | struct Scsi_Host *host = class_to_shost(cdev); | ||
285 | struct lpfc_hba *phba = (struct lpfc_hba*)host->hostdata[0]; | ||
286 | |||
287 | return snprintf(buf, PAGE_SIZE, "%#x\n", phba->cfg_poll); | ||
288 | } | ||
289 | |||
290 | static ssize_t | ||
291 | lpfc_poll_store(struct class_device *cdev, const char *buf, | ||
292 | size_t count) | ||
293 | { | ||
294 | struct Scsi_Host *host = class_to_shost(cdev); | ||
295 | struct lpfc_hba *phba = (struct lpfc_hba*)host->hostdata[0]; | ||
296 | uint32_t creg_val; | ||
297 | uint32_t old_val; | ||
298 | int val=0; | ||
299 | |||
300 | if (!isdigit(buf[0])) | ||
301 | return -EINVAL; | ||
302 | |||
303 | if (sscanf(buf, "%i", &val) != 1) | ||
304 | return -EINVAL; | ||
305 | |||
306 | if ((val & 0x3) != val) | ||
307 | return -EINVAL; | ||
308 | |||
309 | spin_lock_irq(phba->host->host_lock); | ||
310 | |||
311 | old_val = phba->cfg_poll; | ||
312 | |||
313 | if (val & ENABLE_FCP_RING_POLLING) { | ||
314 | if ((val & DISABLE_FCP_RING_INT) && | ||
315 | !(old_val & DISABLE_FCP_RING_INT)) { | ||
316 | creg_val = readl(phba->HCregaddr); | ||
317 | creg_val &= ~(HC_R0INT_ENA << LPFC_FCP_RING); | ||
318 | writel(creg_val, phba->HCregaddr); | ||
319 | readl(phba->HCregaddr); /* flush */ | ||
320 | |||
321 | lpfc_poll_start_timer(phba); | ||
322 | } | ||
323 | } else if (val != 0x0) { | ||
324 | spin_unlock_irq(phba->host->host_lock); | ||
325 | return -EINVAL; | ||
326 | } | ||
327 | |||
328 | if (!(val & DISABLE_FCP_RING_INT) && | ||
329 | (old_val & DISABLE_FCP_RING_INT)) | ||
330 | { | ||
331 | spin_unlock_irq(phba->host->host_lock); | ||
332 | del_timer(&phba->fcp_poll_timer); | ||
333 | spin_lock_irq(phba->host->host_lock); | ||
334 | creg_val = readl(phba->HCregaddr); | ||
335 | creg_val |= (HC_R0INT_ENA << LPFC_FCP_RING); | ||
336 | writel(creg_val, phba->HCregaddr); | ||
337 | readl(phba->HCregaddr); /* flush */ | ||
338 | } | ||
339 | |||
340 | phba->cfg_poll = val; | ||
341 | |||
342 | spin_unlock_irq(phba->host->host_lock); | ||
343 | |||
344 | return strlen(buf); | ||
345 | } | ||
281 | 346 | ||
282 | #define lpfc_param_show(attr) \ | 347 | #define lpfc_param_show(attr) \ |
283 | static ssize_t \ | 348 | static ssize_t \ |
@@ -416,6 +481,15 @@ static CLASS_DEVICE_ATTR(management_version, S_IRUGO, management_version_show, | |||
416 | static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR, | 481 | static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR, |
417 | lpfc_board_online_show, lpfc_board_online_store); | 482 | lpfc_board_online_show, lpfc_board_online_store); |
418 | 483 | ||
484 | static int lpfc_poll = 0; | ||
485 | module_param(lpfc_poll, int, 0); | ||
486 | MODULE_PARM_DESC(lpfc_poll, "FCP ring polling mode control:" | ||
487 | " 0 - none," | ||
488 | " 1 - poll with interrupts enabled" | ||
489 | " 3 - poll and disable FCP ring interrupts"); | ||
490 | |||
491 | static CLASS_DEVICE_ATTR(lpfc_poll, S_IRUGO | S_IWUSR, | ||
492 | lpfc_poll_show, lpfc_poll_store); | ||
419 | 493 | ||
420 | /* | 494 | /* |
421 | # lpfc_log_verbose: Only turn this flag on if you are willing to risk being | 495 | # lpfc_log_verbose: Only turn this flag on if you are willing to risk being |
@@ -523,10 +597,10 @@ LPFC_ATTR_R(ack0, 0, 0, 1, "Enable ACK0 support"); | |||
523 | # is 0. Default value of cr_count is 1. The cr_count feature is disabled if | 597 | # is 0. Default value of cr_count is 1. The cr_count feature is disabled if |
524 | # cr_delay is set to 0. | 598 | # cr_delay is set to 0. |
525 | */ | 599 | */ |
526 | LPFC_ATTR(cr_delay, 0, 0, 63, "A count of milliseconds after which an" | 600 | LPFC_ATTR_RW(cr_delay, 0, 0, 63, "A count of milliseconds after which an" |
527 | "interrupt response is generated"); | 601 | "interrupt response is generated"); |
528 | 602 | ||
529 | LPFC_ATTR(cr_count, 1, 1, 255, "A count of I/O completions after which an" | 603 | LPFC_ATTR_RW(cr_count, 1, 1, 255, "A count of I/O completions after which an" |
530 | "interrupt response is generated"); | 604 | "interrupt response is generated"); |
531 | 605 | ||
532 | /* | 606 | /* |
@@ -553,6 +627,13 @@ LPFC_ATTR(discovery_threads, 32, 1, 64, "Maximum number of ELS commands" | |||
553 | LPFC_ATTR_R(max_luns, 256, 1, 32768, | 627 | LPFC_ATTR_R(max_luns, 256, 1, 32768, |
554 | "Maximum number of LUNs per target driver will support"); | 628 | "Maximum number of LUNs per target driver will support"); |
555 | 629 | ||
630 | /* | ||
631 | # lpfc_poll_tmo: .Milliseconds driver will wait between polling FCP ring. | ||
632 | # Value range is [1,255], default value is 10. | ||
633 | */ | ||
634 | LPFC_ATTR_RW(poll_tmo, 10, 1, 255, | ||
635 | "Milliseconds driver will wait between polling FCP ring"); | ||
636 | |||
556 | struct class_device_attribute *lpfc_host_attrs[] = { | 637 | struct class_device_attribute *lpfc_host_attrs[] = { |
557 | &class_device_attr_info, | 638 | &class_device_attr_info, |
558 | &class_device_attr_serialnum, | 639 | &class_device_attr_serialnum, |
@@ -575,11 +656,15 @@ struct class_device_attribute *lpfc_host_attrs[] = { | |||
575 | &class_device_attr_lpfc_topology, | 656 | &class_device_attr_lpfc_topology, |
576 | &class_device_attr_lpfc_scan_down, | 657 | &class_device_attr_lpfc_scan_down, |
577 | &class_device_attr_lpfc_link_speed, | 658 | &class_device_attr_lpfc_link_speed, |
659 | &class_device_attr_lpfc_cr_delay, | ||
660 | &class_device_attr_lpfc_cr_count, | ||
578 | &class_device_attr_lpfc_fdmi_on, | 661 | &class_device_attr_lpfc_fdmi_on, |
579 | &class_device_attr_lpfc_max_luns, | 662 | &class_device_attr_lpfc_max_luns, |
580 | &class_device_attr_nport_evt_cnt, | 663 | &class_device_attr_nport_evt_cnt, |
581 | &class_device_attr_management_version, | 664 | &class_device_attr_management_version, |
582 | &class_device_attr_board_online, | 665 | &class_device_attr_board_online, |
666 | &class_device_attr_lpfc_poll, | ||
667 | &class_device_attr_lpfc_poll_tmo, | ||
583 | NULL, | 668 | NULL, |
584 | }; | 669 | }; |
585 | 670 | ||
@@ -1292,6 +1377,9 @@ lpfc_get_cfgparam(struct lpfc_hba *phba) | |||
1292 | lpfc_fdmi_on_init(phba, lpfc_fdmi_on); | 1377 | lpfc_fdmi_on_init(phba, lpfc_fdmi_on); |
1293 | lpfc_discovery_threads_init(phba, lpfc_discovery_threads); | 1378 | lpfc_discovery_threads_init(phba, lpfc_discovery_threads); |
1294 | lpfc_max_luns_init(phba, lpfc_max_luns); | 1379 | lpfc_max_luns_init(phba, lpfc_max_luns); |
1380 | lpfc_poll_tmo_init(phba, lpfc_poll_tmo); | ||
1381 | |||
1382 | phba->cfg_poll = lpfc_poll; | ||
1295 | 1383 | ||
1296 | /* | 1384 | /* |
1297 | * The total number of segments is the configuration value plus 2 | 1385 | * The total number of segments is the configuration value plus 2 |
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h index d527d05a607f..f1e708946e66 100644 --- a/drivers/scsi/lpfc/lpfc_crtn.h +++ b/drivers/scsi/lpfc/lpfc_crtn.h | |||
@@ -143,6 +143,9 @@ LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *); | |||
143 | int lpfc_mem_alloc(struct lpfc_hba *); | 143 | int lpfc_mem_alloc(struct lpfc_hba *); |
144 | void lpfc_mem_free(struct lpfc_hba *); | 144 | void lpfc_mem_free(struct lpfc_hba *); |
145 | 145 | ||
146 | void lpfc_poll_timeout(unsigned long ptr); | ||
147 | void lpfc_poll_start_timer(struct lpfc_hba * phba); | ||
148 | void lpfc_sli_poll_fcp_ring(struct lpfc_hba * hba); | ||
146 | struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *); | 149 | struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *); |
147 | void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); | 150 | void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); |
148 | uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); | 151 | uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); |
diff --git a/drivers/scsi/lpfc/lpfc_disc.h b/drivers/scsi/lpfc/lpfc_disc.h index 084e7628ce17..ed6c81660e03 100644 --- a/drivers/scsi/lpfc/lpfc_disc.h +++ b/drivers/scsi/lpfc/lpfc_disc.h | |||
@@ -73,6 +73,8 @@ struct lpfc_nodelist { | |||
73 | struct lpfc_hba *nlp_phba; | 73 | struct lpfc_hba *nlp_phba; |
74 | struct lpfc_work_evt nodev_timeout_evt; | 74 | struct lpfc_work_evt nodev_timeout_evt; |
75 | struct lpfc_work_evt els_retry_evt; | 75 | struct lpfc_work_evt els_retry_evt; |
76 | unsigned long last_ramp_up_time; /* jiffy of last ramp up */ | ||
77 | unsigned long last_q_full_time; /* jiffy of last queue full */ | ||
76 | }; | 78 | }; |
77 | 79 | ||
78 | /* Defines for nlp_flag (uint32) */ | 80 | /* Defines for nlp_flag (uint32) */ |
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index bcc29ec126dc..20f1a0713db2 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -720,6 +720,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, | |||
720 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ | 720 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ |
721 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | 721 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && |
722 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || | 722 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || |
723 | (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) || | ||
723 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { | 724 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { |
724 | disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC); | 725 | disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC); |
725 | } | 726 | } |
@@ -869,6 +870,7 @@ lpfc_cmpl_els_prli(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, | |||
869 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ | 870 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ |
870 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | 871 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && |
871 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || | 872 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || |
873 | (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) || | ||
872 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { | 874 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { |
873 | goto out; | 875 | goto out; |
874 | } | 876 | } |
@@ -1054,6 +1056,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, | |||
1054 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ | 1056 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ |
1055 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | 1057 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && |
1056 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || | 1058 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || |
1059 | (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) || | ||
1057 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { | 1060 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { |
1058 | disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC); | 1061 | disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC); |
1059 | } | 1062 | } |
@@ -1205,6 +1208,7 @@ lpfc_cmpl_els_logo(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, | |||
1205 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ | 1208 | /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ |
1206 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | 1209 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && |
1207 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || | 1210 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || |
1211 | (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) || | ||
1208 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { | 1212 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { |
1209 | goto out; | 1213 | goto out; |
1210 | } | 1214 | } |
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 259eeb161b82..a1f751e79405 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
@@ -1017,12 +1017,7 @@ lpfc_register_remote_port(struct lpfc_hba * phba, | |||
1017 | rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn); | 1017 | rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn); |
1018 | rport_ids.port_id = ndlp->nlp_DID; | 1018 | rport_ids.port_id = ndlp->nlp_DID; |
1019 | rport_ids.roles = FC_RPORT_ROLE_UNKNOWN; | 1019 | rport_ids.roles = FC_RPORT_ROLE_UNKNOWN; |
1020 | if (ndlp->nlp_type & NLP_FCP_TARGET) | ||
1021 | rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET; | ||
1022 | if (ndlp->nlp_type & NLP_FCP_INITIATOR) | ||
1023 | rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR; | ||
1024 | 1020 | ||
1025 | scsi_block_requests(phba->host); | ||
1026 | ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids); | 1021 | ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids); |
1027 | if (!rport) { | 1022 | if (!rport) { |
1028 | dev_printk(KERN_WARNING, &phba->pcidev->dev, | 1023 | dev_printk(KERN_WARNING, &phba->pcidev->dev, |
@@ -1039,7 +1034,16 @@ lpfc_register_remote_port(struct lpfc_hba * phba, | |||
1039 | } | 1034 | } |
1040 | rdata = rport->dd_data; | 1035 | rdata = rport->dd_data; |
1041 | rdata->pnode = ndlp; | 1036 | rdata->pnode = ndlp; |
1042 | scsi_unblock_requests(phba->host); | 1037 | |
1038 | if (ndlp->nlp_type & NLP_FCP_TARGET) | ||
1039 | rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET; | ||
1040 | if (ndlp->nlp_type & NLP_FCP_INITIATOR) | ||
1041 | rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR; | ||
1042 | |||
1043 | |||
1044 | if (rport_ids.roles != FC_RPORT_ROLE_UNKNOWN) | ||
1045 | fc_remote_port_rolechg(rport, rport_ids.roles); | ||
1046 | |||
1043 | 1047 | ||
1044 | return; | 1048 | return; |
1045 | } | 1049 | } |
@@ -1053,9 +1057,7 @@ lpfc_unregister_remote_port(struct lpfc_hba * phba, | |||
1053 | 1057 | ||
1054 | ndlp->rport = NULL; | 1058 | ndlp->rport = NULL; |
1055 | rdata->pnode = NULL; | 1059 | rdata->pnode = NULL; |
1056 | scsi_block_requests(phba->host); | ||
1057 | fc_remote_port_delete(rport); | 1060 | fc_remote_port_delete(rport); |
1058 | scsi_unblock_requests(phba->host); | ||
1059 | 1061 | ||
1060 | return; | 1062 | return; |
1061 | } | 1063 | } |
diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h index 86c41981188b..1ea565e0561f 100644 --- a/drivers/scsi/lpfc/lpfc_hw.h +++ b/drivers/scsi/lpfc/lpfc_hw.h | |||
@@ -266,9 +266,11 @@ struct lpfc_name { | |||
266 | struct { | 266 | struct { |
267 | #ifdef __BIG_ENDIAN_BITFIELD | 267 | #ifdef __BIG_ENDIAN_BITFIELD |
268 | uint8_t nameType:4; /* FC Word 0, bit 28:31 */ | 268 | uint8_t nameType:4; /* FC Word 0, bit 28:31 */ |
269 | uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */ | 269 | uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit |
270 | 8:11 of IEEE ext */ | ||
270 | #else /* __LITTLE_ENDIAN_BITFIELD */ | 271 | #else /* __LITTLE_ENDIAN_BITFIELD */ |
271 | uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */ | 272 | uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit |
273 | 8:11 of IEEE ext */ | ||
272 | uint8_t nameType:4; /* FC Word 0, bit 28:31 */ | 274 | uint8_t nameType:4; /* FC Word 0, bit 28:31 */ |
273 | #endif | 275 | #endif |
274 | 276 | ||
@@ -278,7 +280,8 @@ struct lpfc_name { | |||
278 | #define NAME_IP_TYPE 0x4 /* IP address */ | 280 | #define NAME_IP_TYPE 0x4 /* IP address */ |
279 | #define NAME_CCITT_TYPE 0xC | 281 | #define NAME_CCITT_TYPE 0xC |
280 | #define NAME_CCITT_GR_TYPE 0xE | 282 | #define NAME_CCITT_GR_TYPE 0xE |
281 | uint8_t IEEEextLsb; /* FC Word 0, bit 16:23, IEEE extended Lsb */ | 283 | uint8_t IEEEextLsb; /* FC Word 0, bit 16:23, IEEE |
284 | extended Lsb */ | ||
282 | uint8_t IEEE[6]; /* FC IEEE address */ | 285 | uint8_t IEEE[6]; /* FC IEEE address */ |
283 | } s; | 286 | } s; |
284 | uint8_t wwn[8]; | 287 | uint8_t wwn[8]; |
@@ -1024,23 +1027,38 @@ typedef struct { | |||
1024 | /* Start FireFly Register definitions */ | 1027 | /* Start FireFly Register definitions */ |
1025 | #define PCI_VENDOR_ID_EMULEX 0x10df | 1028 | #define PCI_VENDOR_ID_EMULEX 0x10df |
1026 | #define PCI_DEVICE_ID_FIREFLY 0x1ae5 | 1029 | #define PCI_DEVICE_ID_FIREFLY 0x1ae5 |
1027 | #define PCI_DEVICE_ID_SUPERFLY 0xf700 | ||
1028 | #define PCI_DEVICE_ID_DRAGONFLY 0xf800 | ||
1029 | #define PCI_DEVICE_ID_RFLY 0xf095 | 1030 | #define PCI_DEVICE_ID_RFLY 0xf095 |
1030 | #define PCI_DEVICE_ID_PFLY 0xf098 | 1031 | #define PCI_DEVICE_ID_PFLY 0xf098 |
1032 | #define PCI_DEVICE_ID_LP101 0xf0a1 | ||
1031 | #define PCI_DEVICE_ID_TFLY 0xf0a5 | 1033 | #define PCI_DEVICE_ID_TFLY 0xf0a5 |
1034 | #define PCI_DEVICE_ID_BSMB 0xf0d1 | ||
1035 | #define PCI_DEVICE_ID_BMID 0xf0d5 | ||
1036 | #define PCI_DEVICE_ID_ZSMB 0xf0e1 | ||
1037 | #define PCI_DEVICE_ID_ZMID 0xf0e5 | ||
1038 | #define PCI_DEVICE_ID_NEPTUNE 0xf0f5 | ||
1039 | #define PCI_DEVICE_ID_NEPTUNE_SCSP 0xf0f6 | ||
1040 | #define PCI_DEVICE_ID_NEPTUNE_DCSP 0xf0f7 | ||
1041 | #define PCI_DEVICE_ID_SUPERFLY 0xf700 | ||
1042 | #define PCI_DEVICE_ID_DRAGONFLY 0xf800 | ||
1032 | #define PCI_DEVICE_ID_CENTAUR 0xf900 | 1043 | #define PCI_DEVICE_ID_CENTAUR 0xf900 |
1033 | #define PCI_DEVICE_ID_PEGASUS 0xf980 | 1044 | #define PCI_DEVICE_ID_PEGASUS 0xf980 |
1034 | #define PCI_DEVICE_ID_THOR 0xfa00 | 1045 | #define PCI_DEVICE_ID_THOR 0xfa00 |
1035 | #define PCI_DEVICE_ID_VIPER 0xfb00 | 1046 | #define PCI_DEVICE_ID_VIPER 0xfb00 |
1047 | #define PCI_DEVICE_ID_LP10000S 0xfc00 | ||
1048 | #define PCI_DEVICE_ID_LP11000S 0xfc10 | ||
1049 | #define PCI_DEVICE_ID_LPE11000S 0xfc20 | ||
1036 | #define PCI_DEVICE_ID_HELIOS 0xfd00 | 1050 | #define PCI_DEVICE_ID_HELIOS 0xfd00 |
1037 | #define PCI_DEVICE_ID_BMID 0xf0d5 | 1051 | #define PCI_DEVICE_ID_HELIOS_SCSP 0xfd11 |
1038 | #define PCI_DEVICE_ID_BSMB 0xf0d1 | 1052 | #define PCI_DEVICE_ID_HELIOS_DCSP 0xfd12 |
1039 | #define PCI_DEVICE_ID_ZEPHYR 0xfe00 | 1053 | #define PCI_DEVICE_ID_ZEPHYR 0xfe00 |
1040 | #define PCI_DEVICE_ID_ZMID 0xf0e5 | 1054 | #define PCI_DEVICE_ID_ZEPHYR_SCSP 0xfe11 |
1041 | #define PCI_DEVICE_ID_ZSMB 0xf0e1 | 1055 | #define PCI_DEVICE_ID_ZEPHYR_DCSP 0xfe12 |
1042 | #define PCI_DEVICE_ID_LP101 0xf0a1 | 1056 | |
1043 | #define PCI_DEVICE_ID_LP10000S 0xfc00 | 1057 | #define PCI_SUBSYSTEM_ID_LP11000S 0xfc11 |
1058 | #define PCI_SUBSYSTEM_ID_LP11002S 0xfc12 | ||
1059 | #define PCI_SUBSYSTEM_ID_LPE11000S 0xfc21 | ||
1060 | #define PCI_SUBSYSTEM_ID_LPE11002S 0xfc22 | ||
1061 | #define PCI_SUBSYSTEM_ID_LPE11010S 0xfc2A | ||
1044 | 1062 | ||
1045 | #define JEDEC_ID_ADDRESS 0x0080001c | 1063 | #define JEDEC_ID_ADDRESS 0x0080001c |
1046 | #define FIREFLY_JEDEC_ID 0x1ACC | 1064 | #define FIREFLY_JEDEC_ID 0x1ACC |
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index 07498118359d..b7a603a45328 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
@@ -126,34 +126,26 @@ lpfc_config_port_prep(struct lpfc_hba * phba) | |||
126 | return -ERESTART; | 126 | return -ERESTART; |
127 | } | 127 | } |
128 | 128 | ||
129 | /* The HBA's current state is provided by the ProgType and rr fields. | 129 | /* |
130 | * Read and check the value of these fields before continuing to config | 130 | * The value of rr must be 1 since the driver set the cv field to 1. |
131 | * this port. | 131 | * This setting requires the FW to set all revision fields. |
132 | */ | 132 | */ |
133 | if (mb->un.varRdRev.rr == 0 || mb->un.varRdRev.un.b.ProgType != 2) { | 133 | if (mb->un.varRdRev.rr == 0) { |
134 | /* Old firmware */ | ||
135 | vp->rev.rBit = 0; | 134 | vp->rev.rBit = 0; |
136 | lpfc_printf_log(phba, | 135 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
137 | KERN_ERR, | 136 | "%d:0440 Adapter failed to init, READ_REV has " |
138 | LOG_INIT, | 137 | "missing revision information.\n", |
139 | "%d:0440 Adapter failed to init, mbxCmd x%x " | 138 | phba->brd_no); |
140 | "READ_REV detected outdated firmware" | ||
141 | "Data: x%x\n", | ||
142 | phba->brd_no, | ||
143 | mb->mbxCommand, 0); | ||
144 | mempool_free(pmb, phba->mbox_mem_pool); | 139 | mempool_free(pmb, phba->mbox_mem_pool); |
145 | return -ERESTART; | 140 | return -ERESTART; |
146 | } else { | ||
147 | vp->rev.rBit = 1; | ||
148 | vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev; | ||
149 | memcpy(vp->rev.sli1FwName, | ||
150 | (char*)mb->un.varRdRev.sli1FwName, 16); | ||
151 | vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev; | ||
152 | memcpy(vp->rev.sli2FwName, | ||
153 | (char *)mb->un.varRdRev.sli2FwName, 16); | ||
154 | } | 141 | } |
155 | 142 | ||
156 | /* Save information as VPD data */ | 143 | /* Save information as VPD data */ |
144 | vp->rev.rBit = 1; | ||
145 | vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev; | ||
146 | memcpy(vp->rev.sli1FwName, (char*) mb->un.varRdRev.sli1FwName, 16); | ||
147 | vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev; | ||
148 | memcpy(vp->rev.sli2FwName, (char *) mb->un.varRdRev.sli2FwName, 16); | ||
157 | vp->rev.biuRev = mb->un.varRdRev.biuRev; | 149 | vp->rev.biuRev = mb->un.varRdRev.biuRev; |
158 | vp->rev.smRev = mb->un.varRdRev.smRev; | 150 | vp->rev.smRev = mb->un.varRdRev.smRev; |
159 | vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev; | 151 | vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev; |
@@ -378,6 +370,10 @@ lpfc_config_port_post(struct lpfc_hba * phba) | |||
378 | if (psli->num_rings > 3) | 370 | if (psli->num_rings > 3) |
379 | status |= HC_R3INT_ENA; | 371 | status |= HC_R3INT_ENA; |
380 | 372 | ||
373 | if ((phba->cfg_poll & ENABLE_FCP_RING_POLLING) && | ||
374 | (phba->cfg_poll & DISABLE_FCP_RING_INT)) | ||
375 | status &= ~(HC_R0INT_ENA << LPFC_FCP_RING); | ||
376 | |||
381 | writel(status, phba->HCregaddr); | 377 | writel(status, phba->HCregaddr); |
382 | readl(phba->HCregaddr); /* flush */ | 378 | readl(phba->HCregaddr); /* flush */ |
383 | spin_unlock_irq(phba->host->host_lock); | 379 | spin_unlock_irq(phba->host->host_lock); |
@@ -571,6 +567,8 @@ lpfc_handle_latt(struct lpfc_hba * phba) | |||
571 | 567 | ||
572 | rc = -EIO; | 568 | rc = -EIO; |
573 | 569 | ||
570 | /* Cleanup any outstanding ELS commands */ | ||
571 | lpfc_els_flush_cmd(phba); | ||
574 | 572 | ||
575 | psli->slistat.link_event++; | 573 | psli->slistat.link_event++; |
576 | lpfc_read_la(phba, pmb, mp); | 574 | lpfc_read_la(phba, pmb, mp); |
@@ -765,96 +763,139 @@ static void | |||
765 | lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp) | 763 | lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp) |
766 | { | 764 | { |
767 | lpfc_vpd_t *vp; | 765 | lpfc_vpd_t *vp; |
768 | uint32_t id; | 766 | uint16_t dev_id = phba->pcidev->device; |
769 | uint8_t hdrtype; | 767 | uint16_t dev_subid = phba->pcidev->subsystem_device; |
770 | char str[16]; | 768 | uint8_t hdrtype = phba->pcidev->hdr_type; |
769 | char *model_str = ""; | ||
771 | 770 | ||
772 | vp = &phba->vpd; | 771 | vp = &phba->vpd; |
773 | pci_read_config_dword(phba->pcidev, PCI_VENDOR_ID, &id); | ||
774 | pci_read_config_byte(phba->pcidev, PCI_HEADER_TYPE, &hdrtype); | ||
775 | 772 | ||
776 | switch ((id >> 16) & 0xffff) { | 773 | switch (dev_id) { |
777 | case PCI_DEVICE_ID_FIREFLY: | 774 | case PCI_DEVICE_ID_FIREFLY: |
778 | strcpy(str, "LP6000 1"); | 775 | model_str = "LP6000 1Gb PCI"; |
779 | break; | 776 | break; |
780 | case PCI_DEVICE_ID_SUPERFLY: | 777 | case PCI_DEVICE_ID_SUPERFLY: |
781 | if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3) | 778 | if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3) |
782 | strcpy(str, "LP7000 1"); | 779 | model_str = "LP7000 1Gb PCI"; |
783 | else | 780 | else |
784 | strcpy(str, "LP7000E 1"); | 781 | model_str = "LP7000E 1Gb PCI"; |
785 | break; | 782 | break; |
786 | case PCI_DEVICE_ID_DRAGONFLY: | 783 | case PCI_DEVICE_ID_DRAGONFLY: |
787 | strcpy(str, "LP8000 1"); | 784 | model_str = "LP8000 1Gb PCI"; |
788 | break; | 785 | break; |
789 | case PCI_DEVICE_ID_CENTAUR: | 786 | case PCI_DEVICE_ID_CENTAUR: |
790 | if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID) | 787 | if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID) |
791 | strcpy(str, "LP9002 2"); | 788 | model_str = "LP9002 2Gb PCI"; |
792 | else | 789 | else |
793 | strcpy(str, "LP9000 1"); | 790 | model_str = "LP9000 1Gb PCI"; |
794 | break; | 791 | break; |
795 | case PCI_DEVICE_ID_RFLY: | 792 | case PCI_DEVICE_ID_RFLY: |
796 | strcpy(str, "LP952 2"); | 793 | model_str = "LP952 2Gb PCI"; |
797 | break; | 794 | break; |
798 | case PCI_DEVICE_ID_PEGASUS: | 795 | case PCI_DEVICE_ID_PEGASUS: |
799 | strcpy(str, "LP9802 2"); | 796 | model_str = "LP9802 2Gb PCI-X"; |
800 | break; | 797 | break; |
801 | case PCI_DEVICE_ID_THOR: | 798 | case PCI_DEVICE_ID_THOR: |
802 | if (hdrtype == 0x80) | 799 | if (hdrtype == 0x80) |
803 | strcpy(str, "LP10000DC 2"); | 800 | model_str = "LP10000DC 2Gb 2-port PCI-X"; |
804 | else | 801 | else |
805 | strcpy(str, "LP10000 2"); | 802 | model_str = "LP10000 2Gb PCI-X"; |
806 | break; | 803 | break; |
807 | case PCI_DEVICE_ID_VIPER: | 804 | case PCI_DEVICE_ID_VIPER: |
808 | strcpy(str, "LPX1000 10"); | 805 | model_str = "LPX1000 10Gb PCI-X"; |
809 | break; | 806 | break; |
810 | case PCI_DEVICE_ID_PFLY: | 807 | case PCI_DEVICE_ID_PFLY: |
811 | strcpy(str, "LP982 2"); | 808 | model_str = "LP982 2Gb PCI-X"; |
812 | break; | 809 | break; |
813 | case PCI_DEVICE_ID_TFLY: | 810 | case PCI_DEVICE_ID_TFLY: |
814 | if (hdrtype == 0x80) | 811 | if (hdrtype == 0x80) |
815 | strcpy(str, "LP1050DC 2"); | 812 | model_str = "LP1050DC 2Gb 2-port PCI-X"; |
816 | else | 813 | else |
817 | strcpy(str, "LP1050 2"); | 814 | model_str = "LP1050 2Gb PCI-X"; |
818 | break; | 815 | break; |
819 | case PCI_DEVICE_ID_HELIOS: | 816 | case PCI_DEVICE_ID_HELIOS: |
820 | if (hdrtype == 0x80) | 817 | if (hdrtype == 0x80) |
821 | strcpy(str, "LP11002 4"); | 818 | model_str = "LP11002 4Gb 2-port PCI-X2"; |
819 | else | ||
820 | model_str = "LP11000 4Gb PCI-X2"; | ||
821 | break; | ||
822 | case PCI_DEVICE_ID_HELIOS_SCSP: | ||
823 | model_str = "LP11000-SP 4Gb PCI-X2"; | ||
824 | break; | ||
825 | case PCI_DEVICE_ID_HELIOS_DCSP: | ||
826 | model_str = "LP11002-SP 4Gb 2-port PCI-X2"; | ||
827 | break; | ||
828 | case PCI_DEVICE_ID_NEPTUNE: | ||
829 | if (hdrtype == 0x80) | ||
830 | model_str = "LPe1002 4Gb 2-port"; | ||
822 | else | 831 | else |
823 | strcpy(str, "LP11000 4"); | 832 | model_str = "LPe1000 4Gb PCIe"; |
833 | break; | ||
834 | case PCI_DEVICE_ID_NEPTUNE_SCSP: | ||
835 | model_str = "LPe1000-SP 4Gb PCIe"; | ||
836 | break; | ||
837 | case PCI_DEVICE_ID_NEPTUNE_DCSP: | ||
838 | model_str = "LPe1002-SP 4Gb 2-port PCIe"; | ||
824 | break; | 839 | break; |
825 | case PCI_DEVICE_ID_BMID: | 840 | case PCI_DEVICE_ID_BMID: |
826 | strcpy(str, "LP1150 4"); | 841 | model_str = "LP1150 4Gb PCI-X2"; |
827 | break; | 842 | break; |
828 | case PCI_DEVICE_ID_BSMB: | 843 | case PCI_DEVICE_ID_BSMB: |
829 | strcpy(str, "LP111 4"); | 844 | model_str = "LP111 4Gb PCI-X2"; |
830 | break; | 845 | break; |
831 | case PCI_DEVICE_ID_ZEPHYR: | 846 | case PCI_DEVICE_ID_ZEPHYR: |
832 | if (hdrtype == 0x80) | 847 | if (hdrtype == 0x80) |
833 | strcpy(str, "LPe11002 4"); | 848 | model_str = "LPe11002 4Gb 2-port PCIe"; |
834 | else | 849 | else |
835 | strcpy(str, "LPe11000 4"); | 850 | model_str = "LPe11000 4Gb PCIe"; |
851 | break; | ||
852 | case PCI_DEVICE_ID_ZEPHYR_SCSP: | ||
853 | model_str = "LPe11000-SP 4Gb PCIe"; | ||
854 | break; | ||
855 | case PCI_DEVICE_ID_ZEPHYR_DCSP: | ||
856 | model_str = "LPe11002-SP 4Gb 2-port PCIe"; | ||
836 | break; | 857 | break; |
837 | case PCI_DEVICE_ID_ZMID: | 858 | case PCI_DEVICE_ID_ZMID: |
838 | strcpy(str, "LPe1150 4"); | 859 | model_str = "LPe1150 4Gb PCIe"; |
839 | break; | 860 | break; |
840 | case PCI_DEVICE_ID_ZSMB: | 861 | case PCI_DEVICE_ID_ZSMB: |
841 | strcpy(str, "LPe111 4"); | 862 | model_str = "LPe111 4Gb PCIe"; |
842 | break; | 863 | break; |
843 | case PCI_DEVICE_ID_LP101: | 864 | case PCI_DEVICE_ID_LP101: |
844 | strcpy(str, "LP101 2"); | 865 | model_str = "LP101 2Gb PCI-X"; |
845 | break; | 866 | break; |
846 | case PCI_DEVICE_ID_LP10000S: | 867 | case PCI_DEVICE_ID_LP10000S: |
847 | strcpy(str, "LP10000-S 2"); | 868 | model_str = "LP10000-S 2Gb PCI"; |
869 | break; | ||
870 | case PCI_DEVICE_ID_LP11000S: | ||
871 | case PCI_DEVICE_ID_LPE11000S: | ||
872 | switch (dev_subid) { | ||
873 | case PCI_SUBSYSTEM_ID_LP11000S: | ||
874 | model_str = "LP11002-S 4Gb PCI-X2"; | ||
875 | break; | ||
876 | case PCI_SUBSYSTEM_ID_LP11002S: | ||
877 | model_str = "LP11000-S 4Gb 2-port PCI-X2"; | ||
878 | break; | ||
879 | case PCI_SUBSYSTEM_ID_LPE11000S: | ||
880 | model_str = "LPe11002-S 4Gb PCIe"; | ||
881 | break; | ||
882 | case PCI_SUBSYSTEM_ID_LPE11002S: | ||
883 | model_str = "LPe11002-S 4Gb 2-port PCIe"; | ||
884 | break; | ||
885 | case PCI_SUBSYSTEM_ID_LPE11010S: | ||
886 | model_str = "LPe11010-S 4Gb 10-port PCIe"; | ||
887 | break; | ||
888 | default: | ||
889 | break; | ||
890 | } | ||
848 | break; | 891 | break; |
849 | default: | 892 | default: |
850 | memset(str, 0, 16); | ||
851 | break; | 893 | break; |
852 | } | 894 | } |
853 | if (mdp) | 895 | if (mdp) |
854 | sscanf(str, "%s", mdp); | 896 | sscanf(model_str, "%s", mdp); |
855 | if (descp) | 897 | if (descp) |
856 | sprintf(descp, "Emulex LightPulse %s Gigabit PCI Fibre " | 898 | sprintf(descp, "Emulex %s Fibre Channel Adapter", model_str); |
857 | "Channel Adapter", str); | ||
858 | } | 899 | } |
859 | 900 | ||
860 | /**************************************************/ | 901 | /**************************************************/ |
@@ -1196,6 +1237,7 @@ lpfc_stop_timer(struct lpfc_hba * phba) | |||
1196 | } | 1237 | } |
1197 | } | 1238 | } |
1198 | 1239 | ||
1240 | del_timer_sync(&phba->fcp_poll_timer); | ||
1199 | del_timer_sync(&phba->fc_estabtmo); | 1241 | del_timer_sync(&phba->fc_estabtmo); |
1200 | del_timer_sync(&phba->fc_disctmo); | 1242 | del_timer_sync(&phba->fc_disctmo); |
1201 | del_timer_sync(&phba->fc_fdmitmo); | 1243 | del_timer_sync(&phba->fc_fdmitmo); |
@@ -1351,7 +1393,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid) | |||
1351 | goto out_put_host; | 1393 | goto out_put_host; |
1352 | 1394 | ||
1353 | host->unique_id = phba->brd_no; | 1395 | host->unique_id = phba->brd_no; |
1354 | 1396 | init_MUTEX(&phba->hba_can_block); | |
1355 | INIT_LIST_HEAD(&phba->ctrspbuflist); | 1397 | INIT_LIST_HEAD(&phba->ctrspbuflist); |
1356 | INIT_LIST_HEAD(&phba->rnidrspbuflist); | 1398 | INIT_LIST_HEAD(&phba->rnidrspbuflist); |
1357 | INIT_LIST_HEAD(&phba->freebufList); | 1399 | INIT_LIST_HEAD(&phba->freebufList); |
@@ -1375,6 +1417,10 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid) | |||
1375 | psli->mbox_tmo.function = lpfc_mbox_timeout; | 1417 | psli->mbox_tmo.function = lpfc_mbox_timeout; |
1376 | psli->mbox_tmo.data = (unsigned long)phba; | 1418 | psli->mbox_tmo.data = (unsigned long)phba; |
1377 | 1419 | ||
1420 | init_timer(&phba->fcp_poll_timer); | ||
1421 | phba->fcp_poll_timer.function = lpfc_poll_timeout; | ||
1422 | phba->fcp_poll_timer.data = (unsigned long)phba; | ||
1423 | |||
1378 | /* | 1424 | /* |
1379 | * Get all the module params for configuring this host and then | 1425 | * Get all the module params for configuring this host and then |
1380 | * establish the host parameters. | 1426 | * establish the host parameters. |
@@ -1489,6 +1535,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid) | |||
1489 | host->max_cmd_len = 16; | 1535 | host->max_cmd_len = 16; |
1490 | 1536 | ||
1491 | /* Initialize the list of scsi buffers used by driver for scsi IO. */ | 1537 | /* Initialize the list of scsi buffers used by driver for scsi IO. */ |
1538 | spin_lock_init(&phba->scsi_buf_list_lock); | ||
1492 | INIT_LIST_HEAD(&phba->lpfc_scsi_buf_list); | 1539 | INIT_LIST_HEAD(&phba->lpfc_scsi_buf_list); |
1493 | 1540 | ||
1494 | host->transportt = lpfc_transport_template; | 1541 | host->transportt = lpfc_transport_template; |
@@ -1520,6 +1567,12 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid) | |||
1520 | if (error) | 1567 | if (error) |
1521 | goto out_free_irq; | 1568 | goto out_free_irq; |
1522 | 1569 | ||
1570 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) { | ||
1571 | spin_lock_irq(phba->host->host_lock); | ||
1572 | lpfc_poll_start_timer(phba); | ||
1573 | spin_unlock_irq(phba->host->host_lock); | ||
1574 | } | ||
1575 | |||
1523 | /* | 1576 | /* |
1524 | * set fixed host attributes | 1577 | * set fixed host attributes |
1525 | * Must done after lpfc_sli_hba_setup() | 1578 | * Must done after lpfc_sli_hba_setup() |
@@ -1679,14 +1732,28 @@ static struct pci_device_id lpfc_id_table[] = { | |||
1679 | PCI_ANY_ID, PCI_ANY_ID, }, | 1732 | PCI_ANY_ID, PCI_ANY_ID, }, |
1680 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY, | 1733 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY, |
1681 | PCI_ANY_ID, PCI_ANY_ID, }, | 1734 | PCI_ANY_ID, PCI_ANY_ID, }, |
1735 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE, | ||
1736 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1737 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_SCSP, | ||
1738 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1739 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_DCSP, | ||
1740 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1682 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS, | 1741 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS, |
1683 | PCI_ANY_ID, PCI_ANY_ID, }, | 1742 | PCI_ANY_ID, PCI_ANY_ID, }, |
1743 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_SCSP, | ||
1744 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1745 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP, | ||
1746 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1684 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID, | 1747 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID, |
1685 | PCI_ANY_ID, PCI_ANY_ID, }, | 1748 | PCI_ANY_ID, PCI_ANY_ID, }, |
1686 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB, | 1749 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB, |
1687 | PCI_ANY_ID, PCI_ANY_ID, }, | 1750 | PCI_ANY_ID, PCI_ANY_ID, }, |
1688 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR, | 1751 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR, |
1689 | PCI_ANY_ID, PCI_ANY_ID, }, | 1752 | PCI_ANY_ID, PCI_ANY_ID, }, |
1753 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP, | ||
1754 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1755 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_DCSP, | ||
1756 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1690 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID, | 1757 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID, |
1691 | PCI_ANY_ID, PCI_ANY_ID, }, | 1758 | PCI_ANY_ID, PCI_ANY_ID, }, |
1692 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB, | 1759 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB, |
@@ -1697,6 +1764,10 @@ static struct pci_device_id lpfc_id_table[] = { | |||
1697 | PCI_ANY_ID, PCI_ANY_ID, }, | 1764 | PCI_ANY_ID, PCI_ANY_ID, }, |
1698 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S, | 1765 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S, |
1699 | PCI_ANY_ID, PCI_ANY_ID, }, | 1766 | PCI_ANY_ID, PCI_ANY_ID, }, |
1767 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP11000S, | ||
1768 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1769 | {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S, | ||
1770 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
1700 | { 0 } | 1771 | { 0 } |
1701 | }; | 1772 | }; |
1702 | 1773 | ||
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c index 507a6af56f42..fbead786031f 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c | |||
@@ -55,55 +55,76 @@ lpfc_check_adisc(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp, | |||
55 | return (1); | 55 | return (1); |
56 | } | 56 | } |
57 | 57 | ||
58 | |||
59 | int | 58 | int |
60 | lpfc_check_sparm(struct lpfc_hba * phba, | 59 | lpfc_check_sparm(struct lpfc_hba * phba, |
61 | struct lpfc_nodelist * ndlp, struct serv_parm * sp, | 60 | struct lpfc_nodelist * ndlp, struct serv_parm * sp, |
62 | uint32_t class) | 61 | uint32_t class) |
63 | { | 62 | { |
64 | volatile struct serv_parm *hsp = &phba->fc_sparam; | 63 | volatile struct serv_parm *hsp = &phba->fc_sparam; |
65 | /* First check for supported version */ | 64 | uint16_t hsp_value, ssp_value = 0; |
66 | 65 | ||
67 | /* Next check for class validity */ | 66 | /* |
67 | * The receive data field size and buffer-to-buffer receive data field | ||
68 | * size entries are 16 bits but are represented as two 8-bit fields in | ||
69 | * the driver data structure to account for rsvd bits and other control | ||
70 | * bits. Reconstruct and compare the fields as a 16-bit values before | ||
71 | * correcting the byte values. | ||
72 | */ | ||
68 | if (sp->cls1.classValid) { | 73 | if (sp->cls1.classValid) { |
69 | 74 | hsp_value = (hsp->cls1.rcvDataSizeMsb << 8) | | |
70 | if (sp->cls1.rcvDataSizeMsb > hsp->cls1.rcvDataSizeMsb) | 75 | hsp->cls1.rcvDataSizeLsb; |
71 | sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb; | 76 | ssp_value = (sp->cls1.rcvDataSizeMsb << 8) | |
72 | if (sp->cls1.rcvDataSizeLsb > hsp->cls1.rcvDataSizeLsb) | 77 | sp->cls1.rcvDataSizeLsb; |
78 | if (ssp_value > hsp_value) { | ||
73 | sp->cls1.rcvDataSizeLsb = hsp->cls1.rcvDataSizeLsb; | 79 | sp->cls1.rcvDataSizeLsb = hsp->cls1.rcvDataSizeLsb; |
80 | sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb; | ||
81 | } | ||
74 | } else if (class == CLASS1) { | 82 | } else if (class == CLASS1) { |
75 | return (0); | 83 | return 0; |
76 | } | 84 | } |
77 | 85 | ||
78 | if (sp->cls2.classValid) { | 86 | if (sp->cls2.classValid) { |
79 | 87 | hsp_value = (hsp->cls2.rcvDataSizeMsb << 8) | | |
80 | if (sp->cls2.rcvDataSizeMsb > hsp->cls2.rcvDataSizeMsb) | 88 | hsp->cls2.rcvDataSizeLsb; |
81 | sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb; | 89 | ssp_value = (sp->cls2.rcvDataSizeMsb << 8) | |
82 | if (sp->cls2.rcvDataSizeLsb > hsp->cls2.rcvDataSizeLsb) | 90 | sp->cls2.rcvDataSizeLsb; |
91 | if (ssp_value > hsp_value) { | ||
83 | sp->cls2.rcvDataSizeLsb = hsp->cls2.rcvDataSizeLsb; | 92 | sp->cls2.rcvDataSizeLsb = hsp->cls2.rcvDataSizeLsb; |
93 | sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb; | ||
94 | } | ||
84 | } else if (class == CLASS2) { | 95 | } else if (class == CLASS2) { |
85 | return (0); | 96 | return 0; |
86 | } | 97 | } |
87 | 98 | ||
88 | if (sp->cls3.classValid) { | 99 | if (sp->cls3.classValid) { |
89 | 100 | hsp_value = (hsp->cls3.rcvDataSizeMsb << 8) | | |
90 | if (sp->cls3.rcvDataSizeMsb > hsp->cls3.rcvDataSizeMsb) | 101 | hsp->cls3.rcvDataSizeLsb; |
91 | sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb; | 102 | ssp_value = (sp->cls3.rcvDataSizeMsb << 8) | |
92 | if (sp->cls3.rcvDataSizeLsb > hsp->cls3.rcvDataSizeLsb) | 103 | sp->cls3.rcvDataSizeLsb; |
104 | if (ssp_value > hsp_value) { | ||
93 | sp->cls3.rcvDataSizeLsb = hsp->cls3.rcvDataSizeLsb; | 105 | sp->cls3.rcvDataSizeLsb = hsp->cls3.rcvDataSizeLsb; |
106 | sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb; | ||
107 | } | ||
94 | } else if (class == CLASS3) { | 108 | } else if (class == CLASS3) { |
95 | return (0); | 109 | return 0; |
96 | } | 110 | } |
97 | 111 | ||
98 | if (sp->cmn.bbRcvSizeMsb > hsp->cmn.bbRcvSizeMsb) | 112 | /* |
99 | sp->cmn.bbRcvSizeMsb = hsp->cmn.bbRcvSizeMsb; | 113 | * Preserve the upper four bits of the MSB from the PLOGI response. |
100 | if (sp->cmn.bbRcvSizeLsb > hsp->cmn.bbRcvSizeLsb) | 114 | * These bits contain the Buffer-to-Buffer State Change Number |
115 | * from the target and need to be passed to the FW. | ||
116 | */ | ||
117 | hsp_value = (hsp->cmn.bbRcvSizeMsb << 8) | hsp->cmn.bbRcvSizeLsb; | ||
118 | ssp_value = (sp->cmn.bbRcvSizeMsb << 8) | sp->cmn.bbRcvSizeLsb; | ||
119 | if (ssp_value > hsp_value) { | ||
101 | sp->cmn.bbRcvSizeLsb = hsp->cmn.bbRcvSizeLsb; | 120 | sp->cmn.bbRcvSizeLsb = hsp->cmn.bbRcvSizeLsb; |
121 | sp->cmn.bbRcvSizeMsb = (sp->cmn.bbRcvSizeMsb & 0xF0) | | ||
122 | (hsp->cmn.bbRcvSizeMsb & 0x0F); | ||
123 | } | ||
102 | 124 | ||
103 | /* If check is good, copy wwpn wwnn into ndlp */ | ||
104 | memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name)); | 125 | memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name)); |
105 | memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name)); | 126 | memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name)); |
106 | return (1); | 127 | return 1; |
107 | } | 128 | } |
108 | 129 | ||
109 | static void * | 130 | static void * |
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index c63275e66e2e..dafabeefc5b3 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
@@ -41,6 +41,20 @@ | |||
41 | #define LPFC_ABORT_WAIT 2 | 41 | #define LPFC_ABORT_WAIT 2 |
42 | 42 | ||
43 | 43 | ||
44 | static inline void | ||
45 | lpfc_block_requests(struct lpfc_hba * phba) | ||
46 | { | ||
47 | down(&phba->hba_can_block); | ||
48 | scsi_block_requests(phba->host); | ||
49 | } | ||
50 | |||
51 | static inline void | ||
52 | lpfc_unblock_requests(struct lpfc_hba * phba) | ||
53 | { | ||
54 | scsi_unblock_requests(phba->host); | ||
55 | up(&phba->hba_can_block); | ||
56 | } | ||
57 | |||
44 | /* | 58 | /* |
45 | * This routine allocates a scsi buffer, which contains all the necessary | 59 | * This routine allocates a scsi buffer, which contains all the necessary |
46 | * information needed to initiate a SCSI I/O. The non-DMAable buffer region | 60 | * information needed to initiate a SCSI I/O. The non-DMAable buffer region |
@@ -136,19 +150,23 @@ lpfc_new_scsi_buf(struct lpfc_hba * phba) | |||
136 | return psb; | 150 | return psb; |
137 | } | 151 | } |
138 | 152 | ||
139 | struct lpfc_scsi_buf* | 153 | static struct lpfc_scsi_buf* |
140 | lpfc_sli_get_scsi_buf(struct lpfc_hba * phba) | 154 | lpfc_get_scsi_buf(struct lpfc_hba * phba) |
141 | { | 155 | { |
142 | struct lpfc_scsi_buf * lpfc_cmd = NULL; | 156 | struct lpfc_scsi_buf * lpfc_cmd = NULL; |
143 | struct list_head *scsi_buf_list = &phba->lpfc_scsi_buf_list; | 157 | struct list_head *scsi_buf_list = &phba->lpfc_scsi_buf_list; |
158 | unsigned long iflag = 0; | ||
144 | 159 | ||
160 | spin_lock_irqsave(&phba->scsi_buf_list_lock, iflag); | ||
145 | list_remove_head(scsi_buf_list, lpfc_cmd, struct lpfc_scsi_buf, list); | 161 | list_remove_head(scsi_buf_list, lpfc_cmd, struct lpfc_scsi_buf, list); |
162 | spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag); | ||
146 | return lpfc_cmd; | 163 | return lpfc_cmd; |
147 | } | 164 | } |
148 | 165 | ||
149 | static void | 166 | static void |
150 | lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb) | 167 | lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb) |
151 | { | 168 | { |
169 | unsigned long iflag = 0; | ||
152 | /* | 170 | /* |
153 | * There are only two special cases to consider. (1) the scsi command | 171 | * There are only two special cases to consider. (1) the scsi command |
154 | * requested scatter-gather usage or (2) the scsi command allocated | 172 | * requested scatter-gather usage or (2) the scsi command allocated |
@@ -166,8 +184,10 @@ lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb) | |||
166 | } | 184 | } |
167 | } | 185 | } |
168 | 186 | ||
187 | spin_lock_irqsave(&phba->scsi_buf_list_lock, iflag); | ||
169 | psb->pCmd = NULL; | 188 | psb->pCmd = NULL; |
170 | list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list); | 189 | list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list); |
190 | spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag); | ||
171 | } | 191 | } |
172 | 192 | ||
173 | static int | 193 | static int |
@@ -389,7 +409,9 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, | |||
389 | struct lpfc_rport_data *rdata = lpfc_cmd->rdata; | 409 | struct lpfc_rport_data *rdata = lpfc_cmd->rdata; |
390 | struct lpfc_nodelist *pnode = rdata->pnode; | 410 | struct lpfc_nodelist *pnode = rdata->pnode; |
391 | struct scsi_cmnd *cmd = lpfc_cmd->pCmd; | 411 | struct scsi_cmnd *cmd = lpfc_cmd->pCmd; |
392 | unsigned long iflag; | 412 | int result; |
413 | struct scsi_device *sdev, *tmp_sdev; | ||
414 | int depth = 0; | ||
393 | 415 | ||
394 | lpfc_cmd->result = pIocbOut->iocb.un.ulpWord[4]; | 416 | lpfc_cmd->result = pIocbOut->iocb.un.ulpWord[4]; |
395 | lpfc_cmd->status = pIocbOut->iocb.ulpStatus; | 417 | lpfc_cmd->status = pIocbOut->iocb.ulpStatus; |
@@ -441,11 +463,64 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, | |||
441 | *lp, *(lp + 3), cmd->retries, cmd->resid); | 463 | *lp, *(lp + 3), cmd->retries, cmd->resid); |
442 | } | 464 | } |
443 | 465 | ||
466 | result = cmd->result; | ||
467 | sdev = cmd->device; | ||
444 | cmd->scsi_done(cmd); | 468 | cmd->scsi_done(cmd); |
445 | 469 | ||
446 | spin_lock_irqsave(phba->host->host_lock, iflag); | 470 | if (!result && |
471 | ((jiffies - pnode->last_ramp_up_time) > | ||
472 | LPFC_Q_RAMP_UP_INTERVAL * HZ) && | ||
473 | ((jiffies - pnode->last_q_full_time) > | ||
474 | LPFC_Q_RAMP_UP_INTERVAL * HZ) && | ||
475 | (phba->cfg_lun_queue_depth > sdev->queue_depth)) { | ||
476 | shost_for_each_device(tmp_sdev, sdev->host) { | ||
477 | if (phba->cfg_lun_queue_depth > tmp_sdev->queue_depth) { | ||
478 | if (tmp_sdev->id != sdev->id) | ||
479 | continue; | ||
480 | if (tmp_sdev->ordered_tags) | ||
481 | scsi_adjust_queue_depth(tmp_sdev, | ||
482 | MSG_ORDERED_TAG, | ||
483 | tmp_sdev->queue_depth+1); | ||
484 | else | ||
485 | scsi_adjust_queue_depth(tmp_sdev, | ||
486 | MSG_SIMPLE_TAG, | ||
487 | tmp_sdev->queue_depth+1); | ||
488 | |||
489 | pnode->last_ramp_up_time = jiffies; | ||
490 | } | ||
491 | } | ||
492 | } | ||
493 | |||
494 | /* | ||
495 | * Check for queue full. If the lun is reporting queue full, then | ||
496 | * back off the lun queue depth to prevent target overloads. | ||
497 | */ | ||
498 | if (result == SAM_STAT_TASK_SET_FULL) { | ||
499 | pnode->last_q_full_time = jiffies; | ||
500 | |||
501 | shost_for_each_device(tmp_sdev, sdev->host) { | ||
502 | if (tmp_sdev->id != sdev->id) | ||
503 | continue; | ||
504 | depth = scsi_track_queue_full(tmp_sdev, | ||
505 | tmp_sdev->queue_depth - 1); | ||
506 | } | ||
507 | /* | ||
508 | * The queue depth cannot be lowered any more. | ||
509 | * Modify the returned error code to store | ||
510 | * the final depth value set by | ||
511 | * scsi_track_queue_full. | ||
512 | */ | ||
513 | if (depth == -1) | ||
514 | depth = sdev->host->cmd_per_lun; | ||
515 | |||
516 | if (depth) { | ||
517 | lpfc_printf_log(phba, KERN_WARNING, LOG_FCP, | ||
518 | "%d:0711 detected queue full - lun queue depth " | ||
519 | " adjusted to %d.\n", phba->brd_no, depth); | ||
520 | } | ||
521 | } | ||
522 | |||
447 | lpfc_release_scsi_buf(phba, lpfc_cmd); | 523 | lpfc_release_scsi_buf(phba, lpfc_cmd); |
448 | spin_unlock_irqrestore(phba->host->host_lock, iflag); | ||
449 | } | 524 | } |
450 | 525 | ||
451 | static void | 526 | static void |
@@ -693,6 +768,37 @@ lpfc_info(struct Scsi_Host *host) | |||
693 | return lpfcinfobuf; | 768 | return lpfcinfobuf; |
694 | } | 769 | } |
695 | 770 | ||
771 | static __inline__ void lpfc_poll_rearm_timer(struct lpfc_hba * phba) | ||
772 | { | ||
773 | unsigned long poll_tmo_expires = | ||
774 | (jiffies + msecs_to_jiffies(phba->cfg_poll_tmo)); | ||
775 | |||
776 | if (phba->sli.ring[LPFC_FCP_RING].txcmplq_cnt) | ||
777 | mod_timer(&phba->fcp_poll_timer, | ||
778 | poll_tmo_expires); | ||
779 | } | ||
780 | |||
781 | void lpfc_poll_start_timer(struct lpfc_hba * phba) | ||
782 | { | ||
783 | lpfc_poll_rearm_timer(phba); | ||
784 | } | ||
785 | |||
786 | void lpfc_poll_timeout(unsigned long ptr) | ||
787 | { | ||
788 | struct lpfc_hba *phba = (struct lpfc_hba *)ptr; | ||
789 | unsigned long iflag; | ||
790 | |||
791 | spin_lock_irqsave(phba->host->host_lock, iflag); | ||
792 | |||
793 | if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) { | ||
794 | lpfc_sli_poll_fcp_ring (phba); | ||
795 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) | ||
796 | lpfc_poll_rearm_timer(phba); | ||
797 | } | ||
798 | |||
799 | spin_unlock_irqrestore(phba->host->host_lock, iflag); | ||
800 | } | ||
801 | |||
696 | static int | 802 | static int |
697 | lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) | 803 | lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) |
698 | { | 804 | { |
@@ -719,10 +825,11 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) | |||
719 | cmnd->result = ScsiResult(DID_BUS_BUSY, 0); | 825 | cmnd->result = ScsiResult(DID_BUS_BUSY, 0); |
720 | goto out_fail_command; | 826 | goto out_fail_command; |
721 | } | 827 | } |
722 | lpfc_cmd = lpfc_sli_get_scsi_buf (phba); | 828 | lpfc_cmd = lpfc_get_scsi_buf (phba); |
723 | if (lpfc_cmd == NULL) { | 829 | if (lpfc_cmd == NULL) { |
724 | printk(KERN_WARNING "%s: No buffer available - list empty, " | 830 | lpfc_printf_log(phba, KERN_INFO, LOG_FCP, |
725 | "total count %d\n", __FUNCTION__, phba->total_scsi_bufs); | 831 | "%d:0707 driver's buffer pool is empty, " |
832 | "IO busied\n", phba->brd_no); | ||
726 | goto out_host_busy; | 833 | goto out_host_busy; |
727 | } | 834 | } |
728 | 835 | ||
@@ -746,11 +853,17 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) | |||
746 | &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB); | 853 | &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB); |
747 | if (err) | 854 | if (err) |
748 | goto out_host_busy_free_buf; | 855 | goto out_host_busy_free_buf; |
856 | |||
857 | if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) { | ||
858 | lpfc_sli_poll_fcp_ring(phba); | ||
859 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) | ||
860 | lpfc_poll_rearm_timer(phba); | ||
861 | } | ||
862 | |||
749 | return 0; | 863 | return 0; |
750 | 864 | ||
751 | out_host_busy_free_buf: | 865 | out_host_busy_free_buf: |
752 | lpfc_release_scsi_buf(phba, lpfc_cmd); | 866 | lpfc_release_scsi_buf(phba, lpfc_cmd); |
753 | cmnd->host_scribble = NULL; | ||
754 | out_host_busy: | 867 | out_host_busy: |
755 | return SCSI_MLQUEUE_HOST_BUSY; | 868 | return SCSI_MLQUEUE_HOST_BUSY; |
756 | 869 | ||
@@ -759,11 +872,12 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) | |||
759 | return 0; | 872 | return 0; |
760 | } | 873 | } |
761 | 874 | ||
875 | |||
762 | static int | 876 | static int |
763 | __lpfc_abort_handler(struct scsi_cmnd *cmnd) | 877 | lpfc_abort_handler(struct scsi_cmnd *cmnd) |
764 | { | 878 | { |
765 | struct lpfc_hba *phba = | 879 | struct Scsi_Host *shost = cmnd->device->host; |
766 | (struct lpfc_hba *)cmnd->device->host->hostdata[0]; | 880 | struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; |
767 | struct lpfc_sli_ring *pring = &phba->sli.ring[phba->sli.fcp_ring]; | 881 | struct lpfc_sli_ring *pring = &phba->sli.ring[phba->sli.fcp_ring]; |
768 | struct lpfc_iocbq *iocb; | 882 | struct lpfc_iocbq *iocb; |
769 | struct lpfc_iocbq *abtsiocb; | 883 | struct lpfc_iocbq *abtsiocb; |
@@ -772,6 +886,8 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd) | |||
772 | unsigned int loop_count = 0; | 886 | unsigned int loop_count = 0; |
773 | int ret = SUCCESS; | 887 | int ret = SUCCESS; |
774 | 888 | ||
889 | lpfc_block_requests(phba); | ||
890 | spin_lock_irq(shost->host_lock); | ||
775 | 891 | ||
776 | lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble; | 892 | lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble; |
777 | BUG_ON(!lpfc_cmd); | 893 | BUG_ON(!lpfc_cmd); |
@@ -821,9 +937,15 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd) | |||
821 | goto out; | 937 | goto out; |
822 | } | 938 | } |
823 | 939 | ||
940 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) | ||
941 | lpfc_sli_poll_fcp_ring (phba); | ||
942 | |||
824 | /* Wait for abort to complete */ | 943 | /* Wait for abort to complete */ |
825 | while (lpfc_cmd->pCmd == cmnd) | 944 | while (lpfc_cmd->pCmd == cmnd) |
826 | { | 945 | { |
946 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) | ||
947 | lpfc_sli_poll_fcp_ring (phba); | ||
948 | |||
827 | spin_unlock_irq(phba->host->host_lock); | 949 | spin_unlock_irq(phba->host->host_lock); |
828 | schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ); | 950 | schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ); |
829 | spin_lock_irq(phba->host->host_lock); | 951 | spin_lock_irq(phba->host->host_lock); |
@@ -844,26 +966,19 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd) | |||
844 | 966 | ||
845 | out: | 967 | out: |
846 | lpfc_printf_log(phba, KERN_WARNING, LOG_FCP, | 968 | lpfc_printf_log(phba, KERN_WARNING, LOG_FCP, |
847 | "%d:0749 SCSI layer issued abort device: ret %#x, " | 969 | "%d:0749 SCSI Layer I/O Abort Request " |
848 | "ID %d, LUN %d, snum %#lx\n", | 970 | "Status x%x ID %d LUN %d snum %#lx\n", |
849 | phba->brd_no, ret, cmnd->device->id, | 971 | phba->brd_no, ret, cmnd->device->id, |
850 | cmnd->device->lun, cmnd->serial_number); | 972 | cmnd->device->lun, cmnd->serial_number); |
851 | 973 | ||
852 | return ret; | 974 | spin_unlock_irq(shost->host_lock); |
853 | } | 975 | lpfc_unblock_requests(phba); |
854 | 976 | ||
855 | static int | 977 | return ret; |
856 | lpfc_abort_handler(struct scsi_cmnd *cmnd) | ||
857 | { | ||
858 | int rc; | ||
859 | spin_lock_irq(cmnd->device->host->host_lock); | ||
860 | rc = __lpfc_abort_handler(cmnd); | ||
861 | spin_unlock_irq(cmnd->device->host->host_lock); | ||
862 | return rc; | ||
863 | } | 978 | } |
864 | 979 | ||
865 | static int | 980 | static int |
866 | __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | 981 | lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) |
867 | { | 982 | { |
868 | struct Scsi_Host *shost = cmnd->device->host; | 983 | struct Scsi_Host *shost = cmnd->device->host; |
869 | struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; | 984 | struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; |
@@ -871,9 +986,12 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | |||
871 | struct lpfc_iocbq *iocbq, *iocbqrsp; | 986 | struct lpfc_iocbq *iocbq, *iocbqrsp; |
872 | struct lpfc_rport_data *rdata = cmnd->device->hostdata; | 987 | struct lpfc_rport_data *rdata = cmnd->device->hostdata; |
873 | struct lpfc_nodelist *pnode = rdata->pnode; | 988 | struct lpfc_nodelist *pnode = rdata->pnode; |
989 | uint32_t cmd_result = 0, cmd_status = 0; | ||
874 | int ret = FAILED; | 990 | int ret = FAILED; |
875 | int cnt, loopcnt; | 991 | int cnt, loopcnt; |
876 | 992 | ||
993 | lpfc_block_requests(phba); | ||
994 | spin_lock_irq(shost->host_lock); | ||
877 | /* | 995 | /* |
878 | * If target is not in a MAPPED state, delay the reset until | 996 | * If target is not in a MAPPED state, delay the reset until |
879 | * target is rediscovered or nodev timeout expires. | 997 | * target is rediscovered or nodev timeout expires. |
@@ -891,7 +1009,7 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | |||
891 | break; | 1009 | break; |
892 | } | 1010 | } |
893 | 1011 | ||
894 | lpfc_cmd = lpfc_sli_get_scsi_buf (phba); | 1012 | lpfc_cmd = lpfc_get_scsi_buf (phba); |
895 | if (lpfc_cmd == NULL) | 1013 | if (lpfc_cmd == NULL) |
896 | goto out; | 1014 | goto out; |
897 | 1015 | ||
@@ -916,26 +1034,28 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | |||
916 | if (ret == IOCB_SUCCESS) | 1034 | if (ret == IOCB_SUCCESS) |
917 | ret = SUCCESS; | 1035 | ret = SUCCESS; |
918 | 1036 | ||
919 | lpfc_cmd->result = iocbqrsp->iocb.un.ulpWord[4]; | 1037 | |
920 | lpfc_cmd->status = iocbqrsp->iocb.ulpStatus; | 1038 | cmd_result = iocbqrsp->iocb.un.ulpWord[4]; |
921 | if (lpfc_cmd->status == IOSTAT_LOCAL_REJECT) | 1039 | cmd_status = iocbqrsp->iocb.ulpStatus; |
922 | if (lpfc_cmd->result & IOERR_DRVR_MASK) | 1040 | |
923 | lpfc_cmd->status = IOSTAT_DRIVER_REJECT; | 1041 | lpfc_sli_release_iocbq(phba, iocbqrsp); |
1042 | lpfc_release_scsi_buf(phba, lpfc_cmd); | ||
924 | 1043 | ||
925 | /* | 1044 | /* |
926 | * All outstanding txcmplq I/Os should have been aborted by the target. | 1045 | * All outstanding txcmplq I/Os should have been aborted by the device. |
927 | * Unfortunately, some targets do not abide by this forcing the driver | 1046 | * Unfortunately, some targets do not abide by this forcing the driver |
928 | * to double check. | 1047 | * to double check. |
929 | */ | 1048 | */ |
930 | lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], | 1049 | cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], |
931 | cmnd->device->id, cmnd->device->lun, 0, | 1050 | cmnd->device->id, cmnd->device->lun, |
932 | LPFC_CTX_LUN); | 1051 | LPFC_CTX_LUN); |
933 | 1052 | if (cnt) | |
1053 | lpfc_sli_abort_iocb(phba, | ||
1054 | &phba->sli.ring[phba->sli.fcp_ring], | ||
1055 | cmnd->device->id, cmnd->device->lun, | ||
1056 | 0, LPFC_CTX_LUN); | ||
934 | loopcnt = 0; | 1057 | loopcnt = 0; |
935 | while((cnt = lpfc_sli_sum_iocb(phba, | 1058 | while(cnt) { |
936 | &phba->sli.ring[phba->sli.fcp_ring], | ||
937 | cmnd->device->id, cmnd->device->lun, | ||
938 | LPFC_CTX_LUN))) { | ||
939 | spin_unlock_irq(phba->host->host_lock); | 1059 | spin_unlock_irq(phba->host->host_lock); |
940 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); | 1060 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); |
941 | spin_lock_irq(phba->host->host_lock); | 1061 | spin_lock_irq(phba->host->host_lock); |
@@ -943,6 +1063,11 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | |||
943 | if (++loopcnt | 1063 | if (++loopcnt |
944 | > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT) | 1064 | > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT) |
945 | break; | 1065 | break; |
1066 | |||
1067 | cnt = lpfc_sli_sum_iocb(phba, | ||
1068 | &phba->sli.ring[phba->sli.fcp_ring], | ||
1069 | cmnd->device->id, cmnd->device->lun, | ||
1070 | LPFC_CTX_LUN); | ||
946 | } | 1071 | } |
947 | 1072 | ||
948 | if (cnt) { | 1073 | if (cnt) { |
@@ -952,35 +1077,21 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | |||
952 | ret = FAILED; | 1077 | ret = FAILED; |
953 | } | 1078 | } |
954 | 1079 | ||
955 | lpfc_sli_release_iocbq(phba, iocbqrsp); | ||
956 | |||
957 | out_free_scsi_buf: | 1080 | out_free_scsi_buf: |
958 | lpfc_printf_log(phba, KERN_ERR, LOG_FCP, | 1081 | lpfc_printf_log(phba, KERN_ERR, LOG_FCP, |
959 | "%d:0713 SCSI layer issued LUN reset (%d, %d) " | 1082 | "%d:0713 SCSI layer issued LUN reset (%d, %d) " |
960 | "Data: x%x x%x x%x\n", | 1083 | "Data: x%x x%x x%x\n", |
961 | phba->brd_no, lpfc_cmd->pCmd->device->id, | 1084 | phba->brd_no, cmnd->device->id,cmnd->device->lun, |
962 | lpfc_cmd->pCmd->device->lun, ret, lpfc_cmd->status, | 1085 | ret, cmd_status, cmd_result); |
963 | lpfc_cmd->result); | 1086 | |
964 | lpfc_release_scsi_buf(phba, lpfc_cmd); | ||
965 | out: | 1087 | out: |
1088 | spin_unlock_irq(shost->host_lock); | ||
1089 | lpfc_unblock_requests(phba); | ||
966 | return ret; | 1090 | return ret; |
967 | } | 1091 | } |
968 | 1092 | ||
969 | static int | 1093 | static int |
970 | lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) | 1094 | lpfc_reset_bus_handler(struct scsi_cmnd *cmnd) |
971 | { | ||
972 | int rc; | ||
973 | spin_lock_irq(cmnd->device->host->host_lock); | ||
974 | rc = __lpfc_reset_lun_handler(cmnd); | ||
975 | spin_unlock_irq(cmnd->device->host->host_lock); | ||
976 | return rc; | ||
977 | } | ||
978 | |||
979 | /* | ||
980 | * Note: midlayer calls this function with the host_lock held | ||
981 | */ | ||
982 | static int | ||
983 | __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd) | ||
984 | { | 1095 | { |
985 | struct Scsi_Host *shost = cmnd->device->host; | 1096 | struct Scsi_Host *shost = cmnd->device->host; |
986 | struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; | 1097 | struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; |
@@ -991,7 +1102,10 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd) | |||
991 | unsigned int midlayer_id = 0; | 1102 | unsigned int midlayer_id = 0; |
992 | struct lpfc_scsi_buf * lpfc_cmd; | 1103 | struct lpfc_scsi_buf * lpfc_cmd; |
993 | 1104 | ||
994 | lpfc_cmd = lpfc_sli_get_scsi_buf (phba); | 1105 | lpfc_block_requests(phba); |
1106 | spin_lock_irq(shost->host_lock); | ||
1107 | |||
1108 | lpfc_cmd = lpfc_get_scsi_buf(phba); | ||
995 | if (lpfc_cmd == NULL) | 1109 | if (lpfc_cmd == NULL) |
996 | goto out; | 1110 | goto out; |
997 | 1111 | ||
@@ -1022,18 +1136,31 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd) | |||
1022 | lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data; | 1136 | lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data; |
1023 | ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba); | 1137 | ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba); |
1024 | if (ret != SUCCESS) { | 1138 | if (ret != SUCCESS) { |
1025 | lpfc_printf_log(phba, KERN_INFO, LOG_FCP, | 1139 | lpfc_printf_log(phba, KERN_ERR, LOG_FCP, |
1026 | "%d:0713 Bus Reset on target %d failed\n", | 1140 | "%d:0713 Bus Reset on target %d failed\n", |
1027 | phba->brd_no, i); | 1141 | phba->brd_no, i); |
1028 | err_count++; | 1142 | err_count++; |
1029 | } | 1143 | } |
1030 | } | 1144 | } |
1031 | 1145 | ||
1146 | if (err_count == 0) | ||
1147 | ret = SUCCESS; | ||
1148 | |||
1149 | lpfc_release_scsi_buf(phba, lpfc_cmd); | ||
1150 | |||
1151 | /* | ||
1152 | * All outstanding txcmplq I/Os should have been aborted by | ||
1153 | * the targets. Unfortunately, some targets do not abide by | ||
1154 | * this forcing the driver to double check. | ||
1155 | */ | ||
1032 | cmnd->device->id = midlayer_id; | 1156 | cmnd->device->id = midlayer_id; |
1157 | cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], | ||
1158 | 0, 0, LPFC_CTX_HOST); | ||
1159 | if (cnt) | ||
1160 | lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], | ||
1161 | 0, 0, 0, LPFC_CTX_HOST); | ||
1033 | loopcnt = 0; | 1162 | loopcnt = 0; |
1034 | while((cnt = lpfc_sli_sum_iocb(phba, | 1163 | while(cnt) { |
1035 | &phba->sli.ring[phba->sli.fcp_ring], | ||
1036 | 0, 0, LPFC_CTX_HOST))) { | ||
1037 | spin_unlock_irq(phba->host->host_lock); | 1164 | spin_unlock_irq(phba->host->host_lock); |
1038 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); | 1165 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); |
1039 | spin_lock_irq(phba->host->host_lock); | 1166 | spin_lock_irq(phba->host->host_lock); |
@@ -1041,45 +1168,31 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd) | |||
1041 | if (++loopcnt | 1168 | if (++loopcnt |
1042 | > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT) | 1169 | > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT) |
1043 | break; | 1170 | break; |
1171 | |||
1172 | cnt = lpfc_sli_sum_iocb(phba, | ||
1173 | &phba->sli.ring[phba->sli.fcp_ring], | ||
1174 | 0, 0, LPFC_CTX_HOST); | ||
1044 | } | 1175 | } |
1045 | 1176 | ||
1046 | if (cnt) { | 1177 | if (cnt) { |
1047 | /* flush all outstanding commands on the host */ | 1178 | lpfc_printf_log(phba, KERN_ERR, LOG_FCP, |
1048 | i = lpfc_sli_abort_iocb(phba, | ||
1049 | &phba->sli.ring[phba->sli.fcp_ring], 0, 0, 0, | ||
1050 | LPFC_CTX_HOST); | ||
1051 | |||
1052 | lpfc_printf_log(phba, KERN_INFO, LOG_FCP, | ||
1053 | "%d:0715 Bus Reset I/O flush failure: cnt x%x left x%x\n", | 1179 | "%d:0715 Bus Reset I/O flush failure: cnt x%x left x%x\n", |
1054 | phba->brd_no, cnt, i); | 1180 | phba->brd_no, cnt, i); |
1055 | } | ||
1056 | |||
1057 | if (cnt == 0) | ||
1058 | ret = SUCCESS; | ||
1059 | else | ||
1060 | ret = FAILED; | 1181 | ret = FAILED; |
1182 | } | ||
1061 | 1183 | ||
1062 | lpfc_release_scsi_buf(phba, lpfc_cmd); | ||
1063 | lpfc_printf_log(phba, | 1184 | lpfc_printf_log(phba, |
1064 | KERN_ERR, | 1185 | KERN_ERR, |
1065 | LOG_FCP, | 1186 | LOG_FCP, |
1066 | "%d:0714 SCSI layer issued Bus Reset Data: x%x\n", | 1187 | "%d:0714 SCSI layer issued Bus Reset Data: x%x\n", |
1067 | phba->brd_no, ret); | 1188 | phba->brd_no, ret); |
1068 | out: | 1189 | out: |
1190 | spin_unlock_irq(shost->host_lock); | ||
1191 | lpfc_unblock_requests(phba); | ||
1069 | return ret; | 1192 | return ret; |
1070 | } | 1193 | } |
1071 | 1194 | ||
1072 | static int | 1195 | static int |
1073 | lpfc_reset_bus_handler(struct scsi_cmnd *cmnd) | ||
1074 | { | ||
1075 | int rc; | ||
1076 | spin_lock_irq(cmnd->device->host->host_lock); | ||
1077 | rc = __lpfc_reset_bus_handler(cmnd); | ||
1078 | spin_unlock_irq(cmnd->device->host->host_lock); | ||
1079 | return rc; | ||
1080 | } | ||
1081 | |||
1082 | static int | ||
1083 | lpfc_slave_alloc(struct scsi_device *sdev) | 1196 | lpfc_slave_alloc(struct scsi_device *sdev) |
1084 | { | 1197 | { |
1085 | struct lpfc_hba *phba = (struct lpfc_hba *)sdev->host->hostdata[0]; | 1198 | struct lpfc_hba *phba = (struct lpfc_hba *)sdev->host->hostdata[0]; |
@@ -1127,10 +1240,10 @@ lpfc_slave_alloc(struct scsi_device *sdev) | |||
1127 | break; | 1240 | break; |
1128 | } | 1241 | } |
1129 | 1242 | ||
1130 | spin_lock_irqsave(phba->host->host_lock, flags); | 1243 | spin_lock_irqsave(&phba->scsi_buf_list_lock, flags); |
1131 | phba->total_scsi_bufs++; | 1244 | phba->total_scsi_bufs++; |
1132 | list_add_tail(&scsi_buf->list, &phba->lpfc_scsi_buf_list); | 1245 | list_add_tail(&scsi_buf->list, &phba->lpfc_scsi_buf_list); |
1133 | spin_unlock_irqrestore(phba->host->host_lock, flags); | 1246 | spin_unlock_irqrestore(&phba->scsi_buf_list_lock, flags); |
1134 | } | 1247 | } |
1135 | return 0; | 1248 | return 0; |
1136 | } | 1249 | } |
@@ -1154,6 +1267,12 @@ lpfc_slave_configure(struct scsi_device *sdev) | |||
1154 | */ | 1267 | */ |
1155 | rport->dev_loss_tmo = phba->cfg_nodev_tmo + 5; | 1268 | rport->dev_loss_tmo = phba->cfg_nodev_tmo + 5; |
1156 | 1269 | ||
1270 | if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) { | ||
1271 | lpfc_sli_poll_fcp_ring(phba); | ||
1272 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) | ||
1273 | lpfc_poll_rearm_timer(phba); | ||
1274 | } | ||
1275 | |||
1157 | return 0; | 1276 | return 0; |
1158 | } | 1277 | } |
1159 | 1278 | ||
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index e2c08c5d83fb..7b785ade8b07 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -886,6 +886,182 @@ lpfc_sli_process_sol_iocb(struct lpfc_hba * phba, struct lpfc_sli_ring * pring, | |||
886 | return rc; | 886 | return rc; |
887 | } | 887 | } |
888 | 888 | ||
889 | static void lpfc_sli_rsp_pointers_error(struct lpfc_hba * phba, | ||
890 | struct lpfc_sli_ring * pring) | ||
891 | { | ||
892 | struct lpfc_pgp *pgp = &phba->slim2p->mbx.us.s2.port[pring->ringno]; | ||
893 | /* | ||
894 | * Ring <ringno> handler: portRspPut <portRspPut> is bigger then | ||
895 | * rsp ring <portRspMax> | ||
896 | */ | ||
897 | lpfc_printf_log(phba, KERN_ERR, LOG_SLI, | ||
898 | "%d:0312 Ring %d handler: portRspPut %d " | ||
899 | "is bigger then rsp ring %d\n", | ||
900 | phba->brd_no, pring->ringno, | ||
901 | le32_to_cpu(pgp->rspPutInx), | ||
902 | pring->numRiocb); | ||
903 | |||
904 | phba->hba_state = LPFC_HBA_ERROR; | ||
905 | |||
906 | /* | ||
907 | * All error attention handlers are posted to | ||
908 | * worker thread | ||
909 | */ | ||
910 | phba->work_ha |= HA_ERATT; | ||
911 | phba->work_hs = HS_FFER3; | ||
912 | if (phba->work_wait) | ||
913 | wake_up(phba->work_wait); | ||
914 | |||
915 | return; | ||
916 | } | ||
917 | |||
918 | void lpfc_sli_poll_fcp_ring(struct lpfc_hba * phba) | ||
919 | { | ||
920 | struct lpfc_sli * psli = &phba->sli; | ||
921 | struct lpfc_sli_ring * pring = &psli->ring[LPFC_FCP_RING]; | ||
922 | IOCB_t *irsp = NULL; | ||
923 | IOCB_t *entry = NULL; | ||
924 | struct lpfc_iocbq *cmdiocbq = NULL; | ||
925 | struct lpfc_iocbq rspiocbq; | ||
926 | struct lpfc_pgp *pgp; | ||
927 | uint32_t status; | ||
928 | uint32_t portRspPut, portRspMax; | ||
929 | int type; | ||
930 | uint32_t rsp_cmpl = 0; | ||
931 | void __iomem *to_slim; | ||
932 | uint32_t ha_copy; | ||
933 | |||
934 | pring->stats.iocb_event++; | ||
935 | |||
936 | /* The driver assumes SLI-2 mode */ | ||
937 | pgp = &phba->slim2p->mbx.us.s2.port[pring->ringno]; | ||
938 | |||
939 | /* | ||
940 | * The next available response entry should never exceed the maximum | ||
941 | * entries. If it does, treat it as an adapter hardware error. | ||
942 | */ | ||
943 | portRspMax = pring->numRiocb; | ||
944 | portRspPut = le32_to_cpu(pgp->rspPutInx); | ||
945 | if (unlikely(portRspPut >= portRspMax)) { | ||
946 | lpfc_sli_rsp_pointers_error(phba, pring); | ||
947 | return; | ||
948 | } | ||
949 | |||
950 | rmb(); | ||
951 | while (pring->rspidx != portRspPut) { | ||
952 | |||
953 | entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx); | ||
954 | |||
955 | if (++pring->rspidx >= portRspMax) | ||
956 | pring->rspidx = 0; | ||
957 | |||
958 | lpfc_sli_pcimem_bcopy((uint32_t *) entry, | ||
959 | (uint32_t *) &rspiocbq.iocb, | ||
960 | sizeof (IOCB_t)); | ||
961 | irsp = &rspiocbq.iocb; | ||
962 | type = lpfc_sli_iocb_cmd_type(irsp->ulpCommand & CMD_IOCB_MASK); | ||
963 | pring->stats.iocb_rsp++; | ||
964 | rsp_cmpl++; | ||
965 | |||
966 | if (unlikely(irsp->ulpStatus)) { | ||
967 | /* Rsp ring <ringno> error: IOCB */ | ||
968 | lpfc_printf_log(phba, KERN_WARNING, LOG_SLI, | ||
969 | "%d:0326 Rsp Ring %d error: IOCB Data: " | ||
970 | "x%x x%x x%x x%x x%x x%x x%x x%x\n", | ||
971 | phba->brd_no, pring->ringno, | ||
972 | irsp->un.ulpWord[0], | ||
973 | irsp->un.ulpWord[1], | ||
974 | irsp->un.ulpWord[2], | ||
975 | irsp->un.ulpWord[3], | ||
976 | irsp->un.ulpWord[4], | ||
977 | irsp->un.ulpWord[5], | ||
978 | *(((uint32_t *) irsp) + 6), | ||
979 | *(((uint32_t *) irsp) + 7)); | ||
980 | } | ||
981 | |||
982 | switch (type) { | ||
983 | case LPFC_ABORT_IOCB: | ||
984 | case LPFC_SOL_IOCB: | ||
985 | /* | ||
986 | * Idle exchange closed via ABTS from port. No iocb | ||
987 | * resources need to be recovered. | ||
988 | */ | ||
989 | if (unlikely(irsp->ulpCommand == CMD_XRI_ABORTED_CX)) { | ||
990 | printk(KERN_INFO "%s: IOCB cmd 0x%x processed." | ||
991 | " Skipping completion\n", __FUNCTION__, | ||
992 | irsp->ulpCommand); | ||
993 | break; | ||
994 | } | ||
995 | |||
996 | cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring, | ||
997 | &rspiocbq); | ||
998 | if ((cmdiocbq) && (cmdiocbq->iocb_cmpl)) { | ||
999 | (cmdiocbq->iocb_cmpl)(phba, cmdiocbq, | ||
1000 | &rspiocbq); | ||
1001 | } | ||
1002 | break; | ||
1003 | default: | ||
1004 | if (irsp->ulpCommand == CMD_ADAPTER_MSG) { | ||
1005 | char adaptermsg[LPFC_MAX_ADPTMSG]; | ||
1006 | memset(adaptermsg, 0, LPFC_MAX_ADPTMSG); | ||
1007 | memcpy(&adaptermsg[0], (uint8_t *) irsp, | ||
1008 | MAX_MSG_DATA); | ||
1009 | dev_warn(&((phba->pcidev)->dev), "lpfc%d: %s", | ||
1010 | phba->brd_no, adaptermsg); | ||
1011 | } else { | ||
1012 | /* Unknown IOCB command */ | ||
1013 | lpfc_printf_log(phba, KERN_ERR, LOG_SLI, | ||
1014 | "%d:0321 Unknown IOCB command " | ||
1015 | "Data: x%x, x%x x%x x%x x%x\n", | ||
1016 | phba->brd_no, type, | ||
1017 | irsp->ulpCommand, | ||
1018 | irsp->ulpStatus, | ||
1019 | irsp->ulpIoTag, | ||
1020 | irsp->ulpContext); | ||
1021 | } | ||
1022 | break; | ||
1023 | } | ||
1024 | |||
1025 | /* | ||
1026 | * The response IOCB has been processed. Update the ring | ||
1027 | * pointer in SLIM. If the port response put pointer has not | ||
1028 | * been updated, sync the pgp->rspPutInx and fetch the new port | ||
1029 | * response put pointer. | ||
1030 | */ | ||
1031 | to_slim = phba->MBslimaddr + | ||
1032 | (SLIMOFF + (pring->ringno * 2) + 1) * 4; | ||
1033 | writeb(pring->rspidx, to_slim); | ||
1034 | |||
1035 | if (pring->rspidx == portRspPut) | ||
1036 | portRspPut = le32_to_cpu(pgp->rspPutInx); | ||
1037 | } | ||
1038 | |||
1039 | ha_copy = readl(phba->HAregaddr); | ||
1040 | ha_copy >>= (LPFC_FCP_RING * 4); | ||
1041 | |||
1042 | if ((rsp_cmpl > 0) && (ha_copy & HA_R0RE_REQ)) { | ||
1043 | pring->stats.iocb_rsp_full++; | ||
1044 | status = ((CA_R0ATT | CA_R0RE_RSP) << (LPFC_FCP_RING * 4)); | ||
1045 | writel(status, phba->CAregaddr); | ||
1046 | readl(phba->CAregaddr); | ||
1047 | } | ||
1048 | if ((ha_copy & HA_R0CE_RSP) && | ||
1049 | (pring->flag & LPFC_CALL_RING_AVAILABLE)) { | ||
1050 | pring->flag &= ~LPFC_CALL_RING_AVAILABLE; | ||
1051 | pring->stats.iocb_cmd_empty++; | ||
1052 | |||
1053 | /* Force update of the local copy of cmdGetInx */ | ||
1054 | pring->local_getidx = le32_to_cpu(pgp->cmdGetInx); | ||
1055 | lpfc_sli_resume_iocb(phba, pring); | ||
1056 | |||
1057 | if ((pring->lpfc_sli_cmd_available)) | ||
1058 | (pring->lpfc_sli_cmd_available) (phba, pring); | ||
1059 | |||
1060 | } | ||
1061 | |||
1062 | return; | ||
1063 | } | ||
1064 | |||
889 | /* | 1065 | /* |
890 | * This routine presumes LPFC_FCP_RING handling and doesn't bother | 1066 | * This routine presumes LPFC_FCP_RING handling and doesn't bother |
891 | * to check it explicitly. | 1067 | * to check it explicitly. |
@@ -917,24 +1093,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba, | |||
917 | portRspMax = pring->numRiocb; | 1093 | portRspMax = pring->numRiocb; |
918 | portRspPut = le32_to_cpu(pgp->rspPutInx); | 1094 | portRspPut = le32_to_cpu(pgp->rspPutInx); |
919 | if (unlikely(portRspPut >= portRspMax)) { | 1095 | if (unlikely(portRspPut >= portRspMax)) { |
920 | /* | 1096 | lpfc_sli_rsp_pointers_error(phba, pring); |
921 | * Ring <ringno> handler: portRspPut <portRspPut> is bigger then | ||
922 | * rsp ring <portRspMax> | ||
923 | */ | ||
924 | lpfc_printf_log(phba, KERN_ERR, LOG_SLI, | ||
925 | "%d:0312 Ring %d handler: portRspPut %d " | ||
926 | "is bigger then rsp ring %d\n", | ||
927 | phba->brd_no, pring->ringno, portRspPut, | ||
928 | portRspMax); | ||
929 | |||
930 | phba->hba_state = LPFC_HBA_ERROR; | ||
931 | |||
932 | /* All error attention handlers are posted to worker thread */ | ||
933 | phba->work_ha |= HA_ERATT; | ||
934 | phba->work_hs = HS_FFER3; | ||
935 | if (phba->work_wait) | ||
936 | wake_up(phba->work_wait); | ||
937 | |||
938 | spin_unlock_irqrestore(phba->host->host_lock, iflag); | 1097 | spin_unlock_irqrestore(phba->host->host_lock, iflag); |
939 | return 1; | 1098 | return 1; |
940 | } | 1099 | } |
@@ -947,6 +1106,10 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba, | |||
947 | * network byte order and pci byte orders are different. | 1106 | * network byte order and pci byte orders are different. |
948 | */ | 1107 | */ |
949 | entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx); | 1108 | entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx); |
1109 | |||
1110 | if (++pring->rspidx >= portRspMax) | ||
1111 | pring->rspidx = 0; | ||
1112 | |||
950 | lpfc_sli_pcimem_bcopy((uint32_t *) entry, | 1113 | lpfc_sli_pcimem_bcopy((uint32_t *) entry, |
951 | (uint32_t *) &rspiocbq.iocb, | 1114 | (uint32_t *) &rspiocbq.iocb, |
952 | sizeof (IOCB_t)); | 1115 | sizeof (IOCB_t)); |
@@ -1020,9 +1183,6 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba, | |||
1020 | * been updated, sync the pgp->rspPutInx and fetch the new port | 1183 | * been updated, sync the pgp->rspPutInx and fetch the new port |
1021 | * response put pointer. | 1184 | * response put pointer. |
1022 | */ | 1185 | */ |
1023 | if (++pring->rspidx >= portRspMax) | ||
1024 | pring->rspidx = 0; | ||
1025 | |||
1026 | to_slim = phba->MBslimaddr + | 1186 | to_slim = phba->MBslimaddr + |
1027 | (SLIMOFF + (pring->ringno * 2) + 1) * 4; | 1187 | (SLIMOFF + (pring->ringno * 2) + 1) * 4; |
1028 | writel(pring->rspidx, to_slim); | 1188 | writel(pring->rspidx, to_slim); |
@@ -2615,6 +2775,7 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba, | |||
2615 | DECLARE_WAIT_QUEUE_HEAD(done_q); | 2775 | DECLARE_WAIT_QUEUE_HEAD(done_q); |
2616 | long timeleft, timeout_req = 0; | 2776 | long timeleft, timeout_req = 0; |
2617 | int retval = IOCB_SUCCESS; | 2777 | int retval = IOCB_SUCCESS; |
2778 | uint32_t creg_val; | ||
2618 | 2779 | ||
2619 | /* | 2780 | /* |
2620 | * If the caller has provided a response iocbq buffer, then context2 | 2781 | * If the caller has provided a response iocbq buffer, then context2 |
@@ -2630,6 +2791,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba, | |||
2630 | piocb->context_un.wait_queue = &done_q; | 2791 | piocb->context_un.wait_queue = &done_q; |
2631 | piocb->iocb_flag &= ~LPFC_IO_WAKE; | 2792 | piocb->iocb_flag &= ~LPFC_IO_WAKE; |
2632 | 2793 | ||
2794 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) { | ||
2795 | creg_val = readl(phba->HCregaddr); | ||
2796 | creg_val |= (HC_R0INT_ENA << LPFC_FCP_RING); | ||
2797 | writel(creg_val, phba->HCregaddr); | ||
2798 | readl(phba->HCregaddr); /* flush */ | ||
2799 | } | ||
2800 | |||
2633 | retval = lpfc_sli_issue_iocb(phba, pring, piocb, 0); | 2801 | retval = lpfc_sli_issue_iocb(phba, pring, piocb, 0); |
2634 | if (retval == IOCB_SUCCESS) { | 2802 | if (retval == IOCB_SUCCESS) { |
2635 | timeout_req = timeout * HZ; | 2803 | timeout_req = timeout * HZ; |
@@ -2663,6 +2831,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba, | |||
2663 | retval = IOCB_ERROR; | 2831 | retval = IOCB_ERROR; |
2664 | } | 2832 | } |
2665 | 2833 | ||
2834 | if (phba->cfg_poll & DISABLE_FCP_RING_INT) { | ||
2835 | creg_val = readl(phba->HCregaddr); | ||
2836 | creg_val &= ~(HC_R0INT_ENA << LPFC_FCP_RING); | ||
2837 | writel(creg_val, phba->HCregaddr); | ||
2838 | readl(phba->HCregaddr); /* flush */ | ||
2839 | } | ||
2840 | |||
2666 | if (prspiocbq) | 2841 | if (prspiocbq) |
2667 | piocb->context2 = NULL; | 2842 | piocb->context2 = NULL; |
2668 | 2843 | ||
diff --git a/drivers/scsi/lpfc/lpfc_version.h b/drivers/scsi/lpfc/lpfc_version.h index 4f0466fbd5f2..fa681a934ffe 100644 --- a/drivers/scsi/lpfc/lpfc_version.h +++ b/drivers/scsi/lpfc/lpfc_version.h | |||
@@ -18,7 +18,7 @@ | |||
18 | * included with this package. * | 18 | * included with this package. * |
19 | *******************************************************************/ | 19 | *******************************************************************/ |
20 | 20 | ||
21 | #define LPFC_DRIVER_VERSION "8.1.0" | 21 | #define LPFC_DRIVER_VERSION "8.1.1" |
22 | 22 | ||
23 | #define LPFC_DRIVER_NAME "lpfc" | 23 | #define LPFC_DRIVER_NAME "lpfc" |
24 | 24 | ||
diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c index 932dcf0366eb..311a4122bd70 100644 --- a/drivers/scsi/mac53c94.c +++ b/drivers/scsi/mac53c94.c | |||
@@ -432,11 +432,12 @@ static int mac53c94_probe(struct macio_dev *mdev, const struct of_device_id *mat | |||
432 | struct Scsi_Host *host; | 432 | struct Scsi_Host *host; |
433 | void *dma_cmd_space; | 433 | void *dma_cmd_space; |
434 | unsigned char *clkprop; | 434 | unsigned char *clkprop; |
435 | int proplen; | 435 | int proplen, rc = -ENODEV; |
436 | 436 | ||
437 | if (macio_resource_count(mdev) != 2 || macio_irq_count(mdev) != 2) { | 437 | if (macio_resource_count(mdev) != 2 || macio_irq_count(mdev) != 2) { |
438 | printk(KERN_ERR "mac53c94: expected 2 addrs and intrs (got %d/%d)\n", | 438 | printk(KERN_ERR "mac53c94: expected 2 addrs and intrs" |
439 | node->n_addrs, node->n_intrs); | 439 | " (got %d/%d)\n", |
440 | macio_resource_count(mdev), macio_irq_count(mdev)); | ||
440 | return -ENODEV; | 441 | return -ENODEV; |
441 | } | 442 | } |
442 | 443 | ||
@@ -448,6 +449,7 @@ static int mac53c94_probe(struct macio_dev *mdev, const struct of_device_id *mat | |||
448 | host = scsi_host_alloc(&mac53c94_template, sizeof(struct fsc_state)); | 449 | host = scsi_host_alloc(&mac53c94_template, sizeof(struct fsc_state)); |
449 | if (host == NULL) { | 450 | if (host == NULL) { |
450 | printk(KERN_ERR "mac53c94: couldn't register host"); | 451 | printk(KERN_ERR "mac53c94: couldn't register host"); |
452 | rc = -ENOMEM; | ||
451 | goto out_release; | 453 | goto out_release; |
452 | } | 454 | } |
453 | 455 | ||
@@ -486,6 +488,7 @@ static int mac53c94_probe(struct macio_dev *mdev, const struct of_device_id *mat | |||
486 | if (dma_cmd_space == 0) { | 488 | if (dma_cmd_space == 0) { |
487 | printk(KERN_ERR "mac53c94: couldn't allocate dma " | 489 | printk(KERN_ERR "mac53c94: couldn't allocate dma " |
488 | "command space for %s\n", node->full_name); | 490 | "command space for %s\n", node->full_name); |
491 | rc = -ENOMEM; | ||
489 | goto out_free; | 492 | goto out_free; |
490 | } | 493 | } |
491 | state->dma_cmds = (struct dbdma_cmd *)DBDMA_ALIGN(dma_cmd_space); | 494 | state->dma_cmds = (struct dbdma_cmd *)DBDMA_ALIGN(dma_cmd_space); |
@@ -495,18 +498,21 @@ static int mac53c94_probe(struct macio_dev *mdev, const struct of_device_id *mat | |||
495 | 498 | ||
496 | mac53c94_init(state); | 499 | mac53c94_init(state); |
497 | 500 | ||
498 | if (request_irq(state->intr, do_mac53c94_interrupt, 0, "53C94", state)) { | 501 | if (request_irq(state->intr, do_mac53c94_interrupt, 0, "53C94",state)) { |
499 | printk(KERN_ERR "mac53C94: can't get irq %d for %s\n", | 502 | printk(KERN_ERR "mac53C94: can't get irq %d for %s\n", |
500 | state->intr, node->full_name); | 503 | state->intr, node->full_name); |
501 | goto out_free_dma; | 504 | goto out_free_dma; |
502 | } | 505 | } |
503 | 506 | ||
504 | /* XXX FIXME: handle failure */ | 507 | rc = scsi_add_host(host, &mdev->ofdev.dev); |
505 | scsi_add_host(host, &mdev->ofdev.dev); | 508 | if (rc != 0) |
506 | scsi_scan_host(host); | 509 | goto out_release_irq; |
507 | 510 | ||
511 | scsi_scan_host(host); | ||
508 | return 0; | 512 | return 0; |
509 | 513 | ||
514 | out_release_irq: | ||
515 | free_irq(state->intr, state); | ||
510 | out_free_dma: | 516 | out_free_dma: |
511 | kfree(state->dma_cmd_space); | 517 | kfree(state->dma_cmd_space); |
512 | out_free: | 518 | out_free: |
@@ -518,7 +524,7 @@ static int mac53c94_probe(struct macio_dev *mdev, const struct of_device_id *mat | |||
518 | out_release: | 524 | out_release: |
519 | macio_release_resources(mdev); | 525 | macio_release_resources(mdev); |
520 | 526 | ||
521 | return -ENODEV; | 527 | return rc; |
522 | } | 528 | } |
523 | 529 | ||
524 | static int mac53c94_remove(struct macio_dev *mdev) | 530 | static int mac53c94_remove(struct macio_dev *mdev) |
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 578143e93a6f..d101a8a6f4e8 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * | 2 | * |
3 | * Linux MegaRAID device driver | 3 | * Linux MegaRAID device driver |
4 | * | 4 | * |
5 | * Copyright © 2002 LSI Logic Corporation. | 5 | * Copyright (c) 2002 LSI Logic Corporation. |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
8 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
@@ -17,7 +17,8 @@ | |||
17 | * Copyright (c) 2003 Christoph Hellwig <hch@lst.de> | 17 | * Copyright (c) 2003 Christoph Hellwig <hch@lst.de> |
18 | * - new-style, hotplug-aware pci probing and scsi registration | 18 | * - new-style, hotplug-aware pci probing and scsi registration |
19 | * | 19 | * |
20 | * Version : v2.00.3 (Feb 19, 2003) - Atul Mukker <Atul.Mukker@lsil.com> | 20 | * Version : v2.00.4 Mon Nov 14 14:02:43 EST 2005 - Seokmann Ju |
21 | * <Seokmann.Ju@lsil.com> | ||
21 | * | 22 | * |
22 | * Description: Linux device driver for LSI Logic MegaRAID controller | 23 | * Description: Linux device driver for LSI Logic MegaRAID controller |
23 | * | 24 | * |
@@ -51,10 +52,10 @@ | |||
51 | 52 | ||
52 | #include "megaraid.h" | 53 | #include "megaraid.h" |
53 | 54 | ||
54 | #define MEGARAID_MODULE_VERSION "2.00.3" | 55 | #define MEGARAID_MODULE_VERSION "2.00.4" |
55 | 56 | ||
56 | MODULE_AUTHOR ("LSI Logic Corporation"); | 57 | MODULE_AUTHOR ("sju@lsil.com"); |
57 | MODULE_DESCRIPTION ("LSI Logic MegaRAID driver"); | 58 | MODULE_DESCRIPTION ("LSI Logic MegaRAID legacy driver"); |
58 | MODULE_LICENSE ("GPL"); | 59 | MODULE_LICENSE ("GPL"); |
59 | MODULE_VERSION(MEGARAID_MODULE_VERSION); | 60 | MODULE_VERSION(MEGARAID_MODULE_VERSION); |
60 | 61 | ||
@@ -4478,7 +4479,7 @@ mega_internal_command(adapter_t *adapter, megacmd_t *mc, mega_passthru *pthru) | |||
4478 | * serialized. This is so because we want to reserve maximum number of | 4479 | * serialized. This is so because we want to reserve maximum number of |
4479 | * available command ids for the I/O commands. | 4480 | * available command ids for the I/O commands. |
4480 | */ | 4481 | */ |
4481 | down(&adapter->int_mtx); | 4482 | mutex_lock(&adapter->int_mtx); |
4482 | 4483 | ||
4483 | scb = &adapter->int_scb; | 4484 | scb = &adapter->int_scb; |
4484 | memset(scb, 0, sizeof(scb_t)); | 4485 | memset(scb, 0, sizeof(scb_t)); |
@@ -4526,7 +4527,7 @@ mega_internal_command(adapter_t *adapter, megacmd_t *mc, mega_passthru *pthru) | |||
4526 | mc->cmd, mc->opcode, mc->subopcode, scmd->result); | 4527 | mc->cmd, mc->opcode, mc->subopcode, scmd->result); |
4527 | } | 4528 | } |
4528 | 4529 | ||
4529 | up(&adapter->int_mtx); | 4530 | mutex_unlock(&adapter->int_mtx); |
4530 | 4531 | ||
4531 | return rval; | 4532 | return rval; |
4532 | } | 4533 | } |
@@ -4553,7 +4554,7 @@ mega_internal_done(Scsi_Cmnd *scmd) | |||
4553 | static struct scsi_host_template megaraid_template = { | 4554 | static struct scsi_host_template megaraid_template = { |
4554 | .module = THIS_MODULE, | 4555 | .module = THIS_MODULE, |
4555 | .name = "MegaRAID", | 4556 | .name = "MegaRAID", |
4556 | .proc_name = "megaraid", | 4557 | .proc_name = "megaraid_legacy", |
4557 | .info = megaraid_info, | 4558 | .info = megaraid_info, |
4558 | .queuecommand = megaraid_queue, | 4559 | .queuecommand = megaraid_queue, |
4559 | .bios_param = megaraid_biosparam, | 4560 | .bios_param = megaraid_biosparam, |
@@ -4865,7 +4866,7 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
4865 | adapter->has_64bit_addr = 0; | 4866 | adapter->has_64bit_addr = 0; |
4866 | } | 4867 | } |
4867 | 4868 | ||
4868 | init_MUTEX(&adapter->int_mtx); | 4869 | mutex_init(&adapter->int_mtx); |
4869 | init_completion(&adapter->int_waitq); | 4870 | init_completion(&adapter->int_waitq); |
4870 | 4871 | ||
4871 | adapter->this_id = DEFAULT_INITIATOR_ID; | 4872 | adapter->this_id = DEFAULT_INITIATOR_ID; |
@@ -5037,22 +5038,12 @@ megaraid_shutdown(struct pci_dev *pdev) | |||
5037 | } | 5038 | } |
5038 | 5039 | ||
5039 | static struct pci_device_id megaraid_pci_tbl[] = { | 5040 | static struct pci_device_id megaraid_pci_tbl[] = { |
5040 | {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_DISCOVERY, | ||
5041 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | ||
5042 | {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_PERC4_DI, | ||
5043 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT}, | ||
5044 | {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_PERC4_QC_VERDE, | ||
5045 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT}, | ||
5046 | {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID, | 5041 | {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID, |
5047 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 5042 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
5048 | {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2, | 5043 | {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2, |
5049 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 5044 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
5050 | {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, | ||
5051 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | ||
5052 | {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3, | 5045 | {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3, |
5053 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 5046 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
5054 | {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_AMI_MEGARAID3, | ||
5055 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | ||
5056 | {0,} | 5047 | {0,} |
5057 | }; | 5048 | }; |
5058 | MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl); | 5049 | MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl); |
@@ -5095,7 +5086,7 @@ static int __init megaraid_init(void) | |||
5095 | * First argument (major) to register_chrdev implies a dynamic | 5086 | * First argument (major) to register_chrdev implies a dynamic |
5096 | * major number allocation. | 5087 | * major number allocation. |
5097 | */ | 5088 | */ |
5098 | major = register_chrdev(0, "megadev", &megadev_fops); | 5089 | major = register_chrdev(0, "megadev_legacy", &megadev_fops); |
5099 | if (!major) { | 5090 | if (!major) { |
5100 | printk(KERN_WARNING | 5091 | printk(KERN_WARNING |
5101 | "megaraid: failed to register char device\n"); | 5092 | "megaraid: failed to register char device\n"); |
@@ -5109,7 +5100,7 @@ static void __exit megaraid_exit(void) | |||
5109 | /* | 5100 | /* |
5110 | * Unregister the character device interface to the driver. | 5101 | * Unregister the character device interface to the driver. |
5111 | */ | 5102 | */ |
5112 | unregister_chrdev(major, "megadev"); | 5103 | unregister_chrdev(major, "megadev_legacy"); |
5113 | 5104 | ||
5114 | pci_unregister_driver(&megaraid_pci_driver); | 5105 | pci_unregister_driver(&megaraid_pci_driver); |
5115 | 5106 | ||
diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h index 6f9078025748..4b3e0d6e5afa 100644 --- a/drivers/scsi/megaraid.h +++ b/drivers/scsi/megaraid.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __MEGARAID_H__ | 2 | #define __MEGARAID_H__ |
3 | 3 | ||
4 | #include <linux/spinlock.h> | 4 | #include <linux/spinlock.h> |
5 | 5 | #include <linux/mutex.h> | |
6 | 6 | ||
7 | #define MEGARAID_VERSION \ | 7 | #define MEGARAID_VERSION \ |
8 | "v2.00.3 (Release Date: Wed Feb 19 08:51:30 EST 2003)\n" | 8 | "v2.00.3 (Release Date: Wed Feb 19 08:51:30 EST 2003)\n" |
@@ -889,7 +889,7 @@ typedef struct { | |||
889 | 889 | ||
890 | scb_t int_scb; | 890 | scb_t int_scb; |
891 | Scsi_Cmnd int_scmd; | 891 | Scsi_Cmnd int_scmd; |
892 | struct semaphore int_mtx; /* To synchronize the internal | 892 | struct mutex int_mtx; /* To synchronize the internal |
893 | commands */ | 893 | commands */ |
894 | struct completion int_waitq; /* wait queue for internal | 894 | struct completion int_waitq; /* wait queue for internal |
895 | cmds */ | 895 | cmds */ |
diff --git a/drivers/scsi/megaraid/Kconfig.megaraid b/drivers/scsi/megaraid/Kconfig.megaraid index 7363e12663ac..17419e30ffc8 100644 --- a/drivers/scsi/megaraid/Kconfig.megaraid +++ b/drivers/scsi/megaraid/Kconfig.megaraid | |||
@@ -64,7 +64,6 @@ config MEGARAID_MAILBOX | |||
64 | To compile this driver as a module, choose M here: the | 64 | To compile this driver as a module, choose M here: the |
65 | module will be called megaraid_mbox | 65 | module will be called megaraid_mbox |
66 | 66 | ||
67 | if MEGARAID_NEWGEN=n | ||
68 | config MEGARAID_LEGACY | 67 | config MEGARAID_LEGACY |
69 | tristate "LSI Logic Legacy MegaRAID Driver" | 68 | tristate "LSI Logic Legacy MegaRAID Driver" |
70 | depends on PCI && SCSI | 69 | depends on PCI && SCSI |
@@ -75,7 +74,6 @@ config MEGARAID_LEGACY | |||
75 | 74 | ||
76 | To compile this driver as a module, choose M here: the | 75 | To compile this driver as a module, choose M here: the |
77 | module will be called megaraid | 76 | module will be called megaraid |
78 | endif | ||
79 | 77 | ||
80 | config MEGARAID_SAS | 78 | config MEGARAID_SAS |
81 | tristate "LSI Logic MegaRAID SAS RAID Module" | 79 | tristate "LSI Logic MegaRAID SAS RAID Module" |
diff --git a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c index 4b5d420d2f4d..bf9f7f7ba354 100644 --- a/drivers/scsi/megaraid/megaraid_mbox.c +++ b/drivers/scsi/megaraid/megaraid_mbox.c | |||
@@ -10,12 +10,13 @@ | |||
10 | * 2 of the License, or (at your option) any later version. | 10 | * 2 of the License, or (at your option) any later version. |
11 | * | 11 | * |
12 | * FILE : megaraid_mbox.c | 12 | * FILE : megaraid_mbox.c |
13 | * Version : v2.20.4.6 (Mar 07 2005) | 13 | * Version : v2.20.4.7 (Nov 14 2005) |
14 | * | 14 | * |
15 | * Authors: | 15 | * Authors: |
16 | * Atul Mukker <Atul.Mukker@lsil.com> | 16 | * Atul Mukker <Atul.Mukker@lsil.com> |
17 | * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsil.com> | 17 | * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsil.com> |
18 | * Manoj Jose <Manoj.Jose@lsil.com> | 18 | * Manoj Jose <Manoj.Jose@lsil.com> |
19 | * Seokmann Ju <Seokmann.Ju@lsil.com> | ||
19 | * | 20 | * |
20 | * List of supported controllers | 21 | * List of supported controllers |
21 | * | 22 | * |
@@ -136,7 +137,7 @@ static int wait_till_fw_empty(adapter_t *); | |||
136 | 137 | ||
137 | 138 | ||
138 | 139 | ||
139 | MODULE_AUTHOR("LSI Logic Corporation"); | 140 | MODULE_AUTHOR("sju@lsil.com"); |
140 | MODULE_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver"); | 141 | MODULE_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver"); |
141 | MODULE_LICENSE("GPL"); | 142 | MODULE_LICENSE("GPL"); |
142 | MODULE_VERSION(MEGARAID_VERSION); | 143 | MODULE_VERSION(MEGARAID_VERSION); |
@@ -278,68 +279,14 @@ static struct pci_device_id pci_id_table_g[] = { | |||
278 | { | 279 | { |
279 | PCI_VENDOR_ID_AMI, | 280 | PCI_VENDOR_ID_AMI, |
280 | PCI_DEVICE_ID_AMI_MEGARAID3, | 281 | PCI_DEVICE_ID_AMI_MEGARAID3, |
281 | PCI_VENDOR_ID_DELL, | 282 | PCI_ANY_ID, |
282 | PCI_SUBSYS_ID_PERC3_QC, | 283 | PCI_ANY_ID, |
283 | }, | ||
284 | { | ||
285 | PCI_VENDOR_ID_AMI, | ||
286 | PCI_DEVICE_ID_AMI_MEGARAID3, | ||
287 | PCI_VENDOR_ID_DELL, | ||
288 | PCI_SUBSYS_ID_PERC3_DC, | ||
289 | }, | ||
290 | { | ||
291 | PCI_VENDOR_ID_AMI, | ||
292 | PCI_DEVICE_ID_AMI_MEGARAID3, | ||
293 | PCI_VENDOR_ID_DELL, | ||
294 | PCI_SUBSYS_ID_PERC3_SC, | ||
295 | }, | ||
296 | { | ||
297 | PCI_VENDOR_ID_AMI, | ||
298 | PCI_DEVICE_ID_AMI_MEGARAID3, | ||
299 | PCI_VENDOR_ID_AMI, | ||
300 | PCI_SUBSYS_ID_PERC3_SC, | ||
301 | }, | ||
302 | { | ||
303 | PCI_VENDOR_ID_AMI, | ||
304 | PCI_DEVICE_ID_AMI_MEGARAID3, | ||
305 | PCI_VENDOR_ID_AMI, | ||
306 | PCI_SUBSYS_ID_PERC3_DC, | ||
307 | }, | ||
308 | { | ||
309 | PCI_VENDOR_ID_LSI_LOGIC, | ||
310 | PCI_DEVICE_ID_MEGARAID_SCSI_320_0, | ||
311 | PCI_VENDOR_ID_LSI_LOGIC, | ||
312 | PCI_SUBSYS_ID_MEGARAID_SCSI_320_0, | ||
313 | }, | ||
314 | { | ||
315 | PCI_VENDOR_ID_LSI_LOGIC, | ||
316 | PCI_DEVICE_ID_MEGARAID_SCSI_320_1, | ||
317 | PCI_VENDOR_ID_LSI_LOGIC, | ||
318 | PCI_SUBSYS_ID_MEGARAID_SCSI_320_1, | ||
319 | }, | ||
320 | { | ||
321 | PCI_VENDOR_ID_LSI_LOGIC, | ||
322 | PCI_DEVICE_ID_MEGARAID_SCSI_320_2, | ||
323 | PCI_VENDOR_ID_LSI_LOGIC, | ||
324 | PCI_SUBSYS_ID_MEGARAID_SCSI_320_2, | ||
325 | }, | ||
326 | { | ||
327 | PCI_VENDOR_ID_LSI_LOGIC, | ||
328 | PCI_DEVICE_ID_MEGARAID_I4_133_RAID, | ||
329 | PCI_VENDOR_ID_LSI_LOGIC, | ||
330 | PCI_SUBSYS_ID_MEGARAID_I4_133_RAID, | ||
331 | }, | ||
332 | { | ||
333 | PCI_VENDOR_ID_LSI_LOGIC, | ||
334 | PCI_DEVICE_ID_MEGARAID_SATA_150_4, | ||
335 | PCI_VENDOR_ID_LSI_LOGIC, | ||
336 | PCI_SUBSYS_ID_MEGARAID_SATA_150_4, | ||
337 | }, | 284 | }, |
338 | { | 285 | { |
339 | PCI_VENDOR_ID_LSI_LOGIC, | 286 | PCI_VENDOR_ID_LSI_LOGIC, |
340 | PCI_DEVICE_ID_MEGARAID_SATA_150_6, | 287 | PCI_DEVICE_ID_AMI_MEGARAID3, |
341 | PCI_VENDOR_ID_LSI_LOGIC, | 288 | PCI_ANY_ID, |
342 | PCI_SUBSYS_ID_MEGARAID_SATA_150_6, | 289 | PCI_ANY_ID, |
343 | }, | 290 | }, |
344 | { | 291 | { |
345 | PCI_VENDOR_ID_LSI_LOGIC, | 292 | PCI_VENDOR_ID_LSI_LOGIC, |
@@ -347,18 +294,6 @@ static struct pci_device_id pci_id_table_g[] = { | |||
347 | PCI_ANY_ID, | 294 | PCI_ANY_ID, |
348 | PCI_ANY_ID, | 295 | PCI_ANY_ID, |
349 | }, | 296 | }, |
350 | { | ||
351 | PCI_VENDOR_ID_LSI_LOGIC, | ||
352 | PCI_DEVICE_ID_INTEL_RAID_SRCS16, | ||
353 | PCI_VENDOR_ID_INTEL, | ||
354 | PCI_SUBSYS_ID_INTEL_RAID_SRCS16, | ||
355 | }, | ||
356 | { | ||
357 | PCI_VENDOR_ID_LSI_LOGIC, | ||
358 | PCI_DEVICE_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK, | ||
359 | PCI_VENDOR_ID_INTEL, | ||
360 | PCI_SUBSYS_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK, | ||
361 | }, | ||
362 | {0} /* Terminating entry */ | 297 | {0} /* Terminating entry */ |
363 | }; | 298 | }; |
364 | MODULE_DEVICE_TABLE(pci, pci_id_table_g); | 299 | MODULE_DEVICE_TABLE(pci, pci_id_table_g); |
@@ -1331,7 +1266,7 @@ megaraid_mbox_teardown_dma_pools(adapter_t *adapter) | |||
1331 | * return the scb from the head of the free list. NULL if there are none | 1266 | * return the scb from the head of the free list. NULL if there are none |
1332 | * available | 1267 | * available |
1333 | **/ | 1268 | **/ |
1334 | static inline scb_t * | 1269 | static scb_t * |
1335 | megaraid_alloc_scb(adapter_t *adapter, struct scsi_cmnd *scp) | 1270 | megaraid_alloc_scb(adapter_t *adapter, struct scsi_cmnd *scp) |
1336 | { | 1271 | { |
1337 | struct list_head *head = &adapter->kscb_pool; | 1272 | struct list_head *head = &adapter->kscb_pool; |
@@ -1394,7 +1329,7 @@ megaraid_dealloc_scb(adapter_t *adapter, scb_t *scb) | |||
1394 | * | 1329 | * |
1395 | * prepare the scatter-gather list | 1330 | * prepare the scatter-gather list |
1396 | */ | 1331 | */ |
1397 | static inline int | 1332 | static int |
1398 | megaraid_mbox_mksgl(adapter_t *adapter, scb_t *scb) | 1333 | megaraid_mbox_mksgl(adapter_t *adapter, scb_t *scb) |
1399 | { | 1334 | { |
1400 | struct scatterlist *sgl; | 1335 | struct scatterlist *sgl; |
@@ -1467,7 +1402,7 @@ megaraid_mbox_mksgl(adapter_t *adapter, scb_t *scb) | |||
1467 | * | 1402 | * |
1468 | * post the command to the controller if mailbox is availble. | 1403 | * post the command to the controller if mailbox is availble. |
1469 | */ | 1404 | */ |
1470 | static inline int | 1405 | static int |
1471 | mbox_post_cmd(adapter_t *adapter, scb_t *scb) | 1406 | mbox_post_cmd(adapter_t *adapter, scb_t *scb) |
1472 | { | 1407 | { |
1473 | mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); | 1408 | mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); |
@@ -2135,7 +2070,7 @@ megaraid_mbox_prepare_epthru(adapter_t *adapter, scb_t *scb, | |||
2135 | * | 2070 | * |
2136 | * Returns: 1 if the interrupt is valid, 0 otherwise | 2071 | * Returns: 1 if the interrupt is valid, 0 otherwise |
2137 | */ | 2072 | */ |
2138 | static inline int | 2073 | static int |
2139 | megaraid_ack_sequence(adapter_t *adapter) | 2074 | megaraid_ack_sequence(adapter_t *adapter) |
2140 | { | 2075 | { |
2141 | mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); | 2076 | mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); |
@@ -2273,7 +2208,7 @@ megaraid_isr(int irq, void *devp, struct pt_regs *regs) | |||
2273 | * | 2208 | * |
2274 | * DMA sync if required. | 2209 | * DMA sync if required. |
2275 | */ | 2210 | */ |
2276 | static inline void | 2211 | static void |
2277 | megaraid_mbox_sync_scb(adapter_t *adapter, scb_t *scb) | 2212 | megaraid_mbox_sync_scb(adapter_t *adapter, scb_t *scb) |
2278 | { | 2213 | { |
2279 | mbox_ccb_t *ccb; | 2214 | mbox_ccb_t *ccb; |
@@ -2985,6 +2920,7 @@ mbox_post_sync_cmd_fast(adapter_t *adapter, uint8_t raw_mbox[]) | |||
2985 | 2920 | ||
2986 | for (i = 0; i < 0xFFFFF; i++) { | 2921 | for (i = 0; i < 0xFFFFF; i++) { |
2987 | if (mbox->numstatus != 0xFF) break; | 2922 | if (mbox->numstatus != 0xFF) break; |
2923 | rmb(); | ||
2988 | } | 2924 | } |
2989 | 2925 | ||
2990 | if (i == 0xFFFFF) { | 2926 | if (i == 0xFFFFF) { |
diff --git a/drivers/scsi/megaraid/megaraid_mbox.h b/drivers/scsi/megaraid/megaraid_mbox.h index 644b91bdb028..882fb1a0b575 100644 --- a/drivers/scsi/megaraid/megaraid_mbox.h +++ b/drivers/scsi/megaraid/megaraid_mbox.h | |||
@@ -21,8 +21,8 @@ | |||
21 | #include "megaraid_ioctl.h" | 21 | #include "megaraid_ioctl.h" |
22 | 22 | ||
23 | 23 | ||
24 | #define MEGARAID_VERSION "2.20.4.6" | 24 | #define MEGARAID_VERSION "2.20.4.7" |
25 | #define MEGARAID_EXT_VERSION "(Release Date: Mon Mar 07 12:27:22 EST 2005)" | 25 | #define MEGARAID_EXT_VERSION "(Release Date: Mon Nov 14 12:27:22 EST 2005)" |
26 | 26 | ||
27 | 27 | ||
28 | /* | 28 | /* |
diff --git a/drivers/scsi/megaraid/megaraid_mm.h b/drivers/scsi/megaraid/megaraid_mm.h index eb8c390a0fa3..3d9e67d6849d 100644 --- a/drivers/scsi/megaraid/megaraid_mm.h +++ b/drivers/scsi/megaraid/megaraid_mm.h | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/moduleparam.h> | 22 | #include <linux/moduleparam.h> |
23 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
24 | #include <linux/list.h> | 24 | #include <linux/list.h> |
25 | #include <linux/ioctl32.h> | ||
26 | 25 | ||
27 | #include "mbox_defs.h" | 26 | #include "mbox_defs.h" |
28 | #include "megaraid_ioctl.h" | 27 | #include "megaraid_ioctl.h" |
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c index 3c32e69afcd9..511ed52a5807 100644 --- a/drivers/scsi/megaraid/megaraid_sas.c +++ b/drivers/scsi/megaraid/megaraid_sas.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
36 | #include <linux/fs.h> | 36 | #include <linux/fs.h> |
37 | #include <linux/compat.h> | 37 | #include <linux/compat.h> |
38 | #include <linux/mutex.h> | ||
38 | 39 | ||
39 | #include <scsi/scsi.h> | 40 | #include <scsi/scsi.h> |
40 | #include <scsi/scsi_cmnd.h> | 41 | #include <scsi/scsi_cmnd.h> |
@@ -72,7 +73,7 @@ MODULE_DEVICE_TABLE(pci, megasas_pci_table); | |||
72 | static int megasas_mgmt_majorno; | 73 | static int megasas_mgmt_majorno; |
73 | static struct megasas_mgmt_info megasas_mgmt_info; | 74 | static struct megasas_mgmt_info megasas_mgmt_info; |
74 | static struct fasync_struct *megasas_async_queue; | 75 | static struct fasync_struct *megasas_async_queue; |
75 | static DECLARE_MUTEX(megasas_async_queue_mutex); | 76 | static DEFINE_MUTEX(megasas_async_queue_mutex); |
76 | 77 | ||
77 | /** | 78 | /** |
78 | * megasas_get_cmd - Get a command from the free pool | 79 | * megasas_get_cmd - Get a command from the free pool |
@@ -80,7 +81,7 @@ static DECLARE_MUTEX(megasas_async_queue_mutex); | |||
80 | * | 81 | * |
81 | * Returns a free command from the pool | 82 | * Returns a free command from the pool |
82 | */ | 83 | */ |
83 | static inline struct megasas_cmd *megasas_get_cmd(struct megasas_instance | 84 | static struct megasas_cmd *megasas_get_cmd(struct megasas_instance |
84 | *instance) | 85 | *instance) |
85 | { | 86 | { |
86 | unsigned long flags; | 87 | unsigned long flags; |
@@ -262,7 +263,7 @@ megasas_issue_blocked_abort_cmd(struct megasas_instance *instance, | |||
262 | * If successful, this function returns the number of SG elements. Otherwise, | 263 | * If successful, this function returns the number of SG elements. Otherwise, |
263 | * it returnes -1. | 264 | * it returnes -1. |
264 | */ | 265 | */ |
265 | static inline int | 266 | static int |
266 | megasas_make_sgl32(struct megasas_instance *instance, struct scsi_cmnd *scp, | 267 | megasas_make_sgl32(struct megasas_instance *instance, struct scsi_cmnd *scp, |
267 | union megasas_sgl *mfi_sgl) | 268 | union megasas_sgl *mfi_sgl) |
268 | { | 269 | { |
@@ -310,7 +311,7 @@ megasas_make_sgl32(struct megasas_instance *instance, struct scsi_cmnd *scp, | |||
310 | * If successful, this function returns the number of SG elements. Otherwise, | 311 | * If successful, this function returns the number of SG elements. Otherwise, |
311 | * it returnes -1. | 312 | * it returnes -1. |
312 | */ | 313 | */ |
313 | static inline int | 314 | static int |
314 | megasas_make_sgl64(struct megasas_instance *instance, struct scsi_cmnd *scp, | 315 | megasas_make_sgl64(struct megasas_instance *instance, struct scsi_cmnd *scp, |
315 | union megasas_sgl *mfi_sgl) | 316 | union megasas_sgl *mfi_sgl) |
316 | { | 317 | { |
@@ -359,7 +360,7 @@ megasas_make_sgl64(struct megasas_instance *instance, struct scsi_cmnd *scp, | |||
359 | * This function prepares CDB commands. These are typcially pass-through | 360 | * This function prepares CDB commands. These are typcially pass-through |
360 | * commands to the devices. | 361 | * commands to the devices. |
361 | */ | 362 | */ |
362 | static inline int | 363 | static int |
363 | megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp, | 364 | megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp, |
364 | struct megasas_cmd *cmd) | 365 | struct megasas_cmd *cmd) |
365 | { | 366 | { |
@@ -440,7 +441,7 @@ megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp, | |||
440 | * | 441 | * |
441 | * Frames (and accompanying SGLs) for regular SCSI IOs use this function. | 442 | * Frames (and accompanying SGLs) for regular SCSI IOs use this function. |
442 | */ | 443 | */ |
443 | static inline int | 444 | static int |
444 | megasas_build_ldio(struct megasas_instance *instance, struct scsi_cmnd *scp, | 445 | megasas_build_ldio(struct megasas_instance *instance, struct scsi_cmnd *scp, |
445 | struct megasas_cmd *cmd) | 446 | struct megasas_cmd *cmd) |
446 | { | 447 | { |
@@ -562,7 +563,7 @@ megasas_build_ldio(struct megasas_instance *instance, struct scsi_cmnd *scp, | |||
562 | * @scp: SCSI command | 563 | * @scp: SCSI command |
563 | * @frame_count: [OUT] Number of frames used to prepare this command | 564 | * @frame_count: [OUT] Number of frames used to prepare this command |
564 | */ | 565 | */ |
565 | static inline struct megasas_cmd *megasas_build_cmd(struct megasas_instance | 566 | static struct megasas_cmd *megasas_build_cmd(struct megasas_instance |
566 | *instance, | 567 | *instance, |
567 | struct scsi_cmnd *scp, | 568 | struct scsi_cmnd *scp, |
568 | int *frame_count) | 569 | int *frame_count) |
@@ -913,7 +914,7 @@ megasas_complete_abort(struct megasas_instance *instance, | |||
913 | * @instance: Adapter soft state | 914 | * @instance: Adapter soft state |
914 | * @cmd: Completed command | 915 | * @cmd: Completed command |
915 | */ | 916 | */ |
916 | static inline void | 917 | static void |
917 | megasas_unmap_sgbuf(struct megasas_instance *instance, struct megasas_cmd *cmd) | 918 | megasas_unmap_sgbuf(struct megasas_instance *instance, struct megasas_cmd *cmd) |
918 | { | 919 | { |
919 | dma_addr_t buf_h; | 920 | dma_addr_t buf_h; |
@@ -957,7 +958,7 @@ megasas_unmap_sgbuf(struct megasas_instance *instance, struct megasas_cmd *cmd) | |||
957 | * an alternate status (as in the case of aborted | 958 | * an alternate status (as in the case of aborted |
958 | * commands) | 959 | * commands) |
959 | */ | 960 | */ |
960 | static inline void | 961 | static void |
961 | megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, | 962 | megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, |
962 | u8 alt_status) | 963 | u8 alt_status) |
963 | { | 964 | { |
@@ -1104,7 +1105,7 @@ megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, | |||
1104 | * SCSI mid-layer instead of the status | 1105 | * SCSI mid-layer instead of the status |
1105 | * returned by the FW | 1106 | * returned by the FW |
1106 | */ | 1107 | */ |
1107 | static inline int | 1108 | static int |
1108 | megasas_deplete_reply_queue(struct megasas_instance *instance, u8 alt_status) | 1109 | megasas_deplete_reply_queue(struct megasas_instance *instance, u8 alt_status) |
1109 | { | 1110 | { |
1110 | u32 status; | 1111 | u32 status; |
@@ -2362,11 +2363,11 @@ static int megasas_mgmt_fasync(int fd, struct file *filep, int mode) | |||
2362 | { | 2363 | { |
2363 | int rc; | 2364 | int rc; |
2364 | 2365 | ||
2365 | down(&megasas_async_queue_mutex); | 2366 | mutex_lock(&megasas_async_queue_mutex); |
2366 | 2367 | ||
2367 | rc = fasync_helper(fd, filep, mode, &megasas_async_queue); | 2368 | rc = fasync_helper(fd, filep, mode, &megasas_async_queue); |
2368 | 2369 | ||
2369 | up(&megasas_async_queue_mutex); | 2370 | mutex_unlock(&megasas_async_queue_mutex); |
2370 | 2371 | ||
2371 | if (rc >= 0) { | 2372 | if (rc >= 0) { |
2372 | /* For sanity check when we get ioctl */ | 2373 | /* For sanity check when we get ioctl */ |
diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c index bdccf73cf9fe..d6d2125f9044 100644 --- a/drivers/scsi/mesh.c +++ b/drivers/scsi/mesh.c | |||
@@ -1869,7 +1869,8 @@ static int mesh_probe(struct macio_dev *mdev, const struct of_device_id *match) | |||
1869 | 1869 | ||
1870 | if (macio_resource_count(mdev) != 2 || macio_irq_count(mdev) != 2) { | 1870 | if (macio_resource_count(mdev) != 2 || macio_irq_count(mdev) != 2) { |
1871 | printk(KERN_ERR "mesh: expected 2 addrs and 2 intrs" | 1871 | printk(KERN_ERR "mesh: expected 2 addrs and 2 intrs" |
1872 | " (got %d,%d)\n", mesh->n_addrs, mesh->n_intrs); | 1872 | " (got %d,%d)\n", macio_resource_count(mdev), |
1873 | macio_irq_count(mdev)); | ||
1873 | return -ENODEV; | 1874 | return -ENODEV; |
1874 | } | 1875 | } |
1875 | 1876 | ||
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index 243470936fab..32350707b940 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c | |||
@@ -131,7 +131,739 @@ | |||
131 | #define NAME53C "ncr53c" | 131 | #define NAME53C "ncr53c" |
132 | #define NAME53C8XX "ncr53c8xx" | 132 | #define NAME53C8XX "ncr53c8xx" |
133 | 133 | ||
134 | #include "sym53c8xx_comm.h" | 134 | |
135 | /*========================================================== | ||
136 | ** | ||
137 | ** Debugging tags | ||
138 | ** | ||
139 | **========================================================== | ||
140 | */ | ||
141 | |||
142 | #define DEBUG_ALLOC (0x0001) | ||
143 | #define DEBUG_PHASE (0x0002) | ||
144 | #define DEBUG_QUEUE (0x0008) | ||
145 | #define DEBUG_RESULT (0x0010) | ||
146 | #define DEBUG_POINTER (0x0020) | ||
147 | #define DEBUG_SCRIPT (0x0040) | ||
148 | #define DEBUG_TINY (0x0080) | ||
149 | #define DEBUG_TIMING (0x0100) | ||
150 | #define DEBUG_NEGO (0x0200) | ||
151 | #define DEBUG_TAGS (0x0400) | ||
152 | #define DEBUG_SCATTER (0x0800) | ||
153 | #define DEBUG_IC (0x1000) | ||
154 | |||
155 | /* | ||
156 | ** Enable/Disable debug messages. | ||
157 | ** Can be changed at runtime too. | ||
158 | */ | ||
159 | |||
160 | #ifdef SCSI_NCR_DEBUG_INFO_SUPPORT | ||
161 | static int ncr_debug = SCSI_NCR_DEBUG_FLAGS; | ||
162 | #define DEBUG_FLAGS ncr_debug | ||
163 | #else | ||
164 | #define DEBUG_FLAGS SCSI_NCR_DEBUG_FLAGS | ||
165 | #endif | ||
166 | |||
167 | static inline struct list_head *ncr_list_pop(struct list_head *head) | ||
168 | { | ||
169 | if (!list_empty(head)) { | ||
170 | struct list_head *elem = head->next; | ||
171 | |||
172 | list_del(elem); | ||
173 | return elem; | ||
174 | } | ||
175 | |||
176 | return NULL; | ||
177 | } | ||
178 | |||
179 | /*========================================================== | ||
180 | ** | ||
181 | ** Simple power of two buddy-like allocator. | ||
182 | ** | ||
183 | ** This simple code is not intended to be fast, but to | ||
184 | ** provide power of 2 aligned memory allocations. | ||
185 | ** Since the SCRIPTS processor only supplies 8 bit | ||
186 | ** arithmetic, this allocator allows simple and fast | ||
187 | ** address calculations from the SCRIPTS code. | ||
188 | ** In addition, cache line alignment is guaranteed for | ||
189 | ** power of 2 cache line size. | ||
190 | ** Enhanced in linux-2.3.44 to provide a memory pool | ||
191 | ** per pcidev to support dynamic dma mapping. (I would | ||
192 | ** have preferred a real bus astraction, btw). | ||
193 | ** | ||
194 | **========================================================== | ||
195 | */ | ||
196 | |||
197 | #define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */ | ||
198 | #if PAGE_SIZE >= 8192 | ||
199 | #define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */ | ||
200 | #else | ||
201 | #define MEMO_PAGE_ORDER 1 /* 2 PAGES maximum */ | ||
202 | #endif | ||
203 | #define MEMO_FREE_UNUSED /* Free unused pages immediately */ | ||
204 | #define MEMO_WARN 1 | ||
205 | #define MEMO_GFP_FLAGS GFP_ATOMIC | ||
206 | #define MEMO_CLUSTER_SHIFT (PAGE_SHIFT+MEMO_PAGE_ORDER) | ||
207 | #define MEMO_CLUSTER_SIZE (1UL << MEMO_CLUSTER_SHIFT) | ||
208 | #define MEMO_CLUSTER_MASK (MEMO_CLUSTER_SIZE-1) | ||
209 | |||
210 | typedef u_long m_addr_t; /* Enough bits to bit-hack addresses */ | ||
211 | typedef struct device *m_bush_t; /* Something that addresses DMAable */ | ||
212 | |||
213 | typedef struct m_link { /* Link between free memory chunks */ | ||
214 | struct m_link *next; | ||
215 | } m_link_s; | ||
216 | |||
217 | typedef struct m_vtob { /* Virtual to Bus address translation */ | ||
218 | struct m_vtob *next; | ||
219 | m_addr_t vaddr; | ||
220 | m_addr_t baddr; | ||
221 | } m_vtob_s; | ||
222 | #define VTOB_HASH_SHIFT 5 | ||
223 | #define VTOB_HASH_SIZE (1UL << VTOB_HASH_SHIFT) | ||
224 | #define VTOB_HASH_MASK (VTOB_HASH_SIZE-1) | ||
225 | #define VTOB_HASH_CODE(m) \ | ||
226 | ((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK) | ||
227 | |||
228 | typedef struct m_pool { /* Memory pool of a given kind */ | ||
229 | m_bush_t bush; | ||
230 | m_addr_t (*getp)(struct m_pool *); | ||
231 | void (*freep)(struct m_pool *, m_addr_t); | ||
232 | int nump; | ||
233 | m_vtob_s *(vtob[VTOB_HASH_SIZE]); | ||
234 | struct m_pool *next; | ||
235 | struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1]; | ||
236 | } m_pool_s; | ||
237 | |||
238 | static void *___m_alloc(m_pool_s *mp, int size) | ||
239 | { | ||
240 | int i = 0; | ||
241 | int s = (1 << MEMO_SHIFT); | ||
242 | int j; | ||
243 | m_addr_t a; | ||
244 | m_link_s *h = mp->h; | ||
245 | |||
246 | if (size > (PAGE_SIZE << MEMO_PAGE_ORDER)) | ||
247 | return NULL; | ||
248 | |||
249 | while (size > s) { | ||
250 | s <<= 1; | ||
251 | ++i; | ||
252 | } | ||
253 | |||
254 | j = i; | ||
255 | while (!h[j].next) { | ||
256 | if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) { | ||
257 | h[j].next = (m_link_s *)mp->getp(mp); | ||
258 | if (h[j].next) | ||
259 | h[j].next->next = NULL; | ||
260 | break; | ||
261 | } | ||
262 | ++j; | ||
263 | s <<= 1; | ||
264 | } | ||
265 | a = (m_addr_t) h[j].next; | ||
266 | if (a) { | ||
267 | h[j].next = h[j].next->next; | ||
268 | while (j > i) { | ||
269 | j -= 1; | ||
270 | s >>= 1; | ||
271 | h[j].next = (m_link_s *) (a+s); | ||
272 | h[j].next->next = NULL; | ||
273 | } | ||
274 | } | ||
275 | #ifdef DEBUG | ||
276 | printk("___m_alloc(%d) = %p\n", size, (void *) a); | ||
277 | #endif | ||
278 | return (void *) a; | ||
279 | } | ||
280 | |||
281 | static void ___m_free(m_pool_s *mp, void *ptr, int size) | ||
282 | { | ||
283 | int i = 0; | ||
284 | int s = (1 << MEMO_SHIFT); | ||
285 | m_link_s *q; | ||
286 | m_addr_t a, b; | ||
287 | m_link_s *h = mp->h; | ||
288 | |||
289 | #ifdef DEBUG | ||
290 | printk("___m_free(%p, %d)\n", ptr, size); | ||
291 | #endif | ||
292 | |||
293 | if (size > (PAGE_SIZE << MEMO_PAGE_ORDER)) | ||
294 | return; | ||
295 | |||
296 | while (size > s) { | ||
297 | s <<= 1; | ||
298 | ++i; | ||
299 | } | ||
300 | |||
301 | a = (m_addr_t) ptr; | ||
302 | |||
303 | while (1) { | ||
304 | #ifdef MEMO_FREE_UNUSED | ||
305 | if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) { | ||
306 | mp->freep(mp, a); | ||
307 | break; | ||
308 | } | ||
309 | #endif | ||
310 | b = a ^ s; | ||
311 | q = &h[i]; | ||
312 | while (q->next && q->next != (m_link_s *) b) { | ||
313 | q = q->next; | ||
314 | } | ||
315 | if (!q->next) { | ||
316 | ((m_link_s *) a)->next = h[i].next; | ||
317 | h[i].next = (m_link_s *) a; | ||
318 | break; | ||
319 | } | ||
320 | q->next = q->next->next; | ||
321 | a = a & b; | ||
322 | s <<= 1; | ||
323 | ++i; | ||
324 | } | ||
325 | } | ||
326 | |||
327 | static DEFINE_SPINLOCK(ncr53c8xx_lock); | ||
328 | |||
329 | static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags) | ||
330 | { | ||
331 | void *p; | ||
332 | |||
333 | p = ___m_alloc(mp, size); | ||
334 | |||
335 | if (DEBUG_FLAGS & DEBUG_ALLOC) | ||
336 | printk ("new %-10s[%4d] @%p.\n", name, size, p); | ||
337 | |||
338 | if (p) | ||
339 | memset(p, 0, size); | ||
340 | else if (uflags & MEMO_WARN) | ||
341 | printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size); | ||
342 | |||
343 | return p; | ||
344 | } | ||
345 | |||
346 | #define __m_calloc(mp, s, n) __m_calloc2(mp, s, n, MEMO_WARN) | ||
347 | |||
348 | static void __m_free(m_pool_s *mp, void *ptr, int size, char *name) | ||
349 | { | ||
350 | if (DEBUG_FLAGS & DEBUG_ALLOC) | ||
351 | printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr); | ||
352 | |||
353 | ___m_free(mp, ptr, size); | ||
354 | |||
355 | } | ||
356 | |||
357 | /* | ||
358 | * With pci bus iommu support, we use a default pool of unmapped memory | ||
359 | * for memory we donnot need to DMA from/to and one pool per pcidev for | ||
360 | * memory accessed by the PCI chip. `mp0' is the default not DMAable pool. | ||
361 | */ | ||
362 | |||
363 | static m_addr_t ___mp0_getp(m_pool_s *mp) | ||
364 | { | ||
365 | m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER); | ||
366 | if (m) | ||
367 | ++mp->nump; | ||
368 | return m; | ||
369 | } | ||
370 | |||
371 | static void ___mp0_freep(m_pool_s *mp, m_addr_t m) | ||
372 | { | ||
373 | free_pages(m, MEMO_PAGE_ORDER); | ||
374 | --mp->nump; | ||
375 | } | ||
376 | |||
377 | static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep}; | ||
378 | |||
379 | /* | ||
380 | * DMAable pools. | ||
381 | */ | ||
382 | |||
383 | /* | ||
384 | * With pci bus iommu support, we maintain one pool per pcidev and a | ||
385 | * hashed reverse table for virtual to bus physical address translations. | ||
386 | */ | ||
387 | static m_addr_t ___dma_getp(m_pool_s *mp) | ||
388 | { | ||
389 | m_addr_t vp; | ||
390 | m_vtob_s *vbp; | ||
391 | |||
392 | vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB"); | ||
393 | if (vbp) { | ||
394 | dma_addr_t daddr; | ||
395 | vp = (m_addr_t) dma_alloc_coherent(mp->bush, | ||
396 | PAGE_SIZE<<MEMO_PAGE_ORDER, | ||
397 | &daddr, GFP_ATOMIC); | ||
398 | if (vp) { | ||
399 | int hc = VTOB_HASH_CODE(vp); | ||
400 | vbp->vaddr = vp; | ||
401 | vbp->baddr = daddr; | ||
402 | vbp->next = mp->vtob[hc]; | ||
403 | mp->vtob[hc] = vbp; | ||
404 | ++mp->nump; | ||
405 | return vp; | ||
406 | } | ||
407 | } | ||
408 | if (vbp) | ||
409 | __m_free(&mp0, vbp, sizeof(*vbp), "VTOB"); | ||
410 | return 0; | ||
411 | } | ||
412 | |||
413 | static void ___dma_freep(m_pool_s *mp, m_addr_t m) | ||
414 | { | ||
415 | m_vtob_s **vbpp, *vbp; | ||
416 | int hc = VTOB_HASH_CODE(m); | ||
417 | |||
418 | vbpp = &mp->vtob[hc]; | ||
419 | while (*vbpp && (*vbpp)->vaddr != m) | ||
420 | vbpp = &(*vbpp)->next; | ||
421 | if (*vbpp) { | ||
422 | vbp = *vbpp; | ||
423 | *vbpp = (*vbpp)->next; | ||
424 | dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER, | ||
425 | (void *)vbp->vaddr, (dma_addr_t)vbp->baddr); | ||
426 | __m_free(&mp0, vbp, sizeof(*vbp), "VTOB"); | ||
427 | --mp->nump; | ||
428 | } | ||
429 | } | ||
430 | |||
431 | static inline m_pool_s *___get_dma_pool(m_bush_t bush) | ||
432 | { | ||
433 | m_pool_s *mp; | ||
434 | for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next); | ||
435 | return mp; | ||
436 | } | ||
437 | |||
438 | static m_pool_s *___cre_dma_pool(m_bush_t bush) | ||
439 | { | ||
440 | m_pool_s *mp; | ||
441 | mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL"); | ||
442 | if (mp) { | ||
443 | memset(mp, 0, sizeof(*mp)); | ||
444 | mp->bush = bush; | ||
445 | mp->getp = ___dma_getp; | ||
446 | mp->freep = ___dma_freep; | ||
447 | mp->next = mp0.next; | ||
448 | mp0.next = mp; | ||
449 | } | ||
450 | return mp; | ||
451 | } | ||
452 | |||
453 | static void ___del_dma_pool(m_pool_s *p) | ||
454 | { | ||
455 | struct m_pool **pp = &mp0.next; | ||
456 | |||
457 | while (*pp && *pp != p) | ||
458 | pp = &(*pp)->next; | ||
459 | if (*pp) { | ||
460 | *pp = (*pp)->next; | ||
461 | __m_free(&mp0, p, sizeof(*p), "MPOOL"); | ||
462 | } | ||
463 | } | ||
464 | |||
465 | static void *__m_calloc_dma(m_bush_t bush, int size, char *name) | ||
466 | { | ||
467 | u_long flags; | ||
468 | struct m_pool *mp; | ||
469 | void *m = NULL; | ||
470 | |||
471 | spin_lock_irqsave(&ncr53c8xx_lock, flags); | ||
472 | mp = ___get_dma_pool(bush); | ||
473 | if (!mp) | ||
474 | mp = ___cre_dma_pool(bush); | ||
475 | if (mp) | ||
476 | m = __m_calloc(mp, size, name); | ||
477 | if (mp && !mp->nump) | ||
478 | ___del_dma_pool(mp); | ||
479 | spin_unlock_irqrestore(&ncr53c8xx_lock, flags); | ||
480 | |||
481 | return m; | ||
482 | } | ||
483 | |||
484 | static void __m_free_dma(m_bush_t bush, void *m, int size, char *name) | ||
485 | { | ||
486 | u_long flags; | ||
487 | struct m_pool *mp; | ||
488 | |||
489 | spin_lock_irqsave(&ncr53c8xx_lock, flags); | ||
490 | mp = ___get_dma_pool(bush); | ||
491 | if (mp) | ||
492 | __m_free(mp, m, size, name); | ||
493 | if (mp && !mp->nump) | ||
494 | ___del_dma_pool(mp); | ||
495 | spin_unlock_irqrestore(&ncr53c8xx_lock, flags); | ||
496 | } | ||
497 | |||
498 | static m_addr_t __vtobus(m_bush_t bush, void *m) | ||
499 | { | ||
500 | u_long flags; | ||
501 | m_pool_s *mp; | ||
502 | int hc = VTOB_HASH_CODE(m); | ||
503 | m_vtob_s *vp = NULL; | ||
504 | m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK; | ||
505 | |||
506 | spin_lock_irqsave(&ncr53c8xx_lock, flags); | ||
507 | mp = ___get_dma_pool(bush); | ||
508 | if (mp) { | ||
509 | vp = mp->vtob[hc]; | ||
510 | while (vp && (m_addr_t) vp->vaddr != a) | ||
511 | vp = vp->next; | ||
512 | } | ||
513 | spin_unlock_irqrestore(&ncr53c8xx_lock, flags); | ||
514 | return vp ? vp->baddr + (((m_addr_t) m) - a) : 0; | ||
515 | } | ||
516 | |||
517 | #define _m_calloc_dma(np, s, n) __m_calloc_dma(np->dev, s, n) | ||
518 | #define _m_free_dma(np, p, s, n) __m_free_dma(np->dev, p, s, n) | ||
519 | #define m_calloc_dma(s, n) _m_calloc_dma(np, s, n) | ||
520 | #define m_free_dma(p, s, n) _m_free_dma(np, p, s, n) | ||
521 | #define _vtobus(np, p) __vtobus(np->dev, p) | ||
522 | #define vtobus(p) _vtobus(np, p) | ||
523 | |||
524 | /* | ||
525 | * Deal with DMA mapping/unmapping. | ||
526 | */ | ||
527 | |||
528 | /* To keep track of the dma mapping (sg/single) that has been set */ | ||
529 | #define __data_mapped SCp.phase | ||
530 | #define __data_mapping SCp.have_data_in | ||
531 | |||
532 | static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd) | ||
533 | { | ||
534 | switch(cmd->__data_mapped) { | ||
535 | case 2: | ||
536 | dma_unmap_sg(dev, cmd->buffer, cmd->use_sg, | ||
537 | cmd->sc_data_direction); | ||
538 | break; | ||
539 | case 1: | ||
540 | dma_unmap_single(dev, cmd->__data_mapping, | ||
541 | cmd->request_bufflen, | ||
542 | cmd->sc_data_direction); | ||
543 | break; | ||
544 | } | ||
545 | cmd->__data_mapped = 0; | ||
546 | } | ||
547 | |||
548 | static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd) | ||
549 | { | ||
550 | dma_addr_t mapping; | ||
551 | |||
552 | if (cmd->request_bufflen == 0) | ||
553 | return 0; | ||
554 | |||
555 | mapping = dma_map_single(dev, cmd->request_buffer, | ||
556 | cmd->request_bufflen, | ||
557 | cmd->sc_data_direction); | ||
558 | cmd->__data_mapped = 1; | ||
559 | cmd->__data_mapping = mapping; | ||
560 | |||
561 | return mapping; | ||
562 | } | ||
563 | |||
564 | static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd) | ||
565 | { | ||
566 | int use_sg; | ||
567 | |||
568 | if (cmd->use_sg == 0) | ||
569 | return 0; | ||
570 | |||
571 | use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg, | ||
572 | cmd->sc_data_direction); | ||
573 | cmd->__data_mapped = 2; | ||
574 | cmd->__data_mapping = use_sg; | ||
575 | |||
576 | return use_sg; | ||
577 | } | ||
578 | |||
579 | #define unmap_scsi_data(np, cmd) __unmap_scsi_data(np->dev, cmd) | ||
580 | #define map_scsi_single_data(np, cmd) __map_scsi_single_data(np->dev, cmd) | ||
581 | #define map_scsi_sg_data(np, cmd) __map_scsi_sg_data(np->dev, cmd) | ||
582 | |||
583 | /*========================================================== | ||
584 | ** | ||
585 | ** Driver setup. | ||
586 | ** | ||
587 | ** This structure is initialized from linux config | ||
588 | ** options. It can be overridden at boot-up by the boot | ||
589 | ** command line. | ||
590 | ** | ||
591 | **========================================================== | ||
592 | */ | ||
593 | static struct ncr_driver_setup | ||
594 | driver_setup = SCSI_NCR_DRIVER_SETUP; | ||
595 | |||
596 | #ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT | ||
597 | static struct ncr_driver_setup | ||
598 | driver_safe_setup __initdata = SCSI_NCR_DRIVER_SAFE_SETUP; | ||
599 | #endif | ||
600 | |||
601 | #define initverbose (driver_setup.verbose) | ||
602 | #define bootverbose (np->verbose) | ||
603 | |||
604 | |||
605 | /*=================================================================== | ||
606 | ** | ||
607 | ** Driver setup from the boot command line | ||
608 | ** | ||
609 | **=================================================================== | ||
610 | */ | ||
611 | |||
612 | #ifdef MODULE | ||
613 | #define ARG_SEP ' ' | ||
614 | #else | ||
615 | #define ARG_SEP ',' | ||
616 | #endif | ||
617 | |||
618 | #define OPT_TAGS 1 | ||
619 | #define OPT_MASTER_PARITY 2 | ||
620 | #define OPT_SCSI_PARITY 3 | ||
621 | #define OPT_DISCONNECTION 4 | ||
622 | #define OPT_SPECIAL_FEATURES 5 | ||
623 | #define OPT_UNUSED_1 6 | ||
624 | #define OPT_FORCE_SYNC_NEGO 7 | ||
625 | #define OPT_REVERSE_PROBE 8 | ||
626 | #define OPT_DEFAULT_SYNC 9 | ||
627 | #define OPT_VERBOSE 10 | ||
628 | #define OPT_DEBUG 11 | ||
629 | #define OPT_BURST_MAX 12 | ||
630 | #define OPT_LED_PIN 13 | ||
631 | #define OPT_MAX_WIDE 14 | ||
632 | #define OPT_SETTLE_DELAY 15 | ||
633 | #define OPT_DIFF_SUPPORT 16 | ||
634 | #define OPT_IRQM 17 | ||
635 | #define OPT_PCI_FIX_UP 18 | ||
636 | #define OPT_BUS_CHECK 19 | ||
637 | #define OPT_OPTIMIZE 20 | ||
638 | #define OPT_RECOVERY 21 | ||
639 | #define OPT_SAFE_SETUP 22 | ||
640 | #define OPT_USE_NVRAM 23 | ||
641 | #define OPT_EXCLUDE 24 | ||
642 | #define OPT_HOST_ID 25 | ||
643 | |||
644 | #ifdef SCSI_NCR_IARB_SUPPORT | ||
645 | #define OPT_IARB 26 | ||
646 | #endif | ||
647 | |||
648 | static char setup_token[] __initdata = | ||
649 | "tags:" "mpar:" | ||
650 | "spar:" "disc:" | ||
651 | "specf:" "ultra:" | ||
652 | "fsn:" "revprob:" | ||
653 | "sync:" "verb:" | ||
654 | "debug:" "burst:" | ||
655 | "led:" "wide:" | ||
656 | "settle:" "diff:" | ||
657 | "irqm:" "pcifix:" | ||
658 | "buschk:" "optim:" | ||
659 | "recovery:" | ||
660 | "safe:" "nvram:" | ||
661 | "excl:" "hostid:" | ||
662 | #ifdef SCSI_NCR_IARB_SUPPORT | ||
663 | "iarb:" | ||
664 | #endif | ||
665 | ; /* DONNOT REMOVE THIS ';' */ | ||
666 | |||
667 | #ifdef MODULE | ||
668 | #define ARG_SEP ' ' | ||
669 | #else | ||
670 | #define ARG_SEP ',' | ||
671 | #endif | ||
672 | |||
673 | static int __init get_setup_token(char *p) | ||
674 | { | ||
675 | char *cur = setup_token; | ||
676 | char *pc; | ||
677 | int i = 0; | ||
678 | |||
679 | while (cur != NULL && (pc = strchr(cur, ':')) != NULL) { | ||
680 | ++pc; | ||
681 | ++i; | ||
682 | if (!strncmp(p, cur, pc - cur)) | ||
683 | return i; | ||
684 | cur = pc; | ||
685 | } | ||
686 | return 0; | ||
687 | } | ||
688 | |||
689 | |||
690 | static int __init sym53c8xx__setup(char *str) | ||
691 | { | ||
692 | #ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT | ||
693 | char *cur = str; | ||
694 | char *pc, *pv; | ||
695 | int i, val, c; | ||
696 | int xi = 0; | ||
697 | |||
698 | while (cur != NULL && (pc = strchr(cur, ':')) != NULL) { | ||
699 | char *pe; | ||
700 | |||
701 | val = 0; | ||
702 | pv = pc; | ||
703 | c = *++pv; | ||
704 | |||
705 | if (c == 'n') | ||
706 | val = 0; | ||
707 | else if (c == 'y') | ||
708 | val = 1; | ||
709 | else | ||
710 | val = (int) simple_strtoul(pv, &pe, 0); | ||
711 | |||
712 | switch (get_setup_token(cur)) { | ||
713 | case OPT_TAGS: | ||
714 | driver_setup.default_tags = val; | ||
715 | if (pe && *pe == '/') { | ||
716 | i = 0; | ||
717 | while (*pe && *pe != ARG_SEP && | ||
718 | i < sizeof(driver_setup.tag_ctrl)-1) { | ||
719 | driver_setup.tag_ctrl[i++] = *pe++; | ||
720 | } | ||
721 | driver_setup.tag_ctrl[i] = '\0'; | ||
722 | } | ||
723 | break; | ||
724 | case OPT_MASTER_PARITY: | ||
725 | driver_setup.master_parity = val; | ||
726 | break; | ||
727 | case OPT_SCSI_PARITY: | ||
728 | driver_setup.scsi_parity = val; | ||
729 | break; | ||
730 | case OPT_DISCONNECTION: | ||
731 | driver_setup.disconnection = val; | ||
732 | break; | ||
733 | case OPT_SPECIAL_FEATURES: | ||
734 | driver_setup.special_features = val; | ||
735 | break; | ||
736 | case OPT_FORCE_SYNC_NEGO: | ||
737 | driver_setup.force_sync_nego = val; | ||
738 | break; | ||
739 | case OPT_REVERSE_PROBE: | ||
740 | driver_setup.reverse_probe = val; | ||
741 | break; | ||
742 | case OPT_DEFAULT_SYNC: | ||
743 | driver_setup.default_sync = val; | ||
744 | break; | ||
745 | case OPT_VERBOSE: | ||
746 | driver_setup.verbose = val; | ||
747 | break; | ||
748 | case OPT_DEBUG: | ||
749 | driver_setup.debug = val; | ||
750 | break; | ||
751 | case OPT_BURST_MAX: | ||
752 | driver_setup.burst_max = val; | ||
753 | break; | ||
754 | case OPT_LED_PIN: | ||
755 | driver_setup.led_pin = val; | ||
756 | break; | ||
757 | case OPT_MAX_WIDE: | ||
758 | driver_setup.max_wide = val? 1:0; | ||
759 | break; | ||
760 | case OPT_SETTLE_DELAY: | ||
761 | driver_setup.settle_delay = val; | ||
762 | break; | ||
763 | case OPT_DIFF_SUPPORT: | ||
764 | driver_setup.diff_support = val; | ||
765 | break; | ||
766 | case OPT_IRQM: | ||
767 | driver_setup.irqm = val; | ||
768 | break; | ||
769 | case OPT_PCI_FIX_UP: | ||
770 | driver_setup.pci_fix_up = val; | ||
771 | break; | ||
772 | case OPT_BUS_CHECK: | ||
773 | driver_setup.bus_check = val; | ||
774 | break; | ||
775 | case OPT_OPTIMIZE: | ||
776 | driver_setup.optimize = val; | ||
777 | break; | ||
778 | case OPT_RECOVERY: | ||
779 | driver_setup.recovery = val; | ||
780 | break; | ||
781 | case OPT_USE_NVRAM: | ||
782 | driver_setup.use_nvram = val; | ||
783 | break; | ||
784 | case OPT_SAFE_SETUP: | ||
785 | memcpy(&driver_setup, &driver_safe_setup, | ||
786 | sizeof(driver_setup)); | ||
787 | break; | ||
788 | case OPT_EXCLUDE: | ||
789 | if (xi < SCSI_NCR_MAX_EXCLUDES) | ||
790 | driver_setup.excludes[xi++] = val; | ||
791 | break; | ||
792 | case OPT_HOST_ID: | ||
793 | driver_setup.host_id = val; | ||
794 | break; | ||
795 | #ifdef SCSI_NCR_IARB_SUPPORT | ||
796 | case OPT_IARB: | ||
797 | driver_setup.iarb = val; | ||
798 | break; | ||
799 | #endif | ||
800 | default: | ||
801 | printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur); | ||
802 | break; | ||
803 | } | ||
804 | |||
805 | if ((cur = strchr(cur, ARG_SEP)) != NULL) | ||
806 | ++cur; | ||
807 | } | ||
808 | #endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */ | ||
809 | return 1; | ||
810 | } | ||
811 | |||
812 | /*=================================================================== | ||
813 | ** | ||
814 | ** Get device queue depth from boot command line. | ||
815 | ** | ||
816 | **=================================================================== | ||
817 | */ | ||
818 | #define DEF_DEPTH (driver_setup.default_tags) | ||
819 | #define ALL_TARGETS -2 | ||
820 | #define NO_TARGET -1 | ||
821 | #define ALL_LUNS -2 | ||
822 | #define NO_LUN -1 | ||
823 | |||
824 | static int device_queue_depth(int unit, int target, int lun) | ||
825 | { | ||
826 | int c, h, t, u, v; | ||
827 | char *p = driver_setup.tag_ctrl; | ||
828 | char *ep; | ||
829 | |||
830 | h = -1; | ||
831 | t = NO_TARGET; | ||
832 | u = NO_LUN; | ||
833 | while ((c = *p++) != 0) { | ||
834 | v = simple_strtoul(p, &ep, 0); | ||
835 | switch(c) { | ||
836 | case '/': | ||
837 | ++h; | ||
838 | t = ALL_TARGETS; | ||
839 | u = ALL_LUNS; | ||
840 | break; | ||
841 | case 't': | ||
842 | if (t != target) | ||
843 | t = (target == v) ? v : NO_TARGET; | ||
844 | u = ALL_LUNS; | ||
845 | break; | ||
846 | case 'u': | ||
847 | if (u != lun) | ||
848 | u = (lun == v) ? v : NO_LUN; | ||
849 | break; | ||
850 | case 'q': | ||
851 | if (h == unit && | ||
852 | (t == ALL_TARGETS || t == target) && | ||
853 | (u == ALL_LUNS || u == lun)) | ||
854 | return v; | ||
855 | break; | ||
856 | case '-': | ||
857 | t = ALL_TARGETS; | ||
858 | u = ALL_LUNS; | ||
859 | break; | ||
860 | default: | ||
861 | break; | ||
862 | } | ||
863 | p = ep; | ||
864 | } | ||
865 | return DEF_DEPTH; | ||
866 | } | ||
135 | 867 | ||
136 | 868 | ||
137 | /*========================================================== | 869 | /*========================================================== |
@@ -2971,21 +3703,10 @@ struct host_data { | |||
2971 | 3703 | ||
2972 | static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg) | 3704 | static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg) |
2973 | { | 3705 | { |
2974 | int i; | ||
2975 | PRINT_ADDR(cp->cmd, "%s: ", label); | 3706 | PRINT_ADDR(cp->cmd, "%s: ", label); |
2976 | 3707 | ||
2977 | printk ("%x",*msg); | 3708 | spi_print_msg(msg); |
2978 | if (*msg == M_EXTENDED) { | 3709 | printk("\n"); |
2979 | for (i = 1; i < 8; i++) { | ||
2980 | if (i - 1 > msg[1]) | ||
2981 | break; | ||
2982 | printk ("-%x",msg[i]); | ||
2983 | } | ||
2984 | } else if ((*msg & 0xf0) == 0x20) { | ||
2985 | printk ("-%x",msg[1]); | ||
2986 | } | ||
2987 | |||
2988 | printk(".\n"); | ||
2989 | } | 3710 | } |
2990 | 3711 | ||
2991 | /*========================================================== | 3712 | /*========================================================== |
diff --git a/drivers/scsi/ncr53c8xx.h b/drivers/scsi/ncr53c8xx.h index 05c7b83cef09..6a7bef2e6118 100644 --- a/drivers/scsi/ncr53c8xx.h +++ b/drivers/scsi/ncr53c8xx.h | |||
@@ -2,6 +2,7 @@ | |||
2 | ** Device driver for the PCI-SCSI NCR538XX controller family. | 2 | ** Device driver for the PCI-SCSI NCR538XX controller family. |
3 | ** | 3 | ** |
4 | ** Copyright (C) 1994 Wolfgang Stanglmeier | 4 | ** Copyright (C) 1994 Wolfgang Stanglmeier |
5 | ** Copyright (C) 1998-2001 Gerard Roudier <groudier@free.fr> | ||
5 | ** | 6 | ** |
6 | ** This program is free software; you can redistribute it and/or modify | 7 | ** This program is free software; you can redistribute it and/or modify |
7 | ** it under the terms of the GNU General Public License as published by | 8 | ** it under the terms of the GNU General Public License as published by |
@@ -36,15 +37,1275 @@ | |||
36 | ** And has been ported to NetBSD by | 37 | ** And has been ported to NetBSD by |
37 | ** Charles M. Hannum <mycroft@gnu.ai.mit.edu> | 38 | ** Charles M. Hannum <mycroft@gnu.ai.mit.edu> |
38 | ** | 39 | ** |
40 | ** NVRAM detection and reading. | ||
41 | ** Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk> | ||
42 | ** | ||
43 | ** Added support for MIPS big endian systems. | ||
44 | ** Carsten Langgaard, carstenl@mips.com | ||
45 | ** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. | ||
46 | ** | ||
47 | ** Added support for HP PARISC big endian systems. | ||
48 | ** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. | ||
49 | ** | ||
39 | ******************************************************************************* | 50 | ******************************************************************************* |
40 | */ | 51 | */ |
41 | 52 | ||
42 | #ifndef NCR53C8XX_H | 53 | #ifndef NCR53C8XX_H |
43 | #define NCR53C8XX_H | 54 | #define NCR53C8XX_H |
44 | 55 | ||
56 | #include <linux/config.h> | ||
45 | #include <scsi/scsi_host.h> | 57 | #include <scsi/scsi_host.h> |
46 | 58 | ||
47 | #include "sym53c8xx_defs.h" | 59 | /* |
60 | ** If you want a driver as small as possible, do not define the | ||
61 | ** following options. | ||
62 | */ | ||
63 | #define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT | ||
64 | #define SCSI_NCR_DEBUG_INFO_SUPPORT | ||
65 | |||
66 | /* | ||
67 | ** To disable integrity checking, do not define the | ||
68 | ** following option. | ||
69 | */ | ||
70 | #ifdef CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK | ||
71 | # define SCSI_NCR_ENABLE_INTEGRITY_CHECK | ||
72 | #endif | ||
73 | |||
74 | /* --------------------------------------------------------------------- | ||
75 | ** Take into account kernel configured parameters. | ||
76 | ** Most of these options can be overridden at startup by a command line. | ||
77 | ** --------------------------------------------------------------------- | ||
78 | */ | ||
79 | |||
80 | /* | ||
81 | * For Ultra2 and Ultra3 SCSI support option, use special features. | ||
82 | * | ||
83 | * Value (default) means: | ||
84 | * bit 0 : all features enabled, except: | ||
85 | * bit 1 : PCI Write And Invalidate. | ||
86 | * bit 2 : Data Phase Mismatch handling from SCRIPTS. | ||
87 | * | ||
88 | * Use boot options ncr53c8xx=specf:1 if you want all chip features to be | ||
89 | * enabled by the driver. | ||
90 | */ | ||
91 | #define SCSI_NCR_SETUP_SPECIAL_FEATURES (3) | ||
92 | |||
93 | #define SCSI_NCR_MAX_SYNC (80) | ||
94 | |||
95 | /* | ||
96 | * Allow tags from 2 to 256, default 8 | ||
97 | */ | ||
98 | #ifdef CONFIG_SCSI_NCR53C8XX_MAX_TAGS | ||
99 | #if CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2 | ||
100 | #define SCSI_NCR_MAX_TAGS (2) | ||
101 | #elif CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256 | ||
102 | #define SCSI_NCR_MAX_TAGS (256) | ||
103 | #else | ||
104 | #define SCSI_NCR_MAX_TAGS CONFIG_SCSI_NCR53C8XX_MAX_TAGS | ||
105 | #endif | ||
106 | #else | ||
107 | #define SCSI_NCR_MAX_TAGS (8) | ||
108 | #endif | ||
109 | |||
110 | /* | ||
111 | * Allow tagged command queuing support if configured with default number | ||
112 | * of tags set to max (see above). | ||
113 | */ | ||
114 | #ifdef CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS | ||
115 | #define SCSI_NCR_SETUP_DEFAULT_TAGS CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS | ||
116 | #elif defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE | ||
117 | #define SCSI_NCR_SETUP_DEFAULT_TAGS SCSI_NCR_MAX_TAGS | ||
118 | #else | ||
119 | #define SCSI_NCR_SETUP_DEFAULT_TAGS (0) | ||
120 | #endif | ||
121 | |||
122 | /* | ||
123 | * Immediate arbitration | ||
124 | */ | ||
125 | #if defined(CONFIG_SCSI_NCR53C8XX_IARB) | ||
126 | #define SCSI_NCR_IARB_SUPPORT | ||
127 | #endif | ||
128 | |||
129 | /* | ||
130 | * Sync transfer frequency at startup. | ||
131 | * Allow from 5Mhz to 80Mhz default 20 Mhz. | ||
132 | */ | ||
133 | #ifndef CONFIG_SCSI_NCR53C8XX_SYNC | ||
134 | #define CONFIG_SCSI_NCR53C8XX_SYNC (20) | ||
135 | #elif CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC | ||
136 | #undef CONFIG_SCSI_NCR53C8XX_SYNC | ||
137 | #define CONFIG_SCSI_NCR53C8XX_SYNC SCSI_NCR_MAX_SYNC | ||
138 | #endif | ||
139 | |||
140 | #if CONFIG_SCSI_NCR53C8XX_SYNC == 0 | ||
141 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (255) | ||
142 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 5 | ||
143 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (50) | ||
144 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 20 | ||
145 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (250/(CONFIG_SCSI_NCR53C8XX_SYNC)) | ||
146 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 33 | ||
147 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (11) | ||
148 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 40 | ||
149 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (10) | ||
150 | #else | ||
151 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (9) | ||
152 | #endif | ||
153 | |||
154 | /* | ||
155 | * Disallow disconnections at boot-up | ||
156 | */ | ||
157 | #ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT | ||
158 | #define SCSI_NCR_SETUP_DISCONNECTION (0) | ||
159 | #else | ||
160 | #define SCSI_NCR_SETUP_DISCONNECTION (1) | ||
161 | #endif | ||
162 | |||
163 | /* | ||
164 | * Force synchronous negotiation for all targets | ||
165 | */ | ||
166 | #ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO | ||
167 | #define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (1) | ||
168 | #else | ||
169 | #define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (0) | ||
170 | #endif | ||
171 | |||
172 | /* | ||
173 | * Disable master parity checking (flawed hardwares need that) | ||
174 | */ | ||
175 | #ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK | ||
176 | #define SCSI_NCR_SETUP_MASTER_PARITY (0) | ||
177 | #else | ||
178 | #define SCSI_NCR_SETUP_MASTER_PARITY (1) | ||
179 | #endif | ||
180 | |||
181 | /* | ||
182 | * Disable scsi parity checking (flawed devices may need that) | ||
183 | */ | ||
184 | #ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK | ||
185 | #define SCSI_NCR_SETUP_SCSI_PARITY (0) | ||
186 | #else | ||
187 | #define SCSI_NCR_SETUP_SCSI_PARITY (1) | ||
188 | #endif | ||
189 | |||
190 | /* | ||
191 | * Settle time after reset at boot-up | ||
192 | */ | ||
193 | #define SCSI_NCR_SETUP_SETTLE_TIME (2) | ||
194 | |||
195 | /* | ||
196 | ** Bridge quirks work-around option defaulted to 1. | ||
197 | */ | ||
198 | #ifndef SCSI_NCR_PCIQ_WORK_AROUND_OPT | ||
199 | #define SCSI_NCR_PCIQ_WORK_AROUND_OPT 1 | ||
200 | #endif | ||
201 | |||
202 | /* | ||
203 | ** Work-around common bridge misbehaviour. | ||
204 | ** | ||
205 | ** - Do not flush posted writes in the opposite | ||
206 | ** direction on read. | ||
207 | ** - May reorder DMA writes to memory. | ||
208 | ** | ||
209 | ** This option should not affect performances | ||
210 | ** significantly, so it is the default. | ||
211 | */ | ||
212 | #if SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1 | ||
213 | #define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM | ||
214 | #define SCSI_NCR_PCIQ_MAY_REORDER_WRITES | ||
215 | #define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS | ||
216 | |||
217 | /* | ||
218 | ** Same as option 1, but also deal with | ||
219 | ** misconfigured interrupts. | ||
220 | ** | ||
221 | ** - Edge triggerred instead of level sensitive. | ||
222 | ** - No interrupt line connected. | ||
223 | ** - IRQ number misconfigured. | ||
224 | ** | ||
225 | ** If no interrupt is delivered, the driver will | ||
226 | ** catch the interrupt conditions 10 times per | ||
227 | ** second. No need to say that this option is | ||
228 | ** not recommended. | ||
229 | */ | ||
230 | #elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2 | ||
231 | #define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM | ||
232 | #define SCSI_NCR_PCIQ_MAY_REORDER_WRITES | ||
233 | #define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS | ||
234 | #define SCSI_NCR_PCIQ_BROKEN_INTR | ||
235 | |||
236 | /* | ||
237 | ** Some bridge designers decided to flush | ||
238 | ** everything prior to deliver the interrupt. | ||
239 | ** This option tries to deal with such a | ||
240 | ** behaviour. | ||
241 | */ | ||
242 | #elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3 | ||
243 | #define SCSI_NCR_PCIQ_SYNC_ON_INTR | ||
244 | #endif | ||
245 | |||
246 | /* | ||
247 | ** Other parameters not configurable with "make config" | ||
248 | ** Avoid to change these constants, unless you know what you are doing. | ||
249 | */ | ||
250 | |||
251 | #define SCSI_NCR_ALWAYS_SIMPLE_TAG | ||
252 | #define SCSI_NCR_MAX_SCATTER (127) | ||
253 | #define SCSI_NCR_MAX_TARGET (16) | ||
254 | |||
255 | /* | ||
256 | ** Compute some desirable value for CAN_QUEUE | ||
257 | ** and CMD_PER_LUN. | ||
258 | ** The driver will use lower values if these | ||
259 | ** ones appear to be too large. | ||
260 | */ | ||
261 | #define SCSI_NCR_CAN_QUEUE (8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET) | ||
262 | #define SCSI_NCR_CMD_PER_LUN (SCSI_NCR_MAX_TAGS) | ||
263 | |||
264 | #define SCSI_NCR_SG_TABLESIZE (SCSI_NCR_MAX_SCATTER) | ||
265 | #define SCSI_NCR_TIMER_INTERVAL (HZ) | ||
266 | |||
267 | #if 1 /* defined CONFIG_SCSI_MULTI_LUN */ | ||
268 | #define SCSI_NCR_MAX_LUN (16) | ||
269 | #else | ||
270 | #define SCSI_NCR_MAX_LUN (1) | ||
271 | #endif | ||
272 | |||
273 | /* | ||
274 | * IO functions definition for big/little endian CPU support. | ||
275 | * For now, the NCR is only supported in little endian addressing mode, | ||
276 | */ | ||
277 | |||
278 | #ifdef __BIG_ENDIAN | ||
279 | |||
280 | #define inw_l2b inw | ||
281 | #define inl_l2b inl | ||
282 | #define outw_b2l outw | ||
283 | #define outl_b2l outl | ||
284 | |||
285 | #define readb_raw readb | ||
286 | #define writeb_raw writeb | ||
287 | |||
288 | #if defined(SCSI_NCR_BIG_ENDIAN) | ||
289 | #define readw_l2b __raw_readw | ||
290 | #define readl_l2b __raw_readl | ||
291 | #define writew_b2l __raw_writew | ||
292 | #define writel_b2l __raw_writel | ||
293 | #define readw_raw __raw_readw | ||
294 | #define readl_raw __raw_readl | ||
295 | #define writew_raw __raw_writew | ||
296 | #define writel_raw __raw_writel | ||
297 | #else /* Other big-endian */ | ||
298 | #define readw_l2b readw | ||
299 | #define readl_l2b readl | ||
300 | #define writew_b2l writew | ||
301 | #define writel_b2l writel | ||
302 | #define readw_raw readw | ||
303 | #define readl_raw readl | ||
304 | #define writew_raw writew | ||
305 | #define writel_raw writel | ||
306 | #endif | ||
307 | |||
308 | #else /* little endian */ | ||
309 | |||
310 | #define inw_raw inw | ||
311 | #define inl_raw inl | ||
312 | #define outw_raw outw | ||
313 | #define outl_raw outl | ||
314 | |||
315 | #define readb_raw readb | ||
316 | #define readw_raw readw | ||
317 | #define readl_raw readl | ||
318 | #define writeb_raw writeb | ||
319 | #define writew_raw writew | ||
320 | #define writel_raw writel | ||
321 | |||
322 | #endif | ||
323 | |||
324 | #if !defined(__hppa__) && !defined(__mips__) | ||
325 | #ifdef SCSI_NCR_BIG_ENDIAN | ||
326 | #error "The NCR in BIG ENDIAN addressing mode is not (yet) supported" | ||
327 | #endif | ||
328 | #endif | ||
329 | |||
330 | #define MEMORY_BARRIER() mb() | ||
331 | |||
332 | |||
333 | /* | ||
334 | * If the NCR uses big endian addressing mode over the | ||
335 | * PCI, actual io register addresses for byte and word | ||
336 | * accesses must be changed according to lane routing. | ||
337 | * Btw, ncr_offb() and ncr_offw() macros only apply to | ||
338 | * constants and so donnot generate bloated code. | ||
339 | */ | ||
340 | |||
341 | #if defined(SCSI_NCR_BIG_ENDIAN) | ||
342 | |||
343 | #define ncr_offb(o) (((o)&~3)+((~((o)&3))&3)) | ||
344 | #define ncr_offw(o) (((o)&~3)+((~((o)&3))&2)) | ||
345 | |||
346 | #else | ||
347 | |||
348 | #define ncr_offb(o) (o) | ||
349 | #define ncr_offw(o) (o) | ||
350 | |||
351 | #endif | ||
352 | |||
353 | /* | ||
354 | * If the CPU and the NCR use same endian-ness addressing, | ||
355 | * no byte reordering is needed for script patching. | ||
356 | * Macro cpu_to_scr() is to be used for script patching. | ||
357 | * Macro scr_to_cpu() is to be used for getting a DWORD | ||
358 | * from the script. | ||
359 | */ | ||
360 | |||
361 | #if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN) | ||
362 | |||
363 | #define cpu_to_scr(dw) cpu_to_le32(dw) | ||
364 | #define scr_to_cpu(dw) le32_to_cpu(dw) | ||
365 | |||
366 | #elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN) | ||
367 | |||
368 | #define cpu_to_scr(dw) cpu_to_be32(dw) | ||
369 | #define scr_to_cpu(dw) be32_to_cpu(dw) | ||
370 | |||
371 | #else | ||
372 | |||
373 | #define cpu_to_scr(dw) (dw) | ||
374 | #define scr_to_cpu(dw) (dw) | ||
375 | |||
376 | #endif | ||
377 | |||
378 | /* | ||
379 | * Access to the controller chip. | ||
380 | * | ||
381 | * If the CPU and the NCR use same endian-ness addressing, | ||
382 | * no byte reordering is needed for accessing chip io | ||
383 | * registers. Functions suffixed by '_raw' are assumed | ||
384 | * to access the chip over the PCI without doing byte | ||
385 | * reordering. Functions suffixed by '_l2b' are | ||
386 | * assumed to perform little-endian to big-endian byte | ||
387 | * reordering, those suffixed by '_b2l' blah, blah, | ||
388 | * blah, ... | ||
389 | */ | ||
390 | |||
391 | /* | ||
392 | * MEMORY mapped IO input / output | ||
393 | */ | ||
394 | |||
395 | #define INB_OFF(o) readb_raw((char __iomem *)np->reg + ncr_offb(o)) | ||
396 | #define OUTB_OFF(o, val) writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o)) | ||
397 | |||
398 | #if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN) | ||
399 | |||
400 | #define INW_OFF(o) readw_l2b((char __iomem *)np->reg + ncr_offw(o)) | ||
401 | #define INL_OFF(o) readl_l2b((char __iomem *)np->reg + (o)) | ||
402 | |||
403 | #define OUTW_OFF(o, val) writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o)) | ||
404 | #define OUTL_OFF(o, val) writel_b2l((val), (char __iomem *)np->reg + (o)) | ||
405 | |||
406 | #elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN) | ||
407 | |||
408 | #define INW_OFF(o) readw_b2l((char __iomem *)np->reg + ncr_offw(o)) | ||
409 | #define INL_OFF(o) readl_b2l((char __iomem *)np->reg + (o)) | ||
410 | |||
411 | #define OUTW_OFF(o, val) writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o)) | ||
412 | #define OUTL_OFF(o, val) writel_l2b((val), (char __iomem *)np->reg + (o)) | ||
413 | |||
414 | #else | ||
415 | |||
416 | #ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS | ||
417 | /* Only 8 or 32 bit transfers allowed */ | ||
418 | #define INW_OFF(o) (readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1)) | ||
419 | #else | ||
420 | #define INW_OFF(o) readw_raw((char __iomem *)np->reg + ncr_offw(o)) | ||
421 | #endif | ||
422 | #define INL_OFF(o) readl_raw((char __iomem *)np->reg + (o)) | ||
423 | |||
424 | #ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS | ||
425 | /* Only 8 or 32 bit transfers allowed */ | ||
426 | #define OUTW_OFF(o, val) do { writeb((char)((val) >> 8), (char __iomem *)np->reg + ncr_offw(o)); writeb((char)(val), (char __iomem *)np->reg + ncr_offw(o) + 1); } while (0) | ||
427 | #else | ||
428 | #define OUTW_OFF(o, val) writew_raw((val), (char __iomem *)np->reg + ncr_offw(o)) | ||
429 | #endif | ||
430 | #define OUTL_OFF(o, val) writel_raw((val), (char __iomem *)np->reg + (o)) | ||
431 | |||
432 | #endif | ||
433 | |||
434 | #define INB(r) INB_OFF (offsetof(struct ncr_reg,r)) | ||
435 | #define INW(r) INW_OFF (offsetof(struct ncr_reg,r)) | ||
436 | #define INL(r) INL_OFF (offsetof(struct ncr_reg,r)) | ||
437 | |||
438 | #define OUTB(r, val) OUTB_OFF (offsetof(struct ncr_reg,r), (val)) | ||
439 | #define OUTW(r, val) OUTW_OFF (offsetof(struct ncr_reg,r), (val)) | ||
440 | #define OUTL(r, val) OUTL_OFF (offsetof(struct ncr_reg,r), (val)) | ||
441 | |||
442 | /* | ||
443 | * Set bit field ON, OFF | ||
444 | */ | ||
445 | |||
446 | #define OUTONB(r, m) OUTB(r, INB(r) | (m)) | ||
447 | #define OUTOFFB(r, m) OUTB(r, INB(r) & ~(m)) | ||
448 | #define OUTONW(r, m) OUTW(r, INW(r) | (m)) | ||
449 | #define OUTOFFW(r, m) OUTW(r, INW(r) & ~(m)) | ||
450 | #define OUTONL(r, m) OUTL(r, INL(r) | (m)) | ||
451 | #define OUTOFFL(r, m) OUTL(r, INL(r) & ~(m)) | ||
452 | |||
453 | /* | ||
454 | * We normally want the chip to have a consistent view | ||
455 | * of driver internal data structures when we restart it. | ||
456 | * Thus these macros. | ||
457 | */ | ||
458 | #define OUTL_DSP(v) \ | ||
459 | do { \ | ||
460 | MEMORY_BARRIER(); \ | ||
461 | OUTL (nc_dsp, (v)); \ | ||
462 | } while (0) | ||
463 | |||
464 | #define OUTONB_STD() \ | ||
465 | do { \ | ||
466 | MEMORY_BARRIER(); \ | ||
467 | OUTONB (nc_dcntl, (STD|NOCOM)); \ | ||
468 | } while (0) | ||
469 | |||
470 | |||
471 | /* | ||
472 | ** NCR53C8XX devices features table. | ||
473 | */ | ||
474 | struct ncr_chip { | ||
475 | unsigned short revision_id; | ||
476 | unsigned char burst_max; /* log-base-2 of max burst */ | ||
477 | unsigned char offset_max; | ||
478 | unsigned char nr_divisor; | ||
479 | unsigned int features; | ||
480 | #define FE_LED0 (1<<0) | ||
481 | #define FE_WIDE (1<<1) /* Wide data transfers */ | ||
482 | #define FE_ULTRA (1<<2) /* Ultra speed 20Mtrans/sec */ | ||
483 | #define FE_DBLR (1<<4) /* Clock doubler present */ | ||
484 | #define FE_QUAD (1<<5) /* Clock quadrupler present */ | ||
485 | #define FE_ERL (1<<6) /* Enable read line */ | ||
486 | #define FE_CLSE (1<<7) /* Cache line size enable */ | ||
487 | #define FE_WRIE (1<<8) /* Write & Invalidate enable */ | ||
488 | #define FE_ERMP (1<<9) /* Enable read multiple */ | ||
489 | #define FE_BOF (1<<10) /* Burst opcode fetch */ | ||
490 | #define FE_DFS (1<<11) /* DMA fifo size */ | ||
491 | #define FE_PFEN (1<<12) /* Prefetch enable */ | ||
492 | #define FE_LDSTR (1<<13) /* Load/Store supported */ | ||
493 | #define FE_RAM (1<<14) /* On chip RAM present */ | ||
494 | #define FE_VARCLK (1<<15) /* SCSI clock may vary */ | ||
495 | #define FE_RAM8K (1<<16) /* On chip RAM sized 8Kb */ | ||
496 | #define FE_64BIT (1<<17) /* Have a 64-bit PCI interface */ | ||
497 | #define FE_IO256 (1<<18) /* Requires full 256 bytes in PCI space */ | ||
498 | #define FE_NOPM (1<<19) /* Scripts handles phase mismatch */ | ||
499 | #define FE_LEDC (1<<20) /* Hardware control of LED */ | ||
500 | #define FE_DIFF (1<<21) /* Support Differential SCSI */ | ||
501 | #define FE_66MHZ (1<<23) /* 66MHz PCI Support */ | ||
502 | #define FE_DAC (1<<24) /* Support DAC cycles (64 bit addressing) */ | ||
503 | #define FE_ISTAT1 (1<<25) /* Have ISTAT1, MBOX0, MBOX1 registers */ | ||
504 | #define FE_DAC_IN_USE (1<<26) /* Platform does DAC cycles */ | ||
505 | #define FE_EHP (1<<27) /* 720: Even host parity */ | ||
506 | #define FE_MUX (1<<28) /* 720: Multiplexed bus */ | ||
507 | #define FE_EA (1<<29) /* 720: Enable Ack */ | ||
508 | |||
509 | #define FE_CACHE_SET (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP) | ||
510 | #define FE_SCSI_SET (FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80) | ||
511 | #define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM) | ||
512 | }; | ||
513 | |||
514 | |||
515 | /* | ||
516 | ** Driver setup structure. | ||
517 | ** | ||
518 | ** This structure is initialized from linux config options. | ||
519 | ** It can be overridden at boot-up by the boot command line. | ||
520 | */ | ||
521 | #define SCSI_NCR_MAX_EXCLUDES 8 | ||
522 | struct ncr_driver_setup { | ||
523 | u8 master_parity; | ||
524 | u8 scsi_parity; | ||
525 | u8 disconnection; | ||
526 | u8 special_features; | ||
527 | u8 force_sync_nego; | ||
528 | u8 reverse_probe; | ||
529 | u8 pci_fix_up; | ||
530 | u8 use_nvram; | ||
531 | u8 verbose; | ||
532 | u8 default_tags; | ||
533 | u16 default_sync; | ||
534 | u16 debug; | ||
535 | u8 burst_max; | ||
536 | u8 led_pin; | ||
537 | u8 max_wide; | ||
538 | u8 settle_delay; | ||
539 | u8 diff_support; | ||
540 | u8 irqm; | ||
541 | u8 bus_check; | ||
542 | u8 optimize; | ||
543 | u8 recovery; | ||
544 | u8 host_id; | ||
545 | u16 iarb; | ||
546 | u32 excludes[SCSI_NCR_MAX_EXCLUDES]; | ||
547 | char tag_ctrl[100]; | ||
548 | }; | ||
549 | |||
550 | /* | ||
551 | ** Initial setup. | ||
552 | ** Can be overriden at startup by a command line. | ||
553 | */ | ||
554 | #define SCSI_NCR_DRIVER_SETUP \ | ||
555 | { \ | ||
556 | SCSI_NCR_SETUP_MASTER_PARITY, \ | ||
557 | SCSI_NCR_SETUP_SCSI_PARITY, \ | ||
558 | SCSI_NCR_SETUP_DISCONNECTION, \ | ||
559 | SCSI_NCR_SETUP_SPECIAL_FEATURES, \ | ||
560 | SCSI_NCR_SETUP_FORCE_SYNC_NEGO, \ | ||
561 | 0, \ | ||
562 | 0, \ | ||
563 | 1, \ | ||
564 | 0, \ | ||
565 | SCSI_NCR_SETUP_DEFAULT_TAGS, \ | ||
566 | SCSI_NCR_SETUP_DEFAULT_SYNC, \ | ||
567 | 0x00, \ | ||
568 | 7, \ | ||
569 | 0, \ | ||
570 | 1, \ | ||
571 | SCSI_NCR_SETUP_SETTLE_TIME, \ | ||
572 | 0, \ | ||
573 | 0, \ | ||
574 | 1, \ | ||
575 | 0, \ | ||
576 | 0, \ | ||
577 | 255, \ | ||
578 | 0x00 \ | ||
579 | } | ||
580 | |||
581 | /* | ||
582 | ** Boot fail safe setup. | ||
583 | ** Override initial setup from boot command line: | ||
584 | ** ncr53c8xx=safe:y | ||
585 | */ | ||
586 | #define SCSI_NCR_DRIVER_SAFE_SETUP \ | ||
587 | { \ | ||
588 | 0, \ | ||
589 | 1, \ | ||
590 | 0, \ | ||
591 | 0, \ | ||
592 | 0, \ | ||
593 | 0, \ | ||
594 | 0, \ | ||
595 | 1, \ | ||
596 | 2, \ | ||
597 | 0, \ | ||
598 | 255, \ | ||
599 | 0x00, \ | ||
600 | 255, \ | ||
601 | 0, \ | ||
602 | 0, \ | ||
603 | 10, \ | ||
604 | 1, \ | ||
605 | 1, \ | ||
606 | 1, \ | ||
607 | 0, \ | ||
608 | 0, \ | ||
609 | 255 \ | ||
610 | } | ||
611 | |||
612 | /**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/ | ||
613 | |||
614 | /*----------------------------------------------------------------- | ||
615 | ** | ||
616 | ** The ncr 53c810 register structure. | ||
617 | ** | ||
618 | **----------------------------------------------------------------- | ||
619 | */ | ||
620 | |||
621 | struct ncr_reg { | ||
622 | /*00*/ u8 nc_scntl0; /* full arb., ena parity, par->ATN */ | ||
623 | |||
624 | /*01*/ u8 nc_scntl1; /* no reset */ | ||
625 | #define ISCON 0x10 /* connected to scsi */ | ||
626 | #define CRST 0x08 /* force reset */ | ||
627 | #define IARB 0x02 /* immediate arbitration */ | ||
628 | |||
629 | /*02*/ u8 nc_scntl2; /* no disconnect expected */ | ||
630 | #define SDU 0x80 /* cmd: disconnect will raise error */ | ||
631 | #define CHM 0x40 /* sta: chained mode */ | ||
632 | #define WSS 0x08 /* sta: wide scsi send [W]*/ | ||
633 | #define WSR 0x01 /* sta: wide scsi received [W]*/ | ||
634 | |||
635 | /*03*/ u8 nc_scntl3; /* cnf system clock dependent */ | ||
636 | #define EWS 0x08 /* cmd: enable wide scsi [W]*/ | ||
637 | #define ULTRA 0x80 /* cmd: ULTRA enable */ | ||
638 | /* bits 0-2, 7 rsvd for C1010 */ | ||
639 | |||
640 | /*04*/ u8 nc_scid; /* cnf host adapter scsi address */ | ||
641 | #define RRE 0x40 /* r/w:e enable response to resel. */ | ||
642 | #define SRE 0x20 /* r/w:e enable response to select */ | ||
643 | |||
644 | /*05*/ u8 nc_sxfer; /* ### Sync speed and count */ | ||
645 | /* bits 6-7 rsvd for C1010 */ | ||
646 | |||
647 | /*06*/ u8 nc_sdid; /* ### Destination-ID */ | ||
648 | |||
649 | /*07*/ u8 nc_gpreg; /* ??? IO-Pins */ | ||
650 | |||
651 | /*08*/ u8 nc_sfbr; /* ### First byte in phase */ | ||
652 | |||
653 | /*09*/ u8 nc_socl; | ||
654 | #define CREQ 0x80 /* r/w: SCSI-REQ */ | ||
655 | #define CACK 0x40 /* r/w: SCSI-ACK */ | ||
656 | #define CBSY 0x20 /* r/w: SCSI-BSY */ | ||
657 | #define CSEL 0x10 /* r/w: SCSI-SEL */ | ||
658 | #define CATN 0x08 /* r/w: SCSI-ATN */ | ||
659 | #define CMSG 0x04 /* r/w: SCSI-MSG */ | ||
660 | #define CC_D 0x02 /* r/w: SCSI-C_D */ | ||
661 | #define CI_O 0x01 /* r/w: SCSI-I_O */ | ||
662 | |||
663 | /*0a*/ u8 nc_ssid; | ||
664 | |||
665 | /*0b*/ u8 nc_sbcl; | ||
666 | |||
667 | /*0c*/ u8 nc_dstat; | ||
668 | #define DFE 0x80 /* sta: dma fifo empty */ | ||
669 | #define MDPE 0x40 /* int: master data parity error */ | ||
670 | #define BF 0x20 /* int: script: bus fault */ | ||
671 | #define ABRT 0x10 /* int: script: command aborted */ | ||
672 | #define SSI 0x08 /* int: script: single step */ | ||
673 | #define SIR 0x04 /* int: script: interrupt instruct. */ | ||
674 | #define IID 0x01 /* int: script: illegal instruct. */ | ||
675 | |||
676 | /*0d*/ u8 nc_sstat0; | ||
677 | #define ILF 0x80 /* sta: data in SIDL register lsb */ | ||
678 | #define ORF 0x40 /* sta: data in SODR register lsb */ | ||
679 | #define OLF 0x20 /* sta: data in SODL register lsb */ | ||
680 | #define AIP 0x10 /* sta: arbitration in progress */ | ||
681 | #define LOA 0x08 /* sta: arbitration lost */ | ||
682 | #define WOA 0x04 /* sta: arbitration won */ | ||
683 | #define IRST 0x02 /* sta: scsi reset signal */ | ||
684 | #define SDP 0x01 /* sta: scsi parity signal */ | ||
685 | |||
686 | /*0e*/ u8 nc_sstat1; | ||
687 | #define FF3210 0xf0 /* sta: bytes in the scsi fifo */ | ||
688 | |||
689 | /*0f*/ u8 nc_sstat2; | ||
690 | #define ILF1 0x80 /* sta: data in SIDL register msb[W]*/ | ||
691 | #define ORF1 0x40 /* sta: data in SODR register msb[W]*/ | ||
692 | #define OLF1 0x20 /* sta: data in SODL register msb[W]*/ | ||
693 | #define DM 0x04 /* sta: DIFFSENS mismatch (895/6 only) */ | ||
694 | #define LDSC 0x02 /* sta: disconnect & reconnect */ | ||
695 | |||
696 | /*10*/ u8 nc_dsa; /* --> Base page */ | ||
697 | /*11*/ u8 nc_dsa1; | ||
698 | /*12*/ u8 nc_dsa2; | ||
699 | /*13*/ u8 nc_dsa3; | ||
700 | |||
701 | /*14*/ u8 nc_istat; /* --> Main Command and status */ | ||
702 | #define CABRT 0x80 /* cmd: abort current operation */ | ||
703 | #define SRST 0x40 /* mod: reset chip */ | ||
704 | #define SIGP 0x20 /* r/w: message from host to ncr */ | ||
705 | #define SEM 0x10 /* r/w: message between host + ncr */ | ||
706 | #define CON 0x08 /* sta: connected to scsi */ | ||
707 | #define INTF 0x04 /* sta: int on the fly (reset by wr)*/ | ||
708 | #define SIP 0x02 /* sta: scsi-interrupt */ | ||
709 | #define DIP 0x01 /* sta: host/script interrupt */ | ||
710 | |||
711 | /*15*/ u8 nc_istat1; /* 896 and later cores only */ | ||
712 | #define FLSH 0x04 /* sta: chip is flushing */ | ||
713 | #define SRUN 0x02 /* sta: scripts are running */ | ||
714 | #define SIRQD 0x01 /* r/w: disable INT pin */ | ||
715 | |||
716 | /*16*/ u8 nc_mbox0; /* 896 and later cores only */ | ||
717 | /*17*/ u8 nc_mbox1; /* 896 and later cores only */ | ||
718 | |||
719 | /*18*/ u8 nc_ctest0; | ||
720 | #define EHP 0x04 /* 720 even host parity */ | ||
721 | /*19*/ u8 nc_ctest1; | ||
722 | |||
723 | /*1a*/ u8 nc_ctest2; | ||
724 | #define CSIGP 0x40 | ||
725 | /* bits 0-2,7 rsvd for C1010 */ | ||
726 | |||
727 | /*1b*/ u8 nc_ctest3; | ||
728 | #define FLF 0x08 /* cmd: flush dma fifo */ | ||
729 | #define CLF 0x04 /* cmd: clear dma fifo */ | ||
730 | #define FM 0x02 /* mod: fetch pin mode */ | ||
731 | #define WRIE 0x01 /* mod: write and invalidate enable */ | ||
732 | /* bits 4-7 rsvd for C1010 */ | ||
733 | |||
734 | /*1c*/ u32 nc_temp; /* ### Temporary stack */ | ||
735 | |||
736 | /*20*/ u8 nc_dfifo; | ||
737 | /*21*/ u8 nc_ctest4; | ||
738 | #define MUX 0x80 /* 720 host bus multiplex mode */ | ||
739 | #define BDIS 0x80 /* mod: burst disable */ | ||
740 | #define MPEE 0x08 /* mod: master parity error enable */ | ||
741 | |||
742 | /*22*/ u8 nc_ctest5; | ||
743 | #define DFS 0x20 /* mod: dma fifo size */ | ||
744 | /* bits 0-1, 3-7 rsvd for C1010 */ | ||
745 | /*23*/ u8 nc_ctest6; | ||
746 | |||
747 | /*24*/ u32 nc_dbc; /* ### Byte count and command */ | ||
748 | /*28*/ u32 nc_dnad; /* ### Next command register */ | ||
749 | /*2c*/ u32 nc_dsp; /* --> Script Pointer */ | ||
750 | /*30*/ u32 nc_dsps; /* --> Script pointer save/opcode#2 */ | ||
751 | |||
752 | /*34*/ u8 nc_scratcha; /* Temporary register a */ | ||
753 | /*35*/ u8 nc_scratcha1; | ||
754 | /*36*/ u8 nc_scratcha2; | ||
755 | /*37*/ u8 nc_scratcha3; | ||
756 | |||
757 | /*38*/ u8 nc_dmode; | ||
758 | #define BL_2 0x80 /* mod: burst length shift value +2 */ | ||
759 | #define BL_1 0x40 /* mod: burst length shift value +1 */ | ||
760 | #define ERL 0x08 /* mod: enable read line */ | ||
761 | #define ERMP 0x04 /* mod: enable read multiple */ | ||
762 | #define BOF 0x02 /* mod: burst op code fetch */ | ||
763 | |||
764 | /*39*/ u8 nc_dien; | ||
765 | /*3a*/ u8 nc_sbr; | ||
766 | |||
767 | /*3b*/ u8 nc_dcntl; /* --> Script execution control */ | ||
768 | #define CLSE 0x80 /* mod: cache line size enable */ | ||
769 | #define PFF 0x40 /* cmd: pre-fetch flush */ | ||
770 | #define PFEN 0x20 /* mod: pre-fetch enable */ | ||
771 | #define EA 0x20 /* mod: 720 enable-ack */ | ||
772 | #define SSM 0x10 /* mod: single step mode */ | ||
773 | #define IRQM 0x08 /* mod: irq mode (1 = totem pole !) */ | ||
774 | #define STD 0x04 /* cmd: start dma mode */ | ||
775 | #define IRQD 0x02 /* mod: irq disable */ | ||
776 | #define NOCOM 0x01 /* cmd: protect sfbr while reselect */ | ||
777 | /* bits 0-1 rsvd for C1010 */ | ||
778 | |||
779 | /*3c*/ u32 nc_adder; | ||
780 | |||
781 | /*40*/ u16 nc_sien; /* -->: interrupt enable */ | ||
782 | /*42*/ u16 nc_sist; /* <--: interrupt status */ | ||
783 | #define SBMC 0x1000/* sta: SCSI Bus Mode Change (895/6 only) */ | ||
784 | #define STO 0x0400/* sta: timeout (select) */ | ||
785 | #define GEN 0x0200/* sta: timeout (general) */ | ||
786 | #define HTH 0x0100/* sta: timeout (handshake) */ | ||
787 | #define MA 0x80 /* sta: phase mismatch */ | ||
788 | #define CMP 0x40 /* sta: arbitration complete */ | ||
789 | #define SEL 0x20 /* sta: selected by another device */ | ||
790 | #define RSL 0x10 /* sta: reselected by another device*/ | ||
791 | #define SGE 0x08 /* sta: gross error (over/underflow)*/ | ||
792 | #define UDC 0x04 /* sta: unexpected disconnect */ | ||
793 | #define RST 0x02 /* sta: scsi bus reset detected */ | ||
794 | #define PAR 0x01 /* sta: scsi parity error */ | ||
795 | |||
796 | /*44*/ u8 nc_slpar; | ||
797 | /*45*/ u8 nc_swide; | ||
798 | /*46*/ u8 nc_macntl; | ||
799 | /*47*/ u8 nc_gpcntl; | ||
800 | /*48*/ u8 nc_stime0; /* cmd: timeout for select&handshake*/ | ||
801 | /*49*/ u8 nc_stime1; /* cmd: timeout user defined */ | ||
802 | /*4a*/ u16 nc_respid; /* sta: Reselect-IDs */ | ||
803 | |||
804 | /*4c*/ u8 nc_stest0; | ||
805 | |||
806 | /*4d*/ u8 nc_stest1; | ||
807 | #define SCLK 0x80 /* Use the PCI clock as SCSI clock */ | ||
808 | #define DBLEN 0x08 /* clock doubler running */ | ||
809 | #define DBLSEL 0x04 /* clock doubler selected */ | ||
810 | |||
811 | |||
812 | /*4e*/ u8 nc_stest2; | ||
813 | #define ROF 0x40 /* reset scsi offset (after gross error!) */ | ||
814 | #define DIF 0x20 /* 720 SCSI differential mode */ | ||
815 | #define EXT 0x02 /* extended filtering */ | ||
816 | |||
817 | /*4f*/ u8 nc_stest3; | ||
818 | #define TE 0x80 /* c: tolerAnt enable */ | ||
819 | #define HSC 0x20 /* c: Halt SCSI Clock */ | ||
820 | #define CSF 0x02 /* c: clear scsi fifo */ | ||
821 | |||
822 | /*50*/ u16 nc_sidl; /* Lowlevel: latched from scsi data */ | ||
823 | /*52*/ u8 nc_stest4; | ||
824 | #define SMODE 0xc0 /* SCSI bus mode (895/6 only) */ | ||
825 | #define SMODE_HVD 0x40 /* High Voltage Differential */ | ||
826 | #define SMODE_SE 0x80 /* Single Ended */ | ||
827 | #define SMODE_LVD 0xc0 /* Low Voltage Differential */ | ||
828 | #define LCKFRQ 0x20 /* Frequency Lock (895/6 only) */ | ||
829 | /* bits 0-5 rsvd for C1010 */ | ||
830 | |||
831 | /*53*/ u8 nc_53_; | ||
832 | /*54*/ u16 nc_sodl; /* Lowlevel: data out to scsi data */ | ||
833 | /*56*/ u8 nc_ccntl0; /* Chip Control 0 (896) */ | ||
834 | #define ENPMJ 0x80 /* Enable Phase Mismatch Jump */ | ||
835 | #define PMJCTL 0x40 /* Phase Mismatch Jump Control */ | ||
836 | #define ENNDJ 0x20 /* Enable Non Data PM Jump */ | ||
837 | #define DISFC 0x10 /* Disable Auto FIFO Clear */ | ||
838 | #define DILS 0x02 /* Disable Internal Load/Store */ | ||
839 | #define DPR 0x01 /* Disable Pipe Req */ | ||
840 | |||
841 | /*57*/ u8 nc_ccntl1; /* Chip Control 1 (896) */ | ||
842 | #define ZMOD 0x80 /* High Impedance Mode */ | ||
843 | #define DIC 0x10 /* Disable Internal Cycles */ | ||
844 | #define DDAC 0x08 /* Disable Dual Address Cycle */ | ||
845 | #define XTIMOD 0x04 /* 64-bit Table Ind. Indexing Mode */ | ||
846 | #define EXTIBMV 0x02 /* Enable 64-bit Table Ind. BMOV */ | ||
847 | #define EXDBMV 0x01 /* Enable 64-bit Direct BMOV */ | ||
848 | |||
849 | /*58*/ u16 nc_sbdl; /* Lowlevel: data from scsi data */ | ||
850 | /*5a*/ u16 nc_5a_; | ||
851 | |||
852 | /*5c*/ u8 nc_scr0; /* Working register B */ | ||
853 | /*5d*/ u8 nc_scr1; /* */ | ||
854 | /*5e*/ u8 nc_scr2; /* */ | ||
855 | /*5f*/ u8 nc_scr3; /* */ | ||
856 | |||
857 | /*60*/ u8 nc_scrx[64]; /* Working register C-R */ | ||
858 | /*a0*/ u32 nc_mmrs; /* Memory Move Read Selector */ | ||
859 | /*a4*/ u32 nc_mmws; /* Memory Move Write Selector */ | ||
860 | /*a8*/ u32 nc_sfs; /* Script Fetch Selector */ | ||
861 | /*ac*/ u32 nc_drs; /* DSA Relative Selector */ | ||
862 | /*b0*/ u32 nc_sbms; /* Static Block Move Selector */ | ||
863 | /*b4*/ u32 nc_dbms; /* Dynamic Block Move Selector */ | ||
864 | /*b8*/ u32 nc_dnad64; /* DMA Next Address 64 */ | ||
865 | /*bc*/ u16 nc_scntl4; /* C1010 only */ | ||
866 | #define U3EN 0x80 /* Enable Ultra 3 */ | ||
867 | #define AIPEN 0x40 /* Allow check upper byte lanes */ | ||
868 | #define XCLKH_DT 0x08 /* Extra clock of data hold on DT | ||
869 | transfer edge */ | ||
870 | #define XCLKH_ST 0x04 /* Extra clock of data hold on ST | ||
871 | transfer edge */ | ||
872 | |||
873 | /*be*/ u8 nc_aipcntl0; /* Epat Control 1 C1010 only */ | ||
874 | /*bf*/ u8 nc_aipcntl1; /* AIP Control C1010_66 Only */ | ||
875 | |||
876 | /*c0*/ u32 nc_pmjad1; /* Phase Mismatch Jump Address 1 */ | ||
877 | /*c4*/ u32 nc_pmjad2; /* Phase Mismatch Jump Address 2 */ | ||
878 | /*c8*/ u8 nc_rbc; /* Remaining Byte Count */ | ||
879 | /*c9*/ u8 nc_rbc1; /* */ | ||
880 | /*ca*/ u8 nc_rbc2; /* */ | ||
881 | /*cb*/ u8 nc_rbc3; /* */ | ||
882 | |||
883 | /*cc*/ u8 nc_ua; /* Updated Address */ | ||
884 | /*cd*/ u8 nc_ua1; /* */ | ||
885 | /*ce*/ u8 nc_ua2; /* */ | ||
886 | /*cf*/ u8 nc_ua3; /* */ | ||
887 | /*d0*/ u32 nc_esa; /* Entry Storage Address */ | ||
888 | /*d4*/ u8 nc_ia; /* Instruction Address */ | ||
889 | /*d5*/ u8 nc_ia1; | ||
890 | /*d6*/ u8 nc_ia2; | ||
891 | /*d7*/ u8 nc_ia3; | ||
892 | /*d8*/ u32 nc_sbc; /* SCSI Byte Count (3 bytes only) */ | ||
893 | /*dc*/ u32 nc_csbc; /* Cumulative SCSI Byte Count */ | ||
894 | |||
895 | /* Following for C1010 only */ | ||
896 | /*e0*/ u16 nc_crcpad; /* CRC Value */ | ||
897 | /*e2*/ u8 nc_crccntl0; /* CRC control register */ | ||
898 | #define SNDCRC 0x10 /* Send CRC Request */ | ||
899 | /*e3*/ u8 nc_crccntl1; /* CRC control register */ | ||
900 | /*e4*/ u32 nc_crcdata; /* CRC data register */ | ||
901 | /*e8*/ u32 nc_e8_; /* rsvd */ | ||
902 | /*ec*/ u32 nc_ec_; /* rsvd */ | ||
903 | /*f0*/ u16 nc_dfbc; /* DMA FIFO byte count */ | ||
904 | |||
905 | }; | ||
906 | |||
907 | /*----------------------------------------------------------- | ||
908 | ** | ||
909 | ** Utility macros for the script. | ||
910 | ** | ||
911 | **----------------------------------------------------------- | ||
912 | */ | ||
913 | |||
914 | #define REGJ(p,r) (offsetof(struct ncr_reg, p ## r)) | ||
915 | #define REG(r) REGJ (nc_, r) | ||
916 | |||
917 | typedef u32 ncrcmd; | ||
918 | |||
919 | /*----------------------------------------------------------- | ||
920 | ** | ||
921 | ** SCSI phases | ||
922 | ** | ||
923 | ** DT phases illegal for ncr driver. | ||
924 | ** | ||
925 | **----------------------------------------------------------- | ||
926 | */ | ||
927 | |||
928 | #define SCR_DATA_OUT 0x00000000 | ||
929 | #define SCR_DATA_IN 0x01000000 | ||
930 | #define SCR_COMMAND 0x02000000 | ||
931 | #define SCR_STATUS 0x03000000 | ||
932 | #define SCR_DT_DATA_OUT 0x04000000 | ||
933 | #define SCR_DT_DATA_IN 0x05000000 | ||
934 | #define SCR_MSG_OUT 0x06000000 | ||
935 | #define SCR_MSG_IN 0x07000000 | ||
936 | |||
937 | #define SCR_ILG_OUT 0x04000000 | ||
938 | #define SCR_ILG_IN 0x05000000 | ||
939 | |||
940 | /*----------------------------------------------------------- | ||
941 | ** | ||
942 | ** Data transfer via SCSI. | ||
943 | ** | ||
944 | **----------------------------------------------------------- | ||
945 | ** | ||
946 | ** MOVE_ABS (LEN) | ||
947 | ** <<start address>> | ||
948 | ** | ||
949 | ** MOVE_IND (LEN) | ||
950 | ** <<dnad_offset>> | ||
951 | ** | ||
952 | ** MOVE_TBL | ||
953 | ** <<dnad_offset>> | ||
954 | ** | ||
955 | **----------------------------------------------------------- | ||
956 | */ | ||
957 | |||
958 | #define OPC_MOVE 0x08000000 | ||
959 | |||
960 | #define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l)) | ||
961 | #define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l)) | ||
962 | #define SCR_MOVE_TBL (0x10000000 | OPC_MOVE) | ||
963 | |||
964 | #define SCR_CHMOV_ABS(l) ((0x00000000) | (l)) | ||
965 | #define SCR_CHMOV_IND(l) ((0x20000000) | (l)) | ||
966 | #define SCR_CHMOV_TBL (0x10000000) | ||
967 | |||
968 | struct scr_tblmove { | ||
969 | u32 size; | ||
970 | u32 addr; | ||
971 | }; | ||
972 | |||
973 | /*----------------------------------------------------------- | ||
974 | ** | ||
975 | ** Selection | ||
976 | ** | ||
977 | **----------------------------------------------------------- | ||
978 | ** | ||
979 | ** SEL_ABS | SCR_ID (0..15) [ | REL_JMP] | ||
980 | ** <<alternate_address>> | ||
981 | ** | ||
982 | ** SEL_TBL | << dnad_offset>> [ | REL_JMP] | ||
983 | ** <<alternate_address>> | ||
984 | ** | ||
985 | **----------------------------------------------------------- | ||
986 | */ | ||
987 | |||
988 | #define SCR_SEL_ABS 0x40000000 | ||
989 | #define SCR_SEL_ABS_ATN 0x41000000 | ||
990 | #define SCR_SEL_TBL 0x42000000 | ||
991 | #define SCR_SEL_TBL_ATN 0x43000000 | ||
992 | |||
993 | |||
994 | #ifdef SCSI_NCR_BIG_ENDIAN | ||
995 | struct scr_tblsel { | ||
996 | u8 sel_scntl3; | ||
997 | u8 sel_id; | ||
998 | u8 sel_sxfer; | ||
999 | u8 sel_scntl4; | ||
1000 | }; | ||
1001 | #else | ||
1002 | struct scr_tblsel { | ||
1003 | u8 sel_scntl4; | ||
1004 | u8 sel_sxfer; | ||
1005 | u8 sel_id; | ||
1006 | u8 sel_scntl3; | ||
1007 | }; | ||
1008 | #endif | ||
1009 | |||
1010 | #define SCR_JMP_REL 0x04000000 | ||
1011 | #define SCR_ID(id) (((u32)(id)) << 16) | ||
1012 | |||
1013 | /*----------------------------------------------------------- | ||
1014 | ** | ||
1015 | ** Waiting for Disconnect or Reselect | ||
1016 | ** | ||
1017 | **----------------------------------------------------------- | ||
1018 | ** | ||
1019 | ** WAIT_DISC | ||
1020 | ** dummy: <<alternate_address>> | ||
1021 | ** | ||
1022 | ** WAIT_RESEL | ||
1023 | ** <<alternate_address>> | ||
1024 | ** | ||
1025 | **----------------------------------------------------------- | ||
1026 | */ | ||
1027 | |||
1028 | #define SCR_WAIT_DISC 0x48000000 | ||
1029 | #define SCR_WAIT_RESEL 0x50000000 | ||
1030 | |||
1031 | /*----------------------------------------------------------- | ||
1032 | ** | ||
1033 | ** Bit Set / Reset | ||
1034 | ** | ||
1035 | **----------------------------------------------------------- | ||
1036 | ** | ||
1037 | ** SET (flags {|.. }) | ||
1038 | ** | ||
1039 | ** CLR (flags {|.. }) | ||
1040 | ** | ||
1041 | **----------------------------------------------------------- | ||
1042 | */ | ||
1043 | |||
1044 | #define SCR_SET(f) (0x58000000 | (f)) | ||
1045 | #define SCR_CLR(f) (0x60000000 | (f)) | ||
1046 | |||
1047 | #define SCR_CARRY 0x00000400 | ||
1048 | #define SCR_TRG 0x00000200 | ||
1049 | #define SCR_ACK 0x00000040 | ||
1050 | #define SCR_ATN 0x00000008 | ||
1051 | |||
1052 | |||
1053 | |||
1054 | |||
1055 | /*----------------------------------------------------------- | ||
1056 | ** | ||
1057 | ** Memory to memory move | ||
1058 | ** | ||
1059 | **----------------------------------------------------------- | ||
1060 | ** | ||
1061 | ** COPY (bytecount) | ||
1062 | ** << source_address >> | ||
1063 | ** << destination_address >> | ||
1064 | ** | ||
1065 | ** SCR_COPY sets the NO FLUSH option by default. | ||
1066 | ** SCR_COPY_F does not set this option. | ||
1067 | ** | ||
1068 | ** For chips which do not support this option, | ||
1069 | ** ncr_copy_and_bind() will remove this bit. | ||
1070 | **----------------------------------------------------------- | ||
1071 | */ | ||
1072 | |||
1073 | #define SCR_NO_FLUSH 0x01000000 | ||
1074 | |||
1075 | #define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n)) | ||
1076 | #define SCR_COPY_F(n) (0xc0000000 | (n)) | ||
1077 | |||
1078 | /*----------------------------------------------------------- | ||
1079 | ** | ||
1080 | ** Register move and binary operations | ||
1081 | ** | ||
1082 | **----------------------------------------------------------- | ||
1083 | ** | ||
1084 | ** SFBR_REG (reg, op, data) reg = SFBR op data | ||
1085 | ** << 0 >> | ||
1086 | ** | ||
1087 | ** REG_SFBR (reg, op, data) SFBR = reg op data | ||
1088 | ** << 0 >> | ||
1089 | ** | ||
1090 | ** REG_REG (reg, op, data) reg = reg op data | ||
1091 | ** << 0 >> | ||
1092 | ** | ||
1093 | **----------------------------------------------------------- | ||
1094 | ** On 810A, 860, 825A, 875, 895 and 896 chips the content | ||
1095 | ** of SFBR register can be used as data (SCR_SFBR_DATA). | ||
1096 | ** The 896 has additionnal IO registers starting at | ||
1097 | ** offset 0x80. Bit 7 of register offset is stored in | ||
1098 | ** bit 7 of the SCRIPTS instruction first DWORD. | ||
1099 | **----------------------------------------------------------- | ||
1100 | */ | ||
1101 | |||
1102 | #define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80)) | ||
1103 | |||
1104 | #define SCR_SFBR_REG(reg,op,data) \ | ||
1105 | (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul)) | ||
1106 | |||
1107 | #define SCR_REG_SFBR(reg,op,data) \ | ||
1108 | (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul)) | ||
1109 | |||
1110 | #define SCR_REG_REG(reg,op,data) \ | ||
1111 | (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul)) | ||
1112 | |||
1113 | |||
1114 | #define SCR_LOAD 0x00000000 | ||
1115 | #define SCR_SHL 0x01000000 | ||
1116 | #define SCR_OR 0x02000000 | ||
1117 | #define SCR_XOR 0x03000000 | ||
1118 | #define SCR_AND 0x04000000 | ||
1119 | #define SCR_SHR 0x05000000 | ||
1120 | #define SCR_ADD 0x06000000 | ||
1121 | #define SCR_ADDC 0x07000000 | ||
1122 | |||
1123 | #define SCR_SFBR_DATA (0x00800000>>8ul) /* Use SFBR as data */ | ||
1124 | |||
1125 | /*----------------------------------------------------------- | ||
1126 | ** | ||
1127 | ** FROM_REG (reg) SFBR = reg | ||
1128 | ** << 0 >> | ||
1129 | ** | ||
1130 | ** TO_REG (reg) reg = SFBR | ||
1131 | ** << 0 >> | ||
1132 | ** | ||
1133 | ** LOAD_REG (reg, data) reg = <data> | ||
1134 | ** << 0 >> | ||
1135 | ** | ||
1136 | ** LOAD_SFBR(data) SFBR = <data> | ||
1137 | ** << 0 >> | ||
1138 | ** | ||
1139 | **----------------------------------------------------------- | ||
1140 | */ | ||
1141 | |||
1142 | #define SCR_FROM_REG(reg) \ | ||
1143 | SCR_REG_SFBR(reg,SCR_OR,0) | ||
1144 | |||
1145 | #define SCR_TO_REG(reg) \ | ||
1146 | SCR_SFBR_REG(reg,SCR_OR,0) | ||
1147 | |||
1148 | #define SCR_LOAD_REG(reg,data) \ | ||
1149 | SCR_REG_REG(reg,SCR_LOAD,data) | ||
1150 | |||
1151 | #define SCR_LOAD_SFBR(data) \ | ||
1152 | (SCR_REG_SFBR (gpreg, SCR_LOAD, data)) | ||
1153 | |||
1154 | /*----------------------------------------------------------- | ||
1155 | ** | ||
1156 | ** LOAD from memory to register. | ||
1157 | ** STORE from register to memory. | ||
1158 | ** | ||
1159 | ** Only supported by 810A, 860, 825A, 875, 895 and 896. | ||
1160 | ** | ||
1161 | **----------------------------------------------------------- | ||
1162 | ** | ||
1163 | ** LOAD_ABS (LEN) | ||
1164 | ** <<start address>> | ||
1165 | ** | ||
1166 | ** LOAD_REL (LEN) (DSA relative) | ||
1167 | ** <<dsa_offset>> | ||
1168 | ** | ||
1169 | **----------------------------------------------------------- | ||
1170 | */ | ||
1171 | |||
1172 | #define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul) | ||
1173 | #define SCR_NO_FLUSH2 0x02000000 | ||
1174 | #define SCR_DSA_REL2 0x10000000 | ||
1175 | |||
1176 | #define SCR_LOAD_R(reg, how, n) \ | ||
1177 | (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n)) | ||
1178 | |||
1179 | #define SCR_STORE_R(reg, how, n) \ | ||
1180 | (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n)) | ||
1181 | |||
1182 | #define SCR_LOAD_ABS(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2, n) | ||
1183 | #define SCR_LOAD_REL(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n) | ||
1184 | #define SCR_LOAD_ABS_F(reg, n) SCR_LOAD_R(reg, 0, n) | ||
1185 | #define SCR_LOAD_REL_F(reg, n) SCR_LOAD_R(reg, SCR_DSA_REL2, n) | ||
1186 | |||
1187 | #define SCR_STORE_ABS(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2, n) | ||
1188 | #define SCR_STORE_REL(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n) | ||
1189 | #define SCR_STORE_ABS_F(reg, n) SCR_STORE_R(reg, 0, n) | ||
1190 | #define SCR_STORE_REL_F(reg, n) SCR_STORE_R(reg, SCR_DSA_REL2, n) | ||
1191 | |||
1192 | |||
1193 | /*----------------------------------------------------------- | ||
1194 | ** | ||
1195 | ** Waiting for Disconnect or Reselect | ||
1196 | ** | ||
1197 | **----------------------------------------------------------- | ||
1198 | ** | ||
1199 | ** JUMP [ | IFTRUE/IFFALSE ( ... ) ] | ||
1200 | ** <<address>> | ||
1201 | ** | ||
1202 | ** JUMPR [ | IFTRUE/IFFALSE ( ... ) ] | ||
1203 | ** <<distance>> | ||
1204 | ** | ||
1205 | ** CALL [ | IFTRUE/IFFALSE ( ... ) ] | ||
1206 | ** <<address>> | ||
1207 | ** | ||
1208 | ** CALLR [ | IFTRUE/IFFALSE ( ... ) ] | ||
1209 | ** <<distance>> | ||
1210 | ** | ||
1211 | ** RETURN [ | IFTRUE/IFFALSE ( ... ) ] | ||
1212 | ** <<dummy>> | ||
1213 | ** | ||
1214 | ** INT [ | IFTRUE/IFFALSE ( ... ) ] | ||
1215 | ** <<ident>> | ||
1216 | ** | ||
1217 | ** INT_FLY [ | IFTRUE/IFFALSE ( ... ) ] | ||
1218 | ** <<ident>> | ||
1219 | ** | ||
1220 | ** Conditions: | ||
1221 | ** WHEN (phase) | ||
1222 | ** IF (phase) | ||
1223 | ** CARRYSET | ||
1224 | ** DATA (data, mask) | ||
1225 | ** | ||
1226 | **----------------------------------------------------------- | ||
1227 | */ | ||
1228 | |||
1229 | #define SCR_NO_OP 0x80000000 | ||
1230 | #define SCR_JUMP 0x80080000 | ||
1231 | #define SCR_JUMP64 0x80480000 | ||
1232 | #define SCR_JUMPR 0x80880000 | ||
1233 | #define SCR_CALL 0x88080000 | ||
1234 | #define SCR_CALLR 0x88880000 | ||
1235 | #define SCR_RETURN 0x90080000 | ||
1236 | #define SCR_INT 0x98080000 | ||
1237 | #define SCR_INT_FLY 0x98180000 | ||
1238 | |||
1239 | #define IFFALSE(arg) (0x00080000 | (arg)) | ||
1240 | #define IFTRUE(arg) (0x00000000 | (arg)) | ||
1241 | |||
1242 | #define WHEN(phase) (0x00030000 | (phase)) | ||
1243 | #define IF(phase) (0x00020000 | (phase)) | ||
1244 | |||
1245 | #define DATA(D) (0x00040000 | ((D) & 0xff)) | ||
1246 | #define MASK(D,M) (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff)) | ||
1247 | |||
1248 | #define CARRYSET (0x00200000) | ||
1249 | |||
1250 | /*----------------------------------------------------------- | ||
1251 | ** | ||
1252 | ** SCSI constants. | ||
1253 | ** | ||
1254 | **----------------------------------------------------------- | ||
1255 | */ | ||
1256 | |||
1257 | /* | ||
1258 | ** Messages | ||
1259 | */ | ||
1260 | |||
1261 | #define M_COMPLETE COMMAND_COMPLETE | ||
1262 | #define M_EXTENDED EXTENDED_MESSAGE | ||
1263 | #define M_SAVE_DP SAVE_POINTERS | ||
1264 | #define M_RESTORE_DP RESTORE_POINTERS | ||
1265 | #define M_DISCONNECT DISCONNECT | ||
1266 | #define M_ID_ERROR INITIATOR_ERROR | ||
1267 | #define M_ABORT ABORT_TASK_SET | ||
1268 | #define M_REJECT MESSAGE_REJECT | ||
1269 | #define M_NOOP NOP | ||
1270 | #define M_PARITY MSG_PARITY_ERROR | ||
1271 | #define M_LCOMPLETE LINKED_CMD_COMPLETE | ||
1272 | #define M_FCOMPLETE LINKED_FLG_CMD_COMPLETE | ||
1273 | #define M_RESET TARGET_RESET | ||
1274 | #define M_ABORT_TAG ABORT_TASK | ||
1275 | #define M_CLEAR_QUEUE CLEAR_TASK_SET | ||
1276 | #define M_INIT_REC INITIATE_RECOVERY | ||
1277 | #define M_REL_REC RELEASE_RECOVERY | ||
1278 | #define M_TERMINATE (0x11) | ||
1279 | #define M_SIMPLE_TAG SIMPLE_QUEUE_TAG | ||
1280 | #define M_HEAD_TAG HEAD_OF_QUEUE_TAG | ||
1281 | #define M_ORDERED_TAG ORDERED_QUEUE_TAG | ||
1282 | #define M_IGN_RESIDUE IGNORE_WIDE_RESIDUE | ||
1283 | #define M_IDENTIFY (0x80) | ||
1284 | |||
1285 | #define M_X_MODIFY_DP EXTENDED_MODIFY_DATA_POINTER | ||
1286 | #define M_X_SYNC_REQ EXTENDED_SDTR | ||
1287 | #define M_X_WIDE_REQ EXTENDED_WDTR | ||
1288 | #define M_X_PPR_REQ EXTENDED_PPR | ||
1289 | |||
1290 | /* | ||
1291 | ** Status | ||
1292 | */ | ||
1293 | |||
1294 | #define S_GOOD (0x00) | ||
1295 | #define S_CHECK_COND (0x02) | ||
1296 | #define S_COND_MET (0x04) | ||
1297 | #define S_BUSY (0x08) | ||
1298 | #define S_INT (0x10) | ||
1299 | #define S_INT_COND_MET (0x14) | ||
1300 | #define S_CONFLICT (0x18) | ||
1301 | #define S_TERMINATED (0x20) | ||
1302 | #define S_QUEUE_FULL (0x28) | ||
1303 | #define S_ILLEGAL (0xff) | ||
1304 | #define S_SENSE (0x80) | ||
1305 | |||
1306 | /* | ||
1307 | * End of ncrreg from FreeBSD | ||
1308 | */ | ||
48 | 1309 | ||
49 | /* | 1310 | /* |
50 | Build a scatter/gather entry. | 1311 | Build a scatter/gather entry. |
diff --git a/drivers/scsi/oktagon_esp.c b/drivers/scsi/oktagon_esp.c index 5d9c9ada814f..dee426f8c07b 100644 --- a/drivers/scsi/oktagon_esp.c +++ b/drivers/scsi/oktagon_esp.c | |||
@@ -490,7 +490,7 @@ static void dma_led_on(struct NCR_ESP *esp) | |||
490 | 490 | ||
491 | static int dma_ports_p(struct NCR_ESP *esp) | 491 | static int dma_ports_p(struct NCR_ESP *esp) |
492 | { | 492 | { |
493 | return ((custom.intenar) & IF_PORTS); | 493 | return ((amiga_custom.intenar) & IF_PORTS); |
494 | } | 494 | } |
495 | 495 | ||
496 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) | 496 | static void dma_setup(struct NCR_ESP *esp, __u32 addr, int count, int write) |
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c index 7c5306499832..0c9edb7051f4 100644 --- a/drivers/scsi/pcmcia/aha152x_stub.c +++ b/drivers/scsi/pcmcia/aha152x_stub.c | |||
@@ -95,27 +95,21 @@ typedef struct scsi_info_t { | |||
95 | } scsi_info_t; | 95 | } scsi_info_t; |
96 | 96 | ||
97 | static void aha152x_release_cs(dev_link_t *link); | 97 | static void aha152x_release_cs(dev_link_t *link); |
98 | static int aha152x_event(event_t event, int priority, | 98 | static void aha152x_detach(struct pcmcia_device *p_dev); |
99 | event_callback_args_t *args); | 99 | static void aha152x_config_cs(dev_link_t *link); |
100 | |||
101 | static dev_link_t *aha152x_attach(void); | ||
102 | static void aha152x_detach(dev_link_t *); | ||
103 | 100 | ||
104 | static dev_link_t *dev_list; | 101 | static dev_link_t *dev_list; |
105 | static dev_info_t dev_info = "aha152x_cs"; | ||
106 | 102 | ||
107 | static dev_link_t *aha152x_attach(void) | 103 | static int aha152x_attach(struct pcmcia_device *p_dev) |
108 | { | 104 | { |
109 | scsi_info_t *info; | 105 | scsi_info_t *info; |
110 | client_reg_t client_reg; | ||
111 | dev_link_t *link; | 106 | dev_link_t *link; |
112 | int ret; | ||
113 | 107 | ||
114 | DEBUG(0, "aha152x_attach()\n"); | 108 | DEBUG(0, "aha152x_attach()\n"); |
115 | 109 | ||
116 | /* Create new SCSI device */ | 110 | /* Create new SCSI device */ |
117 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 111 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
118 | if (!info) return NULL; | 112 | if (!info) return -ENOMEM; |
119 | memset(info, 0, sizeof(*info)); | 113 | memset(info, 0, sizeof(*info)); |
120 | link = &info->link; link->priv = info; | 114 | link = &info->link; link->priv = info; |
121 | 115 | ||
@@ -129,26 +123,20 @@ static dev_link_t *aha152x_attach(void) | |||
129 | link->conf.IntType = INT_MEMORY_AND_IO; | 123 | link->conf.IntType = INT_MEMORY_AND_IO; |
130 | link->conf.Present = PRESENT_OPTION; | 124 | link->conf.Present = PRESENT_OPTION; |
131 | 125 | ||
132 | /* Register with Card Services */ | 126 | link->handle = p_dev; |
133 | link->next = dev_list; | 127 | p_dev->instance = link; |
134 | dev_list = link; | 128 | |
135 | client_reg.dev_info = &dev_info; | 129 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
136 | client_reg.Version = 0x0210; | 130 | aha152x_config_cs(link); |
137 | client_reg.event_callback_args.client_data = link; | 131 | |
138 | ret = pcmcia_register_client(&link->handle, &client_reg); | 132 | return 0; |
139 | if (ret != 0) { | ||
140 | cs_error(link->handle, RegisterClient, ret); | ||
141 | aha152x_detach(link); | ||
142 | return NULL; | ||
143 | } | ||
144 | |||
145 | return link; | ||
146 | } /* aha152x_attach */ | 133 | } /* aha152x_attach */ |
147 | 134 | ||
148 | /*====================================================================*/ | 135 | /*====================================================================*/ |
149 | 136 | ||
150 | static void aha152x_detach(dev_link_t *link) | 137 | static void aha152x_detach(struct pcmcia_device *p_dev) |
151 | { | 138 | { |
139 | dev_link_t *link = dev_to_instance(p_dev); | ||
152 | dev_link_t **linkp; | 140 | dev_link_t **linkp; |
153 | 141 | ||
154 | DEBUG(0, "aha152x_detach(0x%p)\n", link); | 142 | DEBUG(0, "aha152x_detach(0x%p)\n", link); |
@@ -162,9 +150,6 @@ static void aha152x_detach(dev_link_t *link) | |||
162 | if (link->state & DEV_CONFIG) | 150 | if (link->state & DEV_CONFIG) |
163 | aha152x_release_cs(link); | 151 | aha152x_release_cs(link); |
164 | 152 | ||
165 | if (link->handle) | ||
166 | pcmcia_deregister_client(link->handle); | ||
167 | |||
168 | /* Unlink device structure, free bits */ | 153 | /* Unlink device structure, free bits */ |
169 | *linkp = link->next; | 154 | *linkp = link->next; |
170 | kfree(link->priv); | 155 | kfree(link->priv); |
@@ -272,44 +257,31 @@ static void aha152x_release_cs(dev_link_t *link) | |||
272 | link->state &= ~DEV_CONFIG; | 257 | link->state &= ~DEV_CONFIG; |
273 | } | 258 | } |
274 | 259 | ||
275 | static int aha152x_event(event_t event, int priority, | 260 | static int aha152x_suspend(struct pcmcia_device *dev) |
276 | event_callback_args_t *args) | ||
277 | { | 261 | { |
278 | dev_link_t *link = args->client_data; | 262 | dev_link_t *link = dev_to_instance(dev); |
279 | scsi_info_t *info = link->priv; | 263 | |
280 | |||
281 | DEBUG(0, "aha152x_event(0x%06x)\n", event); | ||
282 | |||
283 | switch (event) { | ||
284 | case CS_EVENT_CARD_REMOVAL: | ||
285 | link->state &= ~DEV_PRESENT; | ||
286 | if (link->state & DEV_CONFIG) | ||
287 | aha152x_release_cs(link); | ||
288 | break; | ||
289 | case CS_EVENT_CARD_INSERTION: | ||
290 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | ||
291 | aha152x_config_cs(link); | ||
292 | break; | ||
293 | case CS_EVENT_PM_SUSPEND: | ||
294 | link->state |= DEV_SUSPEND; | 264 | link->state |= DEV_SUSPEND; |
295 | /* Fall through... */ | ||
296 | case CS_EVENT_RESET_PHYSICAL: | ||
297 | if (link->state & DEV_CONFIG) | 265 | if (link->state & DEV_CONFIG) |
298 | pcmcia_release_configuration(link->handle); | 266 | pcmcia_release_configuration(link->handle); |
299 | break; | 267 | |
300 | case CS_EVENT_PM_RESUME: | 268 | return 0; |
269 | } | ||
270 | |||
271 | static int aha152x_resume(struct pcmcia_device *dev) | ||
272 | { | ||
273 | dev_link_t *link = dev_to_instance(dev); | ||
274 | scsi_info_t *info = link->priv; | ||
275 | |||
301 | link->state &= ~DEV_SUSPEND; | 276 | link->state &= ~DEV_SUSPEND; |
302 | /* Fall through... */ | ||
303 | case CS_EVENT_CARD_RESET: | ||
304 | if (link->state & DEV_CONFIG) { | 277 | if (link->state & DEV_CONFIG) { |
305 | Scsi_Cmnd tmp; | 278 | Scsi_Cmnd tmp; |
306 | pcmcia_request_configuration(link->handle, &link->conf); | 279 | pcmcia_request_configuration(link->handle, &link->conf); |
307 | tmp.device->host = info->host; | 280 | tmp.device->host = info->host; |
308 | aha152x_host_reset(&tmp); | 281 | aha152x_host_reset(&tmp); |
309 | } | 282 | } |
310 | break; | 283 | |
311 | } | 284 | return 0; |
312 | return 0; | ||
313 | } | 285 | } |
314 | 286 | ||
315 | static struct pcmcia_device_id aha152x_ids[] = { | 287 | static struct pcmcia_device_id aha152x_ids[] = { |
@@ -327,10 +299,11 @@ static struct pcmcia_driver aha152x_cs_driver = { | |||
327 | .drv = { | 299 | .drv = { |
328 | .name = "aha152x_cs", | 300 | .name = "aha152x_cs", |
329 | }, | 301 | }, |
330 | .attach = aha152x_attach, | 302 | .probe = aha152x_attach, |
331 | .event = aha152x_event, | 303 | .remove = aha152x_detach, |
332 | .detach = aha152x_detach, | ||
333 | .id_table = aha152x_ids, | 304 | .id_table = aha152x_ids, |
305 | .suspend = aha152x_suspend, | ||
306 | .resume = aha152x_resume, | ||
334 | }; | 307 | }; |
335 | 308 | ||
336 | static int __init init_aha152x_cs(void) | 309 | static int __init init_aha152x_cs(void) |
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c index db8f5cd85ffe..788c58d805f3 100644 --- a/drivers/scsi/pcmcia/fdomain_stub.c +++ b/drivers/scsi/pcmcia/fdomain_stub.c | |||
@@ -80,29 +80,19 @@ typedef struct scsi_info_t { | |||
80 | 80 | ||
81 | 81 | ||
82 | static void fdomain_release(dev_link_t *link); | 82 | static void fdomain_release(dev_link_t *link); |
83 | static int fdomain_event(event_t event, int priority, | 83 | static void fdomain_detach(struct pcmcia_device *p_dev); |
84 | event_callback_args_t *args); | 84 | static void fdomain_config(dev_link_t *link); |
85 | 85 | ||
86 | static dev_link_t *fdomain_attach(void); | 86 | static int fdomain_attach(struct pcmcia_device *p_dev) |
87 | static void fdomain_detach(dev_link_t *); | ||
88 | |||
89 | |||
90 | static dev_link_t *dev_list = NULL; | ||
91 | |||
92 | static dev_info_t dev_info = "fdomain_cs"; | ||
93 | |||
94 | static dev_link_t *fdomain_attach(void) | ||
95 | { | 87 | { |
96 | scsi_info_t *info; | 88 | scsi_info_t *info; |
97 | client_reg_t client_reg; | ||
98 | dev_link_t *link; | 89 | dev_link_t *link; |
99 | int ret; | 90 | |
100 | |||
101 | DEBUG(0, "fdomain_attach()\n"); | 91 | DEBUG(0, "fdomain_attach()\n"); |
102 | 92 | ||
103 | /* Create new SCSI device */ | 93 | /* Create new SCSI device */ |
104 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 94 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
105 | if (!info) return NULL; | 95 | if (!info) return -ENOMEM; |
106 | memset(info, 0, sizeof(*info)); | 96 | memset(info, 0, sizeof(*info)); |
107 | link = &info->link; link->priv = info; | 97 | link = &info->link; link->priv = info; |
108 | link->io.NumPorts1 = 0x10; | 98 | link->io.NumPorts1 = 0x10; |
@@ -115,46 +105,27 @@ static dev_link_t *fdomain_attach(void) | |||
115 | link->conf.IntType = INT_MEMORY_AND_IO; | 105 | link->conf.IntType = INT_MEMORY_AND_IO; |
116 | link->conf.Present = PRESENT_OPTION; | 106 | link->conf.Present = PRESENT_OPTION; |
117 | 107 | ||
118 | /* Register with Card Services */ | 108 | link->handle = p_dev; |
119 | link->next = dev_list; | 109 | p_dev->instance = link; |
120 | dev_list = link; | 110 | |
121 | client_reg.dev_info = &dev_info; | 111 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
122 | client_reg.Version = 0x0210; | 112 | fdomain_config(link); |
123 | client_reg.event_callback_args.client_data = link; | 113 | |
124 | ret = pcmcia_register_client(&link->handle, &client_reg); | 114 | return 0; |
125 | if (ret != 0) { | ||
126 | cs_error(link->handle, RegisterClient, ret); | ||
127 | fdomain_detach(link); | ||
128 | return NULL; | ||
129 | } | ||
130 | |||
131 | return link; | ||
132 | } /* fdomain_attach */ | 115 | } /* fdomain_attach */ |
133 | 116 | ||
134 | /*====================================================================*/ | 117 | /*====================================================================*/ |
135 | 118 | ||
136 | static void fdomain_detach(dev_link_t *link) | 119 | static void fdomain_detach(struct pcmcia_device *p_dev) |
137 | { | 120 | { |
138 | dev_link_t **linkp; | 121 | dev_link_t *link = dev_to_instance(p_dev); |
139 | 122 | ||
140 | DEBUG(0, "fdomain_detach(0x%p)\n", link); | 123 | DEBUG(0, "fdomain_detach(0x%p)\n", link); |
141 | |||
142 | /* Locate device structure */ | ||
143 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | ||
144 | if (*linkp == link) break; | ||
145 | if (*linkp == NULL) | ||
146 | return; | ||
147 | 124 | ||
148 | if (link->state & DEV_CONFIG) | 125 | if (link->state & DEV_CONFIG) |
149 | fdomain_release(link); | 126 | fdomain_release(link); |
150 | 127 | ||
151 | if (link->handle) | 128 | kfree(link->priv); |
152 | pcmcia_deregister_client(link->handle); | ||
153 | |||
154 | /* Unlink device structure, free bits */ | ||
155 | *linkp = link->next; | ||
156 | kfree(link->priv); | ||
157 | |||
158 | } /* fdomain_detach */ | 129 | } /* fdomain_detach */ |
159 | 130 | ||
160 | /*====================================================================*/ | 131 | /*====================================================================*/ |
@@ -256,43 +227,29 @@ static void fdomain_release(dev_link_t *link) | |||
256 | 227 | ||
257 | /*====================================================================*/ | 228 | /*====================================================================*/ |
258 | 229 | ||
259 | static int fdomain_event(event_t event, int priority, | 230 | static int fdomain_suspend(struct pcmcia_device *dev) |
260 | event_callback_args_t *args) | ||
261 | { | 231 | { |
262 | dev_link_t *link = args->client_data; | 232 | dev_link_t *link = dev_to_instance(dev); |
263 | 233 | ||
264 | DEBUG(1, "fdomain_event(0x%06x)\n", event); | ||
265 | |||
266 | switch (event) { | ||
267 | case CS_EVENT_CARD_REMOVAL: | ||
268 | link->state &= ~DEV_PRESENT; | ||
269 | if (link->state & DEV_CONFIG) | ||
270 | fdomain_release(link); | ||
271 | break; | ||
272 | case CS_EVENT_CARD_INSERTION: | ||
273 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | ||
274 | fdomain_config(link); | ||
275 | break; | ||
276 | case CS_EVENT_PM_SUSPEND: | ||
277 | link->state |= DEV_SUSPEND; | 234 | link->state |= DEV_SUSPEND; |
278 | /* Fall through... */ | ||
279 | case CS_EVENT_RESET_PHYSICAL: | ||
280 | if (link->state & DEV_CONFIG) | 235 | if (link->state & DEV_CONFIG) |
281 | pcmcia_release_configuration(link->handle); | 236 | pcmcia_release_configuration(link->handle); |
282 | break; | 237 | |
283 | case CS_EVENT_PM_RESUME: | 238 | return 0; |
239 | } | ||
240 | |||
241 | static int fdomain_resume(struct pcmcia_device *dev) | ||
242 | { | ||
243 | dev_link_t *link = dev_to_instance(dev); | ||
244 | |||
284 | link->state &= ~DEV_SUSPEND; | 245 | link->state &= ~DEV_SUSPEND; |
285 | /* Fall through... */ | ||
286 | case CS_EVENT_CARD_RESET: | ||
287 | if (link->state & DEV_CONFIG) { | 246 | if (link->state & DEV_CONFIG) { |
288 | pcmcia_request_configuration(link->handle, &link->conf); | 247 | pcmcia_request_configuration(link->handle, &link->conf); |
289 | fdomain_16x0_bus_reset(NULL); | 248 | fdomain_16x0_bus_reset(NULL); |
290 | } | 249 | } |
291 | break; | ||
292 | } | ||
293 | return 0; | ||
294 | } /* fdomain_event */ | ||
295 | 250 | ||
251 | return 0; | ||
252 | } | ||
296 | 253 | ||
297 | static struct pcmcia_device_id fdomain_ids[] = { | 254 | static struct pcmcia_device_id fdomain_ids[] = { |
298 | PCMCIA_DEVICE_PROD_ID12("IBM Corp.", "SCSI PCMCIA Card", 0xe3736c88, 0x859cad20), | 255 | PCMCIA_DEVICE_PROD_ID12("IBM Corp.", "SCSI PCMCIA Card", 0xe3736c88, 0x859cad20), |
@@ -307,10 +264,11 @@ static struct pcmcia_driver fdomain_cs_driver = { | |||
307 | .drv = { | 264 | .drv = { |
308 | .name = "fdomain_cs", | 265 | .name = "fdomain_cs", |
309 | }, | 266 | }, |
310 | .attach = fdomain_attach, | 267 | .probe = fdomain_attach, |
311 | .event = fdomain_event, | 268 | .remove = fdomain_detach, |
312 | .detach = fdomain_detach, | ||
313 | .id_table = fdomain_ids, | 269 | .id_table = fdomain_ids, |
270 | .suspend = fdomain_suspend, | ||
271 | .resume = fdomain_resume, | ||
314 | }; | 272 | }; |
315 | 273 | ||
316 | static int __init init_fdomain_cs(void) | 274 | static int __init init_fdomain_cs(void) |
@@ -321,7 +279,6 @@ static int __init init_fdomain_cs(void) | |||
321 | static void __exit exit_fdomain_cs(void) | 279 | static void __exit exit_fdomain_cs(void) |
322 | { | 280 | { |
323 | pcmcia_unregister_driver(&fdomain_cs_driver); | 281 | pcmcia_unregister_driver(&fdomain_cs_driver); |
324 | BUG_ON(dev_list != NULL); | ||
325 | } | 282 | } |
326 | 283 | ||
327 | module_init(init_fdomain_cs); | 284 | module_init(init_fdomain_cs); |
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index 050ea13ff80b..9e3ab3fd5355 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c | |||
@@ -104,9 +104,6 @@ static struct scsi_host_template nsp_driver_template = { | |||
104 | #endif | 104 | #endif |
105 | }; | 105 | }; |
106 | 106 | ||
107 | static dev_link_t *dev_list = NULL; | ||
108 | static dev_info_t dev_info = {"nsp_cs"}; | ||
109 | |||
110 | static nsp_hw_data nsp_data_base; /* attach <-> detect glue */ | 107 | static nsp_hw_data nsp_data_base; /* attach <-> detect glue */ |
111 | 108 | ||
112 | 109 | ||
@@ -1596,19 +1593,17 @@ static int nsp_eh_host_reset(Scsi_Cmnd *SCpnt) | |||
1596 | configure the card at this point -- we wait until we receive a | 1593 | configure the card at this point -- we wait until we receive a |
1597 | card insertion event. | 1594 | card insertion event. |
1598 | ======================================================================*/ | 1595 | ======================================================================*/ |
1599 | static dev_link_t *nsp_cs_attach(void) | 1596 | static int nsp_cs_attach(struct pcmcia_device *p_dev) |
1600 | { | 1597 | { |
1601 | scsi_info_t *info; | 1598 | scsi_info_t *info; |
1602 | client_reg_t client_reg; | ||
1603 | dev_link_t *link; | 1599 | dev_link_t *link; |
1604 | int ret; | ||
1605 | nsp_hw_data *data = &nsp_data_base; | 1600 | nsp_hw_data *data = &nsp_data_base; |
1606 | 1601 | ||
1607 | nsp_dbg(NSP_DEBUG_INIT, "in"); | 1602 | nsp_dbg(NSP_DEBUG_INIT, "in"); |
1608 | 1603 | ||
1609 | /* Create new SCSI device */ | 1604 | /* Create new SCSI device */ |
1610 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 1605 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
1611 | if (info == NULL) { return NULL; } | 1606 | if (info == NULL) { return -ENOMEM; } |
1612 | memset(info, 0, sizeof(*info)); | 1607 | memset(info, 0, sizeof(*info)); |
1613 | link = &info->link; | 1608 | link = &info->link; |
1614 | link->priv = info; | 1609 | link->priv = info; |
@@ -1636,23 +1631,14 @@ static dev_link_t *nsp_cs_attach(void) | |||
1636 | link->conf.IntType = INT_MEMORY_AND_IO; | 1631 | link->conf.IntType = INT_MEMORY_AND_IO; |
1637 | link->conf.Present = PRESENT_OPTION; | 1632 | link->conf.Present = PRESENT_OPTION; |
1638 | 1633 | ||
1634 | link->handle = p_dev; | ||
1635 | p_dev->instance = link; | ||
1639 | 1636 | ||
1640 | /* Register with Card Services */ | 1637 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
1641 | link->next = dev_list; | 1638 | nsp_cs_config(link); |
1642 | dev_list = link; | ||
1643 | client_reg.dev_info = &dev_info; | ||
1644 | client_reg.Version = 0x0210; | ||
1645 | client_reg.event_callback_args.client_data = link; | ||
1646 | ret = pcmcia_register_client(&link->handle, &client_reg); | ||
1647 | if (ret != CS_SUCCESS) { | ||
1648 | cs_error(link->handle, RegisterClient, ret); | ||
1649 | nsp_cs_detach(link); | ||
1650 | return NULL; | ||
1651 | } | ||
1652 | |||
1653 | 1639 | ||
1654 | nsp_dbg(NSP_DEBUG_INIT, "link=0x%p", link); | 1640 | nsp_dbg(NSP_DEBUG_INIT, "link=0x%p", link); |
1655 | return link; | 1641 | return 0; |
1656 | } /* nsp_cs_attach */ | 1642 | } /* nsp_cs_attach */ |
1657 | 1643 | ||
1658 | 1644 | ||
@@ -1662,35 +1648,19 @@ static dev_link_t *nsp_cs_attach(void) | |||
1662 | structures are freed. Otherwise, the structures will be freed | 1648 | structures are freed. Otherwise, the structures will be freed |
1663 | when the device is released. | 1649 | when the device is released. |
1664 | ======================================================================*/ | 1650 | ======================================================================*/ |
1665 | static void nsp_cs_detach(dev_link_t *link) | 1651 | static void nsp_cs_detach(struct pcmcia_device *p_dev) |
1666 | { | 1652 | { |
1667 | dev_link_t **linkp; | 1653 | dev_link_t *link = dev_to_instance(p_dev); |
1668 | 1654 | ||
1669 | nsp_dbg(NSP_DEBUG_INIT, "in, link=0x%p", link); | 1655 | nsp_dbg(NSP_DEBUG_INIT, "in, link=0x%p", link); |
1670 | 1656 | ||
1671 | /* Locate device structure */ | 1657 | if (link->state & DEV_CONFIG) { |
1672 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) { | 1658 | ((scsi_info_t *)link->priv)->stop = 1; |
1673 | if (*linkp == link) { | ||
1674 | break; | ||
1675 | } | ||
1676 | } | ||
1677 | if (*linkp == NULL) { | ||
1678 | return; | ||
1679 | } | ||
1680 | |||
1681 | if (link->state & DEV_CONFIG) | ||
1682 | nsp_cs_release(link); | 1659 | nsp_cs_release(link); |
1683 | |||
1684 | /* Break the link with Card Services */ | ||
1685 | if (link->handle) { | ||
1686 | pcmcia_deregister_client(link->handle); | ||
1687 | } | 1660 | } |
1688 | 1661 | ||
1689 | /* Unlink device structure, free bits */ | ||
1690 | *linkp = link->next; | ||
1691 | kfree(link->priv); | 1662 | kfree(link->priv); |
1692 | link->priv = NULL; | 1663 | link->priv = NULL; |
1693 | |||
1694 | } /* nsp_cs_detach */ | 1664 | } /* nsp_cs_detach */ |
1695 | 1665 | ||
1696 | 1666 | ||
@@ -2021,99 +1991,58 @@ static void nsp_cs_release(dev_link_t *link) | |||
2021 | #endif | 1991 | #endif |
2022 | } /* nsp_cs_release */ | 1992 | } /* nsp_cs_release */ |
2023 | 1993 | ||
2024 | /*====================================================================== | 1994 | static int nsp_cs_suspend(struct pcmcia_device *dev) |
2025 | |||
2026 | The card status event handler. Mostly, this schedules other | ||
2027 | stuff to run after an event is received. A CARD_REMOVAL event | ||
2028 | also sets some flags to discourage the net drivers from trying | ||
2029 | to talk to the card any more. | ||
2030 | |||
2031 | When a CARD_REMOVAL event is received, we immediately set a flag | ||
2032 | to block future accesses to this device. All the functions that | ||
2033 | actually access the device should check this flag to make sure | ||
2034 | the card is still present. | ||
2035 | |||
2036 | ======================================================================*/ | ||
2037 | static int nsp_cs_event(event_t event, | ||
2038 | int priority, | ||
2039 | event_callback_args_t *args) | ||
2040 | { | 1995 | { |
2041 | dev_link_t *link = args->client_data; | 1996 | dev_link_t *link = dev_to_instance(dev); |
2042 | scsi_info_t *info = link->priv; | 1997 | scsi_info_t *info = link->priv; |
2043 | nsp_hw_data *data; | 1998 | nsp_hw_data *data; |
2044 | 1999 | ||
2045 | nsp_dbg(NSP_DEBUG_INIT, "in, event=0x%08x", event); | 2000 | link->state |= DEV_SUSPEND; |
2046 | 2001 | ||
2047 | switch (event) { | 2002 | nsp_dbg(NSP_DEBUG_INIT, "event: suspend"); |
2048 | case CS_EVENT_CARD_REMOVAL: | ||
2049 | nsp_dbg(NSP_DEBUG_INIT, "event: remove"); | ||
2050 | link->state &= ~DEV_PRESENT; | ||
2051 | if (link->state & DEV_CONFIG) { | ||
2052 | ((scsi_info_t *)link->priv)->stop = 1; | ||
2053 | nsp_cs_release(link); | ||
2054 | } | ||
2055 | break; | ||
2056 | 2003 | ||
2057 | case CS_EVENT_CARD_INSERTION: | 2004 | if (info->host != NULL) { |
2058 | nsp_dbg(NSP_DEBUG_INIT, "event: insert"); | 2005 | nsp_msg(KERN_INFO, "clear SDTR status"); |
2059 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | ||
2060 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68)) | ||
2061 | info->bus = args->bus; | ||
2062 | #endif | ||
2063 | nsp_cs_config(link); | ||
2064 | break; | ||
2065 | 2006 | ||
2066 | case CS_EVENT_PM_SUSPEND: | 2007 | data = (nsp_hw_data *)info->host->hostdata; |
2067 | nsp_dbg(NSP_DEBUG_INIT, "event: suspend"); | ||
2068 | link->state |= DEV_SUSPEND; | ||
2069 | /* Fall through... */ | ||
2070 | case CS_EVENT_RESET_PHYSICAL: | ||
2071 | /* Mark the device as stopped, to block IO until later */ | ||
2072 | nsp_dbg(NSP_DEBUG_INIT, "event: reset physical"); | ||
2073 | 2008 | ||
2074 | if (info->host != NULL) { | 2009 | nsphw_init_sync(data); |
2075 | nsp_msg(KERN_INFO, "clear SDTR status"); | 2010 | } |
2076 | 2011 | ||
2077 | data = (nsp_hw_data *)info->host->hostdata; | 2012 | info->stop = 1; |
2078 | 2013 | ||
2079 | nsphw_init_sync(data); | 2014 | if (link->state & DEV_CONFIG) |
2080 | } | 2015 | pcmcia_release_configuration(link->handle); |
2081 | 2016 | ||
2082 | info->stop = 1; | 2017 | return 0; |
2083 | if (link->state & DEV_CONFIG) { | 2018 | } |
2084 | pcmcia_release_configuration(link->handle); | ||
2085 | } | ||
2086 | break; | ||
2087 | 2019 | ||
2088 | case CS_EVENT_PM_RESUME: | 2020 | static int nsp_cs_resume(struct pcmcia_device *dev) |
2089 | nsp_dbg(NSP_DEBUG_INIT, "event: resume"); | 2021 | { |
2090 | link->state &= ~DEV_SUSPEND; | 2022 | dev_link_t *link = dev_to_instance(dev); |
2091 | /* Fall through... */ | 2023 | scsi_info_t *info = link->priv; |
2092 | case CS_EVENT_CARD_RESET: | 2024 | nsp_hw_data *data; |
2093 | nsp_dbg(NSP_DEBUG_INIT, "event: reset"); | ||
2094 | if (link->state & DEV_CONFIG) { | ||
2095 | pcmcia_request_configuration(link->handle, &link->conf); | ||
2096 | } | ||
2097 | info->stop = 0; | ||
2098 | 2025 | ||
2099 | if (info->host != NULL) { | 2026 | nsp_dbg(NSP_DEBUG_INIT, "event: resume"); |
2100 | nsp_msg(KERN_INFO, "reset host and bus"); | ||
2101 | 2027 | ||
2102 | data = (nsp_hw_data *)info->host->hostdata; | 2028 | link->state &= ~DEV_SUSPEND; |
2103 | 2029 | ||
2104 | nsphw_init (data); | 2030 | if (link->state & DEV_CONFIG) |
2105 | nsp_bus_reset(data); | 2031 | pcmcia_request_configuration(link->handle, &link->conf); |
2106 | } | ||
2107 | 2032 | ||
2108 | break; | 2033 | info->stop = 0; |
2109 | 2034 | ||
2110 | default: | 2035 | if (info->host != NULL) { |
2111 | nsp_dbg(NSP_DEBUG_INIT, "event: unknown"); | 2036 | nsp_msg(KERN_INFO, "reset host and bus"); |
2112 | break; | 2037 | |
2038 | data = (nsp_hw_data *)info->host->hostdata; | ||
2039 | |||
2040 | nsphw_init (data); | ||
2041 | nsp_bus_reset(data); | ||
2113 | } | 2042 | } |
2114 | nsp_dbg(NSP_DEBUG_INIT, "end"); | 2043 | |
2115 | return 0; | 2044 | return 0; |
2116 | } /* nsp_cs_event */ | 2045 | } |
2117 | 2046 | ||
2118 | /*======================================================================* | 2047 | /*======================================================================* |
2119 | * module entry point | 2048 | * module entry point |
@@ -2136,10 +2065,11 @@ static struct pcmcia_driver nsp_driver = { | |||
2136 | .drv = { | 2065 | .drv = { |
2137 | .name = "nsp_cs", | 2066 | .name = "nsp_cs", |
2138 | }, | 2067 | }, |
2139 | .attach = nsp_cs_attach, | 2068 | .probe = nsp_cs_attach, |
2140 | .event = nsp_cs_event, | 2069 | .remove = nsp_cs_detach, |
2141 | .detach = nsp_cs_detach, | ||
2142 | .id_table = nsp_cs_ids, | 2070 | .id_table = nsp_cs_ids, |
2071 | .suspend = nsp_cs_suspend, | ||
2072 | .resume = nsp_cs_resume, | ||
2143 | }; | 2073 | }; |
2144 | #endif | 2074 | #endif |
2145 | 2075 | ||
@@ -2171,7 +2101,6 @@ static void __exit nsp_cs_exit(void) | |||
2171 | 2101 | ||
2172 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68)) | 2102 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68)) |
2173 | pcmcia_unregister_driver(&nsp_driver); | 2103 | pcmcia_unregister_driver(&nsp_driver); |
2174 | BUG_ON(dev_list != NULL); | ||
2175 | #else | 2104 | #else |
2176 | unregister_pcmcia_driver(&dev_info); | 2105 | unregister_pcmcia_driver(&dev_info); |
2177 | /* XXX: this really needs to move into generic code.. */ | 2106 | /* XXX: this really needs to move into generic code.. */ |
diff --git a/drivers/scsi/pcmcia/nsp_cs.h b/drivers/scsi/pcmcia/nsp_cs.h index f8b943082717..b66b140a745e 100644 --- a/drivers/scsi/pcmcia/nsp_cs.h +++ b/drivers/scsi/pcmcia/nsp_cs.h | |||
@@ -296,11 +296,9 @@ typedef struct _nsp_hw_data { | |||
296 | */ | 296 | */ |
297 | 297 | ||
298 | /* Card service functions */ | 298 | /* Card service functions */ |
299 | static dev_link_t *nsp_cs_attach (void); | 299 | static void nsp_cs_detach (struct pcmcia_device *p_dev); |
300 | static void nsp_cs_detach (dev_link_t *link); | ||
301 | static void nsp_cs_release(dev_link_t *link); | 300 | static void nsp_cs_release(dev_link_t *link); |
302 | static void nsp_cs_config (dev_link_t *link); | 301 | static void nsp_cs_config (dev_link_t *link); |
303 | static int nsp_cs_event (event_t event, int priority, event_callback_args_t *args); | ||
304 | 302 | ||
305 | /* Linux SCSI subsystem specific functions */ | 303 | /* Linux SCSI subsystem specific functions */ |
306 | static struct Scsi_Host *nsp_detect (struct scsi_host_template *sht); | 304 | static struct Scsi_Host *nsp_detect (struct scsi_host_template *sht); |
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index bb091a45a880..dce7e687fd4a 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c | |||
@@ -98,15 +98,8 @@ typedef struct scsi_info_t { | |||
98 | } scsi_info_t; | 98 | } scsi_info_t; |
99 | 99 | ||
100 | static void qlogic_release(dev_link_t *link); | 100 | static void qlogic_release(dev_link_t *link); |
101 | static int qlogic_event(event_t event, int priority, event_callback_args_t * args); | 101 | static void qlogic_detach(struct pcmcia_device *p_dev); |
102 | 102 | static void qlogic_config(dev_link_t * link); | |
103 | static dev_link_t *qlogic_attach(void); | ||
104 | static void qlogic_detach(dev_link_t *); | ||
105 | |||
106 | |||
107 | static dev_link_t *dev_list = NULL; | ||
108 | |||
109 | static dev_info_t dev_info = "qlogic_cs"; | ||
110 | 103 | ||
111 | static struct Scsi_Host *qlogic_detect(struct scsi_host_template *host, | 104 | static struct Scsi_Host *qlogic_detect(struct scsi_host_template *host, |
112 | dev_link_t *link, int qbase, int qlirq) | 105 | dev_link_t *link, int qbase, int qlirq) |
@@ -163,19 +156,17 @@ free_scsi_host: | |||
163 | err: | 156 | err: |
164 | return NULL; | 157 | return NULL; |
165 | } | 158 | } |
166 | static dev_link_t *qlogic_attach(void) | 159 | static int qlogic_attach(struct pcmcia_device *p_dev) |
167 | { | 160 | { |
168 | scsi_info_t *info; | 161 | scsi_info_t *info; |
169 | client_reg_t client_reg; | ||
170 | dev_link_t *link; | 162 | dev_link_t *link; |
171 | int ret; | ||
172 | 163 | ||
173 | DEBUG(0, "qlogic_attach()\n"); | 164 | DEBUG(0, "qlogic_attach()\n"); |
174 | 165 | ||
175 | /* Create new SCSI device */ | 166 | /* Create new SCSI device */ |
176 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 167 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
177 | if (!info) | 168 | if (!info) |
178 | return NULL; | 169 | return -ENOMEM; |
179 | memset(info, 0, sizeof(*info)); | 170 | memset(info, 0, sizeof(*info)); |
180 | link = &info->link; | 171 | link = &info->link; |
181 | link->priv = info; | 172 | link->priv = info; |
@@ -189,45 +180,26 @@ static dev_link_t *qlogic_attach(void) | |||
189 | link->conf.IntType = INT_MEMORY_AND_IO; | 180 | link->conf.IntType = INT_MEMORY_AND_IO; |
190 | link->conf.Present = PRESENT_OPTION; | 181 | link->conf.Present = PRESENT_OPTION; |
191 | 182 | ||
192 | /* Register with Card Services */ | 183 | link->handle = p_dev; |
193 | link->next = dev_list; | 184 | p_dev->instance = link; |
194 | dev_list = link; | ||
195 | client_reg.dev_info = &dev_info; | ||
196 | client_reg.Version = 0x0210; | ||
197 | client_reg.event_callback_args.client_data = link; | ||
198 | ret = pcmcia_register_client(&link->handle, &client_reg); | ||
199 | if (ret != 0) { | ||
200 | cs_error(link->handle, RegisterClient, ret); | ||
201 | qlogic_detach(link); | ||
202 | return NULL; | ||
203 | } | ||
204 | 185 | ||
205 | return link; | 186 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
187 | qlogic_config(link); | ||
188 | |||
189 | return 0; | ||
206 | } /* qlogic_attach */ | 190 | } /* qlogic_attach */ |
207 | 191 | ||
208 | /*====================================================================*/ | 192 | /*====================================================================*/ |
209 | 193 | ||
210 | static void qlogic_detach(dev_link_t * link) | 194 | static void qlogic_detach(struct pcmcia_device *p_dev) |
211 | { | 195 | { |
212 | dev_link_t **linkp; | 196 | dev_link_t *link = dev_to_instance(p_dev); |
213 | 197 | ||
214 | DEBUG(0, "qlogic_detach(0x%p)\n", link); | 198 | DEBUG(0, "qlogic_detach(0x%p)\n", link); |
215 | 199 | ||
216 | /* Locate device structure */ | ||
217 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | ||
218 | if (*linkp == link) | ||
219 | break; | ||
220 | if (*linkp == NULL) | ||
221 | return; | ||
222 | |||
223 | if (link->state & DEV_CONFIG) | 200 | if (link->state & DEV_CONFIG) |
224 | qlogic_release(link); | 201 | qlogic_release(link); |
225 | 202 | ||
226 | if (link->handle) | ||
227 | pcmcia_deregister_client(link->handle); | ||
228 | |||
229 | /* Unlink device structure, free bits */ | ||
230 | *linkp = link->next; | ||
231 | kfree(link->priv); | 203 | kfree(link->priv); |
232 | 204 | ||
233 | } /* qlogic_detach */ | 205 | } /* qlogic_detach */ |
@@ -349,48 +321,39 @@ static void qlogic_release(dev_link_t *link) | |||
349 | 321 | ||
350 | /*====================================================================*/ | 322 | /*====================================================================*/ |
351 | 323 | ||
352 | static int qlogic_event(event_t event, int priority, event_callback_args_t * args) | 324 | static int qlogic_suspend(struct pcmcia_device *dev) |
353 | { | 325 | { |
354 | dev_link_t *link = args->client_data; | 326 | dev_link_t *link = dev_to_instance(dev); |
355 | 327 | ||
356 | DEBUG(1, "qlogic_event(0x%06x)\n", event); | 328 | link->state |= DEV_SUSPEND; |
357 | 329 | if (link->state & DEV_CONFIG) | |
358 | switch (event) { | 330 | pcmcia_release_configuration(link->handle); |
359 | case CS_EVENT_CARD_REMOVAL: | 331 | |
360 | link->state &= ~DEV_PRESENT; | 332 | return 0; |
361 | if (link->state & DEV_CONFIG) | 333 | } |
362 | qlogic_release(link); | 334 | |
363 | break; | 335 | static int qlogic_resume(struct pcmcia_device *dev) |
364 | case CS_EVENT_CARD_INSERTION: | 336 | { |
365 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | 337 | dev_link_t *link = dev_to_instance(dev); |
366 | qlogic_config(link); | 338 | |
367 | break; | 339 | link->state &= ~DEV_SUSPEND; |
368 | case CS_EVENT_PM_SUSPEND: | 340 | if (link->state & DEV_CONFIG) { |
369 | link->state |= DEV_SUSPEND; | 341 | scsi_info_t *info = link->priv; |
370 | /* Fall through... */ | 342 | |
371 | case CS_EVENT_RESET_PHYSICAL: | 343 | pcmcia_request_configuration(link->handle, &link->conf); |
372 | if (link->state & DEV_CONFIG) | 344 | if ((info->manf_id == MANFID_MACNICA) || |
373 | pcmcia_release_configuration(link->handle); | 345 | (info->manf_id == MANFID_PIONEER) || |
374 | break; | 346 | (info->manf_id == 0x0098)) { |
375 | case CS_EVENT_PM_RESUME: | 347 | outb(0x80, link->io.BasePort1 + 0xd); |
376 | link->state &= ~DEV_SUSPEND; | 348 | outb(0x24, link->io.BasePort1 + 0x9); |
377 | /* Fall through... */ | 349 | outb(0x04, link->io.BasePort1 + 0xd); |
378 | case CS_EVENT_CARD_RESET: | ||
379 | if (link->state & DEV_CONFIG) { | ||
380 | scsi_info_t *info = link->priv; | ||
381 | pcmcia_request_configuration(link->handle, &link->conf); | ||
382 | if ((info->manf_id == MANFID_MACNICA) || (info->manf_id == MANFID_PIONEER) || (info->manf_id == 0x0098)) { | ||
383 | outb(0x80, link->io.BasePort1 + 0xd); | ||
384 | outb(0x24, link->io.BasePort1 + 0x9); | ||
385 | outb(0x04, link->io.BasePort1 + 0xd); | ||
386 | } | ||
387 | /* Ugggglllyyyy!!! */ | ||
388 | qlogicfas408_bus_reset(NULL); | ||
389 | } | 350 | } |
390 | break; | 351 | /* Ugggglllyyyy!!! */ |
352 | qlogicfas408_bus_reset(NULL); | ||
391 | } | 353 | } |
354 | |||
392 | return 0; | 355 | return 0; |
393 | } /* qlogic_event */ | 356 | } |
394 | 357 | ||
395 | static struct pcmcia_device_id qlogic_ids[] = { | 358 | static struct pcmcia_device_id qlogic_ids[] = { |
396 | PCMCIA_DEVICE_PROD_ID12("EIger Labs", "PCMCIA-to-SCSI Adapter", 0x88395fa7, 0x33b7a5e6), | 359 | PCMCIA_DEVICE_PROD_ID12("EIger Labs", "PCMCIA-to-SCSI Adapter", 0x88395fa7, 0x33b7a5e6), |
@@ -419,10 +382,11 @@ static struct pcmcia_driver qlogic_cs_driver = { | |||
419 | .drv = { | 382 | .drv = { |
420 | .name = "qlogic_cs", | 383 | .name = "qlogic_cs", |
421 | }, | 384 | }, |
422 | .attach = qlogic_attach, | 385 | .probe = qlogic_attach, |
423 | .event = qlogic_event, | 386 | .remove = qlogic_detach, |
424 | .detach = qlogic_detach, | ||
425 | .id_table = qlogic_ids, | 387 | .id_table = qlogic_ids, |
388 | .suspend = qlogic_suspend, | ||
389 | .resume = qlogic_resume, | ||
426 | }; | 390 | }; |
427 | 391 | ||
428 | static int __init init_qlogic_cs(void) | 392 | static int __init init_qlogic_cs(void) |
@@ -433,7 +397,6 @@ static int __init init_qlogic_cs(void) | |||
433 | static void __exit exit_qlogic_cs(void) | 397 | static void __exit exit_qlogic_cs(void) |
434 | { | 398 | { |
435 | pcmcia_unregister_driver(&qlogic_cs_driver); | 399 | pcmcia_unregister_driver(&qlogic_cs_driver); |
436 | BUG_ON(dev_list != NULL); | ||
437 | } | 400 | } |
438 | 401 | ||
439 | MODULE_AUTHOR("Tom Zerucha, Michael Griffith"); | 402 | MODULE_AUTHOR("Tom Zerucha, Michael Griffith"); |
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index 98b64b2aa8ee..3a4dd6f5b81f 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c | |||
@@ -228,15 +228,6 @@ enum Phase { | |||
228 | 228 | ||
229 | /* ================================================================== */ | 229 | /* ================================================================== */ |
230 | 230 | ||
231 | /* | ||
232 | * Global (within this module) variables other than | ||
233 | * sym53c500_driver_template (the scsi_host_template). | ||
234 | */ | ||
235 | static dev_link_t *dev_list; | ||
236 | static dev_info_t dev_info = "sym53c500_cs"; | ||
237 | |||
238 | /* ================================================================== */ | ||
239 | |||
240 | static void | 231 | static void |
241 | chip_init(int io_port) | 232 | chip_init(int io_port) |
242 | { | 233 | { |
@@ -872,96 +863,70 @@ cs_failed: | |||
872 | return; | 863 | return; |
873 | } /* SYM53C500_config */ | 864 | } /* SYM53C500_config */ |
874 | 865 | ||
875 | static int | 866 | static int sym53c500_suspend(struct pcmcia_device *dev) |
876 | SYM53C500_event(event_t event, int priority, event_callback_args_t *args) | ||
877 | { | 867 | { |
878 | dev_link_t *link = args->client_data; | 868 | dev_link_t *link = dev_to_instance(dev); |
879 | struct scsi_info_t *info = link->priv; | ||
880 | 869 | ||
881 | DEBUG(1, "SYM53C500_event(0x%06x)\n", event); | 870 | link->state |= DEV_SUSPEND; |
871 | if (link->state & DEV_CONFIG) | ||
872 | pcmcia_release_configuration(link->handle); | ||
882 | 873 | ||
883 | switch (event) { | 874 | return 0; |
884 | case CS_EVENT_CARD_REMOVAL: | 875 | } |
885 | link->state &= ~DEV_PRESENT; | 876 | |
886 | if (link->state & DEV_CONFIG) | 877 | static int sym53c500_resume(struct pcmcia_device *dev) |
887 | SYM53C500_release(link); | 878 | { |
888 | break; | 879 | dev_link_t *link = dev_to_instance(dev); |
889 | case CS_EVENT_CARD_INSERTION: | 880 | struct scsi_info_t *info = link->priv; |
890 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | 881 | |
891 | SYM53C500_config(link); | 882 | link->state &= ~DEV_SUSPEND; |
892 | break; | 883 | if (link->state & DEV_CONFIG) { |
893 | case CS_EVENT_PM_SUSPEND: | 884 | pcmcia_request_configuration(link->handle, &link->conf); |
894 | link->state |= DEV_SUSPEND; | 885 | |
895 | /* Fall through... */ | 886 | /* See earlier comment about manufacturer IDs. */ |
896 | case CS_EVENT_RESET_PHYSICAL: | 887 | if ((info->manf_id == MANFID_MACNICA) || |
897 | if (link->state & DEV_CONFIG) | 888 | (info->manf_id == MANFID_PIONEER) || |
898 | pcmcia_release_configuration(link->handle); | 889 | (info->manf_id == 0x0098)) { |
899 | break; | 890 | outb(0x80, link->io.BasePort1 + 0xd); |
900 | case CS_EVENT_PM_RESUME: | 891 | outb(0x24, link->io.BasePort1 + 0x9); |
901 | link->state &= ~DEV_SUSPEND; | 892 | outb(0x04, link->io.BasePort1 + 0xd); |
902 | /* Fall through... */ | ||
903 | case CS_EVENT_CARD_RESET: | ||
904 | if (link->state & DEV_CONFIG) { | ||
905 | pcmcia_request_configuration(link->handle, &link->conf); | ||
906 | /* See earlier comment about manufacturer IDs. */ | ||
907 | if ((info->manf_id == MANFID_MACNICA) || | ||
908 | (info->manf_id == MANFID_PIONEER) || | ||
909 | (info->manf_id == 0x0098)) { | ||
910 | outb(0x80, link->io.BasePort1 + 0xd); | ||
911 | outb(0x24, link->io.BasePort1 + 0x9); | ||
912 | outb(0x04, link->io.BasePort1 + 0xd); | ||
913 | } | ||
914 | /* | ||
915 | * If things don't work after a "resume", | ||
916 | * this is a good place to start looking. | ||
917 | */ | ||
918 | SYM53C500_int_host_reset(link->io.BasePort1); | ||
919 | } | 893 | } |
920 | break; | 894 | /* |
895 | * If things don't work after a "resume", | ||
896 | * this is a good place to start looking. | ||
897 | */ | ||
898 | SYM53C500_int_host_reset(link->io.BasePort1); | ||
921 | } | 899 | } |
900 | |||
922 | return 0; | 901 | return 0; |
923 | } /* SYM53C500_event */ | 902 | } |
924 | 903 | ||
925 | static void | 904 | static void |
926 | SYM53C500_detach(dev_link_t *link) | 905 | SYM53C500_detach(struct pcmcia_device *p_dev) |
927 | { | 906 | { |
928 | dev_link_t **linkp; | 907 | dev_link_t *link = dev_to_instance(p_dev); |
929 | 908 | ||
930 | DEBUG(0, "SYM53C500_detach(0x%p)\n", link); | 909 | DEBUG(0, "SYM53C500_detach(0x%p)\n", link); |
931 | 910 | ||
932 | /* Locate device structure */ | ||
933 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | ||
934 | if (*linkp == link) | ||
935 | break; | ||
936 | if (*linkp == NULL) | ||
937 | return; | ||
938 | |||
939 | if (link->state & DEV_CONFIG) | 911 | if (link->state & DEV_CONFIG) |
940 | SYM53C500_release(link); | 912 | SYM53C500_release(link); |
941 | 913 | ||
942 | if (link->handle) | ||
943 | pcmcia_deregister_client(link->handle); | ||
944 | |||
945 | /* Unlink device structure, free bits. */ | ||
946 | *linkp = link->next; | ||
947 | kfree(link->priv); | 914 | kfree(link->priv); |
948 | link->priv = NULL; | 915 | link->priv = NULL; |
949 | } /* SYM53C500_detach */ | 916 | } /* SYM53C500_detach */ |
950 | 917 | ||
951 | static dev_link_t * | 918 | static int |
952 | SYM53C500_attach(void) | 919 | SYM53C500_attach(struct pcmcia_device *p_dev) |
953 | { | 920 | { |
954 | struct scsi_info_t *info; | 921 | struct scsi_info_t *info; |
955 | client_reg_t client_reg; | ||
956 | dev_link_t *link; | 922 | dev_link_t *link; |
957 | int ret; | ||
958 | 923 | ||
959 | DEBUG(0, "SYM53C500_attach()\n"); | 924 | DEBUG(0, "SYM53C500_attach()\n"); |
960 | 925 | ||
961 | /* Create new SCSI device */ | 926 | /* Create new SCSI device */ |
962 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 927 | info = kmalloc(sizeof(*info), GFP_KERNEL); |
963 | if (!info) | 928 | if (!info) |
964 | return NULL; | 929 | return -ENOMEM; |
965 | memset(info, 0, sizeof(*info)); | 930 | memset(info, 0, sizeof(*info)); |
966 | link = &info->link; | 931 | link = &info->link; |
967 | link->priv = info; | 932 | link->priv = info; |
@@ -975,20 +940,13 @@ SYM53C500_attach(void) | |||
975 | link->conf.IntType = INT_MEMORY_AND_IO; | 940 | link->conf.IntType = INT_MEMORY_AND_IO; |
976 | link->conf.Present = PRESENT_OPTION; | 941 | link->conf.Present = PRESENT_OPTION; |
977 | 942 | ||
978 | /* Register with Card Services */ | 943 | link->handle = p_dev; |
979 | link->next = dev_list; | 944 | p_dev->instance = link; |
980 | dev_list = link; | 945 | |
981 | client_reg.dev_info = &dev_info; | 946 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
982 | client_reg.Version = 0x0210; | 947 | SYM53C500_config(link); |
983 | client_reg.event_callback_args.client_data = link; | ||
984 | ret = pcmcia_register_client(&link->handle, &client_reg); | ||
985 | if (ret != 0) { | ||
986 | cs_error(link->handle, RegisterClient, ret); | ||
987 | SYM53C500_detach(link); | ||
988 | return NULL; | ||
989 | } | ||
990 | 948 | ||
991 | return link; | 949 | return 0; |
992 | } /* SYM53C500_attach */ | 950 | } /* SYM53C500_attach */ |
993 | 951 | ||
994 | MODULE_AUTHOR("Bob Tracy <rct@frus.com>"); | 952 | MODULE_AUTHOR("Bob Tracy <rct@frus.com>"); |
@@ -1008,10 +966,11 @@ static struct pcmcia_driver sym53c500_cs_driver = { | |||
1008 | .drv = { | 966 | .drv = { |
1009 | .name = "sym53c500_cs", | 967 | .name = "sym53c500_cs", |
1010 | }, | 968 | }, |
1011 | .attach = SYM53C500_attach, | 969 | .probe = SYM53C500_attach, |
1012 | .event = SYM53C500_event, | 970 | .remove = SYM53C500_detach, |
1013 | .detach = SYM53C500_detach, | ||
1014 | .id_table = sym53c500_ids, | 971 | .id_table = sym53c500_ids, |
972 | .suspend = sym53c500_suspend, | ||
973 | .resume = sym53c500_resume, | ||
1015 | }; | 974 | }; |
1016 | 975 | ||
1017 | static int __init | 976 | static int __init |
diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig index c1c1c687bcbd..5758b2566d7f 100644 --- a/drivers/scsi/qla2xxx/Kconfig +++ b/drivers/scsi/qla2xxx/Kconfig | |||
@@ -1,55 +1,78 @@ | |||
1 | config SCSI_QLA2XXX | 1 | config SCSI_QLA_FC |
2 | tristate | 2 | tristate "QLogic QLA2XXX Fibre Channel Support" |
3 | default (SCSI && PCI) | 3 | depends on PCI && SCSI |
4 | depends on SCSI && PCI | 4 | select SCSI_FC_ATTRS |
5 | select FW_LOADER | ||
6 | ---help--- | ||
7 | This qla2xxx driver supports all QLogic Fibre Channel | ||
8 | PCI and PCIe host adapters. | ||
9 | |||
10 | By default, firmware for the ISP parts will be loaded | ||
11 | via the Firmware Loader interface. | ||
12 | |||
13 | ISP Firmware Filename | ||
14 | ---------- ----------------- | ||
15 | 21xx ql2100_fw.bin | ||
16 | 22xx ql2200_fw.bin | ||
17 | 2300, 2312 ql2300_fw.bin | ||
18 | 2322 ql2322_fw.bin | ||
19 | 6312, 6322 ql6312_fw.bin | ||
20 | 24xx ql2400_fw.bin | ||
21 | |||
22 | Upon request, the driver caches the firmware image until | ||
23 | the driver is unloaded. | ||
24 | |||
25 | Firmware images can be retrieved from: | ||
26 | |||
27 | ftp://ftp.qlogic.com/outgoing/linux/firmware/ | ||
28 | |||
29 | NOTE: The original method of building firmware-loader | ||
30 | modules has been deprecated as the firmware-images will | ||
31 | be removed from the kernel sources. | ||
32 | |||
33 | config SCSI_QLA2XXX_EMBEDDED_FIRMWARE | ||
34 | bool " Use firmware-loader modules (DEPRECATED)" | ||
35 | depends on SCSI_QLA_FC | ||
36 | help | ||
37 | This option offers you the deprecated firmware-loader | ||
38 | modules that have been obsoleted by the usage of the | ||
39 | Firmware Loader interface in the qla2xxx driver. | ||
5 | 40 | ||
6 | config SCSI_QLA21XX | 41 | config SCSI_QLA21XX |
7 | tristate "QLogic ISP2100 host adapter family support" | 42 | tristate " Build QLogic ISP2100 firmware-module" |
8 | depends on SCSI_QLA2XXX | 43 | depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE |
9 | select SCSI_FC_ATTRS | ||
10 | select FW_LOADER | ||
11 | ---help--- | 44 | ---help--- |
12 | This driver supports the QLogic 21xx (ISP2100) host adapter family. | 45 | This driver supports the QLogic 21xx (ISP2100) host adapter family. |
13 | 46 | ||
14 | config SCSI_QLA22XX | 47 | config SCSI_QLA22XX |
15 | tristate "QLogic ISP2200 host adapter family support" | 48 | tristate " Build QLogic ISP2200 firmware-module" |
16 | depends on SCSI_QLA2XXX | 49 | depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE |
17 | select SCSI_FC_ATTRS | ||
18 | select FW_LOADER | ||
19 | ---help--- | 50 | ---help--- |
20 | This driver supports the QLogic 22xx (ISP2200) host adapter family. | 51 | This driver supports the QLogic 22xx (ISP2200) host adapter family. |
21 | 52 | ||
22 | config SCSI_QLA2300 | 53 | config SCSI_QLA2300 |
23 | tristate "QLogic ISP2300 host adapter family support" | 54 | tristate " Build QLogic ISP2300 firmware-module" |
24 | depends on SCSI_QLA2XXX | 55 | depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE |
25 | select SCSI_FC_ATTRS | ||
26 | select FW_LOADER | ||
27 | ---help--- | 56 | ---help--- |
28 | This driver supports the QLogic 2300 (ISP2300 and ISP2312) host | 57 | This driver supports the QLogic 2300 (ISP2300 and ISP2312) host |
29 | adapter family. | 58 | adapter family. |
30 | 59 | ||
31 | config SCSI_QLA2322 | 60 | config SCSI_QLA2322 |
32 | tristate "QLogic ISP2322 host adapter family support" | 61 | tristate " Build QLogic ISP2322 firmware-module" |
33 | depends on SCSI_QLA2XXX | 62 | depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE |
34 | select SCSI_FC_ATTRS | ||
35 | select FW_LOADER | ||
36 | ---help--- | 63 | ---help--- |
37 | This driver supports the QLogic 2322 (ISP2322) host adapter family. | 64 | This driver supports the QLogic 2322 (ISP2322) host adapter family. |
38 | 65 | ||
39 | config SCSI_QLA6312 | 66 | config SCSI_QLA6312 |
40 | tristate "QLogic ISP63xx host adapter family support" | 67 | tristate " Build QLogic ISP63xx firmware-module" |
41 | depends on SCSI_QLA2XXX | 68 | depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE |
42 | select SCSI_FC_ATTRS | ||
43 | select FW_LOADER | ||
44 | ---help--- | 69 | ---help--- |
45 | This driver supports the QLogic 63xx (ISP6312 and ISP6322) host | 70 | This driver supports the QLogic 63xx (ISP6312 and ISP6322) host |
46 | adapter family. | 71 | adapter family. |
47 | 72 | ||
48 | config SCSI_QLA24XX | 73 | config SCSI_QLA24XX |
49 | tristate "QLogic ISP24xx host adapter family support" | 74 | tristate " Build QLogic ISP24xx firmware-module" |
50 | depends on SCSI_QLA2XXX | 75 | depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE |
51 | select SCSI_FC_ATTRS | ||
52 | select FW_LOADER | ||
53 | ---help--- | 76 | ---help--- |
54 | This driver supports the QLogic 24xx (ISP2422 and ISP2432) host | 77 | This driver supports the QLogic 24xx (ISP2422 and ISP2432) host |
55 | adapter family. | 78 | adapter family. |
diff --git a/drivers/scsi/qla2xxx/Makefile b/drivers/scsi/qla2xxx/Makefile index b169687d08ff..d028bc50ccf7 100644 --- a/drivers/scsi/qla2xxx/Makefile +++ b/drivers/scsi/qla2xxx/Makefile | |||
@@ -3,15 +3,18 @@ EXTRA_CFLAGS += -DUNIQUE_FW_NAME | |||
3 | qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \ | 3 | qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \ |
4 | qla_dbg.o qla_sup.o qla_rscn.o qla_attr.o | 4 | qla_dbg.o qla_sup.o qla_rscn.o qla_attr.o |
5 | 5 | ||
6 | obj-$(CONFIG_SCSI_QLA_FC) += qla2xxx.o | ||
7 | |||
6 | qla2100-y := ql2100.o ql2100_fw.o | 8 | qla2100-y := ql2100.o ql2100_fw.o |
7 | qla2200-y := ql2200.o ql2200_fw.o | 9 | qla2200-y := ql2200.o ql2200_fw.o |
8 | qla2300-y := ql2300.o ql2300_fw.o | 10 | qla2300-y := ql2300.o ql2300_fw.o |
9 | qla2322-y := ql2322.o ql2322_fw.o | 11 | qla2322-y := ql2322.o ql2322_fw.o |
10 | qla6312-y := ql6312.o ql6312_fw.o | 12 | qla6312-y := ql6312.o ql6312_fw.o |
13 | qla2400-y := ql2400.o ql2400_fw.o | ||
11 | 14 | ||
12 | obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o | 15 | obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o |
13 | obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o | 16 | obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o |
14 | obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o | 17 | obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o |
15 | obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o | 18 | obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o |
16 | obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o | 19 | obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o |
17 | obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o | 20 | obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o qla2400.o |
diff --git a/drivers/scsi/qla2xxx/ql2400.c b/drivers/scsi/qla2xxx/ql2400.c new file mode 100644 index 000000000000..6c7165f47e29 --- /dev/null +++ b/drivers/scsi/qla2xxx/ql2400.c | |||
@@ -0,0 +1,111 @@ | |||
1 | /* | ||
2 | * QLogic Fibre Channel HBA Driver | ||
3 | * Copyright (c) 2003-2005 QLogic Corporation | ||
4 | * | ||
5 | * See LICENSE.qla2xxx for copyright and licensing details. | ||
6 | */ | ||
7 | #include <linux/init.h> | ||
8 | #include <linux/module.h> | ||
9 | #include <linux/pci.h> | ||
10 | |||
11 | #include "qla_def.h" | ||
12 | |||
13 | static char qla_driver_name[] = "qla2400"; | ||
14 | |||
15 | extern uint32_t fw2400_version_str[]; | ||
16 | extern uint32_t fw2400_addr01; | ||
17 | extern uint32_t fw2400_code01[]; | ||
18 | extern uint32_t fw2400_length01; | ||
19 | extern uint32_t fw2400_addr02; | ||
20 | extern uint32_t fw2400_code02[]; | ||
21 | extern uint32_t fw2400_length02; | ||
22 | |||
23 | static struct qla_fw_info qla_fw_tbl[] = { | ||
24 | { | ||
25 | .addressing = FW_INFO_ADDR_EXTENDED, | ||
26 | .fwcode = (unsigned short *)&fw2400_code01[0], | ||
27 | .fwlen = (unsigned short *)&fw2400_length01, | ||
28 | .lfwstart = (unsigned long *)&fw2400_addr01, | ||
29 | }, | ||
30 | { | ||
31 | .addressing = FW_INFO_ADDR_EXTENDED, | ||
32 | .fwcode = (unsigned short *)&fw2400_code02[0], | ||
33 | .fwlen = (unsigned short *)&fw2400_length02, | ||
34 | .lfwstart = (unsigned long *)&fw2400_addr02, | ||
35 | }, | ||
36 | { FW_INFO_ADDR_NOMORE, }, | ||
37 | }; | ||
38 | |||
39 | static struct qla_board_info qla_board_tbl[] = { | ||
40 | { | ||
41 | .drv_name = qla_driver_name, | ||
42 | .isp_name = "ISP2422", | ||
43 | .fw_info = qla_fw_tbl, | ||
44 | .fw_fname = "ql2400_fw.bin", | ||
45 | }, | ||
46 | { | ||
47 | .drv_name = qla_driver_name, | ||
48 | .isp_name = "ISP2432", | ||
49 | .fw_info = qla_fw_tbl, | ||
50 | .fw_fname = "ql2400_fw.bin", | ||
51 | }, | ||
52 | }; | ||
53 | |||
54 | static struct pci_device_id qla24xx_pci_tbl[] = { | ||
55 | { | ||
56 | .vendor = PCI_VENDOR_ID_QLOGIC, | ||
57 | .device = PCI_DEVICE_ID_QLOGIC_ISP2422, | ||
58 | .subvendor = PCI_ANY_ID, | ||
59 | .subdevice = PCI_ANY_ID, | ||
60 | .driver_data = (unsigned long)&qla_board_tbl[0], | ||
61 | }, | ||
62 | { | ||
63 | .vendor = PCI_VENDOR_ID_QLOGIC, | ||
64 | .device = PCI_DEVICE_ID_QLOGIC_ISP2432, | ||
65 | .subvendor = PCI_ANY_ID, | ||
66 | .subdevice = PCI_ANY_ID, | ||
67 | .driver_data = (unsigned long)&qla_board_tbl[1], | ||
68 | }, | ||
69 | {0, 0}, | ||
70 | }; | ||
71 | MODULE_DEVICE_TABLE(pci, qla24xx_pci_tbl); | ||
72 | |||
73 | static int __devinit | ||
74 | qla24xx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | ||
75 | { | ||
76 | return qla2x00_probe_one(pdev, | ||
77 | (struct qla_board_info *)id->driver_data); | ||
78 | } | ||
79 | |||
80 | static void __devexit | ||
81 | qla24xx_remove_one(struct pci_dev *pdev) | ||
82 | { | ||
83 | qla2x00_remove_one(pdev); | ||
84 | } | ||
85 | |||
86 | static struct pci_driver qla24xx_pci_driver = { | ||
87 | .name = "qla2400", | ||
88 | .id_table = qla24xx_pci_tbl, | ||
89 | .probe = qla24xx_probe_one, | ||
90 | .remove = __devexit_p(qla24xx_remove_one), | ||
91 | }; | ||
92 | |||
93 | static int __init | ||
94 | qla24xx_init(void) | ||
95 | { | ||
96 | return pci_module_init(&qla24xx_pci_driver); | ||
97 | } | ||
98 | |||
99 | static void __exit | ||
100 | qla24xx_exit(void) | ||
101 | { | ||
102 | pci_unregister_driver(&qla24xx_pci_driver); | ||
103 | } | ||
104 | |||
105 | module_init(qla24xx_init); | ||
106 | module_exit(qla24xx_exit); | ||
107 | |||
108 | MODULE_AUTHOR("QLogic Corporation"); | ||
109 | MODULE_DESCRIPTION("QLogic ISP24xx FC-SCSI Host Bus Adapter driver"); | ||
110 | MODULE_LICENSE("GPL"); | ||
111 | MODULE_VERSION(QLA2XXX_VERSION); | ||
diff --git a/drivers/scsi/qla2xxx/ql2400_fw.c b/drivers/scsi/qla2xxx/ql2400_fw.c new file mode 100644 index 000000000000..5977795854f8 --- /dev/null +++ b/drivers/scsi/qla2xxx/ql2400_fw.c | |||
@@ -0,0 +1,12376 @@ | |||
1 | /* | ||
2 | * QLogic Fibre Channel HBA Driver | ||
3 | * Copyright (c) 2003-2005 QLogic Corporation | ||
4 | * | ||
5 | * See LICENSE.qla2xxx for copyright and licensing details. | ||
6 | */ | ||
7 | #include <linux/types.h> | ||
8 | |||
9 | /* | ||
10 | * Firmware Version 4.00.16 (08:09 Oct 26, 2005) | ||
11 | */ | ||
12 | |||
13 | #ifdef UNIQUE_FW_NAME | ||
14 | uint32_t fw2400_version = 4*1024+0; | ||
15 | #else | ||
16 | uint32_t risc_code_version = 4*1024+0; | ||
17 | #endif | ||
18 | |||
19 | #ifdef UNIQUE_FW_NAME | ||
20 | uint32_t fw2400_version_str[] = {4, 0,16}; | ||
21 | #else | ||
22 | uint32_t firmware_version[] = {4, 0,16}; | ||
23 | #endif | ||
24 | |||
25 | #ifdef UNIQUE_FW_NAME | ||
26 | #define fw2400_VERSION_STRING "4.00.16" | ||
27 | #else | ||
28 | #define FW_VERSION_STRING "4.00.16" | ||
29 | #endif | ||
30 | |||
31 | #ifdef UNIQUE_FW_NAME | ||
32 | uint32_t fw2400_addr01 = 0x00100000 ; | ||
33 | #else | ||
34 | uint32_t risc_code_addr01 = 0x00100000 ; | ||
35 | #endif | ||
36 | |||
37 | #ifdef UNIQUE_FW_NAME | ||
38 | uint32_t fw2400_code01[] = { | ||
39 | #else | ||
40 | uint32_t risc_code01[] = { | ||
41 | #endif | ||
42 | 0x0401f17c, 0x0010e000, 0x00100000, 0x0000ab4a, | ||
43 | 0x00000004, 0x00000000, 0x00000010, 0x00000002, | ||
44 | 0x00000003, 0x00000000, 0x20434f50, 0x59524947, | ||
45 | 0x48542032, 0x30303520, 0x514c4f47, 0x49432043, | ||
46 | 0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350, | ||
47 | 0x32347878, 0x20466972, 0x6d776172, 0x65202020, | ||
48 | 0x56657273, 0x696f6e20, 0x342e302e, 0x31362020, | ||
49 | 0x20202024, 0x00000000, 0x00000000, 0x00000000, | ||
50 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
51 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
52 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
53 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
54 | 0x42001800, 0x0010014f, 0x42002000, 0x0010b8fe, | ||
55 | 0x500c0800, 0x800c1800, 0x500c1000, 0x800c1800, | ||
56 | 0x54042000, 0x80102000, 0x80040800, 0x80081040, | ||
57 | 0x040207fc, 0x500c0800, 0x800409c0, 0x040207f6, | ||
58 | 0x44002000, 0x80102000, 0x40100000, 0x44040000, | ||
59 | 0x80000000, 0x44080000, 0x80000000, 0x440c0000, | ||
60 | 0x80000000, 0x44100000, 0x80000000, 0x44140000, | ||
61 | 0x80000000, 0x44180000, 0x80000000, 0x441c0000, | ||
62 | 0x80000000, 0x44200000, 0x80000000, 0x44240000, | ||
63 | 0x80000000, 0x44280000, 0x80000000, 0x442c0000, | ||
64 | 0x80000000, 0x44300000, 0x80000000, 0x44340000, | ||
65 | 0x80000000, 0x44380000, 0x80000000, 0x443c0000, | ||
66 | 0x80000000, 0x44400000, 0x80000000, 0x44440000, | ||
67 | 0x80000000, 0x44480000, 0x80000000, 0x444c0000, | ||
68 | 0x80000000, 0x44500000, 0x80000000, 0x44540000, | ||
69 | 0x80000000, 0x44580000, 0x80000000, 0x445c0000, | ||
70 | 0x80000000, 0x44600000, 0x80000000, 0x44640000, | ||
71 | 0x80000000, 0x44680000, 0x80000000, 0x446c0000, | ||
72 | 0x80000000, 0x44700000, 0x80000000, 0x44740000, | ||
73 | 0x80000000, 0x44780000, 0x80000000, 0x447c0000, | ||
74 | 0x80000000, 0x44800000, 0x80000000, 0x44840000, | ||
75 | 0x80000000, 0x44880000, 0x80000000, 0x448c0000, | ||
76 | 0x80000000, 0x44900000, 0x80000000, 0x44940000, | ||
77 | 0x80000000, 0x44980000, 0x80000000, 0x449c0000, | ||
78 | 0x80000000, 0x44a00000, 0x80000000, 0x44a40000, | ||
79 | 0x80000000, 0x44a80000, 0x80000000, 0x44ac0000, | ||
80 | 0x80000000, 0x44b00000, 0x80000000, 0x44b40000, | ||
81 | 0x80000000, 0x44b80000, 0x80000000, 0x44bc0000, | ||
82 | 0x80000000, 0x44c00000, 0x80000000, 0x44c40000, | ||
83 | 0x80000000, 0x44c80000, 0x80000000, 0x44cc0000, | ||
84 | 0x80000000, 0x44d00000, 0x80000000, 0x44d80000, | ||
85 | 0x80000000, 0x44d40000, 0x80000000, 0x44dc0000, | ||
86 | 0x80000000, 0x44e00000, 0x80000000, 0x44e40000, | ||
87 | 0x80000000, 0x44e80000, 0x80000000, 0x44ec0000, | ||
88 | 0x80000000, 0x44f00000, 0x80000000, 0x44f40000, | ||
89 | 0x80000000, 0x44f80000, 0x80000000, 0x44fc0000, | ||
90 | 0x80000000, 0x45000000, 0x80000000, 0x45040000, | ||
91 | 0x80000000, 0x45080000, 0x80000000, 0x450c0000, | ||
92 | 0x80000000, 0x45100000, 0x80000000, 0x45140000, | ||
93 | 0x80000000, 0x45180000, 0x80000000, 0x451c0000, | ||
94 | 0x80000000, 0x45200000, 0x80000000, 0x45240000, | ||
95 | 0x80000000, 0x45280000, 0x80000000, 0x452c0000, | ||
96 | 0x80000000, 0x45300000, 0x80000000, 0x45340000, | ||
97 | 0x80000000, 0x45380000, 0x80000000, 0x453c0000, | ||
98 | 0x80000000, 0x45400000, 0x80000000, 0x45440000, | ||
99 | 0x80000000, 0x45480000, 0x80000000, 0x454c0000, | ||
100 | 0x80000000, 0x45500000, 0x80000000, 0x45540000, | ||
101 | 0x80000000, 0x45580000, 0x80000000, 0x455c0000, | ||
102 | 0x80000000, 0x45600000, 0x80000000, 0x45640000, | ||
103 | 0x80000000, 0x45680000, 0x80000000, 0x456c0000, | ||
104 | 0x80000000, 0x45700000, 0x80000000, 0x45740000, | ||
105 | 0x80000000, 0x45780000, 0x80000000, 0x457c0000, | ||
106 | 0x80000000, 0x45800000, 0x80000000, 0x45840000, | ||
107 | 0x80000000, 0x45880000, 0x80000000, 0x458c0000, | ||
108 | 0x80000000, 0x45900000, 0x80000000, 0x45940000, | ||
109 | 0x80000000, 0x45980000, 0x80000000, 0x459c0000, | ||
110 | 0x80000000, 0x45a00000, 0x80000000, 0x45a40000, | ||
111 | 0x80000000, 0x45a80000, 0x80000000, 0x45ac0000, | ||
112 | 0x80000000, 0x45b00000, 0x80000000, 0x45b40000, | ||
113 | 0x80000000, 0x45b80000, 0x80000000, 0x45bc0000, | ||
114 | 0x80000000, 0x45c00000, 0x80000000, 0x45c40000, | ||
115 | 0x80000000, 0x45c80000, 0x80000000, 0x45cc0000, | ||
116 | 0x80000000, 0x45d00000, 0x80000000, 0x45d40000, | ||
117 | 0x80000000, 0x45d80000, 0x80000000, 0x45dc0000, | ||
118 | 0x80000000, 0x45e00000, 0x80000000, 0x45e40000, | ||
119 | 0x80000000, 0x45e80000, 0x80000000, 0x45ec0000, | ||
120 | 0x80000000, 0x45f00000, 0x80000000, 0x45f40000, | ||
121 | 0x80000000, 0x45f80000, 0x80000000, 0x45fc0000, | ||
122 | 0x4a03c020, 0x00004000, 0x4a03c011, 0x40000010, | ||
123 | 0x04006000, 0x4203e000, 0x40000000, 0x59e00017, | ||
124 | 0x8c000508, 0x04000003, 0x4a03c017, 0x00000000, | ||
125 | 0x4203e000, 0x30000001, 0x0401f000, 0x0000bf00, | ||
126 | 0x00000080, 0x0000bfe0, 0x00000020, 0x0000ff00, | ||
127 | 0x00000080, 0x0000ffd0, 0x00000030, 0x00007100, | ||
128 | 0x00000010, 0x00007200, 0x00000008, 0x00007209, | ||
129 | 0x00000007, 0x00007300, 0x00000008, 0x00007309, | ||
130 | 0x00000007, 0x00007400, 0x00000008, 0x00007409, | ||
131 | 0x00000007, 0x00007600, 0x000000b0, 0x00007700, | ||
132 | 0x00000040, 0x00003000, 0x00000070, 0x00004000, | ||
133 | 0x000000c0, 0x00006000, 0x00000050, 0x00006100, | ||
134 | 0x00000010, 0x00006130, 0x00000010, 0x00006150, | ||
135 | 0x00000010, 0x00006170, 0x00000010, 0x00006190, | ||
136 | 0x00000010, 0x000061b0, 0x00000010, 0x00000000, | ||
137 | 0x42000000, 0x00000100, 0x4202f000, 0x00000000, | ||
138 | 0x42000800, 0x00021f00, 0x45780800, 0x80040800, | ||
139 | 0x80000040, 0x040207fd, 0x4203f000, 0x00021fff, | ||
140 | 0x40000000, 0x4203e000, 0x90000100, 0x40000000, | ||
141 | 0x0201f800, 0x001006fd, 0x42000000, 0x00001000, | ||
142 | 0x50000000, 0x82000480, 0x24320002, 0x04020015, | ||
143 | 0x42000800, 0x00000064, 0x80040840, 0x04000007, | ||
144 | 0x4a030000, 0x00000001, 0x40000000, 0x59800000, | ||
145 | 0x8c000500, 0x040007f9, 0x04000008, 0x42000800, | ||
146 | 0x00007a17, 0x50040000, 0x8c00050e, 0x04020003, | ||
147 | 0x8400054e, 0x44000800, 0x4a030000, 0x00000000, | ||
148 | 0x4a03c020, 0x00000004, 0x4203e000, 0x6000000f, | ||
149 | 0x59e00023, 0x8c000500, 0x04020039, 0x42000000, | ||
150 | 0x00100001, 0x50000800, 0x82040c00, 0x00000004, | ||
151 | 0x58042003, 0x42001000, 0xffffffff, 0x0201f800, | ||
152 | 0x001006f4, 0x0402004e, 0x58042003, 0x42001000, | ||
153 | 0xffffffff, 0x0201f800, 0x001006f4, 0x04020048, | ||
154 | 0x58042003, 0x42001000, 0x00ffffff, 0x0201f800, | ||
155 | 0x001006f4, 0x04020042, 0x58042003, 0x42001000, | ||
156 | 0x00ffffff, 0x0201f800, 0x001006f4, 0x0402003c, | ||
157 | 0x42000000, 0x00100001, 0x5000a000, 0x8250a400, | ||
158 | 0x00000004, 0x4200a800, 0x00020000, 0x5850b003, | ||
159 | 0x0201f800, 0x0010ab17, 0x8250a400, 0x00000005, | ||
160 | 0x4a0370e8, 0x00000003, 0x4200a800, 0x0000c000, | ||
161 | 0x5850b003, 0x0201f800, 0x0010ab17, 0x4a0378e8, | ||
162 | 0x00000003, 0x4200a800, 0x00008000, 0x5850b003, | ||
163 | 0x0201f800, 0x0010ab17, 0x0401f02b, 0x42000800, | ||
164 | 0x00020000, 0x58042003, 0x42001000, 0xffffffff, | ||
165 | 0x0201f800, 0x001006f4, 0x04020019, 0x4a0370e8, | ||
166 | 0x00000003, 0x42000800, 0x0000c000, 0x58042003, | ||
167 | 0x82102500, 0x00ffffff, 0x42001000, 0x00ffffff, | ||
168 | 0x0201f800, 0x001006f4, 0x0402000d, 0x4a0378e8, | ||
169 | 0x00000003, 0x42000800, 0x00008000, 0x58042003, | ||
170 | 0x82102500, 0x00ffffff, 0x42001000, 0x00ffffff, | ||
171 | 0x0201f800, 0x001006f4, 0x0400000b, 0x4a03c020, | ||
172 | 0x00004010, 0x4a03c011, 0x40100011, 0x04006000, | ||
173 | 0x4203e000, 0x40000000, 0x4203e000, 0x30000001, | ||
174 | 0x0401f000, 0x0201f800, 0x00100791, 0x42001000, | ||
175 | 0x0010ab4a, 0x40080000, 0x80140480, 0x82001d00, | ||
176 | 0xffffff00, 0x04020003, 0x40001800, 0x0401f003, | ||
177 | 0x42001800, 0x000000ff, 0x480bc840, 0x480fc842, | ||
178 | 0x04011000, 0x400c0000, 0x80081400, 0x40140000, | ||
179 | 0x80080580, 0x040207f0, 0x4817500d, 0x45782800, | ||
180 | 0x59c40000, 0x82000500, 0xffff0000, 0x80000120, | ||
181 | 0x82000580, 0x00002422, 0x04020005, 0x59a80005, | ||
182 | 0x8400054e, 0x48035005, 0x0401f008, 0x59e00003, | ||
183 | 0x82000500, 0x00030000, 0x04000004, 0x59a80005, | ||
184 | 0x84000554, 0x48035005, 0x42000800, 0x00000040, | ||
185 | 0x59a80005, 0x8c000514, 0x0402000e, 0x42000800, | ||
186 | 0x00001000, 0x82141480, 0x0017ffff, 0x04021009, | ||
187 | 0x80040902, 0x82141480, 0x0013ffff, 0x04021005, | ||
188 | 0x80040902, 0x82141480, 0x0011ffff, 0x04001b8d, | ||
189 | 0x4807500e, 0x42001000, 0x00000024, 0x0201f800, | ||
190 | 0x00106681, 0x82040c00, 0x0010d1c0, 0x4807500b, | ||
191 | 0x4a03c810, 0x00100000, 0x4a03c811, 0x0010ab4a, | ||
192 | 0x4a03c829, 0x00000004, 0x59e40001, 0x82000540, | ||
193 | 0x0003001d, 0x4803c801, 0x4a03c014, 0x001c001c, | ||
194 | 0x42001000, 0x0000001c, 0x0201f800, 0x001006e2, | ||
195 | 0x4202c000, 0x0010d1c0, 0x59aab00b, 0x59aaa00b, | ||
196 | 0x59aaa80b, 0x59aac80e, 0x49675069, 0x59a8000b, | ||
197 | 0x4803500c, 0x0401fbf5, 0x0201f800, 0x00107903, | ||
198 | 0x0201f800, 0x001007be, 0x0201f800, 0x00100807, | ||
199 | 0x0201f800, 0x00101a05, 0x0201f800, 0x00101354, | ||
200 | 0x0201f800, 0x00100969, 0x0201f800, 0x00101354, | ||
201 | 0x0201f800, 0x00100f4c, 0x0201f800, 0x001066c1, | ||
202 | 0x0401fb1a, 0x0201f800, 0x0010220e, 0x0201f800, | ||
203 | 0x001053bb, 0x0201f800, 0x00104c90, 0x0201f800, | ||
204 | 0x00106194, 0x0201f800, 0x00105f28, 0x0201f800, | ||
205 | 0x001013ed, 0x0201f800, 0x0010126f, 0x4203e000, | ||
206 | 0xf0000001, 0x42000000, 0x00001000, 0x50000000, | ||
207 | 0x82000480, 0x24220001, 0x04000016, 0x59e00002, | ||
208 | 0x8c00051e, 0x42000000, 0x7ffe00fe, 0x04020003, | ||
209 | 0x42000000, 0x7ffe01fe, 0x50000800, 0x48075058, | ||
210 | 0x80040920, 0x82040580, 0x0000013a, 0x04000004, | ||
211 | 0x82040580, 0x0000013b, 0x04020006, 0x59a80005, | ||
212 | 0x84000552, 0x48035005, 0x4a0378e4, 0x000c0000, | ||
213 | 0x4a03c018, 0x0000000f, 0x4203e000, 0x20000511, | ||
214 | 0x4203e000, 0x50010000, 0x4a03c020, 0x00000000, | ||
215 | 0x04027013, 0x59e00020, 0x82000580, 0x00000002, | ||
216 | 0x0402000f, 0x4a03c020, 0x00004000, 0x4a03c011, | ||
217 | 0x40000010, 0x04006000, 0x4203e000, 0x40000000, | ||
218 | 0x59e00017, 0x8c000508, 0x04000003, 0x4a03c017, | ||
219 | 0x00000000, 0x4203e000, 0x30000001, 0x4202d800, | ||
220 | 0x00000000, 0x4203e000, 0xb0600000, 0x59a80005, | ||
221 | 0x42000800, 0x00000002, 0x8c000512, 0x04020007, | ||
222 | 0x42000800, 0x0000000f, 0x8c000514, 0x04020003, | ||
223 | 0x42000800, 0x00000001, 0x4007f800, 0x59a80005, | ||
224 | 0x8c000514, 0x02020000, 0x00020004, 0x59e00003, | ||
225 | 0x82000500, 0x00030000, 0x82000580, 0x00000000, | ||
226 | 0x04020af8, 0x0201f000, 0x00020004, 0x4df00000, | ||
227 | 0x4203e000, 0x50000000, 0x416c0000, 0x82000c80, | ||
228 | 0x00000008, 0x04021aef, 0x0c01f804, 0x5c03e000, | ||
229 | 0x0201f000, 0x00020008, 0x001002f7, 0x0010030a, | ||
230 | 0x001003d7, 0x001002f6, 0x00100452, 0x001002f6, | ||
231 | 0x001002f6, 0x00100593, 0x0401fae2, 0x42000800, | ||
232 | 0x0010b4a4, 0x5804001d, 0x4803c857, 0x8c000500, | ||
233 | 0x0400000d, 0x84000500, 0x4800081d, 0x4202d800, | ||
234 | 0x00000004, 0x0401fbd3, 0x49f3c857, 0x5c000800, | ||
235 | 0x5c000000, 0x82000540, 0x00003e00, 0x4c000000, | ||
236 | 0x4c040000, 0x1c01f000, 0x0401fbbd, 0x0201f800, | ||
237 | 0x0010513b, 0x04000009, 0x0201f800, 0x00105151, | ||
238 | 0x0402002e, 0x59c40006, 0x82000540, 0x000000c0, | ||
239 | 0x48038806, 0x0401f029, 0x0201f800, 0x001050a2, | ||
240 | 0x836c0580, 0x00000001, 0x040200bc, 0x59a80017, | ||
241 | 0x82000580, 0x00000009, 0x040200b8, 0x497b5010, | ||
242 | 0x4a038893, 0x00000001, 0x42001000, 0x000000f0, | ||
243 | 0x0201f800, 0x0010193d, 0x0201f800, 0x00105149, | ||
244 | 0x59c41006, 0x04020006, 0x82081540, 0x000000f1, | ||
245 | 0x82081500, 0xbbffffff, 0x0401f003, 0x82081540, | ||
246 | 0x440000f1, 0x480b8806, 0x0201f800, 0x0010609e, | ||
247 | 0x4a0378e4, 0x00002000, 0x42000000, 0x0010b83a, | ||
248 | 0x0201f800, 0x0010aa47, 0x42001000, 0x00008030, | ||
249 | 0x497b5013, 0x0401f035, 0x0201f800, 0x00103b38, | ||
250 | 0x59c400a4, 0x82000500, 0x0000000f, 0x82000480, | ||
251 | 0x00000007, 0x04021091, 0x0201f800, 0x0010609e, | ||
252 | 0x59c400a3, 0x82000500, 0xffefffff, 0x480388a3, | ||
253 | 0x59a8004b, 0x800001c0, 0x04020004, 0x0201f800, | ||
254 | 0x00104139, 0x0401f085, 0x59a80015, 0x84000546, | ||
255 | 0x48035015, 0x0201f800, 0x00105141, 0x59c41006, | ||
256 | 0x04020006, 0x82081540, 0x44000001, 0x82081500, | ||
257 | 0xffffff0f, 0x0401f003, 0x82081540, 0x440000f1, | ||
258 | 0x480b8806, 0x497b9005, 0x4a038802, 0x0000ffff, | ||
259 | 0x4a0378e4, 0x00003000, 0x42000000, 0x0010b80c, | ||
260 | 0x0201f800, 0x0010aa47, 0x59a81010, 0x42000800, | ||
261 | 0x00000003, 0x0201f800, 0x00106c78, 0x42001000, | ||
262 | 0x00008010, 0x59a8180a, 0x0201f800, 0x00103a3e, | ||
263 | 0x0201f800, 0x00101815, 0x59a80805, 0x82040d00, | ||
264 | 0xffffffdf, 0x48075005, 0x0201f800, 0x0010483d, | ||
265 | 0x0201f800, 0x0010513b, 0x0400000a, 0x0201f800, | ||
266 | 0x0010413e, 0x04000007, 0x4a035013, 0x00000001, | ||
267 | 0x497b5021, 0x0201f800, 0x00103c80, 0x0401f04f, | ||
268 | 0x0201f800, 0x001048ec, 0x04000005, 0x59c41002, | ||
269 | 0x8408150c, 0x480b8802, 0x0401f012, 0x0201f800, | ||
270 | 0x0010513b, 0x04020006, 0x59a8001d, 0x80000540, | ||
271 | 0x02000800, 0x0010930f, 0x0401f00a, 0x0201f800, | ||
272 | 0x0010930f, 0x59a80026, 0x8c000506, 0x04020005, | ||
273 | 0x59a8001d, 0x80000540, 0x02020800, 0x00104245, | ||
274 | 0x497b5028, 0x497b5027, 0x497b5018, 0x0201f800, | ||
275 | 0x0010513b, 0x59a81026, 0x0402000a, 0x0201f800, | ||
276 | 0x0010162a, 0x80001580, 0x59a8002a, 0x82000500, | ||
277 | 0xffff0000, 0x80040d40, 0x4807502a, 0x0401f005, | ||
278 | 0x59a8002a, 0x82000500, 0xffff0000, 0x4803502a, | ||
279 | 0x599c0017, 0x8c00050a, 0x04000002, 0x84081544, | ||
280 | 0x480b5026, 0x0201f800, 0x0010513b, 0x04000004, | ||
281 | 0x0201f800, 0x0010162a, 0x48078880, 0x42001000, | ||
282 | 0x00000005, 0x0201f800, 0x001070b0, 0x497b5028, | ||
283 | 0x497b501b, 0x4a03501c, 0x0000ffff, 0x4a0378e4, | ||
284 | 0x000000c0, 0x4202d800, 0x00000002, 0x0201f800, | ||
285 | 0x0010513b, 0x04000007, 0x59a80026, 0x82000500, | ||
286 | 0x0000000c, 0x82000580, 0x00000004, 0x04000003, | ||
287 | 0x0201f800, 0x00101e45, 0x1c01f000, 0x59a8001c, | ||
288 | 0x82000580, 0x0000ffff, 0x04000004, 0x0201f800, | ||
289 | 0x00101e45, 0x0401f074, 0x59a80026, 0x8c00050a, | ||
290 | 0x04020003, 0x8c000506, 0x0400001c, 0x8c000500, | ||
291 | 0x0400001a, 0x4a038802, 0x0000ffbf, 0x8c000502, | ||
292 | 0x04000016, 0x599c0018, 0x8c000516, 0x04020010, | ||
293 | 0x59a80027, 0x82000580, 0x0000ffff, 0x0400000c, | ||
294 | 0x0201f800, 0x00101f9a, 0x59a80026, 0x8c000504, | ||
295 | 0x0402005d, 0x42001000, 0x00000003, 0x417a5800, | ||
296 | 0x0201f800, 0x00101fbf, 0x0401f057, 0x59a80028, | ||
297 | 0x80000540, 0x04020054, 0x59a80026, 0x8c000508, | ||
298 | 0x04020005, 0x59a8001b, 0x80000540, 0x0402004e, | ||
299 | 0x0401f003, 0x8c000516, 0x0400004b, 0x0201f800, | ||
300 | 0x001048ec, 0x04020048, 0x599c0018, 0x8c000516, | ||
301 | 0x04020004, 0x0201f800, 0x00104c51, 0x04020042, | ||
302 | 0x599c0017, 0x8c00050a, 0x0400000d, 0x4200b000, | ||
303 | 0x000007f0, 0x417a8800, 0x0201f800, 0x00020245, | ||
304 | 0x04020004, 0x59340200, 0x8c00051a, 0x04020036, | ||
305 | 0x81468800, 0x8058b040, 0x040207f8, 0x4a038802, | ||
306 | 0x0000ffff, 0x42001800, 0x0010b4eb, 0x0401fb8c, | ||
307 | 0x42001800, 0x0010b4f8, 0x0401fb89, 0x59a80005, | ||
308 | 0x84000502, 0x48035005, 0x4a0378e4, 0x00000080, | ||
309 | 0x4202d800, 0x00000003, 0x4a03501c, 0x0000ffff, | ||
310 | 0x0401fa7f, 0x80000580, 0x0201f800, 0x00101590, | ||
311 | 0x599c0018, 0x8c000516, 0x04000004, 0x0201f800, | ||
312 | 0x00103b10, 0x0401f009, 0x42001800, 0x0000ffff, | ||
313 | 0x42002000, 0x00000006, 0x42003000, 0x00000000, | ||
314 | 0x0201f800, 0x00103aae, 0x0201f800, 0x00105151, | ||
315 | 0x0400000b, 0x59c40006, 0x0201f800, 0x0010513b, | ||
316 | 0x04000004, 0x82000500, 0xffffff0f, 0x0401f003, | ||
317 | 0x82000500, 0xfbffffff, 0x48038806, 0x0201f800, | ||
318 | 0x00106f36, 0x1c01f000, 0x4c040000, 0x4c080000, | ||
319 | 0x4c100000, 0x59a8003e, 0x82000c80, 0x00000004, | ||
320 | 0x04021980, 0x0c01f805, 0x5c002000, 0x5c001000, | ||
321 | 0x5c000800, 0x1c01f000, 0x00100462, 0x001004ea, | ||
322 | 0x00100516, 0x00100577, 0x42000000, 0x00000001, | ||
323 | 0x0201f800, 0x00101590, 0x0201f800, 0x0010609e, | ||
324 | 0x59c408a3, 0x82040d00, 0xfffffff7, 0x480788a3, | ||
325 | 0x0201f800, 0x00105141, 0x0400000e, 0x0201f800, | ||
326 | 0x00105151, 0x0400000b, 0x0201f800, 0x00105149, | ||
327 | 0x04020964, 0x59c400a3, 0x84000532, 0x84000570, | ||
328 | 0x480388a3, 0x4a038808, 0x00000008, 0x0401f010, | ||
329 | 0x59c400a3, 0x84000530, 0x82000500, 0xbf7fffff, | ||
330 | 0x480388a3, 0x42000800, 0x000000f8, 0x0201f800, | ||
331 | 0x00104200, 0x59c400a3, 0x82000540, 0x00018000, | ||
332 | 0x8400051c, 0x480388a3, 0x497b8808, 0x59c40006, | ||
333 | 0x82000500, 0xfbffff0e, 0x48038806, 0x497b2822, | ||
334 | 0x497b2823, 0x42000800, 0x000001f4, 0x42001000, | ||
335 | 0x00100591, 0x0201f800, 0x00105f83, 0x59c40805, | ||
336 | 0x42001000, 0x00000001, 0x0201f800, 0x0010193d, | ||
337 | 0x0201f800, 0x0010163b, 0x0402000a, 0x42000000, | ||
338 | 0x00000001, 0x0201f800, 0x0010188c, 0x42000000, | ||
339 | 0x00000001, 0x0201f800, 0x00101821, 0x0401f022, | ||
340 | 0x0201f800, 0x00101642, 0x04020008, 0x41780000, | ||
341 | 0x0201f800, 0x0010188c, 0x41780000, 0x0201f800, | ||
342 | 0x00101821, 0x0401f018, 0x0201f800, 0x00101649, | ||
343 | 0x0402000a, 0x42000000, 0x00000002, 0x0201f800, | ||
344 | 0x0010188c, 0x42000000, 0x00000002, 0x0201f800, | ||
345 | 0x00101821, 0x0401f00c, 0x0201f800, 0x00101650, | ||
346 | 0x04020918, 0x59a80049, 0x800001c0, 0x04000006, | ||
347 | 0x0201f800, 0x00101656, 0x4a03503e, 0x00000001, | ||
348 | 0x0401f021, 0x0201f800, 0x00101927, 0x4a03503e, | ||
349 | 0x00000001, 0x0201f800, 0x00105141, 0x0400000c, | ||
350 | 0x0201f800, 0x00105151, 0x04000009, 0x0201f800, | ||
351 | 0x00105149, 0x04020903, 0x4a035033, 0x00000001, | ||
352 | 0x0201f800, 0x001050a2, 0x0401f00f, 0x59c400a4, | ||
353 | 0x82000500, 0x0000000f, 0x82000580, 0x00000008, | ||
354 | 0x04000003, 0x4a038805, 0x04000000, 0x59c400a3, | ||
355 | 0x82000540, 0x0001c000, 0x480388a3, 0x84000520, | ||
356 | 0x480388a3, 0x1c01f000, 0x0401f8a3, 0x04020004, | ||
357 | 0x4a03503e, 0x00000003, 0x0401f027, 0x0201f800, | ||
358 | 0x00101650, 0x04020011, 0x59a80049, 0x800001c0, | ||
359 | 0x0400000e, 0x0201f800, 0x00101656, 0x59a80048, | ||
360 | 0x8c00051e, 0x0400001c, 0x0201f800, 0x00105149, | ||
361 | 0x04020009, 0x4a035033, 0x00000001, 0x0201f800, | ||
362 | 0x001050a2, 0x0401f004, 0x0201f800, 0x001018d3, | ||
363 | 0x04020011, 0x0201f800, 0x00101815, 0x4a03503e, | ||
364 | 0x00000002, 0x497b5049, 0x59c400a3, 0x84000520, | ||
365 | 0x480388a3, 0x497b2822, 0x497b2823, 0x42000800, | ||
366 | 0x0000002d, 0x42001000, 0x00100591, 0x0201f800, | ||
367 | 0x00105f83, 0x1c01f000, 0x0401f877, 0x04020004, | ||
368 | 0x4a03503e, 0x00000003, 0x0401f05b, 0x4a038805, | ||
369 | 0x000000f0, 0x0201f800, 0x001018d3, 0x04020050, | ||
370 | 0x0201f800, 0x00105149, 0x04000044, 0x59c400a4, | ||
371 | 0x82000500, 0x0000000f, 0x82000580, 0x00000008, | ||
372 | 0x04000020, 0x59c40005, 0x8c000534, 0x0402001d, | ||
373 | 0x59940022, 0x82000580, 0x00000001, 0x04020046, | ||
374 | 0x0201f800, 0x00105151, 0x04020043, 0x4a038805, | ||
375 | 0x000000f0, 0x0201f800, 0x00105196, 0x4a035032, | ||
376 | 0x0000aaaa, 0x4a035033, 0x00000000, 0x59c408a3, | ||
377 | 0x82040d40, 0x00000008, 0x480788a3, 0x4202d800, | ||
378 | 0x00000001, 0x4a03503e, 0x00000000, 0x4a038805, | ||
379 | 0x00000001, 0x497b2822, 0x497b2823, 0x0401f01f, | ||
380 | 0x0201f800, 0x00105151, 0x04020007, 0x59a80032, | ||
381 | 0x82000580, 0x0000aaaa, 0x04020003, 0x4a035010, | ||
382 | 0x00ffffff, 0x497b5032, 0x59c40006, 0x82000540, | ||
383 | 0x04000001, 0x48038806, 0x59a80805, 0x8c040d06, | ||
384 | 0x04020005, 0x59c408a3, 0x82040d40, 0x00000008, | ||
385 | 0x480788a3, 0x4202d800, 0x00000001, 0x4a03503e, | ||
386 | 0x00000000, 0x4a038805, 0x00000001, 0x497b2822, | ||
387 | 0x497b2823, 0x0401f010, 0x59c40005, 0x82000500, | ||
388 | 0x000000c0, 0x0400000c, 0x59c40006, 0x82000540, | ||
389 | 0x000000f1, 0x48038806, 0x0401f7ef, 0x0201f800, | ||
390 | 0x00101650, 0x04020004, 0x59a80049, 0x800001c0, | ||
391 | 0x040207a4, 0x497b8885, 0x1c01f000, 0x4803c856, | ||
392 | 0x42000000, 0x00000001, 0x0201f800, 0x00101590, | ||
393 | 0x4a03503e, 0x00000000, 0x0201f800, 0x00101650, | ||
394 | 0x0402000b, 0x59a80052, 0x800001c0, 0x04000004, | ||
395 | 0x80000040, 0x48035052, 0x04020005, 0x4a035052, | ||
396 | 0x0000000a, 0x4a035049, 0x00000001, 0x497b8885, | ||
397 | 0x0401f0ed, 0x59940022, 0x59940823, 0x80040540, | ||
398 | 0x1c01f000, 0x497b2823, 0x1c01f000, 0x4c080000, | ||
399 | 0x42001000, 0x000000f0, 0x0201f800, 0x0010193d, | ||
400 | 0x5c001000, 0x1c01f000, 0x4a03505c, 0x00000004, | ||
401 | 0x4a03505d, 0x00000000, 0x4a03505e, 0x00000010, | ||
402 | 0x4a03505f, 0x00000002, 0x4a035010, 0x00ffffff, | ||
403 | 0x0201f800, 0x0010930f, 0x4a03502a, 0x20200000, | ||
404 | 0x4a03502b, 0x88000200, 0x4a03502c, 0x00ff001f, | ||
405 | 0x4a03502d, 0x000007d0, 0x4a03502e, 0x80000000, | ||
406 | 0x4a03502f, 0x00000200, 0x4a035030, 0x00ff0000, | ||
407 | 0x4a035031, 0x00010000, 0x4a03503a, 0x514c4f47, | ||
408 | 0x4a03503b, 0x49432020, 0x1c01f000, 0x4d440000, | ||
409 | 0x417a8800, 0x41780800, 0x0201f800, 0x00020245, | ||
410 | 0x04020005, 0x0201f800, 0x001049e7, 0x04020002, | ||
411 | 0x80040800, 0x81468800, 0x83440580, 0x000007f0, | ||
412 | 0x040207f6, 0x5c028800, 0x1c01f000, 0x4803c857, | ||
413 | 0x5c000000, 0x4c000000, 0x4803c857, 0x0401f809, | ||
414 | 0x485fc857, 0x4203e000, 0x50000000, 0x5c000000, | ||
415 | 0x4d780000, 0x4200b800, 0x00008002, 0x0401f006, | ||
416 | 0x485fc857, 0x4203e000, 0x50000000, 0x4200b800, | ||
417 | 0x00008002, 0x04006000, 0x4c000000, 0x4c040000, | ||
418 | 0x59bc00ea, 0x82000500, 0x00000007, 0x82000580, | ||
419 | 0x00000001, 0x04020005, 0x42000800, 0x00000000, | ||
420 | 0x0201f800, 0x00106c6c, 0x5c000800, 0x4807c025, | ||
421 | 0x80040920, 0x4807c026, 0x5c000000, 0x4803c023, | ||
422 | 0x80000120, 0x4803c024, 0x5c000000, 0x4803c857, | ||
423 | 0x4803c021, 0x80000120, 0x4803c022, 0x41f80000, | ||
424 | 0x4803c027, 0x80000120, 0x4803c028, 0x42000000, | ||
425 | 0x00001000, 0x50000000, 0x82000480, 0x24320001, | ||
426 | 0x4803c857, 0x0400104f, 0x42000800, 0x00000064, | ||
427 | 0x80040840, 0x04000007, 0x4a030000, 0x00000001, | ||
428 | 0x40000000, 0x59800000, 0x8c000500, 0x040007f9, | ||
429 | 0x04000042, 0x42000800, 0x0010c1a3, 0x46000800, | ||
430 | 0xfaceface, 0x80040800, 0x42001000, 0x00007a00, | ||
431 | 0x58080013, 0x44000800, 0x80040800, 0x58080019, | ||
432 | 0x44000800, 0x80040800, 0x5808001a, 0x44000800, | ||
433 | 0x80040800, 0x5808001b, 0x44000800, 0x80040800, | ||
434 | 0x5808001c, 0x44000800, 0x80040800, 0x5808001f, | ||
435 | 0x44000800, 0x80040800, 0x42001000, 0x00007a40, | ||
436 | 0x42001800, 0x0000000b, 0x50080000, 0x44000800, | ||
437 | 0x80081000, 0x80040800, 0x800c1840, 0x040207fb, | ||
438 | 0x42001800, 0x00000003, 0x42001000, 0x00007b00, | ||
439 | 0x480c1003, 0x58080005, 0x44000800, 0x80040800, | ||
440 | 0x800c1840, 0x040217fb, 0x42001000, 0x00007c00, | ||
441 | 0x58080002, 0x44000800, 0x80040800, 0x58080003, | ||
442 | 0x44000800, 0x80040800, 0x58080020, 0x44000800, | ||
443 | 0x80040800, 0x58080021, 0x44000800, 0x80040800, | ||
444 | 0x58080022, 0x44000800, 0x80040800, 0x58080023, | ||
445 | 0x44000800, 0x80040800, 0x4a030000, 0x00000000, | ||
446 | 0x485fc020, 0x905cb9c0, 0x825cbd40, 0x00000012, | ||
447 | 0x485fc011, 0x4203e000, 0x40000000, 0x4202d800, | ||
448 | 0x00000005, 0x59e00017, 0x8c000508, 0x04000003, | ||
449 | 0x4a03c017, 0x00000002, 0x4203e000, 0x30000001, | ||
450 | 0x0401f81a, 0x0401f7ff, 0x4a03c850, 0x0010c1bf, | ||
451 | 0x4a03c851, 0x0010d1be, 0x4a03c853, 0x00000800, | ||
452 | 0x4a03c855, 0x0001eb5a, 0x59e40001, 0x82000540, | ||
453 | 0x00003f00, 0x4803c801, 0x4a03b104, 0x70000002, | ||
454 | 0x4a03a804, 0x70000002, 0x4a03b004, 0x70000002, | ||
455 | 0x42000000, 0x0010b8ec, 0x49780001, 0x49780002, | ||
456 | 0x1c01f000, 0x1c01f000, 0x59a8006b, 0x8c000530, | ||
457 | 0x040207fe, 0x4c080000, 0x42001000, 0x00000004, | ||
458 | 0x0401f862, 0x5c001000, 0x4201d000, 0x00028b0a, | ||
459 | 0x0201f800, 0x0010608e, 0x4c080000, 0x42001000, | ||
460 | 0x00000008, 0x0401f859, 0x5c001000, 0x4201d000, | ||
461 | 0x00028b0a, 0x0201f800, 0x0010608e, 0x4c080000, | ||
462 | 0x42001000, 0x00000010, 0x0401f850, 0x5c001000, | ||
463 | 0x4201d000, 0x00028b0a, 0x0201f800, 0x0010608e, | ||
464 | 0x0401f7e2, 0x8c00050c, 0x59a8086b, 0x04020003, | ||
465 | 0x84040d30, 0x0401f006, 0x84040d70, 0x4807506b, | ||
466 | 0x42001000, 0x00000000, 0x0401f040, 0x4807506b, | ||
467 | 0x836c0500, 0x00000007, 0x0c01f001, 0x001006e1, | ||
468 | 0x001006c7, 0x001006c7, 0x001006af, 0x001006d4, | ||
469 | 0x001006c7, 0x001006c7, 0x001006d4, 0x59a80005, | ||
470 | 0x8c000514, 0x04020013, 0x59c40801, 0x82040d00, | ||
471 | 0x00018000, 0x82040580, 0x00010000, 0x0400000a, | ||
472 | 0x82040580, 0x00008000, 0x04000004, 0x42001000, | ||
473 | 0x42004000, 0x0401f006, 0x42001000, 0x22002000, | ||
474 | 0x0401f003, 0x42001000, 0x12001000, 0x0401f025, | ||
475 | 0x42001000, 0x00001004, 0x0401f022, 0x59a80005, | ||
476 | 0x8c000514, 0x04020008, 0x59a8006b, 0x8c000534, | ||
477 | 0x04020004, 0x42001000, 0x74057005, 0x0401f819, | ||
478 | 0x1c01f000, 0x42001000, 0x00002008, 0x0401f7fc, | ||
479 | 0x59a8006b, 0x8c000534, 0x0402000a, 0x59a80005, | ||
480 | 0x8c000514, 0x04000004, 0x42001000, 0x24052005, | ||
481 | 0x0401f00c, 0x42001000, 0x74057005, 0x0401f009, | ||
482 | 0x1c01f000, 0x1c01f000, 0x82081500, 0x0000001c, | ||
483 | 0x82081540, 0x001c0000, 0x480bc013, 0x1c01f000, | ||
484 | 0x59a8006b, 0x8c000530, 0x04000002, 0x84081570, | ||
485 | 0x480b506b, 0x8c000530, 0x04020005, 0x82081500, | ||
486 | 0x00007000, 0x80081114, 0x0401fff0, 0x1c01f000, | ||
487 | 0x41780000, 0x50041800, 0x800c0400, 0x80040800, | ||
488 | 0x80102040, 0x040207fc, 0x80080500, 0x80000540, | ||
489 | 0x1c01f000, 0x4202f000, 0x00000000, 0x41780000, | ||
490 | 0x41780800, 0x41781000, 0x41781800, 0x41782000, | ||
491 | 0x41782800, 0x41783000, 0x41783800, 0x41784000, | ||
492 | 0x41784800, 0x41785000, 0x41785800, 0x41786000, | ||
493 | 0x41786800, 0x41787000, 0x41787800, 0x41788000, | ||
494 | 0x41788800, 0x41789000, 0x41789800, 0x4178a000, | ||
495 | 0x4178a800, 0x4178b000, 0x4178b800, 0x4178c000, | ||
496 | 0x4178c800, 0x4178d000, 0x4178d800, 0x4178e000, | ||
497 | 0x4178e800, 0x4178f000, 0x4178f800, 0x41790000, | ||
498 | 0x41790800, 0x41791000, 0x41791800, 0x41792000, | ||
499 | 0x41792800, 0x41793000, 0x41793800, 0x41794000, | ||
500 | 0x41794800, 0x41795000, 0x41795800, 0x41796000, | ||
501 | 0x41796800, 0x41797000, 0x41797800, 0x41798000, | ||
502 | 0x41798800, 0x42019000, 0x0010b537, 0x42019800, | ||
503 | 0x0010b50e, 0x4179a000, 0x4179b000, 0x4179a800, | ||
504 | 0x4179b800, 0x4179c800, 0x4179c000, 0x4179d000, | ||
505 | 0x4179d800, 0x4179e000, 0x4179e800, 0x4179f000, | ||
506 | 0x4179f800, 0x417a0000, 0x417a0800, 0x417a1000, | ||
507 | 0x417a1800, 0x417a2000, 0x42022800, 0x00006100, | ||
508 | 0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800, | ||
509 | 0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800, | ||
510 | 0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800, | ||
511 | 0x417a9000, 0x417a9800, 0x417ae800, 0x417af800, | ||
512 | 0x42030000, 0x00007c00, 0x42031000, 0x0010b806, | ||
513 | 0x42031800, 0x0000bf1d, 0x42032000, 0x0000bf32, | ||
514 | 0x42032800, 0x0010b7ce, 0x42033000, 0x0010b46e, | ||
515 | 0x42034000, 0x0010b4a4, 0x42033800, 0x0010b4c3, | ||
516 | 0x42034800, 0x0010b544, 0x42035000, 0x0010b400, | ||
517 | 0x42035800, 0x0010ac00, 0x42030800, 0x0010b505, | ||
518 | 0x417b6000, 0x42036800, 0x00006f00, 0x4203c800, | ||
519 | 0x00003000, 0x42037000, 0x0000ff00, 0x42037800, | ||
520 | 0x0000bf00, 0x42038000, 0x00007700, 0x42038800, | ||
521 | 0x00004000, 0x42039000, 0x00006000, 0x42039800, | ||
522 | 0x0010bedb, 0x4203a000, 0x00007600, 0x4203a800, | ||
523 | 0x00007400, 0x4203b000, 0x00007200, 0x4203b800, | ||
524 | 0x00007100, 0x4203c000, 0x00007000, 0x4203d000, | ||
525 | 0x00000000, 0x4203e800, 0x00101b95, 0x417bd800, | ||
526 | 0x1c01f000, 0x42000800, 0x00100000, 0x50040000, | ||
527 | 0x4c000000, 0x42000000, 0x0000aaaa, 0x44000800, | ||
528 | 0x42001800, 0x00005555, 0x41782000, 0x82102400, | ||
529 | 0x00010000, 0x40100000, 0x80042c00, 0x440c2800, | ||
530 | 0x42003000, 0x0000000a, 0x80183040, 0x040207ff, | ||
531 | 0x50140000, 0x800c0580, 0x04020004, 0x50040000, | ||
532 | 0x800c0580, 0x040207f2, 0x5c000000, 0x44000800, | ||
533 | 0x80142840, 0x4817c861, 0x1c01f000, 0x59a8081f, | ||
534 | 0x800409c0, 0x04020009, 0x49781c0c, 0x4a001a0c, | ||
535 | 0x00000200, 0x4a001804, 0x07000000, 0x59a80010, | ||
536 | 0x9c0001c0, 0x48001805, 0x0401fe01, 0x9c0409c0, | ||
537 | 0x48041806, 0x1c01f000, 0x59a8080c, 0x4006d000, | ||
538 | 0x4202b800, 0x00000001, 0x59a8180d, 0x480fc857, | ||
539 | 0x82041400, 0x00000014, 0x82082400, 0x00000014, | ||
540 | 0x40100000, 0x800c0480, 0x04001006, 0x44080800, | ||
541 | 0x40080800, 0x40101000, 0x815eb800, 0x0401f7f7, | ||
542 | 0x45780800, 0x495f5020, 0x1c01f000, 0x835c0480, | ||
543 | 0x00000020, 0x04001009, 0x496bc857, 0x815eb840, | ||
544 | 0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801, | ||
545 | 0x812e59c0, 0x1c01f000, 0x42000000, 0x0010b853, | ||
546 | 0x0201f800, 0x0010aa47, 0x417a5800, 0x0401f7f9, | ||
547 | 0x815eb840, 0x04001008, 0x416a5800, 0x492fc857, | ||
548 | 0x592ed000, 0x497a5800, 0x497a5801, 0x812e59c0, | ||
549 | 0x1c01f000, 0x42000000, 0x0010b853, 0x0201f800, | ||
550 | 0x0010aa47, 0x417ab800, 0x417a5800, 0x0401f7f8, | ||
551 | 0x492fc857, 0x496a5800, 0x412ed000, 0x815eb800, | ||
552 | 0x59c80000, 0x82000540, 0x00001200, 0x48039000, | ||
553 | 0x1c01f000, 0x492fc857, 0x812e59c0, 0x04000007, | ||
554 | 0x592c0001, 0x497a5801, 0x4c000000, 0x0401fff1, | ||
555 | 0x5c025800, 0x0401f7f9, 0x1c01f000, 0x4807c856, | ||
556 | 0x42007000, 0x0010b7f8, 0x4a007001, 0x00000000, | ||
557 | 0x59e00003, 0x82000540, 0x00008080, 0x4803c003, | ||
558 | 0x4a03b805, 0x90000001, 0x59dc0006, 0x4a03b805, | ||
559 | 0x70000000, 0x59dc0006, 0x4a03b805, 0x30000000, | ||
560 | 0x4200b000, 0x00000020, 0x497bb807, 0x8058b040, | ||
561 | 0x040207fe, 0x4a03b805, 0x30000000, 0x59dc0006, | ||
562 | 0x4a03b805, 0x60000001, 0x59dc0006, 0x4a03b805, | ||
563 | 0x70000001, 0x59dc0006, 0x4a03b805, 0x30000002, | ||
564 | 0x4200b000, 0x00000020, 0x497bb807, 0x8058b040, | ||
565 | 0x040207fe, 0x4a03b805, 0x30000000, 0x59dc0006, | ||
566 | 0x4a03b805, 0x60000001, 0x0401ffa1, 0x04000da5, | ||
567 | 0x42001000, 0x0010b7f6, 0x452c1000, 0x4a025801, | ||
568 | 0x00000001, 0x4a025802, 0x00000100, 0x4a025809, | ||
569 | 0x00107149, 0x497a580a, 0x497a580b, 0x497a580c, | ||
570 | 0x0401ff93, 0x04000d97, 0x42001000, 0x0010b7f7, | ||
571 | 0x452c1000, 0x4a025801, 0x00000000, 0x4a025802, | ||
572 | 0x00000100, 0x4a025809, 0x001011bc, 0x497a5803, | ||
573 | 0x497a5807, 0x497a5808, 0x497a580a, 0x59a80005, | ||
574 | 0x8c00050e, 0x04000006, 0x4a03b805, 0xe0000001, | ||
575 | 0x59dc0006, 0x8c000522, 0x040007fc, 0x1c01f000, | ||
576 | 0x4df00000, 0x4203e000, 0x50000000, 0x4c380000, | ||
577 | 0x40087000, 0x480bc857, 0x4a007002, 0x00000000, | ||
578 | 0x42007000, 0x0010b7f8, 0x82080400, 0x00000000, | ||
579 | 0x45780000, 0x58380005, 0x48087005, 0x80000540, | ||
580 | 0x04000005, 0x82000400, 0x00000000, 0x44080000, | ||
581 | 0x0401f003, 0x480bc857, 0x48087006, 0x58380001, | ||
582 | 0x80000540, 0x0400080c, 0x5c007000, 0x5c03e000, | ||
583 | 0x1c01f000, 0x4c380000, 0x42007000, 0x0010b7f8, | ||
584 | 0x58380001, 0x80000540, 0x04000803, 0x5c007000, | ||
585 | 0x1c01f000, 0x42007000, 0x0010b7f8, 0x58380001, | ||
586 | 0x82000580, 0x00000000, 0x04020012, 0x58380000, | ||
587 | 0x0c01f001, 0x0010088e, 0x0010088d, 0x0010088d, | ||
588 | 0x0010088d, 0x0010088d, 0x0010088d, 0x0010088d, | ||
589 | 0x0010088d, 0x0401fd4b, 0x58380808, 0x800409c0, | ||
590 | 0x04020024, 0x58380006, 0x80000540, 0x04020002, | ||
591 | 0x1c01f000, 0x4803c857, 0x48007002, 0x40006800, | ||
592 | 0x58340000, 0x80000540, 0x04020002, 0x48007005, | ||
593 | 0x48007006, 0x4a03b805, 0x20000000, 0x59dc0006, | ||
594 | 0x4a03b805, 0x30000000, 0x58340007, 0x4803b800, | ||
595 | 0x58340008, 0x4803b801, 0x58340004, 0x48007003, | ||
596 | 0x58340003, 0x48007004, 0x4803b803, 0x58340001, | ||
597 | 0x8c000500, 0x04000004, 0x4a007001, 0x00000001, | ||
598 | 0x0401f028, 0x4a007001, 0x00000002, 0x0401f03d, | ||
599 | 0x0201f800, 0x001093ea, 0x0201f800, 0x0010a69d, | ||
600 | 0x04000017, 0x4a03b805, 0x20000000, 0x59dc0006, | ||
601 | 0x4a03b805, 0x30000000, 0x4807b800, 0x480bb801, | ||
602 | 0x4a007003, 0x00000010, 0x480c7009, 0x42001000, | ||
603 | 0x00100875, 0x0201f800, 0x00105f9a, 0x58380008, | ||
604 | 0x82000400, 0x00000004, 0x48007004, 0x4803b803, | ||
605 | 0x4a007001, 0x00000007, 0x0401f022, 0x0201f800, | ||
606 | 0x00109402, 0x42000800, 0x00000001, 0x42001000, | ||
607 | 0x00100875, 0x0201f800, 0x00105f76, 0x0401f7ba, | ||
608 | 0x4c040000, 0x4c080000, 0x58380803, 0x42001000, | ||
609 | 0x00003fff, 0x82040480, 0x00003fff, 0x04021003, | ||
610 | 0x40041000, 0x80000580, 0x48007003, 0x800800c4, | ||
611 | 0x4803b802, 0x4a03b805, 0x30000002, 0x59dc0006, | ||
612 | 0x4a03b805, 0x70000001, 0x59dc0006, 0x4a03b805, | ||
613 | 0x10000000, 0x5c001000, 0x5c000800, 0x1c01f000, | ||
614 | 0x483bc857, 0x4c040000, 0x4c080000, 0x58380803, | ||
615 | 0x42001000, 0x00003fff, 0x82040480, 0x00003fff, | ||
616 | 0x04021003, 0x40041000, 0x80000580, 0x48007003, | ||
617 | 0x800800c4, 0x4803b802, 0x4a03b805, 0x10000002, | ||
618 | 0x5c001000, 0x5c000800, 0x1c01f000, 0x4c040000, | ||
619 | 0x4c380000, 0x42007000, 0x0010b7f8, 0x59dc0806, | ||
620 | 0x4807c857, 0x4a03b805, 0x20000000, 0x8c040d3e, | ||
621 | 0x04000007, 0x8c040d08, 0x04020cca, 0x58380001, | ||
622 | 0x82000500, 0x00000007, 0x0c01f804, 0x5c007000, | ||
623 | 0x5c000800, 0x1c01f000, 0x0010087d, 0x0010091e, | ||
624 | 0x0010092e, 0x001005d8, 0x001005d8, 0x001005d8, | ||
625 | 0x001005d8, 0x001011ea, 0x4807c856, 0x82040d00, | ||
626 | 0x43000f80, 0x04020009, 0x58380003, 0x80000540, | ||
627 | 0x0400001c, 0x59dc0000, 0x4803b800, 0x59dc0001, | ||
628 | 0x4803b801, 0x0401f7af, 0x58380802, 0x4a000802, | ||
629 | 0x00000200, 0x0401f01e, 0x4807c856, 0x82040d00, | ||
630 | 0x43000f80, 0x04020009, 0x58380003, 0x80000540, | ||
631 | 0x0400000c, 0x59dc0000, 0x4803b800, 0x59dc0001, | ||
632 | 0x4803b801, 0x0401f7b7, 0x58380002, 0x82000400, | ||
633 | 0x00000002, 0x46000000, 0x00000200, 0x0401f00c, | ||
634 | 0x4c340000, 0x58386802, 0x59dc0000, 0x4803c857, | ||
635 | 0x48006807, 0x59dc0001, 0x4803c857, 0x48006808, | ||
636 | 0x4a006802, 0x00000100, 0x5c006800, 0x4a007001, | ||
637 | 0x00000000, 0x4c300000, 0x58386002, 0x0401f80c, | ||
638 | 0x04000009, 0x58300009, 0x82000c80, 0x0010ab4a, | ||
639 | 0x04021c84, 0x82000c80, 0x00020000, 0x04001c81, | ||
640 | 0x0801f800, 0x5c006000, 0x0401f723, 0x4833c857, | ||
641 | 0x803061c0, 0x04000009, 0x59a8000c, 0x80300480, | ||
642 | 0x04001007, 0x59a8000d, 0x80300480, 0x04021004, | ||
643 | 0x82000540, 0x00000001, 0x1c01f000, 0x80000580, | ||
644 | 0x1c01f000, 0x4803c856, 0x4dc00000, 0x42007000, | ||
645 | 0x0010b803, 0x4a007400, 0x00000000, 0x49787001, | ||
646 | 0x42038000, 0x00007720, 0x4a038006, 0x60000001, | ||
647 | 0x4a038009, 0xf4f60000, 0x42038000, 0x00007700, | ||
648 | 0x4a038006, 0x60000001, 0x4a038009, 0xf4f60000, | ||
649 | 0x4a03c822, 0x00000010, 0x4a0370e8, 0x00000000, | ||
650 | 0x0401f809, 0x4a0370e9, 0x00003a0f, 0x4a0370e8, | ||
651 | 0x00000000, 0x4a0370e8, 0x00000001, 0x5c038000, | ||
652 | 0x1c01f000, 0x4c5c0000, 0x4178b800, 0x0401f80a, | ||
653 | 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, | ||
654 | 0x825cbd40, 0x00000001, 0x0401f803, 0x5c00b800, | ||
655 | 0x1c01f000, 0x4803c856, 0x4dc00000, 0x4c500000, | ||
656 | 0x4c580000, 0x4c540000, 0x4a0370e8, 0x00000000, | ||
657 | 0x805cb9c0, 0x04000009, 0x4a038807, 0x00000004, | ||
658 | 0x59b800ea, 0x8c000510, 0x04000004, 0x59b800e0, | ||
659 | 0x0401f87b, 0x0401f7fb, 0x42038000, 0x00007720, | ||
660 | 0x0201f800, 0x00100ec1, 0x59c00007, 0x4a038006, | ||
661 | 0x20000000, 0x59c00007, 0x4a038006, 0x8000000a, | ||
662 | 0x59c00007, 0x4a038006, 0x8000000b, 0x59c00007, | ||
663 | 0x4a038006, 0x40000001, 0x83c00580, 0x00007700, | ||
664 | 0x04000004, 0x42038000, 0x00007700, 0x0401f7ed, | ||
665 | 0x42038000, 0x00007720, 0x42000800, 0x00000800, | ||
666 | 0x59c00007, 0x8c00051e, 0x04000006, 0x4a038006, | ||
667 | 0x90000001, 0x80040840, 0x040207fa, 0x0401fc11, | ||
668 | 0x83c00580, 0x00007700, 0x04000004, 0x42038000, | ||
669 | 0x00007700, 0x0401f7f1, 0x805cb9c0, 0x0402001d, | ||
670 | 0x4200b000, 0x00000020, 0x83b8ac00, 0x00000020, | ||
671 | 0x0201f800, 0x0010ab20, 0x4a0370fb, 0x00000001, | ||
672 | 0x4a037020, 0x001010bd, 0x59a80039, 0x82000500, | ||
673 | 0x0000ffff, 0x48037021, 0x4a037035, 0x0010bddb, | ||
674 | 0x4a037030, 0x0010b410, 0x4a037031, 0x0010ac00, | ||
675 | 0x4a037032, 0x0010b519, 0x4a037036, 0x0010b524, | ||
676 | 0x59840002, 0x48037034, 0x4a037038, 0x001010b4, | ||
677 | 0x4a0370fb, 0x00000001, 0x4178a000, 0x4200b000, | ||
678 | 0x00000020, 0x83b8ac00, 0x00000000, 0x0201f800, | ||
679 | 0x0010ab20, 0x4200b000, 0x00000040, 0x83b8ac00, | ||
680 | 0x00000040, 0x0201f800, 0x0010ab20, 0x805cb9c0, | ||
681 | 0x04020004, 0x4a0370e4, 0xaaaaaaaa, 0x0401f003, | ||
682 | 0x4a0370e4, 0xa2aaaa82, 0x4a0370e5, 0xaaaaaaaa, | ||
683 | 0x4a0370e6, 0xaaaaaaaa, 0x4a0370fb, 0x00000000, | ||
684 | 0x4a0370e6, 0xaaaaaaaa, 0x42038000, 0x00007720, | ||
685 | 0x4a038006, 0x90000000, 0x59c00007, 0x8c00051e, | ||
686 | 0x02020800, 0x001005d8, 0x42038000, 0x00007700, | ||
687 | 0x4a038006, 0x90000000, 0x59c00007, 0x8c00051e, | ||
688 | 0x02020800, 0x001005d8, 0x5c00a800, 0x5c00b000, | ||
689 | 0x5c00a000, 0x5c038000, 0x1c01f000, 0x4d300000, | ||
690 | 0x4d380000, 0x40026000, 0x82000500, 0x7f000000, | ||
691 | 0x82000580, 0x00000003, 0x0402000f, 0x83326500, | ||
692 | 0x00ffffff, 0x59300203, 0x82000580, 0x00000004, | ||
693 | 0x04020009, 0x59300c06, 0x82040580, 0x00000009, | ||
694 | 0x04020005, 0x42027000, 0x00000047, 0x0201f800, | ||
695 | 0x000207a1, 0x5c027000, 0x5c026000, 0x1c01f000, | ||
696 | 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000, | ||
697 | 0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000, | ||
698 | 0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000, | ||
699 | 0x4c640000, 0x4cc80000, 0x4ccc0000, 0x4cf00000, | ||
700 | 0x4cf40000, 0x4cf80000, 0x4cfc0000, 0x4d000000, | ||
701 | 0x4d040000, 0x0201f800, 0x00020015, 0x5c020800, | ||
702 | 0x5c020000, 0x5c01f800, 0x5c01f000, 0x5c01e800, | ||
703 | 0x5c01e000, 0x5c019800, 0x5c019000, 0x5c00c800, | ||
704 | 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, | ||
705 | 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, | ||
706 | 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, | ||
707 | 0x1c01f000, 0x493bc857, 0x0201f000, 0x00020044, | ||
708 | 0x83300500, 0x1f000000, 0x04000008, 0x81326580, | ||
709 | 0x80000130, 0x82000c80, 0x00000014, 0x02021800, | ||
710 | 0x001005d8, 0x0c01f013, 0x83300500, 0x000000ff, | ||
711 | 0x82000c80, 0x00000007, 0x02021800, 0x001005d8, | ||
712 | 0x0c01f025, 0x1c01f000, 0x82000d00, 0xc0000038, | ||
713 | 0x02020800, 0x001005d0, 0x0201f800, 0x001005d8, | ||
714 | 0x00000000, 0x00000048, 0x00000054, 0x00000053, | ||
715 | 0x00100a9b, 0x00100abf, 0x00100aba, 0x00100adf, | ||
716 | 0x00100aa6, 0x00100ab2, 0x00100a9b, 0x00100ada, | ||
717 | 0x00100b1a, 0x00100a9b, 0x00100a9b, 0x00100a9b, | ||
718 | 0x00100a9b, 0x00100b1d, 0x00100b23, 0x00100b34, | ||
719 | 0x00100b45, 0x00100a9b, 0x00100b4e, 0x00100b5a, | ||
720 | 0x00100a9b, 0x00100a9b, 0x00100a9b, 0x0201f800, | ||
721 | 0x001005d8, 0x00100aa4, 0x00100bff, 0x00100aec, | ||
722 | 0x00100b0f, 0x00100aa4, 0x00100aa4, 0x00100aa4, | ||
723 | 0x0201f800, 0x001005d8, 0x4803c856, 0x59300004, | ||
724 | 0x8c00053e, 0x04020005, 0x42027000, 0x00000055, | ||
725 | 0x0201f000, 0x000207a1, 0x0201f800, 0x00106f60, | ||
726 | 0x040007fa, 0x1c01f000, 0x4803c856, 0x0401f8a9, | ||
727 | 0x40002800, 0x41782000, 0x42027000, 0x00000056, | ||
728 | 0x0201f000, 0x000207a1, 0x4803c856, 0x42027000, | ||
729 | 0x00000057, 0x0201f000, 0x000207a1, 0x4803c856, | ||
730 | 0x59300007, 0x8c00051a, 0x04020010, 0x59325808, | ||
731 | 0x812e59c0, 0x04000014, 0x592c0408, 0x8c00051c, | ||
732 | 0x04020003, 0x4a026011, 0xffffffff, 0x59300004, | ||
733 | 0x8c00053e, 0x04020009, 0x42027000, 0x00000048, | ||
734 | 0x0201f000, 0x000207a1, 0x59325808, 0x4a025a06, | ||
735 | 0x00000007, 0x0401f7f4, 0x0201f800, 0x00106f60, | ||
736 | 0x040007f6, 0x1c01f000, 0x4803c856, 0x83300500, | ||
737 | 0x00ffffff, 0x0201f000, 0x001064d7, 0x1c01f000, | ||
738 | 0x4c040000, 0x59b808ea, 0x82040d00, 0x00000007, | ||
739 | 0x82040580, 0x00000003, 0x04000004, 0x42000000, | ||
740 | 0x60000000, 0x0401f8ab, 0x5c000800, 0x1c01f000, | ||
741 | 0x0401f8f9, 0x59325808, 0x812e59c0, 0x04000018, | ||
742 | 0x592c0204, 0x82000500, 0x000000ff, 0x82000d80, | ||
743 | 0x00000029, 0x04020012, 0x59300203, 0x82000580, | ||
744 | 0x00000003, 0x0400000b, 0x59300807, 0x84040d26, | ||
745 | 0x48066007, 0x0201f800, 0x00020086, 0x4a03900d, | ||
746 | 0x00000040, 0x4a0370e5, 0x00000008, 0x1c01f000, | ||
747 | 0x0201f800, 0x00106f60, 0x040007f4, 0x59880052, | ||
748 | 0x80000000, 0x48031052, 0x4a03900d, 0x00000040, | ||
749 | 0x42000000, 0xc0000000, 0x0401f05a, 0x42007800, | ||
750 | 0x0010bde2, 0x42002000, 0x00003000, 0x42003000, | ||
751 | 0x00000105, 0x0201f800, 0x00105e04, 0x4a0370e4, | ||
752 | 0x02000000, 0x1c01f000, 0x4933c857, 0x0201f000, | ||
753 | 0x0002077d, 0x41300800, 0x800409c0, 0x02020800, | ||
754 | 0x001005d8, 0x0201f800, 0x001005d0, 0x4933c857, | ||
755 | 0x813261c0, 0x02000800, 0x001005d8, 0x0401f835, | ||
756 | 0x40002800, 0x0201f800, 0x0010a99c, 0x0401f8ae, | ||
757 | 0x04000007, 0x59326809, 0x59340200, 0x8c00050e, | ||
758 | 0x59300414, 0x02020800, 0x001092ce, 0x1c01f000, | ||
759 | 0x4933c857, 0x813261c0, 0x02000800, 0x001005d8, | ||
760 | 0x0401f8a1, 0x0400000b, 0x59325808, 0x0201f800, | ||
761 | 0x00109037, 0x04000007, 0x592c0208, 0x8400054e, | ||
762 | 0x48025a08, 0x417a7800, 0x0201f800, 0x00108be3, | ||
763 | 0x1c01f000, 0x485fc857, 0x5c000000, 0x4d780000, | ||
764 | 0x4203e000, 0x50000000, 0x4200b800, 0x00008005, | ||
765 | 0x0201f000, 0x001005dd, 0x4933c857, 0x83300480, | ||
766 | 0x00000020, 0x02021800, 0x001005d8, 0x83300c00, | ||
767 | 0x0010b8cc, 0x50040000, 0x80000000, 0x04001002, | ||
768 | 0x44000800, 0x1c01f000, 0x4933c857, 0x0401f7f4, | ||
769 | 0x4807c856, 0x59b800ea, 0x8c000510, 0x040007fd, | ||
770 | 0x59b800e0, 0x4803c857, 0x1c01f000, 0x4803c856, | ||
771 | 0x42000000, 0x10000000, 0x41300800, 0x0401f02d, | ||
772 | 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff, | ||
773 | 0x80040d40, 0x4807c857, 0x59b800ea, 0x8c000516, | ||
774 | 0x04020003, 0x480770e1, 0x1c01f000, 0x8c000510, | ||
775 | 0x040007fa, 0x4c040000, 0x0401f809, 0x5c000800, | ||
776 | 0x82100480, 0x00000008, 0x040017f4, 0x4c040000, | ||
777 | 0x0401febc, 0x5c000800, 0x0401f7f0, 0x59b800e2, | ||
778 | 0x59b820e2, 0x80100580, 0x040207fd, 0x80102114, | ||
779 | 0x0401f006, 0x59b800e2, 0x59b820e2, 0x80100580, | ||
780 | 0x040207fd, 0x0401f001, 0x40101800, 0x800c190a, | ||
781 | 0x82100500, 0x0000001f, 0x820c1d00, 0x0000001f, | ||
782 | 0x800c2480, 0x82102500, 0x0000001f, 0x1c01f000, | ||
783 | 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff, | ||
784 | 0x80040d40, 0x4807c857, 0x42001000, 0x0010b804, | ||
785 | 0x50080000, 0x80000540, 0x04020005, 0x4a0370e5, | ||
786 | 0x00000003, 0x4a0370e4, 0x00000300, 0x80000000, | ||
787 | 0x44001000, 0x42001000, 0x00000400, 0x59b800ea, | ||
788 | 0x8c000510, 0x0400000c, 0x0401ffd5, 0x82100480, | ||
789 | 0x00000008, 0x04001007, 0x4c040000, 0x4c080000, | ||
790 | 0x0401fe88, 0x5c001000, 0x5c000800, 0x0401f020, | ||
791 | 0x59b800ea, 0x8c000516, 0x0402001d, 0x4a0370e4, | ||
792 | 0x00300000, 0x480770e1, 0x42001000, 0x0000ff00, | ||
793 | 0x80081040, 0x04000012, 0x59b808e4, 0x8c040d28, | ||
794 | 0x040207fc, 0x42001000, 0x0010b804, 0x50080000, | ||
795 | 0x80000040, 0x04020005, 0x4a0370e5, 0x00000002, | ||
796 | 0x4a0370e4, 0x00000200, 0x02001800, 0x001005d8, | ||
797 | 0x44001000, 0x8c040d2c, 0x1c01f000, 0x41f80000, | ||
798 | 0x50000000, 0x0201f800, 0x001005d8, 0x80081040, | ||
799 | 0x040207d3, 0x41f80000, 0x50000000, 0x0201f800, | ||
800 | 0x001005d8, 0x4d380000, 0x59300c06, 0x82040580, | ||
801 | 0x00000009, 0x04020006, 0x42027000, 0x00000047, | ||
802 | 0x0201f800, 0x000207a1, 0x80000580, 0x5c027000, | ||
803 | 0x1c01f000, 0x4c500000, 0x4a03900d, 0x00000001, | ||
804 | 0x59c8a020, 0x4a03900d, 0x00000002, 0x59c80820, | ||
805 | 0x8c50a52e, 0x04000002, 0x900409c0, 0x82040d00, | ||
806 | 0x0000ffff, 0x0201f800, 0x00105dd7, 0x02000800, | ||
807 | 0x001005d8, 0x4933c857, 0x8250a500, 0xff000000, | ||
808 | 0x82500580, 0x05000000, 0x04000003, 0x82000540, | ||
809 | 0x00000001, 0x5c00a000, 0x1c01f000, 0x0401ffe6, | ||
810 | 0x4933c857, 0x59300406, 0x82000580, 0x00000000, | ||
811 | 0x04000040, 0x59c82021, 0x4a03900d, 0x00000001, | ||
812 | 0x59c82821, 0x82142d00, 0x0000ffff, 0x59325808, | ||
813 | 0x812e59c0, 0x04000037, 0x59326809, 0x0201f800, | ||
814 | 0x001048d9, 0x02020800, 0x001092b6, 0x599c0019, | ||
815 | 0x8c00050c, 0x04020018, 0x0201f800, 0x001048d9, | ||
816 | 0x04020015, 0x59300811, 0x4807c857, 0x592c0408, | ||
817 | 0x8c00051c, 0x0402000e, 0x8400055c, 0x48025c08, | ||
818 | 0x592c0a04, 0x82040d00, 0x000000ff, 0x82040580, | ||
819 | 0x00000048, 0x04000004, 0x82040580, 0x00000018, | ||
820 | 0x04020003, 0x59300811, 0x48065803, 0x4a026011, | ||
821 | 0x7fffffff, 0x48166013, 0x0201f800, 0x001010dd, | ||
822 | 0x04020014, 0x0401f9fd, 0x40280000, 0x4802600d, | ||
823 | 0x04000005, 0x4832600b, 0x50200000, 0x4802600a, | ||
824 | 0x4822600c, 0x59300414, 0x8c00051c, 0x04020004, | ||
825 | 0x599c0019, 0x8c00050c, 0x0402086e, 0x4a03900d, | ||
826 | 0x00000040, 0x4a0370e5, 0x00000008, 0x1c01f000, | ||
827 | 0x59880052, 0x80000000, 0x48031052, 0x4a03900d, | ||
828 | 0x00000040, 0x42000000, 0xc0000000, 0x0401f71d, | ||
829 | 0x4cf80000, 0x58f40000, 0x8001f540, 0x0401f820, | ||
830 | 0x41781800, 0x0401f8e4, 0x04020014, 0x44140800, | ||
831 | 0x0401f82a, 0x04000011, 0x40043800, 0x42001800, | ||
832 | 0x00000001, 0x40142000, 0x0401f8db, 0x0402000b, | ||
833 | 0x801c3800, 0x501c0000, 0x44000800, 0x0401f810, | ||
834 | 0x801c0580, 0x04000004, 0x44103800, 0x801c3840, | ||
835 | 0x44143800, 0x0401f819, 0x5c01f000, 0x1c01f000, | ||
836 | 0x80f9f1c0, 0x04020003, 0x58f41202, 0x0401f003, | ||
837 | 0x42001000, 0x00000007, 0x1c01f000, 0x80f9f1c0, | ||
838 | 0x04020006, 0x58f40401, 0x82000480, 0x00000002, | ||
839 | 0x80f40400, 0x0401f005, 0x58f80401, 0x82000480, | ||
840 | 0x00000002, 0x80f80400, 0x50002800, 0x80000000, | ||
841 | 0x50002000, 0x1c01f000, 0x80f9f1c0, 0x04020008, | ||
842 | 0x58f40401, 0x82000480, 0x00000002, 0x02001800, | ||
843 | 0x001005d8, 0x4801ec01, 0x0401f00b, 0x58f80401, | ||
844 | 0x82000480, 0x00000002, 0x02001800, 0x001005d8, | ||
845 | 0x4801f401, 0x82000580, 0x00000002, 0x04020002, | ||
846 | 0x0401f809, 0x58f40202, 0x80000040, 0x4801ea02, | ||
847 | 0x02000800, 0x001005d8, 0x82000580, 0x00000001, | ||
848 | 0x1c01f000, 0x4d2c0000, 0x40fa5800, 0x0201f800, | ||
849 | 0x001007f4, 0x4979e800, 0x4179f000, 0x5c025800, | ||
850 | 0x1c01f000, 0x80f5e9c0, 0x04000009, 0x80f9f1c0, | ||
851 | 0x04020ff5, 0x4d2c0000, 0x40f65800, 0x0201f800, | ||
852 | 0x001007f4, 0x4179e800, 0x5c025800, 0x1c01f000, | ||
853 | 0x4cf40000, 0x59300807, 0x82040500, 0x00003100, | ||
854 | 0x04020032, 0x8c040d22, 0x04000032, 0x5930001f, | ||
855 | 0x8001ed40, 0x02000800, 0x001005d8, 0x82000580, | ||
856 | 0xffffffff, 0x04000029, 0x58f40201, 0x82000580, | ||
857 | 0x0000dcb3, 0x02020800, 0x001005d8, 0x58f40a02, | ||
858 | 0x82040500, 0x0000fffe, 0x04000003, 0x0401ff89, | ||
859 | 0x58f40a02, 0x82040480, 0x0000000f, 0x04021059, | ||
860 | 0x80040800, 0x4805ea02, 0x82040580, 0x00000008, | ||
861 | 0x0400005d, 0x82040480, 0x00000008, 0x0400100a, | ||
862 | 0x58f40000, 0x8001ed40, 0x02000800, 0x001005d8, | ||
863 | 0x58f40201, 0x82000580, 0x0000ddb9, 0x02020800, | ||
864 | 0x001005d8, 0x58f40401, 0x82000c00, 0x00000002, | ||
865 | 0x4805ec01, 0x80f40400, 0x59300812, 0x44040000, | ||
866 | 0x80000000, 0x45780000, 0x5c01e800, 0x1c01f000, | ||
867 | 0x42001000, 0x00000400, 0x59b800e4, 0x8c000524, | ||
868 | 0x04020023, 0x4a0370e4, 0x00030000, 0x40000000, | ||
869 | 0x59b800e4, 0x8c000524, 0x0402001b, 0x59300807, | ||
870 | 0x84040d62, 0x48066007, 0x4a0370e4, 0x00020000, | ||
871 | 0x4d2c0000, 0x0201f800, 0x001007d3, 0x04000025, | ||
872 | 0x492e601f, 0x4a025a01, 0x0000dcb3, 0x59300008, | ||
873 | 0x80001d40, 0x02000800, 0x001005d8, 0x580c080f, | ||
874 | 0x48065803, 0x59301811, 0x40040000, 0x800c0580, | ||
875 | 0x0402000d, 0x497a5a02, 0x4a025c01, 0x00000004, | ||
876 | 0x0401f011, 0x4a0370e4, 0x00020000, 0x40000000, | ||
877 | 0x40000000, 0x80081040, 0x02000800, 0x001005d8, | ||
878 | 0x0401f7d6, 0x4a025a02, 0x00000001, 0x4a025c01, | ||
879 | 0x00000006, 0x497a5804, 0x400c0000, 0x80040480, | ||
880 | 0x48025805, 0x412de800, 0x5c025800, 0x0401f7a9, | ||
881 | 0x5c025800, 0x4a02601f, 0xffffffff, 0x0401f7c3, | ||
882 | 0x4d2c0000, 0x58f65800, 0x0201f800, 0x001007f4, | ||
883 | 0x40f65800, 0x0201f800, 0x001007f4, 0x5c025800, | ||
884 | 0x0401f7f5, 0x4d2c0000, 0x0201f800, 0x001007d3, | ||
885 | 0x040007f8, 0x4a025a01, 0x0000ddb9, 0x4a025c01, | ||
886 | 0x00000002, 0x492de800, 0x412de800, 0x5c025800, | ||
887 | 0x0401f7a5, 0x0401ff33, 0x82f40400, 0x00000004, | ||
888 | 0x800c0400, 0x40000800, 0x50040000, 0x80100580, | ||
889 | 0x04000016, 0x82040c00, 0x00000002, 0x80081040, | ||
890 | 0x040207fa, 0x80f9f1c0, 0x04000011, 0x58f41202, | ||
891 | 0x82081480, 0x00000007, 0x82f80400, 0x00000002, | ||
892 | 0x800c0400, 0x40000800, 0x50040000, 0x80100580, | ||
893 | 0x04000006, 0x82040c00, 0x00000002, 0x80081040, | ||
894 | 0x040207fa, 0x0401f002, 0x1c01f000, 0x82000540, | ||
895 | 0x00000001, 0x0401f7fd, 0x4cf40000, 0x4cf80000, | ||
896 | 0x4001e800, 0x592c0a06, 0x800409c0, 0x0402001d, | ||
897 | 0x82f40580, 0xffffffff, 0x04000017, 0x58f40201, | ||
898 | 0x82000580, 0x0000dcb3, 0x02020800, 0x001005d8, | ||
899 | 0x58f40000, 0x8001f540, 0x04000006, 0x58f80201, | ||
900 | 0x82000580, 0x0000ddb9, 0x02020800, 0x001005d8, | ||
901 | 0x41783800, 0x0401f839, 0x04020006, 0x0401ff32, | ||
902 | 0x497a601f, 0x5c01f000, 0x5c01e800, 0x1c01f000, | ||
903 | 0x0401ff2d, 0x4a025a06, 0x00000011, 0x0401f7f9, | ||
904 | 0x82f40580, 0xffffffff, 0x04020f27, 0x0401f7f5, | ||
905 | 0x4cf40000, 0x4cf80000, 0x4001e800, 0x82040580, | ||
906 | 0x00000001, 0x0402001f, 0x82f40580, 0xffffffff, | ||
907 | 0x04000019, 0x58f40201, 0x82000580, 0x0000dcb3, | ||
908 | 0x02020800, 0x001005d8, 0x58f40000, 0x8001f540, | ||
909 | 0x04000006, 0x58f80201, 0x82000580, 0x0000ddb9, | ||
910 | 0x02020800, 0x001005d8, 0x41783800, 0x0401f813, | ||
911 | 0x04020008, 0x0401ff0c, 0x42000800, 0x00000001, | ||
912 | 0x497a601f, 0x5c01f000, 0x5c01e800, 0x1c01f000, | ||
913 | 0x0401ff05, 0x42000800, 0x00000011, 0x0401f7f9, | ||
914 | 0x4c040000, 0x82f40580, 0xffffffff, 0x04020efe, | ||
915 | 0x5c000800, 0x0401f7f3, 0x4803c856, 0x401c2000, | ||
916 | 0x41781800, 0x0401ff8c, 0x0402002c, 0x58f42003, | ||
917 | 0x42001800, 0x00000001, 0x0401ff87, 0x04020027, | ||
918 | 0x0401feb8, 0x40082800, 0x82f40400, 0x00000004, | ||
919 | 0x40003000, 0x50182000, 0x40100000, 0x801c0580, | ||
920 | 0x04000005, 0x42001800, 0x00000001, 0x0401ff7a, | ||
921 | 0x0402001a, 0x82183400, 0x00000002, 0x80142840, | ||
922 | 0x040207f5, 0x80f9f1c0, 0x04000013, 0x58f42a02, | ||
923 | 0x82142c80, 0x00000007, 0x82f80400, 0x00000003, | ||
924 | 0x40003000, 0x50182000, 0x40100000, 0x801c0580, | ||
925 | 0x04000005, 0x42001800, 0x00000001, 0x0401ff66, | ||
926 | 0x04020006, 0x82183400, 0x00000002, 0x80142840, | ||
927 | 0x040207f5, 0x1c01f000, 0x82000540, 0x00000001, | ||
928 | 0x0401f7fd, 0x0201f800, 0x001005d8, 0x58380207, | ||
929 | 0x8c000502, 0x040007fc, 0x50200000, 0x80387c00, | ||
930 | 0x583c2800, 0x583c2001, 0x58380404, 0x80001540, | ||
931 | 0x04020002, 0x58381407, 0x58c83401, 0x58380c08, | ||
932 | 0x59303807, 0x497a6012, 0x497a6013, 0x0201f000, | ||
933 | 0x000200be, 0x592c0408, 0x8c000502, 0x040007ea, | ||
934 | 0x592c0409, 0x80000540, 0x040007e7, 0x82000c80, | ||
935 | 0x00000002, 0x04001011, 0x58380001, 0x80007540, | ||
936 | 0x02000800, 0x001005d8, 0x58380204, 0x82000500, | ||
937 | 0x0000000f, 0x82000400, 0x001010bd, 0x50004000, | ||
938 | 0x40040000, 0x800409c0, 0x04000005, 0x82040c80, | ||
939 | 0x00000005, 0x040217f1, 0x80204400, 0x50200000, | ||
940 | 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002, | ||
941 | 0x592c0a07, 0x592c4c08, 0x592c300d, 0x59303807, | ||
942 | 0x497a6012, 0x497a6013, 0x4816600e, 0x4812600f, | ||
943 | 0x480a6010, 0x481a6011, 0x80040840, 0x4806600d, | ||
944 | 0x02000000, 0x000200c6, 0x80204000, 0x50201800, | ||
945 | 0x800c19c0, 0x0402000c, 0x58380001, 0x80007540, | ||
946 | 0x02000800, 0x001005d8, 0x58380204, 0x82000500, | ||
947 | 0x0000000f, 0x82000400, 0x001010bd, 0x50004000, | ||
948 | 0x50201800, 0x483a600b, 0x480e600a, 0x4822600c, | ||
949 | 0x0201f000, 0x000200c6, 0x4803c856, 0x592c0208, | ||
950 | 0x8c00051e, 0x04020017, 0x50200000, 0x80306c00, | ||
951 | 0x40240000, 0x0c01f001, 0x00100e46, 0x00100e46, | ||
952 | 0x00100e4f, 0x00100e46, 0x00100e46, 0x00100e46, | ||
953 | 0x00100e46, 0x00100e46, 0x00100e4f, 0x00100e46, | ||
954 | 0x00100e4f, 0x00100e46, 0x00100e46, 0x00100e4f, | ||
955 | 0x00100e46, 0x00100e46, 0x0201f800, 0x001005d8, | ||
956 | 0x8400051e, 0x48025a08, 0x50200000, 0x80306c00, | ||
957 | 0x58343801, 0x481e600f, 0x0401f007, 0x58341802, | ||
958 | 0x58342800, 0x58343801, 0x480e6010, 0x4816600e, | ||
959 | 0x481e600f, 0x0401f246, 0x4933c857, 0x5931f808, | ||
960 | 0x59300a06, 0x800409c0, 0x04000005, 0x80040906, | ||
961 | 0x04020002, 0x80040800, 0x4805fc06, 0x4a026206, | ||
962 | 0x00000002, 0x592c0409, 0x82000500, 0x00000008, | ||
963 | 0x0400000b, 0x0401f834, 0x59300203, 0x82000580, | ||
964 | 0x00000004, 0x04020005, 0x42027000, 0x00000048, | ||
965 | 0x0201f800, 0x000207a1, 0x1c01f000, 0x4cfc0000, | ||
966 | 0x58fc0204, 0x82000500, 0x000000ff, 0x82000580, | ||
967 | 0x00000048, 0x0402000c, 0x58fc000b, 0x800001c0, | ||
968 | 0x04000009, 0x58fc0407, 0x800001c0, 0x04000006, | ||
969 | 0x58fc080b, 0x8c040d16, 0x04000017, 0x58fc0007, | ||
970 | 0x0401f00a, 0x58fc0408, 0x8c000512, 0x04020014, | ||
971 | 0x58fc0c09, 0x8c040d16, 0x04020003, 0x5c01f800, | ||
972 | 0x1c01f000, 0x58fc000a, 0x59300811, 0x80040580, | ||
973 | 0x04020009, 0x59300007, 0x84000500, 0x48026007, | ||
974 | 0x42027000, 0x00000048, 0x5c01f800, 0x0201f000, | ||
975 | 0x000207a1, 0x5c01f800, 0x1c01f000, 0x58fdf809, | ||
976 | 0x0401f7ec, 0x4933c857, 0x59b808ea, 0x82040d00, | ||
977 | 0x00000007, 0x82040580, 0x00000000, 0x0400001e, | ||
978 | 0x82040580, 0x00000003, 0x0400001b, 0x59300406, | ||
979 | 0x4c000000, 0x4a026406, 0x00000000, 0x42003000, | ||
980 | 0x00000041, 0x42000000, 0x50000000, 0x41300800, | ||
981 | 0x4c180000, 0x0401fce7, 0x5c003000, 0x0400000b, | ||
982 | 0x42000000, 0x0000001e, 0x80000040, 0x040207ff, | ||
983 | 0x80183040, 0x040207f4, 0x42000000, 0x40000000, | ||
984 | 0x41300800, 0x0401fcdb, 0x5c000000, 0x48026406, | ||
985 | 0x1c01f000, 0x59300007, 0x84000500, 0x48026007, | ||
986 | 0x0401f7fc, 0x59c00007, 0x4a038006, 0x30000000, | ||
987 | 0x40000000, 0x59c00007, 0x8c00050a, 0x040207fe, | ||
988 | 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, | ||
989 | 0x4dc00000, 0x4a0370e8, 0x00000000, 0x42038000, | ||
990 | 0x00007720, 0x0401fff0, 0x42038000, 0x00007700, | ||
991 | 0x0401ffed, 0x0201f800, 0x0010513b, 0x04020013, | ||
992 | 0x4a038891, 0x0000ffff, 0x497b8880, 0x497b8892, | ||
993 | 0x42001000, 0x00000190, 0x40000000, 0x40000000, | ||
994 | 0x80081040, 0x040207fd, 0x42000000, 0x0010b8a6, | ||
995 | 0x0201f800, 0x0010aa47, 0x0401f80e, 0x5c038000, | ||
996 | 0x0201f000, 0x00105258, 0x0401f82d, 0x42000000, | ||
997 | 0x0010b8a7, 0x0201f800, 0x0010aa47, 0x0401f805, | ||
998 | 0x48178892, 0x480b8880, 0x5c038000, 0x1c01f000, | ||
999 | 0x496fc857, 0x836c0580, 0x00000003, 0x0402000b, | ||
1000 | 0x4c080000, 0x4c0c0000, 0x42001000, 0x00008048, | ||
1001 | 0x42001800, 0x0000ffff, 0x0201f800, 0x00103a3e, | ||
1002 | 0x5c001800, 0x5c001000, 0x42000800, 0x0000003c, | ||
1003 | 0x0201f800, 0x00101345, 0x59a8006c, 0x80000540, | ||
1004 | 0x04000006, 0x59a8106d, 0x800811c0, 0x04000003, | ||
1005 | 0x0201f800, 0x00101aaf, 0x4a038891, 0x0000ffff, | ||
1006 | 0x4a03900d, 0x00000040, 0x0201f800, 0x0010098e, | ||
1007 | 0x4a0370e8, 0x00000001, 0x1c01f000, 0x5c000000, | ||
1008 | 0x4c000000, 0x4803c857, 0x59c41080, 0x497b8880, | ||
1009 | 0x59c42892, 0x497b8892, 0x0201f800, 0x0010513b, | ||
1010 | 0x04020002, 0x1c01f000, 0x42002000, 0x00000260, | ||
1011 | 0x59c418a4, 0x820c1d00, 0x0000000f, 0x820c0580, | ||
1012 | 0x00000000, 0x04000010, 0x59c41805, 0x820c1d00, | ||
1013 | 0x00000001, 0x0402000e, 0x59c418a4, 0x820c1d00, | ||
1014 | 0x0000000f, 0x820c0480, 0x00000007, 0x04001004, | ||
1015 | 0x820c0480, 0x0000000c, 0x04001003, 0x80102040, | ||
1016 | 0x040207ec, 0x497b8891, 0x1c01f000, 0x4c100000, | ||
1017 | 0x42002000, 0x00000019, 0x46000000, 0x00000001, | ||
1018 | 0x0201f800, 0x00101937, 0x50001800, 0x820c1d00, | ||
1019 | 0x00000001, 0x04000005, 0x80102040, 0x040207f7, | ||
1020 | 0x5c002000, 0x0401f7f0, 0x5c002000, 0x0401f7ec, | ||
1021 | 0x4803c856, 0x1c01f000, 0x4d2c0000, 0x59325808, | ||
1022 | 0x592c0a04, 0x4807c857, 0x82040d00, 0x000000ff, | ||
1023 | 0x82040500, 0x0000000f, 0x0c01f001, 0x00100f67, | ||
1024 | 0x00100f67, 0x00100f67, 0x00100f7f, 0x00100f67, | ||
1025 | 0x00100f67, 0x00100f67, 0x00100f67, 0x00100f67, | ||
1026 | 0x00100f7f, 0x00100f67, 0x00100f69, 0x00100f67, | ||
1027 | 0x00100f67, 0x00100f67, 0x00100f67, 0x0201f800, | ||
1028 | 0x001005d8, 0x82040580, 0x0000003b, 0x02020800, | ||
1029 | 0x001005d8, 0x592c020a, 0x8c000500, 0x0400005f, | ||
1030 | 0x592c1a07, 0x82040500, 0x0000000f, 0x82000400, | ||
1031 | 0x001010bd, 0x50001000, 0x50080000, 0x59302013, | ||
1032 | 0x4802600a, 0x492e600b, 0x480a600c, 0x480e600d, | ||
1033 | 0x48126012, 0x5c025800, 0x1c01f000, 0x82040500, | ||
1034 | 0x0000000f, 0x82000400, 0x001010bd, 0x50001000, | ||
1035 | 0x50080000, 0x592c1a07, 0x4802600a, 0x492e600b, | ||
1036 | 0x480a600c, 0x480e600d, 0x497a6012, 0x0401f7f2, | ||
1037 | 0x8c040d00, 0x04020041, 0x82040d00, 0x00000080, | ||
1038 | 0x0400003e, 0x0201f000, 0x000200cf, 0x59300013, | ||
1039 | 0x59301012, 0x80080580, 0x0402000c, 0x42007800, | ||
1040 | 0x80000005, 0x592c1208, 0x82080500, 0xffff7fff, | ||
1041 | 0x48025a08, 0x8c08151e, 0x0402002d, 0x823c7d40, | ||
1042 | 0x00000020, 0x0401f02a, 0x480bc857, 0x42000000, | ||
1043 | 0x0010b851, 0x0201f800, 0x0010aa47, 0x59300414, | ||
1044 | 0x4803c857, 0x8c000514, 0x04020007, 0x599c1819, | ||
1045 | 0x8c0c1d12, 0x04020004, 0x820c1d40, 0x00000001, | ||
1046 | 0x0401f01d, 0x59302013, 0x0401f92b, 0x0402001a, | ||
1047 | 0x42007800, 0x80000005, 0x5930500d, 0x592c0208, | ||
1048 | 0x4803c857, 0x8c00051e, 0x04020005, 0x823c7d40, | ||
1049 | 0x00000020, 0x5930400c, 0x0401f004, 0x8400051e, | ||
1050 | 0x48025a08, 0x0401f8da, 0x50201800, 0x480e600a, | ||
1051 | 0x4832600b, 0x4822600c, 0x482a600d, 0x480fc857, | ||
1052 | 0x4833c857, 0x4823c857, 0x482bc857, 0x80000580, | ||
1053 | 0x483e6004, 0x1c01f000, 0x0201f800, 0x001005d8, | ||
1054 | 0x4933c857, 0x4d2c0000, 0x59900004, 0x81300580, | ||
1055 | 0x02020800, 0x001005d8, 0x0201f800, 0x00109037, | ||
1056 | 0x02000800, 0x001005d8, 0x59325808, 0x4d3c0000, | ||
1057 | 0x4d400000, 0x59300004, 0x4803c857, 0x4c000000, | ||
1058 | 0x0201f800, 0x00106dc3, 0x0201f800, 0x00106b8a, | ||
1059 | 0x5c000000, 0x8c000516, 0x04000010, 0x592c000f, | ||
1060 | 0x4803c857, 0x48025807, 0x41780800, 0x42028000, | ||
1061 | 0x00000002, 0x0201f800, 0x00104e70, 0x4a025c06, | ||
1062 | 0x0000ffff, 0x0201f800, 0x000202da, 0x0201f800, | ||
1063 | 0x00107911, 0x0401f015, 0x4a026203, 0x00000002, | ||
1064 | 0x592c0208, 0x8400054e, 0x48025a08, 0x59300406, | ||
1065 | 0x82000580, 0x00000006, 0x04020009, 0x811800ca, | ||
1066 | 0x81c80c00, 0x58040939, 0x592c000d, 0x80040480, | ||
1067 | 0x592c080f, 0x80040480, 0x4802580b, 0x417a7800, | ||
1068 | 0x0201f800, 0x00108be3, 0x5c028000, 0x5c027800, | ||
1069 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, | ||
1070 | 0x59900004, 0x81300580, 0x02020800, 0x001005d8, | ||
1071 | 0x0201f800, 0x00109037, 0x02000800, 0x001005d8, | ||
1072 | 0x59325808, 0x592c0208, 0x84000540, 0x48025a08, | ||
1073 | 0x0401f7bf, 0x491bc857, 0x49d3c857, 0x4dd00000, | ||
1074 | 0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600, | ||
1075 | 0x4a03a005, 0x80000002, 0x42000000, 0x00001000, | ||
1076 | 0x50000000, 0x82000480, 0x24220001, 0x04020029, | ||
1077 | 0x59d01006, 0x82080500, 0x00006000, 0x82000580, | ||
1078 | 0x00006000, 0x0400002f, 0x82080500, 0x40008000, | ||
1079 | 0x040007f8, 0x800409c0, 0x0402002a, 0x811a31c0, | ||
1080 | 0x04000028, 0x42000000, 0x00001002, 0x50001000, | ||
1081 | 0x46000000, 0x00000512, 0x42001800, 0x0000000a, | ||
1082 | 0x59e00000, 0x8c00051a, 0x040207fc, 0x800c1840, | ||
1083 | 0x040207fc, 0x42000000, 0x00001002, 0x46000000, | ||
1084 | 0x00000514, 0x42001800, 0x0000000a, 0x59e00000, | ||
1085 | 0x8c00053a, 0x040207fc, 0x800c1840, 0x040207fc, | ||
1086 | 0x42000000, 0x00001002, 0x44080000, 0x0401f00d, | ||
1087 | 0x59d01006, 0x82080500, 0x00006000, 0x82000580, | ||
1088 | 0x00006000, 0x04000007, 0x8c08151e, 0x040007f9, | ||
1089 | 0x59d01006, 0x82080500, 0x00006000, 0x040207f5, | ||
1090 | 0x83d3a400, 0x00000020, 0x80040800, 0x82040480, | ||
1091 | 0x00000005, 0x040017bf, 0x5c03a000, 0x1c01f000, | ||
1092 | 0x491bc857, 0x49d3c857, 0x4dd00000, 0x41780800, | ||
1093 | 0x8007a0ca, 0x83d3a400, 0x00007600, 0x4a03a005, | ||
1094 | 0x80000001, 0x59d00006, 0x83d3a400, 0x00000020, | ||
1095 | 0x80040800, 0x82040480, 0x00000005, 0x040017f8, | ||
1096 | 0x5c03a000, 0x1c01f000, 0x59d00006, 0x8c00053e, | ||
1097 | 0x0400001e, 0x59902804, 0x4817c857, 0x801429c0, | ||
1098 | 0x04000013, 0x5990000a, 0x5990080b, 0x5990100c, | ||
1099 | 0x5990180d, 0x4800280a, 0x4804280b, 0x4808280c, | ||
1100 | 0x480c280d, 0x59d00000, 0x59d00801, 0x59d01002, | ||
1101 | 0x59d01803, 0x59d02004, 0x4800280e, 0x4804280f, | ||
1102 | 0x48082810, 0x480c2811, 0x48102812, 0x59900006, | ||
1103 | 0x82000500, 0xffff0000, 0x48032006, 0x4a03a005, | ||
1104 | 0x30000000, 0x59d00006, 0x1c01f000, 0x4803c856, | ||
1105 | 0x80204000, 0x50200000, 0x80000540, 0x04000003, | ||
1106 | 0x80285040, 0x1c01f000, 0x58300001, 0x80000540, | ||
1107 | 0x0400000e, 0x4802600b, 0x40006000, 0x58300204, | ||
1108 | 0x82000500, 0x0000000f, 0x82000400, 0x001010bd, | ||
1109 | 0x50004000, 0x802041c0, 0x02000800, 0x001005d8, | ||
1110 | 0x80285040, 0x1c01f000, 0x40005000, 0x1c01f000, | ||
1111 | 0x00000005, 0x00000008, 0x0000000b, 0x0000000e, | ||
1112 | 0x00000011, 0x00000000, 0x00000000, 0x0000000b, | ||
1113 | 0x00000000, 0x00000000, 0x00000000, 0x001010b8, | ||
1114 | 0x001010b7, 0x00000000, 0x00000000, 0x00000000, | ||
1115 | 0x00000000, 0x001010b8, 0x001010b7, 0x001010b4, | ||
1116 | 0x001010b8, 0x001010b7, 0x00000000, 0x00000000, | ||
1117 | 0x00000000, 0x00000000, 0x00000000, 0x001010b8, | ||
1118 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1119 | 0x00000000, 0x001010b8, 0x001010b8, 0x001010b8, | ||
1120 | 0x00000000, 0x001010b8, 0x00000000, 0x00000000, | ||
1121 | 0x00000000, 0x4813c857, 0x492fc857, 0x4933c857, | ||
1122 | 0x48126012, 0x592c5207, 0x802851c0, 0x0400004a, | ||
1123 | 0x412c6000, 0x0401f84b, 0x04000009, 0x82240580, | ||
1124 | 0x00000002, 0x04020003, 0x5830000d, 0x80102480, | ||
1125 | 0x50200000, 0x80004540, 0x0400003f, 0x50200000, | ||
1126 | 0x80000540, 0x0400000b, 0x80301400, 0x58080002, | ||
1127 | 0x80102480, 0x0400101e, 0x801021c0, 0x04000009, | ||
1128 | 0x80285040, 0x04000034, 0x80204000, 0x0401f7f4, | ||
1129 | 0x58300001, 0x80006540, 0x0400002f, 0x0401f7e6, | ||
1130 | 0x80285040, 0x0400002c, 0x80204000, 0x50200000, | ||
1131 | 0x80000540, 0x0402000a, 0x58300001, 0x80006540, | ||
1132 | 0x04000025, 0x58300204, 0x82004d00, 0x0000000f, | ||
1133 | 0x82244400, 0x001010bd, 0x50204000, 0x592c0208, | ||
1134 | 0x8400051e, 0x48025a08, 0x0401f013, 0x80102080, | ||
1135 | 0x80102000, 0x48126010, 0x4813c857, 0x58080802, | ||
1136 | 0x40100000, 0x80042480, 0x02001800, 0x001005d8, | ||
1137 | 0x58080000, 0x58081801, 0x80102400, 0x4812600e, | ||
1138 | 0x480e600f, 0x4813c857, 0x592c0208, 0x8400055e, | ||
1139 | 0x48025a08, 0x4833c857, 0x4823c857, 0x482bc857, | ||
1140 | 0x4832600b, 0x4822600c, 0x482a600d, 0x80000580, | ||
1141 | 0x0401f003, 0x82000540, 0x00000001, 0x1c01f000, | ||
1142 | 0x58300204, 0x82004d00, 0x0000000f, 0x82244400, | ||
1143 | 0x001010bd, 0x82000500, 0x000000ff, 0x82000580, | ||
1144 | 0x00000029, 0x0402001b, 0x50204000, 0x592c0409, | ||
1145 | 0x80000540, 0x02000800, 0x001005d8, 0x82000c80, | ||
1146 | 0x00000002, 0x04001011, 0x58300001, 0x80006540, | ||
1147 | 0x02000800, 0x001005d8, 0x58300204, 0x82000500, | ||
1148 | 0x0000000f, 0x82000400, 0x001010bd, 0x50004000, | ||
1149 | 0x40040000, 0x800409c0, 0x04000006, 0x82040c80, | ||
1150 | 0x00000005, 0x040217f1, 0x80204400, 0x80000580, | ||
1151 | 0x1c01f000, 0x59e00004, 0x8c00050e, 0x02020000, | ||
1152 | 0x00100903, 0x1c01f000, 0x4c5c0000, 0x59e4b800, | ||
1153 | 0x485fc857, 0x825c0500, 0x0000001f, 0x04000004, | ||
1154 | 0x59e40862, 0x0201f800, 0x001005d8, 0x825c0500, | ||
1155 | 0x000000e0, 0x02000800, 0x001005d8, 0x8c5cbd0e, | ||
1156 | 0x04020807, 0x8c5cbd0c, 0x04020809, 0x8c5cbd0a, | ||
1157 | 0x04020878, 0x5c00b800, 0x1c01f000, 0x4803c856, | ||
1158 | 0x4a03c800, 0x00000080, 0x1c01f000, 0x4d2c0000, | ||
1159 | 0x42007800, 0x0010b8ec, 0x583c0001, 0x583c0802, | ||
1160 | 0x80040540, 0x0400003f, 0x42000800, 0x0010b7f7, | ||
1161 | 0x50065800, 0x592c0002, 0x82000580, 0x00000000, | ||
1162 | 0x0400000e, 0x59e40850, 0x59e41853, 0x400c0000, | ||
1163 | 0x80040400, 0x59e40852, 0x4807c857, 0x80041480, | ||
1164 | 0x04021008, 0x40001000, 0x480bc857, 0x4a007800, | ||
1165 | 0x00000001, 0x0401f006, 0x4803c857, 0x0401f029, | ||
1166 | 0x59e41050, 0x480bc857, 0x49787800, 0x480bc857, | ||
1167 | 0x480fc857, 0x592c0003, 0x80000540, 0x04000006, | ||
1168 | 0x80080580, 0x04020004, 0x592c0003, 0x4803c857, | ||
1169 | 0x480bc857, 0x480a5803, 0x592c0007, 0x800001c0, | ||
1170 | 0x04000007, 0x592c1007, 0x480bc857, 0x583c0003, | ||
1171 | 0x4803c857, 0x80080480, 0x04001003, 0x583c1001, | ||
1172 | 0x480bc857, 0x583c0802, 0x480bc857, 0x4807c857, | ||
1173 | 0x4a025801, 0x00000000, 0x4a025809, 0x001011bc, | ||
1174 | 0x480a5807, 0x48065808, 0x59e40053, 0x48025804, | ||
1175 | 0x412c1000, 0x492fc857, 0x0201f800, 0x00100858, | ||
1176 | 0x5c025800, 0x4a03c800, 0x00000040, 0x1c01f000, | ||
1177 | 0x42007800, 0x0010b7f7, 0x503c7800, 0x4a007802, | ||
1178 | 0x00000100, 0x42007800, 0x0010b8ec, 0x583c0000, | ||
1179 | 0x4803c857, 0x82000d80, 0x00000001, 0x04000004, | ||
1180 | 0x80000000, 0x48007800, 0x0401f019, 0x49787800, | ||
1181 | 0x583c1806, 0x583c0005, 0x800c1800, 0x480c7806, | ||
1182 | 0x800c0580, 0x04020002, 0x49787806, 0x583c0807, | ||
1183 | 0x800409c0, 0x0400000e, 0x583c0008, 0x80000000, | ||
1184 | 0x48007808, 0x80040580, 0x04020009, 0x49787808, | ||
1185 | 0x583c2006, 0x42001800, 0x00000001, 0x42001000, | ||
1186 | 0x00008028, 0x0201f800, 0x00103a3e, 0x1c01f000, | ||
1187 | 0x4a03c800, 0x00000020, 0x0201f800, 0x0010aa40, | ||
1188 | 0x59e40000, 0x1c01f000, 0x4d2c0000, 0x4a007001, | ||
1189 | 0x00000000, 0x82040d00, 0x43000f80, 0x02020800, | ||
1190 | 0x001005d8, 0x58380009, 0x4803c00f, 0x0201f800, | ||
1191 | 0x00109402, 0x583a5808, 0x592c0000, 0x48007008, | ||
1192 | 0x800001c0, 0x04020002, 0x49787007, 0x0201f800, | ||
1193 | 0x001007f4, 0x5c025800, 0x0201f000, 0x0010087d, | ||
1194 | 0x4803c856, 0x4c3c0000, 0x4d2c0000, 0x4d300000, | ||
1195 | 0x5830000a, 0x80025d40, 0x02000800, 0x001005d8, | ||
1196 | 0x592e6008, 0x4c300000, 0x0201f800, 0x0010941a, | ||
1197 | 0x5c006000, 0x02000800, 0x001005d8, 0x58300002, | ||
1198 | 0x82000580, 0x00000100, 0x04020010, 0x5930780b, | ||
1199 | 0x583c0001, 0x80000540, 0x0400000e, 0x4802600b, | ||
1200 | 0x40007800, 0x82000400, 0x00000002, 0x48006003, | ||
1201 | 0x583c0000, 0x48006004, 0x40301000, 0x0201f800, | ||
1202 | 0x00100858, 0x0401f00c, 0x4a025a06, 0x00000002, | ||
1203 | 0x4c300000, 0x0201f800, 0x000202da, 0x5c006000, | ||
1204 | 0x40325800, 0x0201f800, 0x001007f4, 0x0201f800, | ||
1205 | 0x0002077d, 0x5c026000, 0x5c025800, 0x5c007800, | ||
1206 | 0x1c01f000, 0x4803c856, 0x4d2c0000, 0x4d300000, | ||
1207 | 0x42007000, 0x0010b7f8, 0x58380801, 0x82040580, | ||
1208 | 0x00000002, 0x04020011, 0x58386002, 0x5830000a, | ||
1209 | 0x812c0580, 0x0402000d, 0x59e00004, 0x8c00050e, | ||
1210 | 0x040007fe, 0x59dc0006, 0x4803c857, 0x4a03b805, | ||
1211 | 0x20000000, 0x8c00053e, 0x040007f8, 0x4a007001, | ||
1212 | 0x00000000, 0x0401f019, 0x58386006, 0x40305000, | ||
1213 | 0x803061c0, 0x02000800, 0x001005d8, 0x5830000a, | ||
1214 | 0x812c0580, 0x04000004, 0x40305000, 0x58306000, | ||
1215 | 0x0401f7f8, 0x40280000, 0x80300580, 0x58300000, | ||
1216 | 0x04000006, 0x48005000, 0x800001c0, 0x04020007, | ||
1217 | 0x48287005, 0x0401f005, 0x800001c0, 0x04020002, | ||
1218 | 0x48007005, 0x48007006, 0x40325800, 0x0201f800, | ||
1219 | 0x001007f4, 0x42007000, 0x0010b7f8, 0x58380001, | ||
1220 | 0x82000580, 0x00000000, 0x02000800, 0x0010087d, | ||
1221 | 0x5c026000, 0x5c025800, 0x1c01f000, 0x4803c856, | ||
1222 | 0x42000800, 0x0000003c, 0x48079000, 0x59c80000, | ||
1223 | 0x80040500, 0x040207fe, 0x497b9005, 0x4a039035, | ||
1224 | 0x00880200, 0x59a8000e, 0x800000e0, 0x4803900e, | ||
1225 | 0x4a039011, 0x00000024, 0x4a03900f, 0x0010d1c0, | ||
1226 | 0x4a039010, 0x0010d1c0, 0x4a039015, 0x0000007f, | ||
1227 | 0x4a03900d, 0x00000040, 0x4a039000, 0x00001600, | ||
1228 | 0x1c01f000, 0x59c80007, 0x8c000508, 0x040208b7, | ||
1229 | 0x59c80800, 0x8c040d16, 0x04020004, 0x82000500, | ||
1230 | 0x00000006, 0x0c01f005, 0x4807c857, 0x82000500, | ||
1231 | 0x0000000e, 0x0c01f001, 0x001012a8, 0x001012a6, | ||
1232 | 0x00105999, 0x001012a6, 0x001012aa, 0x001012a6, | ||
1233 | 0x001012aa, 0x001012aa, 0x001012a6, 0x001012a6, | ||
1234 | 0x001012a6, 0x001012a6, 0x001012aa, 0x001012a6, | ||
1235 | 0x001012aa, 0x001012a6, 0x0201f800, 0x001005d8, | ||
1236 | 0x4803c857, 0x1c01f000, 0x59c8080c, 0x4807c857, | ||
1237 | 0x82040500, 0x00006000, 0x04000004, 0x0201f800, | ||
1238 | 0x0010aa03, 0x0401f006, 0x82040500, 0x007f0000, | ||
1239 | 0x04000006, 0x0201f800, 0x0010a9d5, 0x0201f800, | ||
1240 | 0x00106eb3, 0x0401f02b, 0x82040500, 0x00000014, | ||
1241 | 0x04000014, 0x0201f800, 0x0010aa32, 0x836c0580, | ||
1242 | 0x00000003, 0x0400000d, 0x0201f800, 0x0010513b, | ||
1243 | 0x04000004, 0x0201f800, 0x0010411d, 0x0401f007, | ||
1244 | 0x4a035033, 0x00000001, 0x4202d800, 0x00000001, | ||
1245 | 0x0201f800, 0x001050a2, 0x0401f817, 0x0401f015, | ||
1246 | 0x82040500, 0x00001c00, 0x04000005, 0x0201f800, | ||
1247 | 0x0010aa11, 0x0401f810, 0x0401f00e, 0x82040500, | ||
1248 | 0x00000140, 0x04000005, 0x0201f800, 0x0010aa24, | ||
1249 | 0x0401f809, 0x0401f007, 0x82040500, 0x00008000, | ||
1250 | 0x04000004, 0x0201f800, 0x0010a9fc, 0x0401f802, | ||
1251 | 0x1c01f000, 0x4c0c0000, 0x4c100000, 0x4c140000, | ||
1252 | 0x0201f800, 0x00100ec9, 0x5c002800, 0x5c002000, | ||
1253 | 0x5c001800, 0x1c01f000, 0x4803c856, 0x59a80804, | ||
1254 | 0x59a8002b, 0x82000500, 0xfffff000, 0x80040540, | ||
1255 | 0x4803502b, 0x59a8002f, 0x82000500, 0xfffff000, | ||
1256 | 0x80040540, 0x4803502f, 0x48078882, 0x82041c00, | ||
1257 | 0x0000000f, 0x800c1908, 0x820c1c00, 0x00000004, | ||
1258 | 0x400c2000, 0x901029c0, 0x82040480, 0x000001e4, | ||
1259 | 0x04021005, 0x42001000, 0x00000008, 0x801020c6, | ||
1260 | 0x0401f031, 0x82040480, 0x00000230, 0x04021009, | ||
1261 | 0x42001000, 0x00000007, 0x801000c2, 0x800000c2, | ||
1262 | 0x80100400, 0x80100400, 0x80102400, 0x0401f026, | ||
1263 | 0x82040480, 0x00000298, 0x04021008, 0x42001000, | ||
1264 | 0x00000006, 0x801000c2, 0x800000c2, 0x80100400, | ||
1265 | 0x80102400, 0x0401f01c, 0x82040480, 0x00000328, | ||
1266 | 0x04021007, 0x42001000, 0x00000005, 0x801000c2, | ||
1267 | 0x800000c2, 0x80102400, 0x0401f013, 0x82040480, | ||
1268 | 0x00000404, 0x04021005, 0x42001000, 0x00000004, | ||
1269 | 0x801020c4, 0x0401f00c, 0x82040480, 0x0000056c, | ||
1270 | 0x04021006, 0x42001000, 0x00000003, 0x801000c2, | ||
1271 | 0x80102400, 0x0401f004, 0x42001000, 0x00000002, | ||
1272 | 0x801020c2, 0x82100480, 0x00000110, 0x80000080, | ||
1273 | 0x80002000, 0x800800d0, 0x80140540, 0x80100540, | ||
1274 | 0x48039035, 0x1c01f000, 0x59c80815, 0x0201f800, | ||
1275 | 0x001005d0, 0x82040d00, 0x0000007c, 0x48079000, | ||
1276 | 0x59c80000, 0x80040500, 0x040207fe, 0x8c040d04, | ||
1277 | 0x04000003, 0x59c80035, 0x48039035, 0x59c80000, | ||
1278 | 0x82000540, 0x00001200, 0x48039000, 0x1c01f000, | ||
1279 | 0x4803c856, 0x497b88a9, 0x4a038807, 0x00000001, | ||
1280 | 0x497b8807, 0x59c40005, 0x48038805, 0x0201f800, | ||
1281 | 0x00101815, 0x4201d000, 0x000001f4, 0x0201f800, | ||
1282 | 0x0010608e, 0x497b880e, 0x4200b000, 0x000001f4, | ||
1283 | 0x42000000, 0x00000001, 0x42000800, 0x00000014, | ||
1284 | 0x0201f800, 0x00101944, 0x42000800, 0x00000014, | ||
1285 | 0x0201f800, 0x0010193f, 0x8c040d00, 0x04000005, | ||
1286 | 0x8058b040, 0x040207f3, 0x0201f800, 0x001005d8, | ||
1287 | 0x4200b000, 0x00000032, 0x42000000, 0x00000001, | ||
1288 | 0x42000800, 0x000000b4, 0x0201f800, 0x00101944, | ||
1289 | 0x42000800, 0x000000b4, 0x0201f800, 0x0010193f, | ||
1290 | 0x8c040d00, 0x04000005, 0x8058b040, 0x040207f3, | ||
1291 | 0x0201f800, 0x001005d8, 0x59c40005, 0x48038805, | ||
1292 | 0x42000000, 0x00000089, 0x800008d0, 0x48075054, | ||
1293 | 0x48075055, 0x48075056, 0x42000800, 0x000000e0, | ||
1294 | 0x0201f800, 0x00101944, 0x42000800, 0x000000f4, | ||
1295 | 0x0201f800, 0x0010193f, 0x82040500, 0xffffffd1, | ||
1296 | 0x82000540, 0x00000002, 0x42000800, 0x000000f4, | ||
1297 | 0x0201f800, 0x00101944, 0x42000800, 0x000000a0, | ||
1298 | 0x0201f800, 0x0010193f, 0x82040540, 0x00000001, | ||
1299 | 0x42000800, 0x000000a0, 0x0201f800, 0x00101944, | ||
1300 | 0x42000800, 0x00000000, 0x0201f800, 0x0010193f, | ||
1301 | 0x82040540, 0x00000001, 0x42000800, 0x00000000, | ||
1302 | 0x0201f800, 0x00101944, 0x4201d000, 0x0001d4c0, | ||
1303 | 0x0201f800, 0x0010608e, 0x0401fa2b, 0x4a0388a7, | ||
1304 | 0x0000f7f7, 0x4a0388a3, 0x8000403c, 0x4a0388ae, | ||
1305 | 0x000061a8, 0x4a038801, 0x00032063, 0x4a038810, | ||
1306 | 0x00410108, 0x4a038811, 0x00520608, 0x4a038812, | ||
1307 | 0x00450320, 0x4a038813, 0x00440405, 0x4a03881c, | ||
1308 | 0x004132e1, 0x4a038850, 0x80000108, 0x4a038860, | ||
1309 | 0x00000008, 0x4a038870, 0x00000008, 0x4a038851, | ||
1310 | 0x80000508, 0x4a038861, 0x00800000, 0x4a038871, | ||
1311 | 0x00800000, 0x4a038852, 0x80000708, 0x4a038862, | ||
1312 | 0x00800000, 0x4a038872, 0x00800000, 0x4a038853, | ||
1313 | 0x80000608, 0x497b8863, 0x4a038873, 0x00800000, | ||
1314 | 0x4a038882, 0x00000840, 0x4a0388a5, 0x0000001e, | ||
1315 | 0x4a0388a6, 0x0000001e, 0x4a0388b0, 0x00007530, | ||
1316 | 0x4a038802, 0x0000ffff, 0x4a038806, 0xc0e00800, | ||
1317 | 0x1c01f000, 0x497b5022, 0x4a035021, 0x00000001, | ||
1318 | 0x42000800, 0x00000040, 0x0201f800, 0x0010193f, | ||
1319 | 0x82040500, 0xffffffaf, 0x82000540, 0x00000000, | ||
1320 | 0x42000800, 0x00000040, 0x0201f800, 0x00101944, | ||
1321 | 0x42000800, 0x000000f4, 0x0201f800, 0x0010193f, | ||
1322 | 0x4c040000, 0x40040000, 0x84000548, 0x42000800, | ||
1323 | 0x000000f4, 0x0201f800, 0x00101944, 0x42000800, | ||
1324 | 0x00000000, 0x0201f800, 0x0010193f, 0x82040500, | ||
1325 | 0xffffffc1, 0x82000540, 0x00000038, 0x42000800, | ||
1326 | 0x00000000, 0x0201f800, 0x00101944, 0x5c000000, | ||
1327 | 0x42000800, 0x000000f4, 0x0201f000, 0x00101944, | ||
1328 | 0x59c40805, 0x4807c857, 0x59c40006, 0x80040d00, | ||
1329 | 0x02000800, 0x001005d8, 0x82040500, 0x00e00800, | ||
1330 | 0x04020004, 0x8c040d3e, 0x040208c4, 0x0401f007, | ||
1331 | 0x82040500, 0x00800800, 0x02020800, 0x001005d0, | ||
1332 | 0x0201f800, 0x001005d8, 0x4c5c0000, 0x4c600000, | ||
1333 | 0x59c4b805, 0x485fc857, 0x59c40006, 0x8c000500, | ||
1334 | 0x04000003, 0x8c5cbd00, 0x04020079, 0x0201f800, | ||
1335 | 0x0010513b, 0x04000014, 0x59c40005, 0x82000500, | ||
1336 | 0x000000c0, 0x04000036, 0x0201f800, 0x00105151, | ||
1337 | 0x04020033, 0x4a038805, 0x04000000, 0x59c400a3, | ||
1338 | 0x82000500, 0xbf203fff, 0x480388a3, 0x497b5049, | ||
1339 | 0x4a038805, 0x000000c0, 0x0201f800, 0x00105065, | ||
1340 | 0x0401f063, 0x8c5cbd34, 0x04020025, 0x59c40005, | ||
1341 | 0x8c00050c, 0x04020012, 0x8c00050e, 0x04020013, | ||
1342 | 0x8c00050a, 0x04020014, 0x8c000508, 0x0400000b, | ||
1343 | 0x59a80017, 0x82000580, 0x00000009, 0x04020007, | ||
1344 | 0x42000000, 0x0010b844, 0x0201f800, 0x0010aa47, | ||
1345 | 0x0201f800, 0x00105318, 0x0401f04b, 0x4a035033, | ||
1346 | 0x00000000, 0x0401f00b, 0x4a035033, 0x00000002, | ||
1347 | 0x0401f008, 0x42000000, 0x0010b846, 0x0201f800, | ||
1348 | 0x0010aa47, 0x0201f800, 0x001052c2, 0x0401f03e, | ||
1349 | 0x0201f800, 0x00105378, 0x0401f03b, 0x8c5cbd34, | ||
1350 | 0x04000037, 0x59c40005, 0x8c00053a, 0x04020005, | ||
1351 | 0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47, | ||
1352 | 0x4a038805, 0x02000000, 0x0201f800, 0x0010513b, | ||
1353 | 0x04020010, 0x4a038805, 0x04000000, 0x0201f800, | ||
1354 | 0x00105149, 0x04020008, 0x4a035033, 0x00000001, | ||
1355 | 0x4202d800, 0x00000001, 0x0201f800, 0x001050a2, | ||
1356 | 0x0401f05b, 0x41780000, 0x0201f800, 0x00105113, | ||
1357 | 0x0201f800, 0x001019fe, 0x4000c000, 0x0201f800, | ||
1358 | 0x00101963, 0x836c1580, 0x00000004, 0x0402000d, | ||
1359 | 0x8c5cbd00, 0x04020012, 0x59a81005, 0x8c081506, | ||
1360 | 0x04020005, 0x59c410a3, 0x82081540, 0x00000008, | ||
1361 | 0x480b88a3, 0x59c41006, 0x84081540, 0x480b8806, | ||
1362 | 0x4a038805, 0x04000000, 0x4202d800, 0x00000001, | ||
1363 | 0x497b5014, 0x0201f800, 0x00103b38, 0x8c5cbd3c, | ||
1364 | 0x04020858, 0x8c5cbd00, 0x04000036, 0x42000000, | ||
1365 | 0x0010b8ca, 0x0201f800, 0x0010aa47, 0x4a038805, | ||
1366 | 0x00000001, 0x4200b000, 0x000003e8, 0x4201d000, | ||
1367 | 0x00000064, 0x4c580000, 0x0201f800, 0x0010608e, | ||
1368 | 0x0201f800, 0x001018d3, 0x5c00b000, 0x04000004, | ||
1369 | 0x8058b040, 0x040207f6, 0x0401f004, 0x4a038805, | ||
1370 | 0x00000001, 0x0401f01f, 0x59c40006, 0x84000500, | ||
1371 | 0x48038806, 0x0201f800, 0x00106ede, 0x497b8880, | ||
1372 | 0x0201f800, 0x0010a9c0, 0x59c4000d, 0x8c000500, | ||
1373 | 0x02020800, 0x0010a9ce, 0x59c400a3, 0x82000500, | ||
1374 | 0xfcf8ffff, 0x480388a3, 0x4a03504c, 0x00000002, | ||
1375 | 0x4202d800, 0x00000004, 0x4a038805, 0x00000001, | ||
1376 | 0x0201f800, 0x001006d4, 0x0401fb3b, 0x497b5052, | ||
1377 | 0x4a035049, 0x00000001, 0x0201f800, 0x00100452, | ||
1378 | 0x825cbd00, 0xbbfffffe, 0x485f8805, 0x5c00c000, | ||
1379 | 0x5c00b800, 0x1c01f000, 0x59c41004, 0x480bc857, | ||
1380 | 0x8c081500, 0x04000006, 0x4803c856, 0x497b2807, | ||
1381 | 0x0201f800, 0x00106fa4, 0x0401f00a, 0x82080500, | ||
1382 | 0x000001f0, 0x04000007, 0x4803c856, 0x417a3000, | ||
1383 | 0x0201f800, 0x00106062, 0x0201f800, 0x00106fc6, | ||
1384 | 0x4a038805, 0x80000000, 0x1c01f000, 0x59c408a3, | ||
1385 | 0x4807c857, 0x84040d40, 0x480788a3, 0x1c01f000, | ||
1386 | 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, | ||
1387 | 0x4a038805, 0x40000000, 0x42000000, 0x0010b8c6, | ||
1388 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x00106c55, | ||
1389 | 0x59c41004, 0x8c081500, 0x04000054, 0x598e600d, | ||
1390 | 0x497b2807, 0x813261c0, 0x04000032, 0x59300403, | ||
1391 | 0x82000580, 0x00000032, 0x0402002e, 0x5930001c, | ||
1392 | 0x48038833, 0x4a038807, 0x00018000, 0x4201d000, | ||
1393 | 0x00000002, 0x0201f800, 0x0010608e, 0x497b8807, | ||
1394 | 0x4201d000, 0x00000002, 0x0201f800, 0x0010608e, | ||
1395 | 0x0201f800, 0x00106e21, 0x4201d000, 0x00007530, | ||
1396 | 0x0201f800, 0x0010608e, 0x59c408a4, 0x82040d00, | ||
1397 | 0x0000000f, 0x82040d80, 0x00000000, 0x04000005, | ||
1398 | 0x42000000, 0x00200000, 0x0201f800, 0x00101949, | ||
1399 | 0x0201f800, 0x00106bbf, 0x59300008, 0x80000540, | ||
1400 | 0x02000800, 0x001005d8, 0x40025800, 0x4a025a04, | ||
1401 | 0x00000103, 0x5931d821, 0x58ef400b, 0x58ec0009, | ||
1402 | 0x0801f800, 0x0201f800, 0x0002077d, 0x0401f047, | ||
1403 | 0x598c000f, 0x82001c80, 0x000000c8, 0x0402100f, | ||
1404 | 0x80000000, 0x4803180f, 0x59c400a4, 0x82000500, | ||
1405 | 0x0000000f, 0x82000580, 0x00000002, 0x04020004, | ||
1406 | 0x42000000, 0x00200000, 0x0401fbf7, 0x0201f800, | ||
1407 | 0x0010604d, 0x0401f035, 0x4933c857, 0x0201f800, | ||
1408 | 0x00106e21, 0x813261c0, 0x04000030, 0x4a026203, | ||
1409 | 0x00000001, 0x42027000, 0x00000027, 0x0201f800, | ||
1410 | 0x000207a1, 0x0401f029, 0x8c081508, 0x04000027, | ||
1411 | 0x417a3000, 0x0201f800, 0x001070d8, 0x42032000, | ||
1412 | 0x0000bf32, 0x0201f800, 0x00106062, 0x59926004, | ||
1413 | 0x813261c0, 0x04000012, 0x42001800, 0x000000c8, | ||
1414 | 0x0201f800, 0x001070a4, 0x0402000d, 0x59c400a4, | ||
1415 | 0x82000500, 0x0000000f, 0x82000580, 0x00000002, | ||
1416 | 0x04020004, 0x42000000, 0x00200000, 0x0401fbce, | ||
1417 | 0x0201f800, 0x00106052, 0x0401f00c, 0x4933c857, | ||
1418 | 0x0201f800, 0x00106dc3, 0x813261c0, 0x04000007, | ||
1419 | 0x42027000, 0x0000004f, 0x4a026203, 0x00000003, | ||
1420 | 0x0201f800, 0x000207a1, 0x5c022800, 0x5c034800, | ||
1421 | 0x5c03a000, 0x5c032000, 0x0201f000, 0x00106c4b, | ||
1422 | 0x4803c857, 0x59a80821, 0x48035021, 0x80041580, | ||
1423 | 0x04000045, 0x800409c0, 0x04000023, 0x497b504c, | ||
1424 | 0x42000000, 0x0010b80d, 0x0201f800, 0x0010aa47, | ||
1425 | 0x0201f800, 0x0010aaf9, 0x42001000, 0x00008011, | ||
1426 | 0x59c40001, 0x82000500, 0x00018000, 0x82001d80, | ||
1427 | 0x00000000, 0x04000009, 0x82001d80, 0x00008000, | ||
1428 | 0x04000009, 0x82001d80, 0x00010000, 0x04000009, | ||
1429 | 0x0201f800, 0x001005d8, 0x42001800, 0x00000000, | ||
1430 | 0x0401f006, 0x42001800, 0x00000001, 0x0401f003, | ||
1431 | 0x42001800, 0x00000003, 0x0201f800, 0x00103a3e, | ||
1432 | 0x0401f021, 0x59a8084c, 0x800409c0, 0x04020007, | ||
1433 | 0x59c4000d, 0x8c000520, 0x04000004, 0x42001800, | ||
1434 | 0x00000003, 0x0401f002, 0x40041800, 0x0201f800, | ||
1435 | 0x0010aadd, 0x42001000, 0x00008012, 0x0201f800, | ||
1436 | 0x00103a3e, 0x0201f800, 0x001006d4, 0x0201f800, | ||
1437 | 0x0010ab33, 0x0402000c, 0x0401f853, 0x4d400000, | ||
1438 | 0x4d3c0000, 0x42028000, 0x00000028, 0x42027800, | ||
1439 | 0x00000408, 0x0201f800, 0x00101fe5, 0x5c027800, | ||
1440 | 0x5c028000, 0x1c01f000, 0x4803c857, 0x82000400, | ||
1441 | 0x0010210e, 0x50000800, 0x82040d00, 0x000000ff, | ||
1442 | 0x1c01f000, 0x4803c856, 0x4c580000, 0x4200b000, | ||
1443 | 0x00000010, 0x497b88ac, 0x497b88ad, 0x8058b040, | ||
1444 | 0x040207fe, 0x5c00b000, 0x1c01f000, 0x4807c857, | ||
1445 | 0x48075010, 0x80041108, 0x4200b000, 0x00000010, | ||
1446 | 0x497b88ac, 0x80000580, 0x800811c0, 0x04020006, | ||
1447 | 0x82040500, 0x0000000f, 0x82000400, 0x0010ab38, | ||
1448 | 0x50000000, 0x480388ad, 0x80081040, 0x8058b040, | ||
1449 | 0x040207f5, 0x1c01f000, 0x59a80005, 0x04000003, | ||
1450 | 0x84000546, 0x0401f002, 0x84000506, 0x48035005, | ||
1451 | 0x4803c857, 0x1c01f000, 0x4803c857, 0x4c080000, | ||
1452 | 0x4c040000, 0x4c000000, 0x59c40892, 0x4807c857, | ||
1453 | 0x80041580, 0x04000010, 0x80041480, 0x04021007, | ||
1454 | 0x80081080, 0x80081000, 0x4008b000, 0x42000000, | ||
1455 | 0x00000201, 0x0401f004, 0x4008b000, 0x42000000, | ||
1456 | 0x00000210, 0x48038886, 0x8058b040, 0x040207fe, | ||
1457 | 0x497b8886, 0x5c000000, 0x5c000800, 0x5c001000, | ||
1458 | 0x1c01f000, 0x4803c856, 0x0201f800, 0x00103b25, | ||
1459 | 0x04000005, 0x42028000, 0x0000002e, 0x0201f000, | ||
1460 | 0x0010a449, 0x1c01f000, 0x42000800, 0x00000002, | ||
1461 | 0x59a80005, 0x8c000514, 0x0402000b, 0x59c80835, | ||
1462 | 0x82040d00, 0x00001f00, 0x80040910, 0x80040800, | ||
1463 | 0x59a8006c, 0x80000540, 0x04000003, 0x42000800, | ||
1464 | 0x0000025a, 0x4807c857, 0x1c01f000, 0x4c000000, | ||
1465 | 0x59a80053, 0x4803c857, 0x82000580, 0x00000000, | ||
1466 | 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80053, | ||
1467 | 0x4803c857, 0x82000580, 0x00000001, 0x5c000000, | ||
1468 | 0x1c01f000, 0x4c000000, 0x59a80053, 0x4803c857, | ||
1469 | 0x82000580, 0x00000003, 0x5c000000, 0x1c01f000, | ||
1470 | 0x4c000000, 0x59a80053, 0x82000580, 0x00000002, | ||
1471 | 0x5c000000, 0x1c01f000, 0x4c000000, 0x4c040000, | ||
1472 | 0x4c080000, 0x4c380000, 0x59a80040, 0x82000c80, | ||
1473 | 0x00000007, 0x02021800, 0x001005d8, 0x0c01f806, | ||
1474 | 0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000, | ||
1475 | 0x1c01f000, 0x0010166c, 0x0010167f, 0x00101693, | ||
1476 | 0x00101695, 0x001016bc, 0x001016be, 0x001016c0, | ||
1477 | 0x4803c856, 0x4a035042, 0x00000000, 0x42000000, | ||
1478 | 0x00000002, 0x0401fa1b, 0x42000000, 0x00000002, | ||
1479 | 0x0401f9ad, 0x0401fab2, 0x4803c856, 0x4a035040, | ||
1480 | 0x00000006, 0x42000800, 0x0000001e, 0x42001000, | ||
1481 | 0x001016c1, 0x0201f000, 0x0010606e, 0x497b5045, | ||
1482 | 0x4a035050, 0x00000036, 0x4a03504f, 0x0000002a, | ||
1483 | 0x4803c856, 0x4a035042, 0x00000001, 0x42000000, | ||
1484 | 0x00000002, 0x0401f998, 0x4803c856, 0x4a035040, | ||
1485 | 0x00000006, 0x42000800, 0x0000001e, 0x42001000, | ||
1486 | 0x001016c1, 0x0201f000, 0x0010606e, 0x0201f800, | ||
1487 | 0x001005d8, 0x4a035050, 0x00000036, 0x4803c856, | ||
1488 | 0x4a035042, 0x00000003, 0x42000800, 0x00000000, | ||
1489 | 0x0401faa3, 0x82040d00, 0x00000090, 0x82040580, | ||
1490 | 0x00000090, 0x04000009, 0x82040580, 0x00000010, | ||
1491 | 0x04000009, 0x82040580, 0x00000000, 0x04000008, | ||
1492 | 0x0201f800, 0x001005d8, 0x42000000, 0x00000001, | ||
1493 | 0x0401f005, 0x41780000, 0x0401f003, 0x42000000, | ||
1494 | 0x00000002, 0x0401f970, 0x497b5046, 0x4803c856, | ||
1495 | 0x4a035040, 0x00000006, 0x42000800, 0x0000001e, | ||
1496 | 0x42001000, 0x001016c1, 0x0201f000, 0x0010606e, | ||
1497 | 0x0201f800, 0x001005d8, 0x0201f800, 0x001005d8, | ||
1498 | 0x1c01f000, 0x4c000000, 0x4c040000, 0x4c080000, | ||
1499 | 0x4c380000, 0x59a80042, 0x82000c80, 0x00000007, | ||
1500 | 0x02021800, 0x001005d8, 0x0c01f806, 0x5c007000, | ||
1501 | 0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000, | ||
1502 | 0x001016d7, 0x001016f6, 0x0010174a, 0x00101761, | ||
1503 | 0x00101778, 0x00101781, 0x00101783, 0x0401f9fc, | ||
1504 | 0x0402001b, 0x59a81048, 0x42000800, 0x00000000, | ||
1505 | 0x0401fa63, 0x82040d00, 0x00000090, 0x82040580, | ||
1506 | 0x00000090, 0x04000009, 0x82040580, 0x00000010, | ||
1507 | 0x04000008, 0x82040580, 0x00000000, 0x04000007, | ||
1508 | 0x0201f800, 0x001005d8, 0x84081540, 0x0401f004, | ||
1509 | 0x84081542, 0x0401f002, 0x84081544, 0x480b5048, | ||
1510 | 0x4a035040, 0x00000001, 0x0401f003, 0x0401f8cb, | ||
1511 | 0x0401ff82, 0x1c01f000, 0x0401f88f, 0x04000052, | ||
1512 | 0x0401f9db, 0x0402002a, 0x42000800, 0x00000000, | ||
1513 | 0x0401fa43, 0x82040d00, 0x00000090, 0x82040580, | ||
1514 | 0x00000000, 0x04000044, 0x82040580, 0x00000010, | ||
1515 | 0x04000006, 0x82040580, 0x00000090, 0x04000009, | ||
1516 | 0x0201f800, 0x001005d8, 0x59c40801, 0x82040d00, | ||
1517 | 0x00018000, 0x82040580, 0x00000000, 0x04000036, | ||
1518 | 0x42000800, 0x00000000, 0x0401fa2d, 0x82040d00, | ||
1519 | 0x00000090, 0x82040580, 0x00000010, 0x04000006, | ||
1520 | 0x82040580, 0x00000090, 0x04000006, 0x02020800, | ||
1521 | 0x001005d8, 0x59a80048, 0x84000542, 0x0401f003, | ||
1522 | 0x59a80048, 0x84000540, 0x48035048, 0x59a80045, | ||
1523 | 0x80000000, 0x48035045, 0x82000580, 0x00000005, | ||
1524 | 0x04000003, 0x0401f861, 0x0401f01e, 0x497b5045, | ||
1525 | 0x59c40801, 0x82040d00, 0x00018000, 0x82040580, | ||
1526 | 0x00000000, 0x04000009, 0x82040580, 0x00008000, | ||
1527 | 0x04000009, 0x82040580, 0x00010000, 0x04000008, | ||
1528 | 0x0201f800, 0x001005d8, 0x42000000, 0x00000001, | ||
1529 | 0x0401f005, 0x41780000, 0x0401f003, 0x42000000, | ||
1530 | 0x00000002, 0x0401f94b, 0x4a035042, 0x00000002, | ||
1531 | 0x0401f004, 0x4a035040, 0x00000003, 0x0401f002, | ||
1532 | 0x0401ff42, 0x1c01f000, 0x0401f83b, 0x04000015, | ||
1533 | 0x59a8004f, 0x80000040, 0x4803504f, 0x0401f984, | ||
1534 | 0x04020005, 0x4a035040, 0x00000003, 0x497b5041, | ||
1535 | 0x0401f00c, 0x59a8004f, 0x80000540, 0x04020003, | ||
1536 | 0x0401f89e, 0x0401f002, 0x0401f84b, 0x0401f82f, | ||
1537 | 0x497b5045, 0x4a035042, 0x00000001, 0x0401ff2b, | ||
1538 | 0x1c01f000, 0x0401f824, 0x04000015, 0x0401f970, | ||
1539 | 0x0402000f, 0x59a80046, 0x80000000, 0x48035046, | ||
1540 | 0x82000580, 0x00000007, 0x0402000c, 0x4a035052, | ||
1541 | 0x0000000a, 0x497b5049, 0x59a80048, 0x8400055e, | ||
1542 | 0x48035048, 0x4803c857, 0x0401f005, 0x0401f817, | ||
1543 | 0x4a035042, 0x00000004, 0x0401ff3d, 0x1c01f000, | ||
1544 | 0x0401f80d, 0x04000007, 0x0401f959, 0x04020003, | ||
1545 | 0x0401ff1b, 0x0401f003, 0x0401f80c, 0x0401ff34, | ||
1546 | 0x1c01f000, 0x0201f800, 0x001005d8, 0x0201f800, | ||
1547 | 0x001005d8, 0x59a80050, 0x80000040, 0x48035050, | ||
1548 | 0x0400088d, 0x1c01f000, 0x4c040000, 0x42000800, | ||
1549 | 0x00000000, 0x0401f9b2, 0x82040d00, 0x00000090, | ||
1550 | 0x82040580, 0x00000090, 0x04000009, 0x82040580, | ||
1551 | 0x00000010, 0x04000009, 0x82040580, 0x00000000, | ||
1552 | 0x04000009, 0x0201f800, 0x001005d8, 0x42000000, | ||
1553 | 0x00000002, 0x0401f005, 0x42000000, 0x00000001, | ||
1554 | 0x0401f002, 0x41780000, 0x0401f8ea, 0x5c000800, | ||
1555 | 0x1c01f000, 0x4c040000, 0x59c40801, 0x82040d00, | ||
1556 | 0x00018000, 0x82040580, 0x00000000, 0x04000009, | ||
1557 | 0x82040580, 0x00008000, 0x04000009, 0x82040580, | ||
1558 | 0x00010000, 0x04000009, 0x0201f800, 0x001005d8, | ||
1559 | 0x42000000, 0x00000002, 0x0401f005, 0x42000000, | ||
1560 | 0x00000001, 0x0401f002, 0x41780000, 0x0401f866, | ||
1561 | 0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80045, | ||
1562 | 0x80000000, 0x48035045, 0x82000580, 0x00000005, | ||
1563 | 0x04020018, 0x497b5045, 0x59c40801, 0x82040d00, | ||
1564 | 0x00018000, 0x82040580, 0x00000000, 0x04000009, | ||
1565 | 0x82040580, 0x00008000, 0x04000009, 0x82040580, | ||
1566 | 0x00010000, 0x04000009, 0x0201f800, 0x001005d8, | ||
1567 | 0x42000000, 0x00000002, 0x0401f005, 0x42000000, | ||
1568 | 0x00000001, 0x0401f002, 0x41780000, 0x0401f846, | ||
1569 | 0x42000800, 0x00000000, 0x0401f961, 0x82040d00, | ||
1570 | 0x00000090, 0x82040580, 0x00000090, 0x04000009, | ||
1571 | 0x82040580, 0x00000010, 0x04000009, 0x82040580, | ||
1572 | 0x00000000, 0x04000009, 0x0201f800, 0x001005d8, | ||
1573 | 0x42000000, 0x00000002, 0x0401f005, 0x42000000, | ||
1574 | 0x00000001, 0x0401f002, 0x41780000, 0x0401f899, | ||
1575 | 0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80048, | ||
1576 | 0x82000500, 0x00007fff, 0x02000800, 0x001005d8, | ||
1577 | 0x59a84047, 0x80204102, 0x02001800, 0x001005d8, | ||
1578 | 0x48235047, 0x80204500, 0x040007fa, 0x8c000504, | ||
1579 | 0x04020007, 0x8c000502, 0x04020008, 0x8c000500, | ||
1580 | 0x04020008, 0x0201f800, 0x001005d8, 0x42000000, | ||
1581 | 0x00000002, 0x0401f005, 0x41780000, 0x0401f003, | ||
1582 | 0x42000000, 0x00000001, 0x0401f80f, 0x5c004000, | ||
1583 | 0x1c01f000, 0x04011000, 0x4a03c840, 0x0010b440, | ||
1584 | 0x4a03c842, 0x00000009, 0x40000000, 0x040117ff, | ||
1585 | 0x4a035047, 0x00000004, 0x4a03503e, 0x00000000, | ||
1586 | 0x1c01f000, 0x59a80858, 0x82040d80, 0x01391077, | ||
1587 | 0x04020008, 0x59e00813, 0x8c040d00, 0x04000005, | ||
1588 | 0x82000d80, 0x00000002, 0x04020002, 0x41780000, | ||
1589 | 0x4c000000, 0x0401f9b1, 0x5c000000, 0x800001c0, | ||
1590 | 0x04000040, 0x82000d80, 0x00000001, 0x0402001d, | ||
1591 | 0x42000800, 0x000000a0, 0x0401f909, 0x82040540, | ||
1592 | 0x00000004, 0x42000800, 0x000000a0, 0x0401f909, | ||
1593 | 0x42000800, 0x000000c0, 0x0401f901, 0x82040540, | ||
1594 | 0x00000020, 0x42000800, 0x000000c0, 0x0401f901, | ||
1595 | 0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540, | ||
1596 | 0x00000000, 0x48038801, 0x59a80054, 0x80000110, | ||
1597 | 0x42000800, 0x000000e0, 0x0401f8f6, 0x0401f03c, | ||
1598 | 0x82000d80, 0x00000002, 0x02020800, 0x001005d8, | ||
1599 | 0x42000800, 0x000000a0, 0x0401f8e9, 0x82040500, | ||
1600 | 0xfffffffb, 0x42000800, 0x000000a0, 0x0401f8e9, | ||
1601 | 0x42000800, 0x000000c0, 0x0401f8e1, 0x82040500, | ||
1602 | 0xffffffdf, 0x42000800, 0x000000c0, 0x0401f8e1, | ||
1603 | 0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540, | ||
1604 | 0x00010000, 0x48038801, 0x59a80056, 0x80000110, | ||
1605 | 0x42000800, 0x000000e0, 0x0401f8d6, 0x0401f01c, | ||
1606 | 0x42000800, 0x000000a0, 0x0401f8cd, 0x82040540, | ||
1607 | 0x00000004, 0x42000800, 0x000000a0, 0x0401f8cd, | ||
1608 | 0x42000800, 0x000000c0, 0x0401f8c5, 0x82040500, | ||
1609 | 0xffffffdf, 0x42000800, 0x000000c0, 0x0401f8c5, | ||
1610 | 0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540, | ||
1611 | 0x00008000, 0x48038801, 0x59a80055, 0x80000110, | ||
1612 | 0x42000800, 0x000000e0, 0x0401f8ba, 0x0401f163, | ||
1613 | 0x4803c857, 0x59a80858, 0x82040d80, 0x01391077, | ||
1614 | 0x04020008, 0x59e00813, 0x8c040d00, 0x04000005, | ||
1615 | 0x82000d80, 0x00000002, 0x04020002, 0x41780000, | ||
1616 | 0x4c000000, 0x0401f94d, 0x5c000000, 0x800001c0, | ||
1617 | 0x04000026, 0x82000d80, 0x00000001, 0x04020010, | ||
1618 | 0x59a8006c, 0x80000540, 0x04000004, 0x42001000, | ||
1619 | 0x00000000, 0x0401fa0a, 0x42000800, 0x00000000, | ||
1620 | 0x0401f897, 0x82040540, 0x00000090, 0x42000800, | ||
1621 | 0x00000000, 0x0401f897, 0x0401f024, 0x82000d80, | ||
1622 | 0x00000002, 0x02020800, 0x001005d8, 0x59a8006c, | ||
1623 | 0x80000540, 0x04000004, 0x42001000, 0x00010000, | ||
1624 | 0x0401f9f7, 0x42000800, 0x00000000, 0x0401f884, | ||
1625 | 0x82040500, 0xffffff6f, 0x42000800, 0x00000000, | ||
1626 | 0x0401f884, 0x0401f011, 0x59a8006c, 0x80000540, | ||
1627 | 0x04000004, 0x42001000, 0x00008000, 0x0401f9e8, | ||
1628 | 0x42000800, 0x00000000, 0x0401f875, 0x82040500, | ||
1629 | 0xffffff6f, 0x82000540, 0x00000010, 0x42000800, | ||
1630 | 0x00000000, 0x0401f873, 0x0401f124, 0x4c580000, | ||
1631 | 0x4200b000, 0x00000014, 0x8058b040, 0x04000043, | ||
1632 | 0x59c4000d, 0x8c000520, 0x040207fc, 0x0401f85c, | ||
1633 | 0x59c4000d, 0x8c000520, 0x040207f8, 0x59c40808, | ||
1634 | 0x84040d50, 0x48078808, 0x4200b000, 0x000000c8, | ||
1635 | 0x8058b040, 0x040207ff, 0x4200b000, 0x00000014, | ||
1636 | 0x8058b040, 0x04000031, 0x59c4000d, 0x8c000520, | ||
1637 | 0x0402002e, 0x42000800, 0x00001000, 0x50040800, | ||
1638 | 0x82040c80, 0x24220001, 0x04020003, 0x8c000504, | ||
1639 | 0x040007f4, 0x0401f842, 0x59c4000d, 0x8c000520, | ||
1640 | 0x04020022, 0x42000800, 0x00001000, 0x50040800, | ||
1641 | 0x82040c80, 0x24220001, 0x04020003, 0x8c000504, | ||
1642 | 0x040007e8, 0x4200b000, 0x0000000a, 0x8058b040, | ||
1643 | 0x04000003, 0x0401f832, 0x0401f7fd, 0x4200b000, | ||
1644 | 0x00000064, 0x59c4000d, 0x8c00051e, 0x0400000f, | ||
1645 | 0x8058b040, 0x040207fc, 0x42000000, 0x00001000, | ||
1646 | 0x50000000, 0x82000480, 0x24220001, 0x04020004, | ||
1647 | 0x59c40808, 0x84040d10, 0x48078808, 0x80000580, | ||
1648 | 0x4803c857, 0x0401f00c, 0x42000000, 0x00001000, | ||
1649 | 0x50000000, 0x82000480, 0x24220001, 0x04020004, | ||
1650 | 0x59c40808, 0x84040d10, 0x48078808, 0x82000540, | ||
1651 | 0x00000001, 0x5c00b000, 0x1c01f000, 0x42000800, | ||
1652 | 0x000000a0, 0x0401f816, 0x82040500, 0xfffffffe, | ||
1653 | 0x42000800, 0x000000a0, 0x0401f816, 0x42000800, | ||
1654 | 0x00000000, 0x0401f80e, 0x82040500, 0xfffffffe, | ||
1655 | 0x42000800, 0x00000000, 0x0401f00e, 0x40000000, | ||
1656 | 0x40000000, 0x40000000, 0x40000000, 0x40000000, | ||
1657 | 0x1c01f000, 0x480b8805, 0x1c01f000, 0x4807880e, | ||
1658 | 0x59c4080f, 0x82040d00, 0x000000ff, 0x1c01f000, | ||
1659 | 0x900001c0, 0x80040d40, 0x84040d40, 0x4807880e, | ||
1660 | 0x1c01f000, 0x82000d80, 0x00200000, 0x04000009, | ||
1661 | 0x82000d80, 0x02000000, 0x04000006, 0x82000d80, | ||
1662 | 0x01000000, 0x04000006, 0x59c408a3, 0x0401f006, | ||
1663 | 0x59c408a3, 0x84040d30, 0x0401f003, 0x59c408a3, | ||
1664 | 0x84040d32, 0x80040540, 0x480388a3, 0x480788a3, | ||
1665 | 0x1c01f000, 0x59c400a3, 0x84000556, 0x480388a3, | ||
1666 | 0x84000516, 0x480388a3, 0x1c01f000, 0x485fc857, | ||
1667 | 0x4863c857, 0x4c640000, 0x4d3c0000, 0x4d400000, | ||
1668 | 0x0201f800, 0x00106ede, 0x4863500a, 0x0201f800, | ||
1669 | 0x0010ab33, 0x0402006c, 0x82600d00, 0x0000ff00, | ||
1670 | 0x800409c0, 0x0400000c, 0x4200c800, 0x00000001, | ||
1671 | 0x59a80010, 0x82000500, 0x000000ff, 0x80041110, | ||
1672 | 0x80081580, 0x04000021, 0x82041580, 0x0000ff00, | ||
1673 | 0x0400000a, 0x59c410a3, 0x82081500, 0x00008000, | ||
1674 | 0x04000009, 0x59c410a7, 0x82081500, 0x0000ff00, | ||
1675 | 0x82081580, 0x0000ff00, 0x4200c800, 0x00000000, | ||
1676 | 0x04000012, 0x59a80005, 0x8c000502, 0x04020008, | ||
1677 | 0x8c000500, 0x0402000d, 0x599c1017, 0x8c08151a, | ||
1678 | 0x0400003e, 0x84000542, 0x48035005, 0x4200c800, | ||
1679 | 0x00000002, 0x42028000, 0x00000004, 0x42027800, | ||
1680 | 0x00000008, 0x0401f008, 0x59a80805, 0x84040d40, | ||
1681 | 0x48075005, 0x42028000, 0x00000004, 0x42027800, | ||
1682 | 0x00000400, 0x59a80006, 0x8c000502, 0x04020006, | ||
1683 | 0x59a80805, 0x8c040d0a, 0x04020033, 0x84040d4a, | ||
1684 | 0x48075005, 0x42000000, 0x0010b812, 0x0201f800, | ||
1685 | 0x0010aa47, 0x59a8180a, 0x42001000, 0x00008013, | ||
1686 | 0x0201f800, 0x00103a3e, 0x0201f800, 0x00103b25, | ||
1687 | 0x04000015, 0x4d400000, 0x82600500, 0x000000ff, | ||
1688 | 0x42028800, 0x0000ffff, 0x40643000, 0x42028000, | ||
1689 | 0x0000000e, 0x0201f800, 0x0010a446, 0x42000800, | ||
1690 | 0x00000001, 0x42001000, 0x00000100, 0x0201f800, | ||
1691 | 0x0010618b, 0x5c028000, 0x599c0817, 0x8c040d0a, | ||
1692 | 0x04020011, 0x493fc857, 0x4943c857, 0x0201f800, | ||
1693 | 0x00101fe5, 0x0401f00c, 0x0201f800, 0x00103b25, | ||
1694 | 0x04000009, 0x42028000, 0x0000000f, 0x42028800, | ||
1695 | 0x0000ffff, 0x42003000, 0x00000000, 0x0201f800, | ||
1696 | 0x0010a449, 0x497b8880, 0x5c028000, 0x5c027800, | ||
1697 | 0x5c00c800, 0x1c01f000, 0x42000800, 0x000000a0, | ||
1698 | 0x0401ff5f, 0x82040540, 0x00000002, 0x42000800, | ||
1699 | 0x000000a0, 0x0401f75f, 0x42000800, 0x00000000, | ||
1700 | 0x0401ff57, 0x82040540, 0x00000002, 0x42000800, | ||
1701 | 0x00000000, 0x0401f757, 0x42000800, 0x000000a0, | ||
1702 | 0x0401ff4f, 0x82040500, 0xfffffffd, 0x42000800, | ||
1703 | 0x000000a0, 0x0401f74f, 0x42000800, 0x00000000, | ||
1704 | 0x0401ff47, 0x82040500, 0xfffffffd, 0x42000800, | ||
1705 | 0x00000000, 0x0401f747, 0x59c408a8, 0x0401ff38, | ||
1706 | 0x0401ff37, 0x59c400a8, 0x80040d80, 0x040207fb, | ||
1707 | 0x1c01f000, 0x4803c856, 0x4a038807, 0x00000001, | ||
1708 | 0x497b8807, 0x59c40005, 0x48038805, 0x497b506c, | ||
1709 | 0x497b506d, 0x41785800, 0x42006000, 0x00000001, | ||
1710 | 0x42006800, 0x00000003, 0x0401f824, 0x0401f82f, | ||
1711 | 0x40400000, 0x4803c857, 0x82408580, 0x00000000, | ||
1712 | 0x0402001d, 0x41785800, 0x42006000, 0x0000001e, | ||
1713 | 0x42006800, 0x00000014, 0x0401f818, 0x0401f823, | ||
1714 | 0x40400000, 0x4803c857, 0x82408580, 0x00000800, | ||
1715 | 0x04020011, 0x42005800, 0x00000001, 0x42006000, | ||
1716 | 0x0000001e, 0x42006800, 0x00000014, 0x0401f80b, | ||
1717 | 0x0401f816, 0x40400000, 0x4803c857, 0x82408580, | ||
1718 | 0x0000ffff, 0x04020004, 0x4a03506c, 0x00000001, | ||
1719 | 0x4803c856, 0x1c01f000, 0x41785000, 0x0401f812, | ||
1720 | 0x0401f838, 0x40347000, 0x40340800, 0x0401f03d, | ||
1721 | 0x42005000, 0x00000001, 0x0401f80b, 0x0401f831, | ||
1722 | 0x40340800, 0x0401f037, 0x42005000, 0x00000002, | ||
1723 | 0x0401f805, 0x0401f81d, 0x0401f835, 0x40048000, | ||
1724 | 0x1c01f000, 0x0401f808, 0x0401f814, 0x40280800, | ||
1725 | 0x0401f826, 0x402c0800, 0x0401f827, 0x40300800, | ||
1726 | 0x0401f025, 0x42000800, 0x0000ffff, 0x42001000, | ||
1727 | 0x00000001, 0x0401f829, 0x42001000, 0x00000010, | ||
1728 | 0x0401f826, 0x42000800, 0x0000ffff, 0x42001000, | ||
1729 | 0x00000010, 0x0401f021, 0x41780800, 0x42001000, | ||
1730 | 0x00000002, 0x0401f01d, 0x0401f92e, 0x4a03d000, | ||
1731 | 0x00050004, 0x0401f92b, 0x4a03d000, 0x00050005, | ||
1732 | 0x0401f928, 0x4a03d000, 0x00050004, 0x42000800, | ||
1733 | 0x00000001, 0x42001000, 0x00000001, 0x0401f00f, | ||
1734 | 0x42000800, 0x00000002, 0x42001000, 0x00000002, | ||
1735 | 0x0401f00a, 0x42001000, 0x00000005, 0x0401f007, | ||
1736 | 0x42001000, 0x00000010, 0x0401f004, 0x42001000, | ||
1737 | 0x00000010, 0x0401f01b, 0x0401f912, 0x82082c00, | ||
1738 | 0x0010ab38, 0x50142800, 0x82081500, 0xffffffff, | ||
1739 | 0x04000013, 0x0401f90b, 0x80081040, 0x80142902, | ||
1740 | 0x40040000, 0x80140500, 0x04000007, 0x4a03d000, | ||
1741 | 0x00070006, 0x0401f903, 0x4a03d000, 0x00070007, | ||
1742 | 0x0401f006, 0x4a03d000, 0x00070004, 0x0401f8fd, | ||
1743 | 0x4a03d000, 0x00070005, 0x0401f7ec, 0x1c01f000, | ||
1744 | 0x41780800, 0x82082c00, 0x0010ab38, 0x50142800, | ||
1745 | 0x82081500, 0xffffffff, 0x04000010, 0x0401f8f1, | ||
1746 | 0x4a03d000, 0x00050001, 0x0401f8ee, 0x59e81800, | ||
1747 | 0x80081040, 0x80142902, 0x8c0c1d06, 0x04000004, | ||
1748 | 0x40140000, 0x80040d40, 0x0401f8e6, 0x4a03d000, | ||
1749 | 0x00070000, 0x0401f7ef, 0x1c01f000, 0x480bc857, | ||
1750 | 0x480b506d, 0x59c40001, 0x82000500, 0xffffefff, | ||
1751 | 0x48038801, 0x41781800, 0x0401f8c4, 0x41785800, | ||
1752 | 0x42006000, 0x0000001e, 0x42006800, 0x00000004, | ||
1753 | 0x0401ff7a, 0x42006800, 0x0000003c, 0x0401ff7d, | ||
1754 | 0x41785800, 0x42006000, 0x0000001e, 0x42006800, | ||
1755 | 0x00000004, 0x0401ff71, 0x41786800, 0x0401ff75, | ||
1756 | 0x41785800, 0x42006000, 0x0000001e, 0x41786800, | ||
1757 | 0x0401ff6a, 0x42006800, 0x00000002, 0x0401ff6d, | ||
1758 | 0x42006800, 0x00000001, 0x0401ff64, 0x42006800, | ||
1759 | 0x000000f5, 0x0401ff67, 0x41785800, 0x42006000, | ||
1760 | 0x0000001e, 0x42006800, 0x00000004, 0x0401ff5b, | ||
1761 | 0x42006800, 0x00000020, 0x0401ff5e, 0x59a8106d, | ||
1762 | 0x0401f865, 0x42001800, 0x000200f5, 0x0401f897, | ||
1763 | 0x59a8106d, 0x0401f879, 0x41785800, 0x42006000, | ||
1764 | 0x0000001e, 0x42006800, 0x00000004, 0x0401ff4b, | ||
1765 | 0x41786800, 0x0401ff4f, 0x59c40001, 0x82000540, | ||
1766 | 0x00001000, 0x48038801, 0x41785800, 0x42006000, | ||
1767 | 0x0000001e, 0x42006800, 0x00000015, 0x0401ff3f, | ||
1768 | 0x0401ff4a, 0x40400000, 0x82000540, 0x00000002, | ||
1769 | 0x4c000000, 0x41785800, 0x42006000, 0x0000001e, | ||
1770 | 0x42006800, 0x00000015, 0x0401ff34, 0x5c000000, | ||
1771 | 0x40006800, 0x0401ff37, 0x41785800, 0x42006000, | ||
1772 | 0x0000001e, 0x42006800, 0x00000015, 0x0401ff2b, | ||
1773 | 0x0401ff36, 0x40400000, 0x82000500, 0x0000fffd, | ||
1774 | 0x4c000000, 0x41785800, 0x42006000, 0x0000001e, | ||
1775 | 0x42006800, 0x00000015, 0x0401ff20, 0x5c000000, | ||
1776 | 0x40006800, 0x0401ff23, 0x41785800, 0x42006000, | ||
1777 | 0x0000001e, 0x42006800, 0x00000014, 0x0401ff17, | ||
1778 | 0x0401ff22, 0x40400000, 0x82000540, 0x00000040, | ||
1779 | 0x4c000000, 0x41785800, 0x42006000, 0x0000001e, | ||
1780 | 0x42006800, 0x00000014, 0x0401ff0c, 0x5c000000, | ||
1781 | 0x40006800, 0x0401ff0f, 0x41785800, 0x42006000, | ||
1782 | 0x0000001e, 0x42006800, 0x00000014, 0x0401ff03, | ||
1783 | 0x0401ff0e, 0x40400000, 0x82000500, 0x0000ffbf, | ||
1784 | 0x4c000000, 0x41785800, 0x42006000, 0x0000001e, | ||
1785 | 0x42006800, 0x00000014, 0x0401fef8, 0x5c000000, | ||
1786 | 0x40006800, 0x0401fefb, 0x4a038886, 0x00002020, | ||
1787 | 0x0401f04c, 0x480bc857, 0x82080580, 0x00010000, | ||
1788 | 0x04020007, 0x82040d40, 0x00010000, 0x42001800, | ||
1789 | 0x00000001, 0x0401f82d, 0x0401f00f, 0x82080580, | ||
1790 | 0x00008000, 0x04000007, 0x82040d40, 0x00000000, | ||
1791 | 0x42001800, 0x00900001, 0x0401f824, 0x0401f006, | ||
1792 | 0x82040d40, 0x00008000, 0x42001800, 0x00100001, | ||
1793 | 0x0401f81e, 0x1c01f000, 0x480bc857, 0x82080580, | ||
1794 | 0x00010000, 0x04020008, 0x42001800, 0x000000a1, | ||
1795 | 0x0401f816, 0x42001800, 0x000000c1, 0x0401f813, | ||
1796 | 0x0401f011, 0x82080580, 0x00008000, 0x04000008, | ||
1797 | 0x42001800, 0x000400a1, 0x0401f80c, 0x42001800, | ||
1798 | 0x002000c1, 0x0401f809, 0x0401f007, 0x42001800, | ||
1799 | 0x000400a1, 0x0401f805, 0x42001800, 0x000000c1, | ||
1800 | 0x0401f802, 0x1c01f000, 0x480fc857, 0x41785800, | ||
1801 | 0x42006000, 0x0000001e, 0x41786800, 0x0401feb7, | ||
1802 | 0x400c6800, 0x80346960, 0x0401feba, 0x42006800, | ||
1803 | 0x00000001, 0x0401feb1, 0x400c6800, 0x0401feb5, | ||
1804 | 0x42006800, 0x00000003, 0x0401feac, 0x0401feb7, | ||
1805 | 0x40400000, 0x8c000504, 0x040207fc, 0x1c01f000, | ||
1806 | 0x42000000, 0x00000064, 0x80000040, 0x040207ff, | ||
1807 | 0x1c01f000, 0x00020103, 0x00101bd5, 0x00101bdb, | ||
1808 | 0x00101be1, 0x00101be9, 0x00101bef, 0x00101bf7, | ||
1809 | 0x00101bff, 0x00101c09, 0x00101c0f, 0x00101c17, | ||
1810 | 0x00101c1f, 0x00101c29, 0x00101c31, 0x00101c3b, | ||
1811 | 0x00101c45, 0x000200f8, 0x00101c51, 0x00101c59, | ||
1812 | 0x00101c61, 0x00101c6b, 0x00101c73, 0x00101c7d, | ||
1813 | 0x00101c87, 0x00101c93, 0x00101c9b, 0x00101ca5, | ||
1814 | 0x00101caf, 0x00101cbb, 0x00101cc5, 0x00101cd1, | ||
1815 | 0x00101cdd, 0x000200fd, 0x00101ceb, 0x00101cf3, | ||
1816 | 0x00101cfb, 0x00101d05, 0x00101d0d, 0x00101d17, | ||
1817 | 0x00101d21, 0x00101d2d, 0x00101d35, 0x00101d3f, | ||
1818 | 0x00101d49, 0x00101d55, 0x00101d5f, 0x00101d6b, | ||
1819 | 0x00101d77, 0x00101d85, 0x00101d8d, 0x00101d97, | ||
1820 | 0x00101da1, 0x00101dad, 0x00101db7, 0x00101dc3, | ||
1821 | 0x00101dcf, 0x00101ddd, 0x00101de7, 0x00101df3, | ||
1822 | 0x00101dff, 0x00101e0d, 0x00101e19, 0x00101e27, | ||
1823 | 0x00101e35, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1824 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1825 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f000, | ||
1826 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1827 | 0x00101418, 0x0201f800, 0x00020104, 0x0201f000, | ||
1828 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1829 | 0x00101155, 0x0201f000, 0x00020101, 0x4c000000, | ||
1830 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1831 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1832 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1833 | 0x00101418, 0x0201f000, 0x00020101, 0x4c000000, | ||
1834 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1835 | 0x00101418, 0x0201f800, 0x00020104, 0x0201f000, | ||
1836 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1837 | 0x00101289, 0x0201f000, 0x00020101, 0x4c000000, | ||
1838 | 0x4df00000, 0x0201f800, 0x00101289, 0x0201f800, | ||
1839 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1840 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1841 | 0x00101289, 0x0201f000, 0x00020101, 0x4c000000, | ||
1842 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1843 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1844 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1845 | 0x00101155, 0x0201f800, 0x00101289, 0x0201f000, | ||
1846 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1847 | 0x00101155, 0x0201f800, 0x00101289, 0x0201f800, | ||
1848 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1849 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1850 | 0x00101418, 0x0201f800, 0x00101289, 0x0201f000, | ||
1851 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1852 | 0x00101155, 0x0201f800, 0x00101418, 0x0201f800, | ||
1853 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1854 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1855 | 0x00020729, 0x0201f800, 0x00020104, 0x0201f000, | ||
1856 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1857 | 0x00101418, 0x0201f800, 0x00020729, 0x0201f000, | ||
1858 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1859 | 0x00101418, 0x0201f800, 0x00020729, 0x0201f800, | ||
1860 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1861 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1862 | 0x00020729, 0x0201f000, 0x00020101, 0x4c000000, | ||
1863 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1864 | 0x00020729, 0x0201f800, 0x00020104, 0x0201f000, | ||
1865 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1866 | 0x00101155, 0x0201f800, 0x00101418, 0x0201f800, | ||
1867 | 0x00020729, 0x0201f000, 0x00020101, 0x4c000000, | ||
1868 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1869 | 0x00101418, 0x0201f800, 0x00020729, 0x0201f800, | ||
1870 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1871 | 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800, | ||
1872 | 0x00101289, 0x0201f000, 0x00020101, 0x4c000000, | ||
1873 | 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800, | ||
1874 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1875 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1876 | 0x00101418, 0x0201f800, 0x00020729, 0x0201f800, | ||
1877 | 0x00101289, 0x0201f000, 0x00020101, 0x4c000000, | ||
1878 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1879 | 0x00020729, 0x0201f800, 0x00101289, 0x0201f800, | ||
1880 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1881 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1882 | 0x00020729, 0x0201f800, 0x00101289, 0x0201f000, | ||
1883 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1884 | 0x00101155, 0x0201f800, 0x00020729, 0x0201f800, | ||
1885 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1886 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1887 | 0x00101155, 0x0201f800, 0x00101418, 0x0201f800, | ||
1888 | 0x00020729, 0x0201f800, 0x00101289, 0x0201f000, | ||
1889 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1890 | 0x00101155, 0x0201f800, 0x00101418, 0x0201f800, | ||
1891 | 0x00020729, 0x0201f800, 0x00101289, 0x0201f800, | ||
1892 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1893 | 0x4df00000, 0x0201f800, 0x00020015, 0x0201f800, | ||
1894 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1895 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1896 | 0x00020015, 0x0201f000, 0x00020101, 0x4c000000, | ||
1897 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1898 | 0x00020015, 0x0201f800, 0x00020104, 0x0201f000, | ||
1899 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1900 | 0x00101155, 0x0201f800, 0x00020015, 0x0201f000, | ||
1901 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1902 | 0x00101155, 0x0201f800, 0x00020015, 0x0201f800, | ||
1903 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1904 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1905 | 0x00101155, 0x0201f800, 0x00020015, 0x0201f000, | ||
1906 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1907 | 0x00101418, 0x0201f800, 0x00101155, 0x0201f800, | ||
1908 | 0x00020015, 0x0201f800, 0x00020104, 0x0201f000, | ||
1909 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1910 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f000, | ||
1911 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1912 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f800, | ||
1913 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1914 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1915 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f000, | ||
1916 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1917 | 0x00101418, 0x0201f800, 0x00020015, 0x0201f800, | ||
1918 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1919 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1920 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f800, | ||
1921 | 0x00101155, 0x0201f000, 0x00020101, 0x4c000000, | ||
1922 | 0x4df00000, 0x0201f800, 0x00020015, 0x0201f800, | ||
1923 | 0x00101289, 0x0201f800, 0x00101155, 0x0201f800, | ||
1924 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1925 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1926 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f800, | ||
1927 | 0x00101155, 0x0201f000, 0x00020101, 0x4c000000, | ||
1928 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1929 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f800, | ||
1930 | 0x00101155, 0x0201f800, 0x00020104, 0x0201f000, | ||
1931 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1932 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f000, | ||
1933 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1934 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1935 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1936 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1937 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f000, | ||
1938 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1939 | 0x00101418, 0x0201f800, 0x00020729, 0x0201f800, | ||
1940 | 0x00020015, 0x0201f800, 0x00020104, 0x0201f000, | ||
1941 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1942 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1943 | 0x00101155, 0x0201f000, 0x00020101, 0x4c000000, | ||
1944 | 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800, | ||
1945 | 0x00020015, 0x0201f800, 0x00101155, 0x0201f800, | ||
1946 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1947 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1948 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1949 | 0x00101155, 0x0201f000, 0x00020101, 0x4c000000, | ||
1950 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1951 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1952 | 0x00101155, 0x0201f800, 0x00020104, 0x0201f000, | ||
1953 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1954 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1955 | 0x00101289, 0x0201f000, 0x00020101, 0x4c000000, | ||
1956 | 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800, | ||
1957 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f800, | ||
1958 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1959 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1960 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1961 | 0x00101289, 0x0201f000, 0x00020101, 0x4c000000, | ||
1962 | 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800, | ||
1963 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1964 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1965 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1966 | 0x00101155, 0x0201f800, 0x00020729, 0x0201f800, | ||
1967 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f000, | ||
1968 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1969 | 0x00101155, 0x0201f800, 0x00020729, 0x0201f800, | ||
1970 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f800, | ||
1971 | 0x00020104, 0x0201f000, 0x00020101, 0x4c000000, | ||
1972 | 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800, | ||
1973 | 0x00101418, 0x0201f800, 0x00020729, 0x0201f800, | ||
1974 | 0x00020015, 0x0201f800, 0x00101289, 0x0201f000, | ||
1975 | 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800, | ||
1976 | 0x00101155, 0x0201f800, 0x00101418, 0x0201f800, | ||
1977 | 0x00020729, 0x0201f800, 0x00020015, 0x0201f800, | ||
1978 | 0x00101289, 0x0201f800, 0x00020104, 0x0201f000, | ||
1979 | 0x00020101, 0x4c5c0000, 0x4c600000, 0x4178b800, | ||
1980 | 0x0201f800, 0x001048ec, 0x040200fd, 0x59a8c026, | ||
1981 | 0x0201f800, 0x0010513b, 0x04000003, 0x8c60c506, | ||
1982 | 0x0400000e, 0x8c60c500, 0x04020004, 0x8c60c50e, | ||
1983 | 0x040008f6, 0x0401f0f2, 0x0401fab4, 0x040200f0, | ||
1984 | 0x0201f800, 0x0010513b, 0x04020004, 0x4a03501c, | ||
1985 | 0x0000ffff, 0x0401f0ea, 0x8c60c504, 0x04000004, | ||
1986 | 0x4a03501c, 0x0000ffff, 0x0401f0e5, 0x59a8c010, | ||
1987 | 0x8260c500, 0x000000ff, 0x59a81013, 0x8c081500, | ||
1988 | 0x0400005d, 0x8c081502, 0x0402005b, 0x59a8b81c, | ||
1989 | 0x825c0d80, 0x0000ffff, 0x04020003, 0x4200b800, | ||
1990 | 0x00000001, 0x805c1104, 0x82086400, 0x0010be21, | ||
1991 | 0x50300800, 0x825c0500, 0x00000003, 0x0c01f001, | ||
1992 | 0x00101e81, 0x00101e7c, 0x00101e80, 0x00101e7e, | ||
1993 | 0x80040910, 0x0401f004, 0x80040930, 0x0401f002, | ||
1994 | 0x80040920, 0x82040500, 0x000000ff, 0x82000d80, | ||
1995 | 0x000000ff, 0x0400000f, 0x4c000000, 0x82000400, | ||
1996 | 0x0010210e, 0x50000800, 0x80040910, 0x82040580, | ||
1997 | 0x00000080, 0x5c000000, 0x04000030, 0x80600d80, | ||
1998 | 0x0400002e, 0x80000540, 0x0400002c, 0x0401f00b, | ||
1999 | 0x59a81005, 0x82081500, 0x00000003, 0x0402002b, | ||
2000 | 0x59a81013, 0x84081542, 0x480b5013, 0x4a03501c, | ||
2001 | 0x0000ffff, 0x0401f028, 0x4c000000, 0x59a80005, | ||
2002 | 0x8c000514, 0x42001000, 0x00000010, 0x02020800, | ||
2003 | 0x00104c6d, 0x5c000000, 0x0402001c, 0x417a8800, | ||
2004 | 0x0201f800, 0x00105c9a, 0x04020016, 0x0201f800, | ||
2005 | 0x001045e5, 0x04000006, 0x0201f800, 0x00104c62, | ||
2006 | 0x0401f8b1, 0x0400000f, 0x0401f00c, 0x599c0019, | ||
2007 | 0x8c00050e, 0x04020009, 0x0201f800, 0x001045a6, | ||
2008 | 0x04020008, 0x0201f800, 0x00104c62, 0x0401f9e1, | ||
2009 | 0x0401f8be, 0x04000003, 0x805cb800, 0x0401f7b2, | ||
2010 | 0x485f501c, 0x0401f086, 0x4a03501c, 0x0000ffff, | ||
2011 | 0x0401f083, 0x42003000, 0x0000007e, 0x59a8001c, | ||
2012 | 0x82001580, 0x0000ffff, 0x04020005, 0x80000d80, | ||
2013 | 0x4018b000, 0x4803c856, 0x0401f009, 0x8018b480, | ||
2014 | 0x04001004, 0x40000800, 0x4803c856, 0x0401f004, | ||
2015 | 0x4a03501c, 0x0000ffff, 0x0401f071, 0x4c040000, | ||
2016 | 0x4c580000, 0x82040400, 0x0010210e, 0x50000000, | ||
2017 | 0x82000500, 0x000000ff, 0x80604580, 0x0400005c, | ||
2018 | 0x0201f800, 0x00105c9b, 0x04020061, 0x59a80005, | ||
2019 | 0x8c000514, 0x42001000, 0x00000010, 0x02020800, | ||
2020 | 0x00104c6d, 0x5c00b000, 0x5c000800, 0x040207d7, | ||
2021 | 0x4c040000, 0x4c580000, 0x845cbd00, 0x0201f800, | ||
2022 | 0x00020245, 0x04000008, 0x599c0019, 0x8c00050e, | ||
2023 | 0x04020047, 0x0201f800, 0x001045ab, 0x0402004c, | ||
2024 | 0x0401f002, 0x845cbd40, 0x0201f800, 0x00104c62, | ||
2025 | 0x0201f800, 0x001049e7, 0x04020007, 0x59a80005, | ||
2026 | 0x8c000502, 0x04000033, 0x59340200, 0x8c00050e, | ||
2027 | 0x04020030, 0x59a81013, 0x8c081502, 0x04000025, | ||
2028 | 0x0201f800, 0x00104a09, 0x04000031, 0x8c5cbd00, | ||
2029 | 0x04020004, 0x0201f800, 0x001045ff, 0x0401f02c, | ||
2030 | 0x0401f9cd, 0x0400002a, 0x42026000, 0x0010bde9, | ||
2031 | 0x49366009, 0x497a6008, 0x417a7800, 0x0401f925, | ||
2032 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
2033 | 0x0201f800, 0x00103b25, 0x0400001d, 0x41782800, | ||
2034 | 0x42003000, 0x00000008, 0x4d400000, 0x4d440000, | ||
2035 | 0x59368c03, 0x42028000, 0x00000029, 0x0201f800, | ||
2036 | 0x0010a446, 0x5c028800, 0x5c028000, 0x0401f010, | ||
2037 | 0x4937c857, 0x599c0019, 0x8c00050e, 0x0402000c, | ||
2038 | 0x0401f96c, 0x0401f849, 0x04000011, 0x0401f008, | ||
2039 | 0x59a80013, 0x8c000500, 0x04000003, 0x0401f9a6, | ||
2040 | 0x04000003, 0x0401f828, 0x04000009, 0x5c00b000, | ||
2041 | 0x5c000800, 0x80040800, 0x8058b040, 0x04020798, | ||
2042 | 0x4a03501c, 0x0000ffff, 0x0401f005, 0x4937c857, | ||
2043 | 0x5c00b000, 0x5c000800, 0x4807501c, 0x5c00c000, | ||
2044 | 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4a03501c, | ||
2045 | 0x00000001, 0x42028800, 0x000007fe, 0x42003000, | ||
2046 | 0x00fffffe, 0x0201f800, 0x001045a6, 0x0402000c, | ||
2047 | 0x0401f948, 0x0401f825, 0x04000009, 0x59a80026, | ||
2048 | 0x8400054e, 0x48035026, 0x0201f800, 0x0010930f, | ||
2049 | 0x82000540, 0x00000001, 0x1c01f000, 0x80000580, | ||
2050 | 0x0401f7fe, 0x4937c857, 0x0201f800, 0x00107942, | ||
2051 | 0x04000015, 0x49366009, 0x4a026406, 0x00000001, | ||
2052 | 0x417a7800, 0x0201f800, 0x00104567, 0x59a8001b, | ||
2053 | 0x80000000, 0x4803501b, 0x42027000, 0x00000004, | ||
2054 | 0x599c0019, 0x8c00050e, 0x04000003, 0x42027000, | ||
2055 | 0x00000000, 0x0201f800, 0x000207a1, 0x82000540, | ||
2056 | 0x00000001, 0x1c01f000, 0x4937c857, 0x0201f800, | ||
2057 | 0x00107942, 0x0400001c, 0x49366009, 0x59340403, | ||
2058 | 0x82000580, 0x000007fe, 0x04000005, 0x4d3c0000, | ||
2059 | 0x417a7800, 0x0401f8b7, 0x5c027800, 0x4a026406, | ||
2060 | 0x00000001, 0x417a7800, 0x0201f800, 0x00104567, | ||
2061 | 0x42000800, 0x00000003, 0x0201f800, 0x00104571, | ||
2062 | 0x59a8001b, 0x80000000, 0x4803501b, 0x42027000, | ||
2063 | 0x00000002, 0x0201f800, 0x000207a1, 0x82000540, | ||
2064 | 0x00000001, 0x1c01f000, 0x4803c856, 0x42028800, | ||
2065 | 0x000007fc, 0x42003000, 0x00fffffc, 0x0201f800, | ||
2066 | 0x001045a6, 0x04020005, 0x0401f805, 0x04000003, | ||
2067 | 0x4a035027, 0x0000ffff, 0x1c01f000, 0x4937c857, | ||
2068 | 0x0201f800, 0x00107942, 0x04000014, 0x49366009, | ||
2069 | 0x4a026406, 0x00000001, 0x417a7800, 0x0201f800, | ||
2070 | 0x00104567, 0x42000800, 0x00000003, 0x0201f800, | ||
2071 | 0x00104571, 0x59a80028, 0x80000000, 0x48035028, | ||
2072 | 0x42027000, 0x00000002, 0x0201f800, 0x000207a1, | ||
2073 | 0x82000540, 0x00000001, 0x1c01f000, 0x480bc857, | ||
2074 | 0x492fc857, 0x4c5c0000, 0x4008b800, 0x42028800, | ||
2075 | 0x000007fd, 0x42003000, 0x00fffffd, 0x0201f800, | ||
2076 | 0x001045a6, 0x0402001a, 0x0201f800, 0x0002075a, | ||
2077 | 0x04000017, 0x49366009, 0x5934000a, 0x84000544, | ||
2078 | 0x4802680a, 0x812e59c0, 0x04000005, 0x592c0404, | ||
2079 | 0x8c00051e, 0x04000002, 0x48ee6021, 0x492e6008, | ||
2080 | 0x4a026406, 0x00000001, 0x485e601c, 0x42027000, | ||
2081 | 0x00000022, 0x0201f800, 0x000207a1, 0x82000540, | ||
2082 | 0x00000001, 0x5c00b800, 0x1c01f000, 0x80000580, | ||
2083 | 0x0401f7fd, 0x5c000000, 0x4c000000, 0x4803c857, | ||
2084 | 0x4943c857, 0x493fc857, 0x4d340000, 0x4d440000, | ||
2085 | 0x4c580000, 0x4d2c0000, 0x4c5c0000, 0x0201f800, | ||
2086 | 0x00106c55, 0x4df00000, 0x0201f800, 0x001069f1, | ||
2087 | 0x0201f800, 0x00106aac, 0x0201f800, 0x00106737, | ||
2088 | 0x0201f800, 0x0010848a, 0x5c03e000, 0x02000800, | ||
2089 | 0x00106c4b, 0x4200b000, 0x000007f0, 0x417a8800, | ||
2090 | 0x0201f800, 0x00020245, 0x0402001f, 0x8d3e7d14, | ||
2091 | 0x04000005, 0x59340212, 0x82000500, 0x0000ff00, | ||
2092 | 0x04000019, 0x8d3e7d06, 0x04000004, 0x59340200, | ||
2093 | 0x8c00050e, 0x04020014, 0x8d3e7d18, 0x0400000f, | ||
2094 | 0x5934b80f, 0x805cb9c0, 0x04000009, 0x49425a06, | ||
2095 | 0x592cb800, 0x0201f800, 0x000202ce, 0x805cb9c0, | ||
2096 | 0x040207fb, 0x497a680f, 0x497a6810, 0x4a026c00, | ||
2097 | 0x00000707, 0x0401f004, 0x4937c857, 0x0201f800, | ||
2098 | 0x001042b4, 0x81468800, 0x8058b040, 0x040207dd, | ||
2099 | 0x8d3e7d02, 0x04000011, 0x497b501d, 0x42028800, | ||
2100 | 0x000007f0, 0x4200b000, 0x00000010, 0x0201f800, | ||
2101 | 0x00020245, 0x04020006, 0x4937c857, 0x4a026c00, | ||
2102 | 0x00000707, 0x0201f800, 0x001042b4, 0x81468800, | ||
2103 | 0x8058b040, 0x040207f6, 0x5c00b800, 0x5c025800, | ||
2104 | 0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000, | ||
2105 | 0x5c000000, 0x4c000000, 0x4803c857, 0x4933c857, | ||
2106 | 0x493fc857, 0x4d340000, 0x4d400000, 0x4d440000, | ||
2107 | 0x4d2c0000, 0x4c5c0000, 0x0201f800, 0x00106c55, | ||
2108 | 0x4df00000, 0x59326809, 0x813669c0, 0x04000020, | ||
2109 | 0x59368c03, 0x42028000, 0x00000029, 0x0201f800, | ||
2110 | 0x00106a50, 0x0201f800, 0x00106ab4, 0x0201f800, | ||
2111 | 0x001067fd, 0x0201f800, 0x0010a2ff, 0x4937c857, | ||
2112 | 0x8d3e7d18, 0x04000010, 0x5934b80f, 0x805cb9c0, | ||
2113 | 0x0400000a, 0x405e5800, 0x49425a06, 0x592cb800, | ||
2114 | 0x0201f800, 0x000202ce, 0x805cb9c0, 0x040207fa, | ||
2115 | 0x497a680f, 0x497a6810, 0x4a026c00, 0x00000707, | ||
2116 | 0x0401f003, 0x0201f800, 0x001042b4, 0x5c03e000, | ||
2117 | 0x02000800, 0x00106c4b, 0x5c00b800, 0x5c025800, | ||
2118 | 0x5c028800, 0x5c028000, 0x5c026800, 0x1c01f000, | ||
2119 | 0x4933c857, 0x59a80026, 0x8c000508, 0x04020012, | ||
2120 | 0x59305009, 0x482bc857, 0x836c0580, 0x00000002, | ||
2121 | 0x0402000d, 0x0401f813, 0x0402000b, 0x58280403, | ||
2122 | 0x82000580, 0x000007fc, 0x04000008, 0x59a8001b, | ||
2123 | 0x80000040, 0x4803c857, 0x02001800, 0x001005d8, | ||
2124 | 0x4803501b, 0x1c01f000, 0x59a80028, 0x80000040, | ||
2125 | 0x4803c857, 0x040017fc, 0x48035028, 0x1c01f000, | ||
2126 | 0x59300008, 0x800001c0, 0x04020009, 0x59300403, | ||
2127 | 0x82000580, 0x00000001, 0x04020004, 0x82000540, | ||
2128 | 0x00000001, 0x0401f002, 0x80000580, 0x1c01f000, | ||
2129 | 0x4937c857, 0x59340200, 0x84000502, 0x48026a00, | ||
2130 | 0x1c01f000, 0x4933c857, 0x493fc857, 0x4947c857, | ||
2131 | 0x4d3c0000, 0x4d400000, 0x4d340000, 0x4d440000, | ||
2132 | 0x4c580000, 0x0201f800, 0x00106c55, 0x4df00000, | ||
2133 | 0x813e79c0, 0x04020004, 0x4200b000, 0x00000001, | ||
2134 | 0x0401f004, 0x4200b000, 0x000007f0, 0x417a8800, | ||
2135 | 0x41440000, 0x81ac0400, 0x50000000, 0x80026d40, | ||
2136 | 0x04000019, 0x42027800, 0x00000001, 0x0201f800, | ||
2137 | 0x001048f6, 0x42028000, 0x00000029, 0x417a7800, | ||
2138 | 0x0201f800, 0x00106a50, 0x0201f800, 0x00106ab4, | ||
2139 | 0x0201f800, 0x001067fd, 0x0201f800, 0x001049e7, | ||
2140 | 0x04020005, 0x4937c857, 0x4a026c00, 0x00000404, | ||
2141 | 0x0401f003, 0x0201f800, 0x00104a14, 0x0201f800, | ||
2142 | 0x0010a2ff, 0x81468800, 0x8058b040, 0x040207e1, | ||
2143 | 0x5c03e000, 0x02000800, 0x00106c4b, 0x5c00b000, | ||
2144 | 0x5c028800, 0x5c026800, 0x5c028000, 0x5c027800, | ||
2145 | 0x1c01f000, 0x4937c857, 0x4947c857, 0x4c5c0000, | ||
2146 | 0x4c600000, 0x4c640000, 0x59a80013, 0x8c000500, | ||
2147 | 0x0400001f, 0x599c0017, 0x8c00050a, 0x0402001c, | ||
2148 | 0x5934ba02, 0x825cbd00, 0x000000ff, 0x485fc857, | ||
2149 | 0x4178c000, 0x4178c800, 0x82600400, 0x0010be21, | ||
2150 | 0x50002000, 0x8060c1c0, 0x04000008, 0x82100500, | ||
2151 | 0x000000ff, 0x82002d80, 0x000000ff, 0x0400000c, | ||
2152 | 0x805c0580, 0x0400000d, 0x80102110, 0x8064c800, | ||
2153 | 0x82640580, 0x00000004, 0x040207f5, 0x8060c000, | ||
2154 | 0x82600580, 0x00000020, 0x040207eb, 0x4813c857, | ||
2155 | 0x82000540, 0x00000001, 0x5c00c800, 0x5c00c000, | ||
2156 | 0x5c00b800, 0x1c01f000, 0x59a80026, 0x4803c857, | ||
2157 | 0x8c000512, 0x1c01f000, 0x00007eef, 0x00007de8, | ||
2158 | 0x00007ce4, 0x000080e2, 0x00007be1, 0x000080e0, | ||
2159 | 0x000080dc, 0x000080da, 0x00007ad9, 0x000080d6, | ||
2160 | 0x000080d5, 0x000080d4, 0x000080d3, 0x000080d2, | ||
2161 | 0x000080d1, 0x000079ce, 0x000078cd, 0x000080cc, | ||
2162 | 0x000080cb, 0x000080ca, 0x000080c9, 0x000080c7, | ||
2163 | 0x000080c6, 0x000077c5, 0x000076c3, 0x000080bc, | ||
2164 | 0x000080ba, 0x000075b9, 0x000080b6, 0x000074b5, | ||
2165 | 0x000073b4, 0x000072b3, 0x000080b2, 0x000080b1, | ||
2166 | 0x000080ae, 0x000071ad, 0x000080ac, 0x000070ab, | ||
2167 | 0x00006faa, 0x00006ea9, 0x000080a7, 0x00006da6, | ||
2168 | 0x00006ca5, 0x00006ba3, 0x00006a9f, 0x0000699e, | ||
2169 | 0x0000689d, 0x0000809b, 0x00008098, 0x00006797, | ||
2170 | 0x00006690, 0x0000658f, 0x00006488, 0x00006384, | ||
2171 | 0x00006282, 0x00008081, 0x00008080, 0x0000617c, | ||
2172 | 0x0000607a, 0x00008079, 0x00005f76, 0x00008075, | ||
2173 | 0x00008074, 0x00008073, 0x00008072, 0x00008071, | ||
2174 | 0x0000806e, 0x00005e6d, 0x0000806c, 0x00005d6b, | ||
2175 | 0x00005c6a, 0x00005b69, 0x00008067, 0x00005a66, | ||
2176 | 0x00005965, 0x00005863, 0x0000575c, 0x0000565a, | ||
2177 | 0x00005559, 0x00008056, 0x00008055, 0x00005454, | ||
2178 | 0x00005353, 0x00005252, 0x00005151, 0x0000504e, | ||
2179 | 0x00004f4d, 0x0000804c, 0x0000804b, 0x00004e4a, | ||
2180 | 0x00004d49, 0x00008047, 0x00004c46, 0x00008045, | ||
2181 | 0x00008043, 0x0000803c, 0x0000803a, 0x00008039, | ||
2182 | 0x00008036, 0x00004b35, 0x00008034, 0x00004a33, | ||
2183 | 0x00004932, 0x00004831, 0x0000802e, 0x0000472d, | ||
2184 | 0x0000462c, 0x0000452b, 0x0000442a, 0x00004329, | ||
2185 | 0x00004227, 0x00008026, 0x00008025, 0x00004123, | ||
2186 | 0x0000401f, 0x00003f1e, 0x00003e1d, 0x00003d1b, | ||
2187 | 0x00003c18, 0x00008017, 0x00008010, 0x00003b0f, | ||
2188 | 0x00003a08, 0x00008004, 0x00003902, 0x00008001, | ||
2189 | 0x00008000, 0x00008000, 0x00003800, 0x00003700, | ||
2190 | 0x00003600, 0x00008000, 0x00003500, 0x00008000, | ||
2191 | 0x00008000, 0x00008000, 0x00003400, 0x00008000, | ||
2192 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2193 | 0x00008000, 0x00003300, 0x00003200, 0x00008000, | ||
2194 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2195 | 0x00008000, 0x00003100, 0x00003000, 0x00008000, | ||
2196 | 0x00008000, 0x00002f00, 0x00008000, 0x00002e00, | ||
2197 | 0x00002d00, 0x00002c00, 0x00008000, 0x00008000, | ||
2198 | 0x00008000, 0x00002b00, 0x00008000, 0x00002a00, | ||
2199 | 0x00002900, 0x00002800, 0x00008000, 0x00002700, | ||
2200 | 0x00002600, 0x00002500, 0x00002400, 0x00002300, | ||
2201 | 0x00002200, 0x00008000, 0x00008000, 0x00002100, | ||
2202 | 0x00002000, 0x00001f00, 0x00001e00, 0x00001d00, | ||
2203 | 0x00001c00, 0x00008000, 0x00008000, 0x00001b00, | ||
2204 | 0x00001a00, 0x00008000, 0x00001900, 0x00008000, | ||
2205 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2206 | 0x00008000, 0x00001800, 0x00008000, 0x00001700, | ||
2207 | 0x00001600, 0x00001500, 0x00008000, 0x00001400, | ||
2208 | 0x00001300, 0x00001200, 0x00001100, 0x00001000, | ||
2209 | 0x00000f00, 0x00008000, 0x00008000, 0x00000e00, | ||
2210 | 0x00000d00, 0x00000c00, 0x00000b00, 0x00000a00, | ||
2211 | 0x00000900, 0x00008000, 0x00008000, 0x00000800, | ||
2212 | 0x00000700, 0x00008000, 0x00000600, 0x00008000, | ||
2213 | 0x00008000, 0x00008000, 0x00000500, 0x00000400, | ||
2214 | 0x00000300, 0x00008000, 0x00000200, 0x00008000, | ||
2215 | 0x00008000, 0x00008000, 0x00000100, 0x00008000, | ||
2216 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2217 | 0x00008000, 0x00000000, 0x00008000, 0x00008000, | ||
2218 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2219 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2220 | 0x00008000, 0x00008000, 0x00008000, 0x00008000, | ||
2221 | 0x00008000, 0x00008000, 0x0201f800, 0x001007d3, | ||
2222 | 0x02000800, 0x001005d8, 0x492f4016, 0x1c01f000, | ||
2223 | 0x83a0ac00, 0x00000006, 0x83a00580, 0x0010b4a4, | ||
2224 | 0x0400000c, 0x492fc857, 0x812e59c0, 0x02000800, | ||
2225 | 0x001005d8, 0x832ca400, 0x00000006, 0x4200b000, | ||
2226 | 0x0000000d, 0x0201f800, 0x0010ab17, 0x0401f00f, | ||
2227 | 0x4200b000, 0x00000010, 0x83e0a400, 0x00000020, | ||
2228 | 0x50500000, 0x8050a000, 0x50500800, 0x900409c0, | ||
2229 | 0x80040540, 0x4400a800, 0x8050a000, 0x8054a800, | ||
2230 | 0x8058b040, 0x040207f7, 0x1c01f000, 0x59a00206, | ||
2231 | 0x4803c857, 0x82000c80, 0x0000007f, 0x040210c9, | ||
2232 | 0x59a80821, 0x0c01f001, 0x001022c0, 0x00102300, | ||
2233 | 0x00102300, 0x0010234b, 0x0010236d, 0x00102300, | ||
2234 | 0x001022c0, 0x0010238f, 0x001023a0, 0x00102300, | ||
2235 | 0x00102300, 0x001023ad, 0x001023c5, 0x001023dd, | ||
2236 | 0x00102300, 0x001023e7, 0x001023f4, 0x00102300, | ||
2237 | 0x0010241d, 0x00102300, 0x0010247a, 0x00102300, | ||
2238 | 0x00102300, 0x00102300, 0x00102300, 0x00102300, | ||
2239 | 0x00102300, 0x00102300, 0x00102300, 0x00102300, | ||
2240 | 0x00102300, 0x00102300, 0x00102491, 0x00102300, | ||
2241 | 0x001024e3, 0x00102300, 0x00102300, 0x00102300, | ||
2242 | 0x00102300, 0x001024e8, 0x00102560, 0x00102300, | ||
2243 | 0x00102567, 0x00102300, 0x00102300, 0x00102300, | ||
2244 | 0x00102300, 0x00102300, 0x00102569, 0x001025ea, | ||
2245 | 0x00102727, 0x00102300, 0x00102300, 0x00102300, | ||
2246 | 0x00102300, 0x00102300, 0x00102736, 0x00102300, | ||
2247 | 0x00102300, 0x00102300, 0x00102300, 0x00102300, | ||
2248 | 0x00102300, 0x00102300, 0x00102753, 0x001027a6, | ||
2249 | 0x00102802, 0x00102816, 0x00102835, 0x00102a70, | ||
2250 | 0x00102dff, 0x00102300, 0x00102300, 0x00102300, | ||
2251 | 0x00102300, 0x00102300, 0x00102300, 0x00102300, | ||
2252 | 0x00102300, 0x00102300, 0x00102300, 0x00102300, | ||
2253 | 0x00102300, 0x00102fb4, 0x00103028, 0x00102300, | ||
2254 | 0x00102300, 0x00103094, 0x00102300, 0x00103126, | ||
2255 | 0x001031d8, 0x00102300, 0x00102300, 0x0010320f, | ||
2256 | 0x0010326b, 0x00102300, 0x001032bd, 0x00103419, | ||
2257 | 0x00102300, 0x0010342d, 0x001034b8, 0x00102300, | ||
2258 | 0x00102300, 0x00102300, 0x00102300, 0x00103522, | ||
2259 | 0x00103526, 0x00103545, 0x00102300, 0x001035e7, | ||
2260 | 0x00102300, 0x00102300, 0x00103615, 0x00102300, | ||
2261 | 0x00103643, 0x00102300, 0x00102300, 0x001036aa, | ||
2262 | 0x001037b7, 0x00103814, 0x00102300, 0x0010387a, | ||
2263 | 0x00102300, 0x00102300, 0x001038d3, 0x00103936, | ||
2264 | 0x00102300, 0x48efc857, 0x4031d800, 0x58ef400b, | ||
2265 | 0x58ec0002, 0x82000580, 0x00000200, 0x04000045, | ||
2266 | 0x48efc857, 0x4a034206, 0x00004000, 0x0201f800, | ||
2267 | 0x00103a15, 0x83a00580, 0x0010b4a4, 0x0400000d, | ||
2268 | 0x58ee580a, 0x4d2c0000, 0x0401f856, 0x41a25800, | ||
2269 | 0x0201f800, 0x001007f4, 0x40ee5800, 0x0201f800, | ||
2270 | 0x001007f4, 0x5c025800, 0x0201f000, 0x000202da, | ||
2271 | 0x04026007, 0x59a0001d, 0x84000542, 0x4803401d, | ||
2272 | 0x4a01d809, 0x001022d4, 0x1c01f000, 0x59a00206, | ||
2273 | 0x82000d80, 0x00004000, 0x04000006, 0x900001c0, | ||
2274 | 0x82000540, 0x00000011, 0x4803c011, 0x0401f005, | ||
2275 | 0x900001c0, 0x82000540, 0x00000010, 0x4803c011, | ||
2276 | 0x0401f845, 0x59e00017, 0x8c000508, 0x0402000c, | ||
2277 | 0x4203e000, 0x30000001, 0x4203e000, 0x40000000, | ||
2278 | 0x40ee5800, 0x0201f800, 0x001007f4, 0x59a0001d, | ||
2279 | 0x84000504, 0x4803401d, 0x1c01f000, 0x4a03c017, | ||
2280 | 0x00000000, 0x59a00206, 0x82000d80, 0x00004000, | ||
2281 | 0x040007f0, 0x4a03c017, 0x00000001, 0x0401f7ed, | ||
2282 | 0x4803c856, 0x4a034206, 0x00004001, 0x0401f7c0, | ||
2283 | 0x4803c856, 0x4a034206, 0x00004002, 0x0401f7bc, | ||
2284 | 0x4803c856, 0x4a034206, 0x00004003, 0x0401f7b8, | ||
2285 | 0x4803c856, 0x4a034206, 0x00004005, 0x0401f7b4, | ||
2286 | 0x4803c856, 0x4a034206, 0x00004006, 0x0401f7b0, | ||
2287 | 0x4803c856, 0x4a034206, 0x0000400b, 0x0401f7ac, | ||
2288 | 0x4803c856, 0x4a034206, 0x0000400c, 0x0401f7a8, | ||
2289 | 0x4803c856, 0x4a034206, 0x0000400c, 0x0401f7a4, | ||
2290 | 0x48efc857, 0x58eca80a, 0x8054a9c0, 0x02000800, | ||
2291 | 0x001005d8, 0x83a0a400, 0x00000006, 0x8254ac00, | ||
2292 | 0x00000006, 0x4200b000, 0x0000000d, 0x0201f000, | ||
2293 | 0x0010ab17, 0x59a00206, 0x4803c857, 0x59a00406, | ||
2294 | 0x4803c857, 0x59a00207, 0x4803c857, 0x59a00407, | ||
2295 | 0x4803c857, 0x59a00208, 0x4803c857, 0x59a00408, | ||
2296 | 0x4803c857, 0x59a00209, 0x4803c857, 0x83e0ac00, | ||
2297 | 0x00000020, 0x83a0a400, 0x00000006, 0x4200b000, | ||
2298 | 0x00000010, 0x50500000, 0x4400a800, 0x8054a800, | ||
2299 | 0x900001c0, 0x4400a800, 0x8054a800, 0x8050a000, | ||
2300 | 0x8058b040, 0x040207f8, 0x1c01f000, 0x59a00406, | ||
2301 | 0x800000c2, 0x59a00a07, 0x900409c0, 0x80040540, | ||
2302 | 0x84000540, 0x59a00c07, 0x8c040d00, 0x04000018, | ||
2303 | 0x59a80805, 0x8c040d0e, 0x040207ba, 0x42000800, | ||
2304 | 0x00000064, 0x80040840, 0x04000007, 0x4a030000, | ||
2305 | 0x00000001, 0x40000000, 0x59801000, 0x8c081500, | ||
2306 | 0x040007f9, 0x04000005, 0x48030004, 0x4a030000, | ||
2307 | 0x00000000, 0x0401f75b, 0x4a030000, 0x00000000, | ||
2308 | 0x4a034406, 0x00000004, 0x040007a2, 0x4803880e, | ||
2309 | 0x0401f754, 0x59a00406, 0x800000c2, 0x59a00c07, | ||
2310 | 0x8c040d00, 0x0400001a, 0x59a80805, 0x8c040d0e, | ||
2311 | 0x0402079c, 0x42000800, 0x00000064, 0x80040840, | ||
2312 | 0x04000007, 0x4a030000, 0x00000001, 0x40000000, | ||
2313 | 0x59801000, 0x8c081500, 0x040007f9, 0x04000007, | ||
2314 | 0x48030004, 0x59800805, 0x48074406, 0x4a030000, | ||
2315 | 0x00000000, 0x0401f73b, 0x4a030000, 0x00000000, | ||
2316 | 0x4a034406, 0x00000004, 0x04000782, 0x4803880e, | ||
2317 | 0x59c4080f, 0x48074406, 0x0401f732, 0x59a01c06, | ||
2318 | 0x59a00207, 0x900c19c0, 0x800c1d40, 0x580c0803, | ||
2319 | 0x80000580, 0x500c1000, 0x80080400, 0x800c1800, | ||
2320 | 0x80040840, 0x040207fc, 0x48034406, 0x900001c0, | ||
2321 | 0x48034207, 0x800001c0, 0x04000722, 0x0401f769, | ||
2322 | 0x4a034406, 0x00000004, 0x4a034207, 0x00000000, | ||
2323 | 0x4a034407, 0x00000010, 0x59a8000d, 0x48034208, | ||
2324 | 0x900001c0, 0x48034408, 0x4a034209, 0x00000002, | ||
2325 | 0x0401f714, 0x59a00407, 0x59a01207, 0x900811c0, | ||
2326 | 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0, | ||
2327 | 0x800c1d40, 0x59a00a08, 0x59a00408, 0x900409c0, | ||
2328 | 0x80040d40, 0x59a0020a, 0x82002480, 0x00000010, | ||
2329 | 0x04001754, 0x59a02406, 0x900001c0, 0x80100540, | ||
2330 | 0x59a8280d, 0x80142480, 0x0400174e, 0x0201f000, | ||
2331 | 0x00103a25, 0x59a00407, 0x59a01207, 0x900811c0, | ||
2332 | 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0, | ||
2333 | 0x800c1d40, 0x59a00a08, 0x59a00408, 0x900409c0, | ||
2334 | 0x80040d40, 0x59a0020a, 0x82002480, 0x00000010, | ||
2335 | 0x0400173c, 0x59a02406, 0x900001c0, 0x80100540, | ||
2336 | 0x59a8280d, 0x80142480, 0x04001736, 0x0201f000, | ||
2337 | 0x00103a28, 0x59a00a0a, 0x59a00406, 0x900409c0, | ||
2338 | 0x80040d40, 0x59a01407, 0x59a00207, 0x900811c0, | ||
2339 | 0x80081540, 0x44080800, 0x0401f6da, 0x59a00a0a, | ||
2340 | 0x59a00406, 0x900409c0, 0x80040d40, 0x50040000, | ||
2341 | 0x82000d00, 0x0000ffff, 0x48074207, 0x82000d00, | ||
2342 | 0xffff0000, 0x900409c0, 0x48074407, 0x0401f6cd, | ||
2343 | 0x59a00406, 0x8c000500, 0x04000020, 0x59a01207, | ||
2344 | 0x59a01c07, 0x59a02208, 0x480b5054, 0x480f5055, | ||
2345 | 0x48135056, 0x59c40801, 0x82040d00, 0x00018000, | ||
2346 | 0x82040580, 0x00000000, 0x04000009, 0x82040580, | ||
2347 | 0x00008000, 0x04000008, 0x82040580, 0x00010000, | ||
2348 | 0x04000007, 0x0201f800, 0x001005d8, 0x40080000, | ||
2349 | 0x0401f004, 0x400c0000, 0x0401f002, 0x40100000, | ||
2350 | 0x80000110, 0x42000800, 0x000000e0, 0x0201f800, | ||
2351 | 0x00101944, 0x0401f007, 0x59a81054, 0x59a81855, | ||
2352 | 0x59a82056, 0x480b4207, 0x480f4407, 0x48134208, | ||
2353 | 0x0401f6a4, 0x4d2c0000, 0x4d340000, 0x4d300000, | ||
2354 | 0x4d440000, 0x59a28c06, 0x0201f800, 0x00020245, | ||
2355 | 0x04000006, 0x5c028800, 0x5c026000, 0x5c026800, | ||
2356 | 0x5c025800, 0x0401f6e7, 0x59a04407, 0x59a00207, | ||
2357 | 0x900001c0, 0x80204540, 0x0401f81e, 0x04000009, | ||
2358 | 0x4a034208, 0x00000001, 0x4a034406, 0x0000ffff, | ||
2359 | 0x4a034207, 0x0000ffff, 0x497b4407, 0x0401f00b, | ||
2360 | 0x0401f822, 0x0400000e, 0x4a034208, 0x00000002, | ||
2361 | 0x59300402, 0x48034406, 0x59300202, 0x48034207, | ||
2362 | 0x59300206, 0x48034407, 0x5c028800, 0x5c026000, | ||
2363 | 0x5c026800, 0x5c025800, 0x0401f67a, 0x5c028800, | ||
2364 | 0x5c026000, 0x5c026800, 0x5c025800, 0x0401f6c1, | ||
2365 | 0x4937c856, 0x4823c856, 0x4d2c0000, 0x5934000f, | ||
2366 | 0x80025d40, 0x04000007, 0x592c0005, 0x80200580, | ||
2367 | 0x592c0000, 0x040207fb, 0x82000540, 0x00000001, | ||
2368 | 0x5c025800, 0x1c01f000, 0x4823c857, 0x4d2c0000, | ||
2369 | 0x4d300000, 0x42026000, 0x0010d1c0, 0x59300406, | ||
2370 | 0x82000d80, 0x00000003, 0x04000004, 0x82000d80, | ||
2371 | 0x00000006, 0x04020007, 0x59325808, 0x812e59c0, | ||
2372 | 0x04000004, 0x592c0005, 0x80200580, 0x0400000a, | ||
2373 | 0x83326400, 0x00000024, 0x41580000, 0x81300480, | ||
2374 | 0x040017ef, 0x80000580, 0x5c026000, 0x5c025800, | ||
2375 | 0x1c01f000, 0x82000540, 0x00000001, 0x5c026000, | ||
2376 | 0x5c025800, 0x1c01f000, 0x83a00580, 0x0010b4a4, | ||
2377 | 0x04020684, 0x59a80005, 0x8c00050e, 0x04020003, | ||
2378 | 0x4a030000, 0x00000000, 0x4a034206, 0x00004000, | ||
2379 | 0x4a03c011, 0x40000010, 0x0401fea7, 0x59e00017, | ||
2380 | 0x8c000508, 0x04000003, 0x4a03c017, 0x00000000, | ||
2381 | 0x4203e000, 0x30000001, 0x4203e000, 0x40000000, | ||
2382 | 0x0401f000, 0x800409c0, 0x04000004, 0x4a034406, | ||
2383 | 0x00000001, 0x0401f677, 0x836c0580, 0x00000003, | ||
2384 | 0x04020010, 0x59a80010, 0x497b4406, 0x0201f800, | ||
2385 | 0x0010513b, 0x0400000f, 0x82000d00, 0x00ffff00, | ||
2386 | 0x0402000c, 0x82000c00, 0x0010210e, 0x50040800, | ||
2387 | 0x80040910, 0x82041580, 0x00000080, 0x04020004, | ||
2388 | 0x4a034406, 0x00000007, 0x0401f662, 0x48074406, | ||
2389 | 0x82000d00, 0x0000ffff, 0x48074207, 0x80000120, | ||
2390 | 0x48034407, 0x59a80026, 0x82001500, 0x00000100, | ||
2391 | 0x480b4409, 0x8c000502, 0x0400001f, 0x8c000506, | ||
2392 | 0x04000009, 0x82000d00, 0x0000000a, 0x82040d80, | ||
2393 | 0x0000000a, 0x04020004, 0x4a034209, 0x00000001, | ||
2394 | 0x0401f022, 0x8c00050a, 0x04000009, 0x82000d00, | ||
2395 | 0x00000022, 0x82040d80, 0x00000022, 0x04020004, | ||
2396 | 0x4a034209, 0x00000003, 0x0401f018, 0x8c000508, | ||
2397 | 0x04000009, 0x82000d00, 0x00000012, 0x82040d80, | ||
2398 | 0x00000012, 0x04020004, 0x4a034209, 0x00000002, | ||
2399 | 0x0401f00e, 0x0201f800, 0x0010513b, 0x04020004, | ||
2400 | 0x4a034209, 0x00000004, 0x0401f5e6, 0x8c000506, | ||
2401 | 0x04000004, 0x4a034406, 0x00000005, 0x0401f62d, | ||
2402 | 0x4a034209, 0x00000000, 0x0401f5de, 0x59a80037, | ||
2403 | 0x48034407, 0x59a80038, 0x48034209, 0x0401f5d9, | ||
2404 | 0x42007800, 0x0010b8ec, 0x59a00406, 0x4803c857, | ||
2405 | 0x82000c80, 0x00000006, 0x04021622, 0x0c01f001, | ||
2406 | 0x001024f6, 0x001024f7, 0x00102505, 0x00102518, | ||
2407 | 0x00102539, 0x001024f6, 0x0401f61a, 0x836c0580, | ||
2408 | 0x00000000, 0x04000613, 0x59a00a07, 0x59a00407, | ||
2409 | 0x900001c0, 0x80040d40, 0x4807c857, 0x59a00a08, | ||
2410 | 0x59a00408, 0x900001c0, 0x80040d40, 0x4807c857, | ||
2411 | 0x0401f056, 0x836c0580, 0x00000000, 0x04000605, | ||
2412 | 0x59a00407, 0x59a01207, 0x900001c0, 0x80081540, | ||
2413 | 0x59a00408, 0x59a01a08, 0x900001c0, 0x800c1d40, | ||
2414 | 0x42000000, 0x0010c1bf, 0x480fc857, 0x480bc857, | ||
2415 | 0x42000800, 0x00001000, 0x0201f000, 0x00103a28, | ||
2416 | 0x59a00a07, 0x59a00407, 0x900001c0, 0x80041d40, | ||
2417 | 0x820c0c80, 0x0010ab4a, 0x040215f2, 0x820c0c80, | ||
2418 | 0x00100000, 0x040015ef, 0x480fc857, 0x823c7c00, | ||
2419 | 0x00000009, 0x503c0800, 0x800409c0, 0x04000006, | ||
2420 | 0x823c0580, 0x0000000d, 0x040005e6, 0x803c7800, | ||
2421 | 0x0401f7f9, 0x59e41001, 0x82080d00, 0xfffeffcf, | ||
2422 | 0x4807c801, 0x440c7800, 0x46001800, 0x0201f800, | ||
2423 | 0x800c1800, 0x46001800, 0x001005cb, 0x480bc801, | ||
2424 | 0x0401f022, 0x59a01a07, 0x59a00407, 0x900001c0, | ||
2425 | 0x800c1d40, 0x480c7801, 0x59a02208, 0x59a00408, | ||
2426 | 0x900001c0, 0x80102540, 0x48107802, 0x59a00209, | ||
2427 | 0x80000040, 0x040015cb, 0x48007806, 0x80000000, | ||
2428 | 0x48007805, 0x42000800, 0x00004000, 0x40001000, | ||
2429 | 0x0201f800, 0x00106681, 0x80000540, 0x04000003, | ||
2430 | 0x49787801, 0x0401f5bf, 0x40040000, 0x800c1c00, | ||
2431 | 0x040015bc, 0x480c7803, 0x48107804, 0x49787808, | ||
2432 | 0x59a00409, 0x48007807, 0x59e40001, 0x4803c857, | ||
2433 | 0x82000540, 0x00040000, 0x4803c801, 0x0401f561, | ||
2434 | 0x59a80006, 0x48034406, 0x59a80007, 0x48034207, | ||
2435 | 0x59a80008, 0x48034407, 0x0401f55a, 0x0201f800, | ||
2436 | 0x001005d8, 0x4803c856, 0x4a03c013, 0x03800300, | ||
2437 | 0x4a03c014, 0x03800380, 0x59a00c06, 0x82040580, | ||
2438 | 0x000000a0, 0x04000004, 0x82040580, 0x000000a2, | ||
2439 | 0x0402002b, 0x59a0140a, 0x82080480, 0x00000100, | ||
2440 | 0x04021027, 0x59a0020b, 0x8c000500, 0x0402002e, | ||
2441 | 0x59a00a0a, 0x800409c0, 0x04000021, 0x82040480, | ||
2442 | 0x00000041, 0x0402101e, 0x82040c00, 0x00000003, | ||
2443 | 0x82040d00, 0x000000fc, 0x80040904, 0x59a00407, | ||
2444 | 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409, | ||
2445 | 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x0201f800, | ||
2446 | 0x00103a00, 0x04020006, 0x4a034406, 0x00000002, | ||
2447 | 0x4a03c014, 0x03800000, 0x0401f576, 0x832e5c00, | ||
2448 | 0x00000004, 0x412c0000, 0x0201f800, 0x00103a25, | ||
2449 | 0x4a01d809, 0x001025a2, 0x1c01f000, 0x4a03c014, | ||
2450 | 0x03800000, 0x0401f56f, 0x4031d800, 0x58ef400b, | ||
2451 | 0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200, | ||
2452 | 0x0400055c, 0x59a00c06, 0x59a0140a, 0x59a0020b, | ||
2453 | 0x8c000500, 0x04020031, 0x832e5c00, 0x00000004, | ||
2454 | 0x41783800, 0x59a04a0a, 0x401c0000, 0x812c0400, | ||
2455 | 0x50004000, 0x82201d00, 0x000000ff, 0x4c040000, | ||
2456 | 0x0401f8ac, 0x5c000800, 0x0400002d, 0x80244840, | ||
2457 | 0x04000028, 0x80081000, 0x82201d00, 0x0000ff00, | ||
2458 | 0x800c1910, 0x4c040000, 0x0401f8a2, 0x5c000800, | ||
2459 | 0x04000023, 0x80244840, 0x0400001e, 0x80081000, | ||
2460 | 0x82201d00, 0x00ff0000, 0x800c1920, 0x4c040000, | ||
2461 | 0x0401f898, 0x5c000800, 0x04000019, 0x80244840, | ||
2462 | 0x04000014, 0x80081000, 0x82201d00, 0xff000000, | ||
2463 | 0x800c1930, 0x4c040000, 0x0401f88e, 0x5c000800, | ||
2464 | 0x0400000f, 0x80244840, 0x0400000a, 0x80081000, | ||
2465 | 0x801c3800, 0x0401f7d5, 0x59a0020a, 0x82000500, | ||
2466 | 0x000000ff, 0x40001800, 0x0401f882, 0x04000004, | ||
2467 | 0x4a03c014, 0x03800000, 0x0401f4da, 0x4a03c014, | ||
2468 | 0x03800000, 0x0401f523, 0x4803c856, 0x4a03c013, | ||
2469 | 0x03800300, 0x4a03c014, 0x03800380, 0x59a00c06, | ||
2470 | 0x82040580, 0x000000a0, 0x04000004, 0x82040580, | ||
2471 | 0x000000a2, 0x0402006c, 0x59a0140a, 0x82080480, | ||
2472 | 0x00000100, 0x04021068, 0x59a0020b, 0x8c000500, | ||
2473 | 0x0402005c, 0x59a01a0a, 0x800c19c0, 0x04000062, | ||
2474 | 0x820c0480, 0x00000041, 0x0402105f, 0x0201f800, | ||
2475 | 0x00103a00, 0x04020006, 0x4a034406, 0x00000002, | ||
2476 | 0x4a03c014, 0x03800000, 0x0401f502, 0x832e5c00, | ||
2477 | 0x00000004, 0x41783800, 0x59a04a0a, 0x401c0000, | ||
2478 | 0x812c0400, 0x40004000, 0x4c040000, 0x4c080000, | ||
2479 | 0x0401f874, 0x5c001000, 0x5c000800, 0x04000047, | ||
2480 | 0x44144000, 0x80244840, 0x0400002b, 0x80081000, | ||
2481 | 0x4c040000, 0x4c080000, 0x0401f86a, 0x5c001000, | ||
2482 | 0x5c000800, 0x0400003d, 0x50200000, 0x801428d0, | ||
2483 | 0x80140540, 0x44004000, 0x80244840, 0x0400001e, | ||
2484 | 0x80081000, 0x4c040000, 0x4c080000, 0x0401f85d, | ||
2485 | 0x5c001000, 0x5c000800, 0x04000030, 0x50200000, | ||
2486 | 0x801428e0, 0x80140540, 0x44004000, 0x80244840, | ||
2487 | 0x04000011, 0x80081000, 0x4c040000, 0x4c080000, | ||
2488 | 0x0401f850, 0x5c001000, 0x5c000800, 0x04000023, | ||
2489 | 0x50200000, 0x801428f0, 0x80140540, 0x44004000, | ||
2490 | 0x80244840, 0x04000004, 0x80081000, 0x801c3800, | ||
2491 | 0x0401f7cb, 0x59a00a0a, 0x82040c00, 0x00000003, | ||
2492 | 0x82040d00, 0x000000fc, 0x80040904, 0x59a00407, | ||
2493 | 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409, | ||
2494 | 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x4a03c014, | ||
2495 | 0x03800000, 0x412c0000, 0x0201f000, 0x00103a28, | ||
2496 | 0x0401f830, 0x04000005, 0x48174406, 0x4a03c014, | ||
2497 | 0x03800000, 0x0401f463, 0x4a03c014, 0x03800000, | ||
2498 | 0x0401f4ac, 0x4a03c014, 0x03800000, 0x0401f4ad, | ||
2499 | 0x0401f836, 0x04000010, 0x0401f862, 0x0402000f, | ||
2500 | 0x40080800, 0x0401f85f, 0x0402000c, 0x400c0800, | ||
2501 | 0x0401f85c, 0x04020009, 0x0401f84b, 0x42000000, | ||
2502 | 0x00030d40, 0x80000040, 0x040207ff, 0x82000540, | ||
2503 | 0x00000001, 0x1c01f000, 0x0401f843, 0x80000580, | ||
2504 | 0x0401f7fd, 0x0401f821, 0x0400000a, 0x82040d40, | ||
2505 | 0x00000001, 0x0401f84b, 0x04020007, 0x0401f87e, | ||
2506 | 0x0401f898, 0x0401f838, 0x82000540, 0x00000001, | ||
2507 | 0x1c01f000, 0x0401f834, 0x80000580, 0x0401f7fd, | ||
2508 | 0x40041800, 0x0401f811, 0x0400000c, 0x0401f83d, | ||
2509 | 0x0402000b, 0x40080800, 0x0401f83a, 0x04020008, | ||
2510 | 0x400c0800, 0x0401ffe8, 0x04000004, 0x0401f826, | ||
2511 | 0x82000540, 0x00000001, 0x1c01f000, 0x0401f822, | ||
2512 | 0x80000580, 0x0401f7fd, 0x4c040000, 0x42000800, | ||
2513 | 0x00000064, 0x4a03c013, 0x03800300, 0x80040840, | ||
2514 | 0x04000016, 0x59e00013, 0x82000500, 0x00000300, | ||
2515 | 0x82000580, 0x00000300, 0x040207f7, 0x42000000, | ||
2516 | 0x00000064, 0x80000040, 0x040207ff, 0x4a03c013, | ||
2517 | 0x01000000, 0x42000000, 0x00000064, 0x80000040, | ||
2518 | 0x040207ff, 0x4a03c013, 0x02000000, 0x82000540, | ||
2519 | 0x00000001, 0x0401f002, 0x80000580, 0x5c000800, | ||
2520 | 0x1c01f000, 0x4a03c013, 0x01000000, 0x42000000, | ||
2521 | 0x00000064, 0x80000040, 0x040207ff, 0x4a03c013, | ||
2522 | 0x02000200, 0x42000000, 0x00000064, 0x80000040, | ||
2523 | 0x040207ff, 0x4a03c013, 0x01000100, 0x1c01f000, | ||
2524 | 0x42002000, 0x00000008, 0x82040500, 0x00000080, | ||
2525 | 0x800000c2, 0x82000540, 0x01000000, 0x4803c013, | ||
2526 | 0x42000000, 0x00000064, 0x80000040, 0x040207ff, | ||
2527 | 0x4a03c013, 0x02000200, 0x42000000, 0x00000064, | ||
2528 | 0x80000040, 0x040207ff, 0x4a03c013, 0x02000000, | ||
2529 | 0x800408c2, 0x80102040, 0x040207ec, 0x4a03c013, | ||
2530 | 0x01000100, 0x42000000, 0x00000064, 0x80000040, | ||
2531 | 0x040207ff, 0x4a03c013, 0x02000200, 0x42000000, | ||
2532 | 0x00000064, 0x80000040, 0x040207ff, 0x59e00013, | ||
2533 | 0x82000500, 0x00000100, 0x4a03c013, 0x02000000, | ||
2534 | 0x4c040000, 0x42000800, 0x00000064, 0x59e00013, | ||
2535 | 0x82000500, 0x00000100, 0x80040840, 0x04000003, | ||
2536 | 0x80000540, 0x040207fa, 0x80000540, 0x5c000800, | ||
2537 | 0x1c01f000, 0x4a03c013, 0x01000100, 0x42001000, | ||
2538 | 0x00000008, 0x80000d80, 0x42000000, 0x00000064, | ||
2539 | 0x80000040, 0x040207ff, 0x4a03c013, 0x02000200, | ||
2540 | 0x42000000, 0x00000064, 0x80000040, 0x040207ff, | ||
2541 | 0x59e00013, 0x82000500, 0x00000100, 0x80000110, | ||
2542 | 0x800408c2, 0x80040d40, 0x4a03c013, 0x02000000, | ||
2543 | 0x80081040, 0x040207ed, 0x40042800, 0x1c01f000, | ||
2544 | 0x4a03c013, 0x01000100, 0x42000000, 0x00000064, | ||
2545 | 0x80000040, 0x040207ff, 0x4a03c013, 0x02000200, | ||
2546 | 0x42000000, 0x00000064, 0x80000040, 0x040207ff, | ||
2547 | 0x4a03c013, 0x02000000, 0x1c01f000, 0x59a00407, | ||
2548 | 0x59a80837, 0x48035037, 0x48074407, 0x59a00a09, | ||
2549 | 0x82040480, 0x00000014, 0x04021003, 0x42000800, | ||
2550 | 0x000007d0, 0x59a80038, 0x48075038, 0x48034209, | ||
2551 | 0x0201f000, 0x001022c0, 0x836c0580, 0x00000000, | ||
2552 | 0x0400000e, 0x59a80006, 0x59a00c06, 0x80041580, | ||
2553 | 0x82081500, 0x00000040, 0x02000000, 0x001022c0, | ||
2554 | 0x80080580, 0x48035006, 0x0201f800, 0x00100699, | ||
2555 | 0x0201f000, 0x001022c0, 0x59a00406, 0x59a80806, | ||
2556 | 0x48035006, 0x80040d80, 0x8c040d0c, 0x02020800, | ||
2557 | 0x00100699, 0x59a00207, 0x48035007, 0x59a00407, | ||
2558 | 0x48035008, 0x0201f000, 0x001022c0, 0x800409c0, | ||
2559 | 0x04000005, 0x4a034406, 0x00000001, 0x0201f000, | ||
2560 | 0x0010230c, 0x0201f800, 0x0010513b, 0x04020005, | ||
2561 | 0x4a034406, 0x00000016, 0x0201f000, 0x0010230c, | ||
2562 | 0x836c0580, 0x00000003, 0x04000005, 0x4a034406, | ||
2563 | 0x00000007, 0x0201f000, 0x0010230c, 0x59a00c06, | ||
2564 | 0x82040500, 0xffffff00, 0x02020000, 0x00102310, | ||
2565 | 0x82041580, 0x000000ff, 0x04020007, 0x59a80010, | ||
2566 | 0x82000500, 0x000000ff, 0x82001540, 0x0000ff00, | ||
2567 | 0x0401f011, 0x82040400, 0x0010210e, 0x50000000, | ||
2568 | 0x80000110, 0x82000580, 0x00000080, 0x02000000, | ||
2569 | 0x00102310, 0x59a80010, 0x82000500, 0x000000ff, | ||
2570 | 0x80041580, 0x02000000, 0x00102310, 0x840409c0, | ||
2571 | 0x80041540, 0x0201f800, 0x0002075a, 0x04020005, | ||
2572 | 0x4a034406, 0x00000003, 0x0201f000, 0x0010230c, | ||
2573 | 0x48ee6021, 0x480a621c, 0x4a02641c, 0x0000bc09, | ||
2574 | 0x4a026406, 0x00000001, 0x0201f800, 0x00103a00, | ||
2575 | 0x04020007, 0x0201f800, 0x0002077d, 0x4a034406, | ||
2576 | 0x00000002, 0x0201f000, 0x0010230c, 0x497a5a04, | ||
2577 | 0x497a5805, 0x4a025c04, 0x00008000, 0x4a01d809, | ||
2578 | 0x001027f9, 0x492e6008, 0x42027000, 0x00000032, | ||
2579 | 0x0201f000, 0x000207a1, 0x800409c0, 0x04000005, | ||
2580 | 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c, | ||
2581 | 0x0201f800, 0x0010513b, 0x04020005, 0x4a034406, | ||
2582 | 0x00000016, 0x0201f000, 0x0010230c, 0x836c0580, | ||
2583 | 0x00000003, 0x04000005, 0x4a034406, 0x00000007, | ||
2584 | 0x0201f000, 0x0010230c, 0x59a00c06, 0x82040500, | ||
2585 | 0xffffff00, 0x02020000, 0x00102310, 0x82041580, | ||
2586 | 0x000000ff, 0x04020007, 0x59a80010, 0x82000500, | ||
2587 | 0x000000ff, 0x82001540, 0x0000ff00, 0x0401f011, | ||
2588 | 0x82040400, 0x0010210e, 0x50000000, 0x80000110, | ||
2589 | 0x82000580, 0x00000080, 0x02000000, 0x00102310, | ||
2590 | 0x59a80010, 0x82000500, 0x000000ff, 0x80041580, | ||
2591 | 0x02000000, 0x00102310, 0x840409c0, 0x80041540, | ||
2592 | 0x0201f800, 0x0002075a, 0x04020005, 0x4a034406, | ||
2593 | 0x00000003, 0x0201f000, 0x0010230c, 0x48ee6021, | ||
2594 | 0x480a621c, 0x4a02641c, 0x0000bc05, 0x4a026406, | ||
2595 | 0x00000001, 0x0201f800, 0x00103a00, 0x04020007, | ||
2596 | 0x0201f800, 0x0002077d, 0x4a034406, 0x00000002, | ||
2597 | 0x0201f000, 0x0010230c, 0x497a5a04, 0x497a5805, | ||
2598 | 0x4a025c04, 0x00008000, 0x4a01d809, 0x001027f9, | ||
2599 | 0x492e6008, 0x42027000, 0x00000032, 0x0201f000, | ||
2600 | 0x000207a1, 0x592c0005, 0x82000580, 0x01000000, | ||
2601 | 0x02020000, 0x001022c0, 0x4a034406, 0x00000004, | ||
2602 | 0x0201f000, 0x0010230c, 0x497b4406, 0x497b4207, | ||
2603 | 0x0201f800, 0x00103b25, 0x04000008, 0x59a80066, | ||
2604 | 0x59a8086a, 0x80040480, 0x59a80867, 0x48074406, | ||
2605 | 0x80041480, 0x480b4207, 0x49674407, 0x59a8000e, | ||
2606 | 0x48034209, 0x495f4409, 0x59a80020, 0x4803420b, | ||
2607 | 0x0201f000, 0x001022c0, 0x800409c0, 0x04000005, | ||
2608 | 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c, | ||
2609 | 0x59a00406, 0x8c000500, 0x0402000f, 0x59a80069, | ||
2610 | 0x81640480, 0x04001008, 0x59a8000b, 0x81500580, | ||
2611 | 0x04000009, 0x59a8006a, 0x59a81066, 0x80080580, | ||
2612 | 0x04000005, 0x4a034406, 0x00000018, 0x0201f000, | ||
2613 | 0x0010230c, 0x82000540, 0x00000001, 0x0201f800, | ||
2614 | 0x001015fe, 0x0201f800, 0x00103c80, 0x0201f000, | ||
2615 | 0x001022c0, 0x4803c856, 0x800409c0, 0x02020000, | ||
2616 | 0x00102314, 0x59a00406, 0x8c00051e, 0x04000008, | ||
2617 | 0x4803c856, 0x59a0020b, 0x82000480, 0x00000800, | ||
2618 | 0x04001015, 0x0201f000, 0x00102310, 0x4803c856, | ||
2619 | 0x59a0020b, 0x599c0a01, 0x80040480, 0x04021003, | ||
2620 | 0x0201f000, 0x00102310, 0x59a8000e, 0x81640580, | ||
2621 | 0x04000009, 0x4a034406, 0x00000018, 0x0201f000, | ||
2622 | 0x0010230c, 0x4a034406, 0x00000005, 0x0201f000, | ||
2623 | 0x0010230c, 0x59a80026, 0x8c00050a, 0x040007fa, | ||
2624 | 0x59a00406, 0x8c00051e, 0x04000036, 0x0201f800, | ||
2625 | 0x0002075a, 0x040007f4, 0x0201f800, 0x00103a00, | ||
2626 | 0x040007f1, 0x497a5a04, 0x59a00406, 0x4802620a, | ||
2627 | 0x59a00209, 0x4802640a, 0x59a00409, 0x4802620b, | ||
2628 | 0x59a0020d, 0x4802620c, 0x59a0040d, 0x4802640c, | ||
2629 | 0x59a0020e, 0x4802620d, 0x59a0040e, 0x4802640d, | ||
2630 | 0x59a00210, 0x4802620e, 0x59a00410, 0x4802640e, | ||
2631 | 0x59a0020b, 0x82000500, 0x0000fffc, 0x80000104, | ||
2632 | 0x4802640b, 0x0401f9d9, 0x040007d7, 0x48ee6021, | ||
2633 | 0x58ee580d, 0x5930020e, 0x59301c0e, 0x900c19c0, | ||
2634 | 0x800c1d40, 0x5930020c, 0x5930140c, 0x900811c0, | ||
2635 | 0x80081540, 0x592c0a05, 0x832c0400, 0x00000006, | ||
2636 | 0x0201f800, 0x00103a25, 0x4a01d809, 0x001029e5, | ||
2637 | 0x4a034000, 0x00000001, 0x49334001, 0x1c01f000, | ||
2638 | 0x0201f800, 0x00106c55, 0x0201f800, 0x00100ae0, | ||
2639 | 0x0401f86d, 0x497b5057, 0x4201d000, 0x00002710, | ||
2640 | 0x0201f800, 0x001060c6, 0x59c40880, 0x4c040000, | ||
2641 | 0x59c408a3, 0x4c040000, 0x497b4002, 0x0401f876, | ||
2642 | 0x0401f893, 0x4a03a005, 0x10000000, 0x0401f8b4, | ||
2643 | 0x0401f901, 0x04000048, 0x59c80001, 0x800001c0, | ||
2644 | 0x040007fc, 0x59c80018, 0x82000500, 0xf0000000, | ||
2645 | 0x59c00808, 0x82040d00, 0x0fffffff, 0x80040540, | ||
2646 | 0x48038008, 0x0201f800, 0x00100ec1, 0x59c00006, | ||
2647 | 0x4a038006, 0x10000000, 0x59c00009, 0x82000d00, | ||
2648 | 0x00e00000, 0x04020024, 0x4a03900d, 0x00000000, | ||
2649 | 0x59c80020, 0x82000500, 0xff000000, 0x82000580, | ||
2650 | 0x32000000, 0x0402001c, 0x4a03900d, 0x00000001, | ||
2651 | 0x59c80020, 0x82000500, 0xff000000, 0x82000580, | ||
2652 | 0xe1000000, 0x04020014, 0x4a03900d, 0x00000000, | ||
2653 | 0x59c80020, 0x82000500, 0x00ffffff, 0x4a03900d, | ||
2654 | 0x00000000, 0x59c80821, 0x82040d00, 0x00ffffff, | ||
2655 | 0x80040580, 0x04020008, 0x59a80010, 0x80040580, | ||
2656 | 0x04020005, 0x59c40005, 0x82000500, 0x000000f0, | ||
2657 | 0x04000006, 0x4803c856, 0x0401f8d7, 0x4a035057, | ||
2658 | 0x00000001, 0x0401f002, 0x0401f8e1, 0x42000000, | ||
2659 | 0x00000064, 0x80000040, 0x02000800, 0x001005d8, | ||
2660 | 0x59c00807, 0x82040d00, 0x0000000c, 0x040007fa, | ||
2661 | 0x0401f003, 0x4a035057, 0x00000001, 0x0401f8da, | ||
2662 | 0x0201f800, 0x00106f36, 0x0401f818, 0x4201d000, | ||
2663 | 0x000186a0, 0x0201f800, 0x001060c6, 0x5c000800, | ||
2664 | 0x480788a3, 0x5c000800, 0x48078880, 0x59a80057, | ||
2665 | 0x800001c0, 0x02000000, 0x001022c0, 0x0201f000, | ||
2666 | 0x00102318, 0x599c0201, 0x48035059, 0x41780800, | ||
2667 | 0x42001000, 0x00003b10, 0x0201f800, 0x001066a0, | ||
2668 | 0x480b505a, 0x1c01f000, 0x0201f800, 0x00106c4b, | ||
2669 | 0x59b800ea, 0x82000500, 0x00000007, 0x82000580, | ||
2670 | 0x00000003, 0x04020003, 0x4a0370e8, 0x00000001, | ||
2671 | 0x1c01f000, 0x42038000, 0x00007700, 0x4a038006, | ||
2672 | 0x30000000, 0x59c00007, 0x8c00050a, 0x040207fe, | ||
2673 | 0x59c00006, 0x59a00209, 0x59a00c09, 0x900409c0, | ||
2674 | 0x80040d40, 0x48078001, 0x59a0020e, 0x59a00c0e, | ||
2675 | 0x900409c0, 0x80040d40, 0x48078000, 0x59a0020b, | ||
2676 | 0x82000500, 0x0000fffc, 0x48038002, 0x48038003, | ||
2677 | 0x48038005, 0x497b9009, 0x59e00003, 0x82000540, | ||
2678 | 0x00008060, 0x4803c003, 0x1c01f000, 0x41780800, | ||
2679 | 0x8007a0ca, 0x83d3a400, 0x00007600, 0x42000800, | ||
2680 | 0x00000040, 0x0201f800, 0x00101345, 0x4a03a00a, | ||
2681 | 0x00000001, 0x4a03a005, 0x20000000, 0x59d00006, | ||
2682 | 0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a, | ||
2683 | 0x040207fe, 0x59d00005, 0x59a00210, 0x59a00c10, | ||
2684 | 0x900409c0, 0x80040d40, 0x4807a001, 0x59a0020d, | ||
2685 | 0x59a00c0d, 0x900409c0, 0x80040d40, 0x4807a000, | ||
2686 | 0x59a0020b, 0x82000500, 0x0000fffc, 0x4803a003, | ||
2687 | 0x4803a002, 0x4803a008, 0x1c01f000, 0x59a00002, | ||
2688 | 0x4803c857, 0x800001c0, 0x0402004a, 0x59a8005a, | ||
2689 | 0x48038880, 0x59c400a3, 0x82000540, 0x00002008, | ||
2690 | 0x8400053a, 0x480388a3, 0x59c40008, 0x8400054e, | ||
2691 | 0x82000500, 0xffffffe1, 0x48038808, 0x59c80040, | ||
2692 | 0x84000534, 0x48039040, 0x0401f902, 0x04020013, | ||
2693 | 0x59a80010, 0x800000d0, 0x82000540, 0x00000011, | ||
2694 | 0x48039120, 0x59a80010, 0x82000500, 0x00ffffff, | ||
2695 | 0x82000540, 0x32000000, 0x48039121, 0x4a039123, | ||
2696 | 0xe1290008, 0x59a80010, 0x82000500, 0x00ffffff, | ||
2697 | 0x48039122, 0x0401f016, 0x59a80010, 0x82000500, | ||
2698 | 0x000000ff, 0x900009c0, 0x840001c0, 0x80040540, | ||
2699 | 0x82000540, 0x00000000, 0x48039120, 0x59a80010, | ||
2700 | 0x82000500, 0x000000ff, 0x82000540, 0x01000000, | ||
2701 | 0x48039121, 0x4a039123, 0x08210008, 0x59a80010, | ||
2702 | 0x82000500, 0x000000ff, 0x48039122, 0x497b9124, | ||
2703 | 0x59a80c5b, 0x80040800, 0x4807545b, 0x900409c0, | ||
2704 | 0x82040540, 0x0000aaaa, 0x48039125, 0x497b9126, | ||
2705 | 0x497b9127, 0x0401f8cf, 0x04020004, 0x4a039100, | ||
2706 | 0x0000e980, 0x0401f003, 0x4a039100, 0x0000e9a0, | ||
2707 | 0x1c01f000, 0x82000540, 0x00000001, 0x0402500d, | ||
2708 | 0x4203e000, 0x80000000, 0x40e81000, 0x41780800, | ||
2709 | 0x42000000, 0x00000064, 0x0201f800, 0x001066a0, | ||
2710 | 0x59940024, 0x80080400, 0x48032824, 0x80000580, | ||
2711 | 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, | ||
2712 | 0x4d140000, 0x417a3000, 0x0201f800, 0x001070d8, | ||
2713 | 0x0201f800, 0x00106dc3, 0x5c022800, 0x5c034800, | ||
2714 | 0x5c03a000, 0x5c032000, 0x1c01f000, 0x59c80007, | ||
2715 | 0x8c000500, 0x04000003, 0x4a03900d, 0x00000030, | ||
2716 | 0x1c01f000, 0x4a038805, 0x00020000, 0x42000800, | ||
2717 | 0x0000003c, 0x0201f800, 0x00101345, 0x4a038891, | ||
2718 | 0x0000ffff, 0x59c80035, 0x48039035, 0x4a03900d, | ||
2719 | 0x00000040, 0x42038000, 0x00007700, 0x0201f800, | ||
2720 | 0x00100ec1, 0x42038000, 0x00007720, 0x0201f800, | ||
2721 | 0x00100ec1, 0x4a03a005, 0x20000000, 0x4a03a005, | ||
2722 | 0x30000000, 0x59d00806, 0x8c040d0a, 0x040207fe, | ||
2723 | 0x1c01f000, 0x4d300000, 0x4031d800, 0x58ef400b, | ||
2724 | 0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200, | ||
2725 | 0x5c026000, 0x02000000, 0x00102304, 0x4d300000, | ||
2726 | 0x59a26001, 0x59a00000, 0x4000b000, 0x80000000, | ||
2727 | 0x48034000, 0x592c0001, 0x80000540, 0x0400001e, | ||
2728 | 0x40025800, 0x8058b040, 0x040207fb, 0x58ec1007, | ||
2729 | 0x58ec1808, 0x592c0a05, 0x4d2c0000, 0x58ec000d, | ||
2730 | 0x40025800, 0x592c0204, 0x5c025800, 0x82000580, | ||
2731 | 0x00000103, 0x04000008, 0x832c0400, 0x00000006, | ||
2732 | 0x0201f800, 0x00103a25, 0x4a01d809, 0x001029e5, | ||
2733 | 0x0401f007, 0x832c0400, 0x00000006, 0x0201f800, | ||
2734 | 0x00103a28, 0x4a01d809, 0x001029e5, 0x5c026000, | ||
2735 | 0x1c01f000, 0x58ec000d, 0x40025800, 0x592c0204, | ||
2736 | 0x82000580, 0x00000103, 0x04020006, 0x0201f800, | ||
2737 | 0x0002077d, 0x5c026000, 0x0201f000, 0x001022c0, | ||
2738 | 0x58ec000d, 0x40025800, 0x592c0404, 0x8400055e, | ||
2739 | 0x48025c04, 0x42028800, 0x000007fd, 0x42003000, | ||
2740 | 0x00fffffd, 0x0201f800, 0x001045a6, 0x04000003, | ||
2741 | 0x80000580, 0x0401f004, 0x59a26001, 0x0201f800, | ||
2742 | 0x0010937d, 0x5c026000, 0x02000000, 0x0010230c, | ||
2743 | 0x4d300000, 0x4a01d809, 0x00102a38, 0x0401f7dc, | ||
2744 | 0x592c0005, 0x82000580, 0x01000000, 0x02000000, | ||
2745 | 0x00102318, 0x4d300000, 0x59a26001, 0x5930020b, | ||
2746 | 0x59301c0a, 0x900001c0, 0x800c1d40, 0x5930040d, | ||
2747 | 0x5930120d, 0x900001c0, 0x80081540, 0x592c0a05, | ||
2748 | 0x832c0400, 0x00000006, 0x0201f800, 0x00103a28, | ||
2749 | 0x4a01d809, 0x001029e5, 0x4a034000, 0x00000001, | ||
2750 | 0x5c026000, 0x1c01f000, 0x4933c857, 0x4c300000, | ||
2751 | 0x5930040b, 0x82000c80, 0x0000000e, 0x04001004, | ||
2752 | 0x4a025a05, 0x0000000e, 0x0401f003, 0x48025a05, | ||
2753 | 0x0401f00c, 0x800409c0, 0x0400000a, 0x4c040000, | ||
2754 | 0x0201f800, 0x00103a00, 0x5c000800, 0x04000003, | ||
2755 | 0x40040000, 0x0401f7f0, 0x80000580, 0x0401f003, | ||
2756 | 0x82000540, 0x00000001, 0x5c006000, 0x1c01f000, | ||
2757 | 0x59a00206, 0x82000580, 0x00000044, 0x1c01f000, | ||
2758 | 0x4807c857, 0x800409c0, 0x0400000c, 0x0201f800, | ||
2759 | 0x00101650, 0x04020009, 0x42000000, 0x00000002, | ||
2760 | 0x0201f800, 0x0010188c, 0x42000000, 0x00000002, | ||
2761 | 0x0201f800, 0x00101821, 0x59a00406, 0x82000500, | ||
2762 | 0x00000007, 0x0c01f001, 0x00102a8c, 0x00102aa1, | ||
2763 | 0x00102ab7, 0x00102a8a, 0x00102a8a, 0x00102a8a, | ||
2764 | 0x00102a8a, 0x00102a8a, 0x0201f000, 0x00102310, | ||
2765 | 0x42000800, 0x000000c0, 0x0201f800, 0x0010193f, | ||
2766 | 0x82040540, 0x00000002, 0x42000800, 0x000000c0, | ||
2767 | 0x0201f800, 0x00101944, 0x42000800, 0x00000000, | ||
2768 | 0x0201f800, 0x0010193f, 0x82040540, 0x00000008, | ||
2769 | 0x42000800, 0x00000000, 0x0201f800, 0x00101944, | ||
2770 | 0x0401f00b, 0x42000800, 0x000000c0, 0x0201f800, | ||
2771 | 0x0010193f, 0x82040540, 0x00000001, 0x42000800, | ||
2772 | 0x000000c0, 0x0201f800, 0x00101944, 0x59c80040, | ||
2773 | 0x4c000000, 0x59a80010, 0x4c000000, 0x59c400a3, | ||
2774 | 0x4c000000, 0x59c40008, 0x4c000000, 0x0401f911, | ||
2775 | 0x04000021, 0x0201f800, 0x001005d8, 0x59a80821, | ||
2776 | 0x800409c0, 0x02020000, 0x00102314, 0x0201f800, | ||
2777 | 0x0010513b, 0x04020005, 0x4a034406, 0x00000016, | ||
2778 | 0x0201f000, 0x0010230c, 0x836c0580, 0x00000003, | ||
2779 | 0x02020000, 0x00102314, 0x59c408a4, 0x82040d00, | ||
2780 | 0x0000000f, 0x82040580, 0x00000000, 0x02020000, | ||
2781 | 0x00102314, 0x59c80040, 0x4c000000, 0x59a80010, | ||
2782 | 0x4c000000, 0x59c400a3, 0x4c000000, 0x59c40008, | ||
2783 | 0x4c000000, 0x59c40080, 0x4c000000, 0x59a0020f, | ||
2784 | 0x59a0bc0f, 0x905cb9c0, 0x805cbd40, 0x41784800, | ||
2785 | 0x41785000, 0x41785800, 0x41789000, 0x41789800, | ||
2786 | 0x0401fe21, 0x0201f800, 0x00106c55, 0x0201f800, | ||
2787 | 0x00100ae0, 0x4178c000, 0x497b4002, 0x0401f95c, | ||
2788 | 0x0401f9aa, 0x59a0020c, 0x59a00c0c, 0x80040d40, | ||
2789 | 0x04000002, 0x0401f9fb, 0x0401f9fa, 0x0401fe68, | ||
2790 | 0x8060c1c0, 0x04020014, 0x0401fa98, 0x0401feb2, | ||
2791 | 0x0402000e, 0x0201f800, 0x001018d3, 0x04020008, | ||
2792 | 0x4a034406, 0x00000017, 0x0201f800, 0x0010230c, | ||
2793 | 0x4203e000, 0x50000000, 0x0401f000, 0x42005800, | ||
2794 | 0x0000aaaa, 0x0401f058, 0x59c80001, 0x800001c0, | ||
2795 | 0x040007ee, 0x59c80801, 0x800409c0, 0x04000006, | ||
2796 | 0x0401fa70, 0x40240000, 0x80280540, 0x802c0540, | ||
2797 | 0x0402004d, 0x59a00002, 0x82000580, 0xfeedbeef, | ||
2798 | 0x04000004, 0x42008800, 0x10000000, 0x0401f003, | ||
2799 | 0x42008800, 0x10000004, 0x0401fa19, 0x4a034002, | ||
2800 | 0xfeedbeef, 0x0401fa71, 0x0401fa97, 0x0401fea8, | ||
2801 | 0x59c40005, 0x8c000534, 0x04000004, 0x42005800, | ||
2802 | 0x0000bbbb, 0x0401f038, 0x0401fe83, 0x04020007, | ||
2803 | 0x42005800, 0x0000cccc, 0x485f420f, 0x905cb9c0, | ||
2804 | 0x485f440f, 0x0401f030, 0x59a0040c, 0x800001c0, | ||
2805 | 0x0400000e, 0x59a26000, 0x5930000d, 0x800001c0, | ||
2806 | 0x040207be, 0x59a26001, 0x5930080d, 0x800409c0, | ||
2807 | 0x040207ba, 0x804891c0, 0x040207b8, 0x804c99c0, | ||
2808 | 0x040207b6, 0x0401f87a, 0x805cb840, 0x04000005, | ||
2809 | 0x40240000, 0x80280540, 0x802c0540, 0x0402001a, | ||
2810 | 0x42000000, 0x00030d40, 0x80000040, 0x04020012, | ||
2811 | 0x59c00007, 0x82000500, 0x000501c0, 0x0402000b, | ||
2812 | 0x0201f800, 0x001018d3, 0x04020008, 0x4a034406, | ||
2813 | 0x00000017, 0x0201f800, 0x0010230c, 0x4203e000, | ||
2814 | 0x50000000, 0x0401f000, 0x42005800, 0x0000dddd, | ||
2815 | 0x0401f005, 0x59c00807, 0x82040d00, 0x0000000c, | ||
2816 | 0x040007ea, 0x0401fe5c, 0x59a0040c, 0x800001c0, | ||
2817 | 0x04000002, 0x0401f856, 0x0401fe6b, 0x40240000, | ||
2818 | 0x80280540, 0x802c0540, 0x04020003, 0x805cb9c0, | ||
2819 | 0x04020781, 0x0201f800, 0x00106f36, 0x0401fda3, | ||
2820 | 0x4201d000, 0x000186a0, 0x0201f800, 0x001060c6, | ||
2821 | 0x5c000800, 0x48078880, 0x5c000800, 0x48078808, | ||
2822 | 0x5c000800, 0x480788a3, 0x5c000800, 0x48075010, | ||
2823 | 0x5c000800, 0x48079040, 0x0201f800, 0x00100969, | ||
2824 | 0x59a00406, 0x82000500, 0x00000003, 0x82000580, | ||
2825 | 0x00000002, 0x0400002c, 0x42000800, 0x000000c0, | ||
2826 | 0x0201f800, 0x0010193f, 0x82040500, 0xfffffffc, | ||
2827 | 0x42000800, 0x000000c0, 0x0201f800, 0x00101944, | ||
2828 | 0x42000800, 0x00000000, 0x0201f800, 0x0010193f, | ||
2829 | 0x82040500, 0xfffffff7, 0x42000800, 0x00000000, | ||
2830 | 0x0201f800, 0x00101944, 0x42000800, 0x00000000, | ||
2831 | 0x0201f800, 0x0010193f, 0x82040500, 0xfffffffb, | ||
2832 | 0x42000800, 0x00000000, 0x0201f800, 0x00101944, | ||
2833 | 0x4a0388a7, 0x0000f7f7, 0x42006000, 0xbeffffff, | ||
2834 | 0x42006800, 0x80018000, 0x0201f800, 0x0010427d, | ||
2835 | 0x42006000, 0xfffeffff, 0x41786800, 0x0201f800, | ||
2836 | 0x0010427d, 0x402c0000, 0x80280540, 0x80240540, | ||
2837 | 0x02000000, 0x001022c0, 0x48274406, 0x482b4207, | ||
2838 | 0x482f4407, 0x0201f000, 0x0010231c, 0x59a26000, | ||
2839 | 0x813261c0, 0x0400000e, 0x59325808, 0x812e59c0, | ||
2840 | 0x0400000b, 0x0201f800, 0x0002077d, 0x0201f800, | ||
2841 | 0x001007fd, 0x59a26001, 0x59325808, 0x0201f800, | ||
2842 | 0x0002077d, 0x0201f800, 0x001007fd, 0x1c01f000, | ||
2843 | 0x42000800, 0x000000ef, 0x0201f800, 0x001015eb, | ||
2844 | 0x59c400a3, 0x8400055a, 0x8400053a, 0x480388a3, | ||
2845 | 0x0201f800, 0x0010163b, 0x0402000a, 0x42000000, | ||
2846 | 0x00000001, 0x0201f800, 0x0010188c, 0x42000000, | ||
2847 | 0x00000001, 0x0201f800, 0x00101821, 0x0401f013, | ||
2848 | 0x0201f800, 0x00101642, 0x04020008, 0x41780000, | ||
2849 | 0x0201f800, 0x0010188c, 0x41780000, 0x0201f800, | ||
2850 | 0x00101821, 0x0401f009, 0x42000000, 0x00000002, | ||
2851 | 0x0201f800, 0x0010188c, 0x42000000, 0x00000002, | ||
2852 | 0x0201f800, 0x00101821, 0x42000800, 0x00000000, | ||
2853 | 0x0201f800, 0x0010193f, 0x82040540, 0x00000004, | ||
2854 | 0x42000800, 0x00000000, 0x0201f800, 0x00101944, | ||
2855 | 0x4201d000, 0x00000014, 0x0201f800, 0x0010608e, | ||
2856 | 0x59c40008, 0x8400054e, 0x82000500, 0xffffffe1, | ||
2857 | 0x48038808, 0x4a0388a7, 0x0000f7f7, 0x42001000, | ||
2858 | 0x04000001, 0x0201f800, 0x0010193d, 0x42006000, | ||
2859 | 0xbe20bfff, 0x42006800, 0x80018000, 0x0201f800, | ||
2860 | 0x0010427d, 0x42006000, 0xfffeffff, 0x41786800, | ||
2861 | 0x0201f800, 0x0010427d, 0x4200b000, 0x00001388, | ||
2862 | 0x4201d000, 0x00000014, 0x4c580000, 0x0201f800, | ||
2863 | 0x0010608e, 0x0201f800, 0x001018d3, 0x5c00b000, | ||
2864 | 0x04000004, 0x8058b040, 0x040207f6, 0x0401f025, | ||
2865 | 0x59c40005, 0x8c000534, 0x04020007, 0x59c400a4, | ||
2866 | 0x82000500, 0x0000000f, 0x82000580, 0x00000008, | ||
2867 | 0x0402001c, 0x42006000, 0x00020000, 0x0201f800, | ||
2868 | 0x00104282, 0x4201d000, 0x00000064, 0x0201f800, | ||
2869 | 0x0010608e, 0x42006000, 0xfeffffff, 0x42006800, | ||
2870 | 0x02000000, 0x0201f800, 0x0010427d, 0x42006000, | ||
2871 | 0xfdffffff, 0x41786800, 0x0201f800, 0x0010427d, | ||
2872 | 0x4a038805, 0x04000001, 0x59c400a4, 0x82000500, | ||
2873 | 0x0000000f, 0x82000580, 0x00000000, 0x04000003, | ||
2874 | 0x82000540, 0x00000001, 0x1c01f000, 0x4803c856, | ||
2875 | 0x42038000, 0x00007700, 0x0201f800, 0x00100ec1, | ||
2876 | 0x59c00006, 0x59a0040c, 0x800001c0, 0x0400003f, | ||
2877 | 0x59a03c0c, 0x59a00209, 0x59a01c09, 0x900c19c0, | ||
2878 | 0x800c1d40, 0x59a0020e, 0x59a0240e, 0x901021c0, | ||
2879 | 0x80102540, 0x59a0020b, 0x82000500, 0x0000fffc, | ||
2880 | 0x59a0140b, 0x900811c0, 0x80081540, 0x480b8003, | ||
2881 | 0x0201f800, 0x0002075a, 0x02000800, 0x001005d8, | ||
2882 | 0x49334000, 0x0201f800, 0x001007e4, 0x4a025a04, | ||
2883 | 0x00000018, 0x4a025805, 0x00abcdef, 0x492e6008, | ||
2884 | 0x492e600b, 0x481e600d, 0x4a02600c, 0x00000004, | ||
2885 | 0x832c0400, 0x00000011, 0x4802600a, 0x42001000, | ||
2886 | 0x0000000c, 0x821c0d80, 0x00000001, 0x04000004, | ||
2887 | 0x801c3840, 0x0401f963, 0x0401f004, 0x41783800, | ||
2888 | 0x0401f960, 0x0401f011, 0x821c0c80, 0x00000005, | ||
2889 | 0x04001005, 0x40043800, 0x42001000, 0x0000003c, | ||
2890 | 0x0401f006, 0x80001580, 0x82081400, 0x0000000c, | ||
2891 | 0x801c3840, 0x040207fd, 0x832c0400, 0x00000005, | ||
2892 | 0x0401f950, 0x040207f1, 0x497b9009, 0x59e00003, | ||
2893 | 0x82000540, 0x00008060, 0x4803c003, 0x4a038009, | ||
2894 | 0x00e00000, 0x1c01f000, 0x4803c856, 0x41780800, | ||
2895 | 0x8007a0ca, 0x83d3a400, 0x00007600, 0x42000800, | ||
2896 | 0x00000040, 0x0201f800, 0x00101345, 0x4a03a00a, | ||
2897 | 0x00000001, 0x4a03a005, 0x20000000, 0x59d00006, | ||
2898 | 0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a, | ||
2899 | 0x040207fe, 0x59d00005, 0x59a0020c, 0x800001c0, | ||
2900 | 0x0400003f, 0x59a03a0c, 0x59a00210, 0x59a01c10, | ||
2901 | 0x900c19c0, 0x800c1d40, 0x59a0020d, 0x59a0240d, | ||
2902 | 0x901021c0, 0x80102540, 0x59a0120b, 0x82081500, | ||
2903 | 0x0000fffc, 0x59a0040b, 0x900001c0, 0x80081540, | ||
2904 | 0x480ba003, 0x0201f800, 0x0002075a, 0x02000800, | ||
2905 | 0x001005d8, 0x49334001, 0x0201f800, 0x001007e4, | ||
2906 | 0x4a025a04, 0x00000018, 0x4a025805, 0x00abcdef, | ||
2907 | 0x492e6008, 0x492e600b, 0x481e600d, 0x4a02600c, | ||
2908 | 0x00000004, 0x832c0400, 0x00000011, 0x4802600a, | ||
2909 | 0x42001000, 0x0000000c, 0x821c0d80, 0x00000001, | ||
2910 | 0x04000004, 0x801c3840, 0x0401f906, 0x0401f004, | ||
2911 | 0x41783800, 0x0401f903, 0x0401f011, 0x821c0c80, | ||
2912 | 0x00000005, 0x04001005, 0x40043800, 0x42001000, | ||
2913 | 0x0000003c, 0x0401f006, 0x80001580, 0x82081400, | ||
2914 | 0x0000000c, 0x801c3840, 0x040207fd, 0x832c0400, | ||
2915 | 0x00000005, 0x0401f8f3, 0x040207f1, 0x1c01f000, | ||
2916 | 0x4803c856, 0x59a0020c, 0x800001c0, 0x04000024, | ||
2917 | 0x824c0580, 0x00000002, 0x04000040, 0x59a26001, | ||
2918 | 0x5930380d, 0x801c39c0, 0x0400003c, 0x801c3840, | ||
2919 | 0x481e600d, 0x5932580b, 0x5930080a, 0x50042000, | ||
2920 | 0x58041801, 0x58041002, 0x82081500, 0xfffffffc, | ||
2921 | 0x5930000c, 0x80000000, 0x82000d80, 0x00000005, | ||
2922 | 0x04020009, 0x497a600c, 0x592e5801, 0x812e59c0, | ||
2923 | 0x0400001a, 0x492e600b, 0x832c0c00, 0x00000005, | ||
2924 | 0x0401f005, 0x4802600c, 0x5930080a, 0x82040c00, | ||
2925 | 0x00000003, 0x4806600a, 0x0401f010, 0x59a0120b, | ||
2926 | 0x82081500, 0x0000fffc, 0x59a0040b, 0x900001c0, | ||
2927 | 0x80081540, 0x480ba003, 0x59a0020d, 0x59a0240d, | ||
2928 | 0x901021c0, 0x80102540, 0x59a00210, 0x59a01c10, | ||
2929 | 0x900c19c0, 0x800c1d40, 0x4201d000, 0x00003a98, | ||
2930 | 0x0201f800, 0x001060c6, 0x480ba002, 0x59a80059, | ||
2931 | 0x4803a008, 0x4813a000, 0x480fa001, 0x4a03a005, | ||
2932 | 0x10000000, 0x02005800, 0x001005d8, 0x804c9800, | ||
2933 | 0x82000540, 0x00000001, 0x1c01f000, 0x4847c857, | ||
2934 | 0x59a0040c, 0x800001c0, 0x04000024, 0x82480580, | ||
2935 | 0x00000002, 0x04000042, 0x59a26000, 0x5930380d, | ||
2936 | 0x801c39c0, 0x0400003e, 0x801c3840, 0x481e600d, | ||
2937 | 0x5932580b, 0x5930080a, 0x50042000, 0x58041801, | ||
2938 | 0x58041002, 0x82081500, 0xfffffffc, 0x5930000c, | ||
2939 | 0x80000000, 0x82000d80, 0x00000005, 0x04020009, | ||
2940 | 0x497a600c, 0x592e5801, 0x812e59c0, 0x0400001d, | ||
2941 | 0x492e600b, 0x832c0c00, 0x00000005, 0x0401f005, | ||
2942 | 0x4802600c, 0x5930080a, 0x82040c00, 0x00000003, | ||
2943 | 0x4806600a, 0x0401f013, 0x82440580, 0x10000000, | ||
2944 | 0x0402001f, 0x59a0020e, 0x59a0240e, 0x901021c0, | ||
2945 | 0x80102540, 0x59a00209, 0x59a01c09, 0x900c19c0, | ||
2946 | 0x800c1d40, 0x59a0020b, 0x82000500, 0x0000fffc, | ||
2947 | 0x59a0140b, 0x900811c0, 0x80081540, 0x480b8003, | ||
2948 | 0x48138000, 0x480f8001, 0x480b8002, 0x59c80018, | ||
2949 | 0x82000500, 0xf0000000, 0x59c02008, 0x82102500, | ||
2950 | 0x0fffffff, 0x80100540, 0x48038008, 0x48478006, | ||
2951 | 0x80489000, 0x8260c540, 0x00000001, 0x1c01f000, | ||
2952 | 0x59c00009, 0x4803c857, 0x82000d00, 0x00e00000, | ||
2953 | 0x0400000d, 0x485f420f, 0x905cb9c0, 0x485f440f, | ||
2954 | 0x8c00052e, 0x04000002, 0x80285000, 0x8c00052c, | ||
2955 | 0x04000002, 0x80244800, 0x8c00052a, 0x04000002, | ||
2956 | 0x802c5800, 0x1c01f000, 0x59a0020c, 0x800001c0, | ||
2957 | 0x04000024, 0x59d00806, 0x4807c857, 0x8c040d3e, | ||
2958 | 0x04000020, 0x4a03a005, 0x20000000, 0x4a03a005, | ||
2959 | 0x30000000, 0x59d00806, 0x8c040d0a, 0x040207fe, | ||
2960 | 0x824c0480, 0x00000003, 0x02021800, 0x001005d8, | ||
2961 | 0x404c0000, 0x0c01f001, 0x00102da1, 0x00102da3, | ||
2962 | 0x00102da9, 0x0201f800, 0x001005d8, 0x80000040, | ||
2963 | 0x40009800, 0x0401ff43, 0x0400000a, 0x0401ff41, | ||
2964 | 0x0401f008, 0x80000040, 0x40009800, 0x59d00806, | ||
2965 | 0x4807c857, 0x8c040d3e, 0x040207e3, 0x0401ff39, | ||
2966 | 0x1c01f000, 0x59a0040c, 0x800001c0, 0x04000024, | ||
2967 | 0x59c00807, 0x4807c857, 0x8c040d3e, 0x04000020, | ||
2968 | 0x59c00807, 0x4a038006, 0x20000000, 0x82480480, | ||
2969 | 0x00000003, 0x02021800, 0x001005d8, 0x40480000, | ||
2970 | 0x0c01f001, 0x00102dc4, 0x00102dc6, 0x00102dce, | ||
2971 | 0x0201f800, 0x001005d8, 0x80000040, 0x40009000, | ||
2972 | 0x42008800, 0x10000004, 0x0401ff65, 0x0400000c, | ||
2973 | 0x0401ff63, 0x0401f00a, 0x80000040, 0x40009000, | ||
2974 | 0x59c00807, 0x4807c857, 0x8c040d3e, 0x040207e5, | ||
2975 | 0x42008800, 0x10000004, 0x0401ff59, 0x1c01f000, | ||
2976 | 0x492fc857, 0x4000a800, 0x4a03b805, 0x20000000, | ||
2977 | 0x59dc0006, 0x4a03b805, 0x30000000, 0x4813b800, | ||
2978 | 0x480fb801, 0x480bb802, 0x4857b803, 0x4a03b805, | ||
2979 | 0x30000002, 0x59dc0006, 0x4a03b805, 0x70000001, | ||
2980 | 0x59dc0006, 0x4a03b805, 0x10000000, 0x59dc0006, | ||
2981 | 0x8c00053e, 0x040007fe, 0x4a03b805, 0x20000000, | ||
2982 | 0x59dc0006, 0x59dc2000, 0x59dc1801, 0x801c39c0, | ||
2983 | 0x0400000a, 0x4d2c0000, 0x0201f800, 0x001007e4, | ||
2984 | 0x5c000800, 0x02000800, 0x001005d8, 0x4a025a04, | ||
2985 | 0x0000000a, 0x492c0801, 0x1c01f000, 0x42006000, | ||
2986 | 0x00102fb2, 0x0201f800, 0x00101345, 0x4a03902c, | ||
2987 | 0x00200000, 0x4200b000, 0x000001f4, 0x59c8002c, | ||
2988 | 0x8c00052c, 0x04000007, 0x8058b040, 0x040207fc, | ||
2989 | 0x42000000, 0x00004003, 0x41781000, 0x0401f196, | ||
2990 | 0x50301000, 0x41784800, 0x4a03902d, 0x00008000, | ||
2991 | 0x4200b000, 0x000001f4, 0x59c8002c, 0x8c000534, | ||
2992 | 0x04000007, 0x8058b040, 0x040207fc, 0x42000000, | ||
2993 | 0x00004003, 0x41781000, 0x0401f187, 0x0401f8f8, | ||
2994 | 0x80244800, 0x40240000, 0x82000580, 0x000003b1, | ||
2995 | 0x040207fb, 0x0401f988, 0x41784800, 0x0401f920, | ||
2996 | 0x80244800, 0x40240000, 0x82000580, 0x000003b1, | ||
2997 | 0x040207fb, 0x80306000, 0x82300580, 0x00102fb4, | ||
2998 | 0x040207e0, 0x59a80863, 0x800409c0, 0x04000007, | ||
2999 | 0x42000000, 0x00004004, 0x42001000, 0x00000002, | ||
3000 | 0x59a81862, 0x0401f16c, 0x42006000, 0x00102fb2, | ||
3001 | 0x4a035064, 0x00000004, 0x50301000, 0x41784800, | ||
3002 | 0x4a03902d, 0x00004000, 0x4200b000, 0x000001f4, | ||
3003 | 0x59c8002c, 0x8c000532, 0x04000007, 0x8058b040, | ||
3004 | 0x040207fc, 0x42000000, 0x00004003, 0x41781000, | ||
3005 | 0x0401f159, 0x0401f8ca, 0x80244800, 0x40240000, | ||
3006 | 0x82000580, 0x00000154, 0x040207fb, 0x0401f95a, | ||
3007 | 0x41784800, 0x0401f8f2, 0x80244800, 0x40240000, | ||
3008 | 0x82000580, 0x00000154, 0x040207fb, 0x80306000, | ||
3009 | 0x82300580, 0x00102fb4, 0x040207e0, 0x59a80863, | ||
3010 | 0x800409c0, 0x04000007, 0x42000000, 0x00004004, | ||
3011 | 0x42001000, 0x00000004, 0x59a81862, 0x0401f13e, | ||
3012 | 0x42006000, 0x00102fb2, 0x497b5064, 0x50301000, | ||
3013 | 0x41784800, 0x4a03902d, 0x00001000, 0x4200b000, | ||
3014 | 0x000001f4, 0x59c8002c, 0x8c00052e, 0x04000007, | ||
3015 | 0x8058b040, 0x040207fc, 0x42000000, 0x00004003, | ||
3016 | 0x41781000, 0x0401f12c, 0x0401f89d, 0x80244800, | ||
3017 | 0x40240000, 0x82000580, 0x00000088, 0x040207fb, | ||
3018 | 0x0401f92d, 0x41784800, 0x0401f8c5, 0x80244800, | ||
3019 | 0x40240000, 0x82000580, 0x00000088, 0x040207fb, | ||
3020 | 0x80306000, 0x82300580, 0x00102fb4, 0x040207e0, | ||
3021 | 0x59a80863, 0x800409c0, 0x04000007, 0x42000000, | ||
3022 | 0x00004004, 0x42001000, 0x00000001, 0x59a81862, | ||
3023 | 0x0401f111, 0x42006000, 0x00102fb2, 0x50301000, | ||
3024 | 0x41784800, 0x4a03902d, 0x00000800, 0x0401f87c, | ||
3025 | 0x80244800, 0x40240000, 0x82000580, 0x00000018, | ||
3026 | 0x040207fb, 0x0401f90c, 0x41784800, 0x0401f8a4, | ||
3027 | 0x80244800, 0x40240000, 0x82000580, 0x00000018, | ||
3028 | 0x040207fb, 0x80306000, 0x82300580, 0x00102fb4, | ||
3029 | 0x040207eb, 0x59a80863, 0x800409c0, 0x04000007, | ||
3030 | 0x42000000, 0x00004004, 0x42001000, 0x00000010, | ||
3031 | 0x59a81862, 0x0401f0f0, 0x42006000, 0x00102fb2, | ||
3032 | 0x50301000, 0x41784800, 0x4a03902d, 0x00000400, | ||
3033 | 0x0401f85b, 0x80244800, 0x40240000, 0x82000580, | ||
3034 | 0x00000088, 0x040207fb, 0x0401f8eb, 0x41784800, | ||
3035 | 0x0401f883, 0x80244800, 0x40240000, 0x82000580, | ||
3036 | 0x00000088, 0x040207fb, 0x80306000, 0x82300580, | ||
3037 | 0x00102fb4, 0x040207eb, 0x59a80863, 0x800409c0, | ||
3038 | 0x04000007, 0x42000000, 0x00004004, 0x42001000, | ||
3039 | 0x00000008, 0x59a81862, 0x0401f0cf, 0x42006000, | ||
3040 | 0x00102fb2, 0x50301000, 0x41784800, 0x4a03902d, | ||
3041 | 0x00002000, 0x4200b000, 0x000001f4, 0x59c8002c, | ||
3042 | 0x8c000530, 0x04000007, 0x8058b040, 0x040207fc, | ||
3043 | 0x42000000, 0x00004003, 0x41781000, 0x0401f0be, | ||
3044 | 0x59c8002c, 0x82000500, 0xffe0ffff, 0x82080d00, | ||
3045 | 0x001f0000, 0x80040540, 0x4803902c, 0x0401f828, | ||
3046 | 0x80244800, 0x40240000, 0x82000580, 0x00000110, | ||
3047 | 0x040207fb, 0x0401f8b8, 0x41784800, 0x0401f850, | ||
3048 | 0x59c80034, 0x82080d00, 0x001f0000, 0x82000500, | ||
3049 | 0x001f0000, 0x80040580, 0x04000006, 0x59a80063, | ||
3050 | 0x80000000, 0x48035063, 0x40240000, 0x48035062, | ||
3051 | 0x80244800, 0x40240000, 0x82000580, 0x00000110, | ||
3052 | 0x040207ef, 0x80306000, 0x82300580, 0x00102fb4, | ||
3053 | 0x040207cd, 0x59a80863, 0x800409c0, 0x04000006, | ||
3054 | 0x42000000, 0x00004004, 0x42001000, 0x00000020, | ||
3055 | 0x59a81862, 0x0201f000, 0x001022c0, 0x59c8002c, | ||
3056 | 0x82000500, 0xffff0000, 0x82080d00, 0x0000ffff, | ||
3057 | 0x80040540, 0x4803902c, 0x40080000, 0x48039028, | ||
3058 | 0x48039029, 0x59a80064, 0x82000580, 0x00000004, | ||
3059 | 0x04000004, 0x40080000, 0x4803902a, 0x4803902b, | ||
3060 | 0x59c8082d, 0x82040d00, 0xfffffc00, 0x40240000, | ||
3061 | 0x80040d40, 0x4807902d, 0x4200b000, 0x000001f4, | ||
3062 | 0x59c8002c, 0x82000500, 0x18000000, 0x04000007, | ||
3063 | 0x8058b040, 0x040207fb, 0x42000000, 0x00004003, | ||
3064 | 0x41781000, 0x0401f06c, 0x4a03902e, 0x00000001, | ||
3065 | 0x4200b000, 0x000001f4, 0x59c8002e, 0x8c000500, | ||
3066 | 0x04000006, 0x8058b040, 0x040207fc, 0x42000000, | ||
3067 | 0x00004003, 0x0401f060, 0x1c01f000, 0x41783800, | ||
3068 | 0x59c8082d, 0x82040d00, 0xfffffc00, 0x40240000, | ||
3069 | 0x80040d40, 0x4807902d, 0x4200b000, 0x000001f4, | ||
3070 | 0x59c8002c, 0x82000500, 0x18000000, 0x04000007, | ||
3071 | 0x8058b040, 0x040207fb, 0x42000000, 0x00004003, | ||
3072 | 0x41781000, 0x0401f04c, 0x59c80030, 0x59c80830, | ||
3073 | 0x80040580, 0x040207fd, 0x40041800, 0x59c80031, | ||
3074 | 0x59c80831, 0x80040580, 0x040207fd, 0x40042000, | ||
3075 | 0x59c80032, 0x59c80832, 0x80040580, 0x040207fd, | ||
3076 | 0x40042800, 0x59c80033, 0x59c80833, 0x80040580, | ||
3077 | 0x040207fd, 0x40043000, 0x400c0000, 0x80080580, | ||
3078 | 0x04000002, 0x801c3800, 0x40100000, 0x80080580, | ||
3079 | 0x04000002, 0x801c3800, 0x59a80064, 0x82000580, | ||
3080 | 0x00000004, 0x04000009, 0x40140000, 0x80080580, | ||
3081 | 0x04000002, 0x801c3800, 0x40180000, 0x80080580, | ||
3082 | 0x04000002, 0x801c3800, 0x59a80064, 0x82000580, | ||
3083 | 0x00000004, 0x0400000d, 0x59c80034, 0x59c80834, | ||
3084 | 0x80040580, 0x040207fd, 0x82040500, 0x0000ffff, | ||
3085 | 0x82080d00, 0x0000ffff, 0x80040580, 0x0400000e, | ||
3086 | 0x801c3800, 0x0401f00c, 0x59c80034, 0x59c80834, | ||
3087 | 0x80040580, 0x040207fd, 0x82040500, 0x000000ff, | ||
3088 | 0x82080d00, 0x000000ff, 0x80040580, 0x04000002, | ||
3089 | 0x801c3800, 0x801c39c0, 0x04000006, 0x59a80063, | ||
3090 | 0x801c0400, 0x48035063, 0x40240000, 0x48035062, | ||
3091 | 0x1c01f000, 0x48034206, 0x48074406, 0x480b4207, | ||
3092 | 0x480f4407, 0x48134208, 0x48174408, 0x0201f000, | ||
3093 | 0x001022c3, 0x42000000, 0x00600000, 0x80000040, | ||
3094 | 0x040207ff, 0x1c01f000, 0x5a5a5a5a, 0xa5a5a5a5, | ||
3095 | 0x59a00c0a, 0x800409c0, 0x02000000, 0x00102310, | ||
3096 | 0x82040480, 0x00000021, 0x02021000, 0x00102310, | ||
3097 | 0x82040480, 0x00000011, 0x04001003, 0x42000800, | ||
3098 | 0x00000010, 0x59a00208, 0x59a01407, 0x900811c0, | ||
3099 | 0x80081540, 0x59a00207, 0x59a01c06, 0x900c19c0, | ||
3100 | 0x800c1d40, 0x0201f800, 0x00103a00, 0x04000006, | ||
3101 | 0x0201f800, 0x00103a25, 0x4a01d809, 0x00102fd5, | ||
3102 | 0x1c01f000, 0x4a034406, 0x00000002, 0x0201f000, | ||
3103 | 0x0010230c, 0x4031d800, 0x58ef400b, 0x58ec0002, | ||
3104 | 0x82000580, 0x00000200, 0x02000000, 0x00102304, | ||
3105 | 0x59a00c0a, 0x82040480, 0x00000011, 0x04001003, | ||
3106 | 0x42000800, 0x00000010, 0x59a0040b, 0x59a0120b, | ||
3107 | 0x900811c0, 0x80081540, 0x59a00209, 0x59a01c08, | ||
3108 | 0x900c19c0, 0x800c1d40, 0x58ec0003, 0x0201f800, | ||
3109 | 0x00103a28, 0x4a01d809, 0x00102ff0, 0x1c01f000, | ||
3110 | 0x4031d800, 0x58ef400b, 0x58ec0002, 0x82000580, | ||
3111 | 0x00000200, 0x02000000, 0x00102304, 0x59a00c0a, | ||
3112 | 0x82040480, 0x00000011, 0x02001000, 0x001022c0, | ||
3113 | 0x82040c80, 0x00000010, 0x59a00208, 0x59a01407, | ||
3114 | 0x900811c0, 0x80081540, 0x59a00207, 0x59a01c06, | ||
3115 | 0x900c19c0, 0x800c1d40, 0x82081400, 0x00000040, | ||
3116 | 0x58ec0003, 0x0201f800, 0x00103a25, 0x4a01d809, | ||
3117 | 0x0010300e, 0x1c01f000, 0x4031d800, 0x58ef400b, | ||
3118 | 0x58ec0002, 0x82000580, 0x00000200, 0x02000000, | ||
3119 | 0x00102304, 0x59a0040a, 0x82000c80, 0x00000010, | ||
3120 | 0x59a0040b, 0x59a0120b, 0x900811c0, 0x80081540, | ||
3121 | 0x59a00209, 0x59a01c08, 0x900c19c0, 0x800c1d40, | ||
3122 | 0x82081400, 0x00000040, 0x58ec0003, 0x0201f800, | ||
3123 | 0x00103a28, 0x4a01d809, 0x001022b9, 0x1c01f000, | ||
3124 | 0x48efc857, 0x59a00207, 0x59a01407, 0x900001c0, | ||
3125 | 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0, | ||
3126 | 0x800c1d40, 0x59a00406, 0x48034000, 0x480b4001, | ||
3127 | 0x480f4002, 0x0201f800, 0x00103a00, 0x04020005, | ||
3128 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3129 | 0x42000800, 0x00000010, 0x0201f800, 0x00103a25, | ||
3130 | 0x4a01d809, 0x00103043, 0x1c01f000, 0x4031d800, | ||
3131 | 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580, | ||
3132 | 0x00000200, 0x02000000, 0x00102304, 0x48efc857, | ||
3133 | 0x49a3c857, 0x492fc857, 0x592c0a04, 0x80040910, | ||
3134 | 0x04020005, 0x4a034406, 0x00000019, 0x0201f000, | ||
3135 | 0x0010230c, 0x4805d80c, 0x0401f00a, 0x4031d800, | ||
3136 | 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200, | ||
3137 | 0x02000000, 0x00102304, 0x48efc857, 0x49a3c857, | ||
3138 | 0x48efc857, 0x49a3c857, 0x58ec000c, 0x80000040, | ||
3139 | 0x04000012, 0x4801d80c, 0x0201f800, 0x00103a00, | ||
3140 | 0x04020005, 0x4a034406, 0x00000002, 0x0201f000, | ||
3141 | 0x0010230c, 0x42000800, 0x00000010, 0x58ec1007, | ||
3142 | 0x58ec1808, 0x0201f800, 0x00103a25, 0x4a01d809, | ||
3143 | 0x00103057, 0x1c01f000, 0x58ee580d, 0x48efc857, | ||
3144 | 0x49a3c857, 0x492fc857, 0x492f3006, 0x592c0404, | ||
3145 | 0x8400055e, 0x48025c04, 0x4a01d809, 0x00103081, | ||
3146 | 0x1c01f000, 0x58ee580d, 0x48efc857, 0x49a3c857, | ||
3147 | 0x492fc857, 0x592c0404, 0x8400051e, 0x48025c04, | ||
3148 | 0x59a00000, 0x59a01001, 0x59a01802, 0x80081400, | ||
3149 | 0x820c1c40, 0x00000000, 0x832c0400, 0x00000004, | ||
3150 | 0x42000800, 0x00000010, 0x0201f000, 0x00103a28, | ||
3151 | 0x800409c0, 0x04000005, 0x4a034406, 0x00000001, | ||
3152 | 0x0201f000, 0x0010230c, 0x836c0580, 0x00000003, | ||
3153 | 0x04000005, 0x4a034406, 0x00000007, 0x0201f000, | ||
3154 | 0x0010230c, 0x59a0320b, 0x82183500, 0x000000ff, | ||
3155 | 0x59a28c06, 0x0201f800, 0x00020245, 0x02020000, | ||
3156 | 0x00102310, 0x83440580, 0x000007fd, 0x04000008, | ||
3157 | 0x0201f800, 0x001049e7, 0x04000005, 0x4a034406, | ||
3158 | 0x00000009, 0x0201f000, 0x0010230c, 0x0201f800, | ||
3159 | 0x00103a00, 0x04020005, 0x4a034406, 0x00000002, | ||
3160 | 0x0201f000, 0x0010230c, 0x801831c0, 0x0400000a, | ||
3161 | 0x412c0800, 0x0201f800, 0x00103a00, 0x04020005, | ||
3162 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3163 | 0x40065800, 0x4a025c04, 0x00008000, 0x497a5a04, | ||
3164 | 0x0201f800, 0x00109100, 0x04020005, 0x4a034406, | ||
3165 | 0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809, | ||
3166 | 0x001030d2, 0x1c01f000, 0x592c0005, 0x82000580, | ||
3167 | 0x01000000, 0x04020005, 0x4a034406, 0x00000004, | ||
3168 | 0x0201f000, 0x0010230c, 0x592c0406, 0x82002d00, | ||
3169 | 0x0000ff00, 0x82000500, 0x000000ff, 0x80000904, | ||
3170 | 0x80040800, 0x82040480, 0x00000006, 0x04001003, | ||
3171 | 0x42000800, 0x00000005, 0x832ca400, 0x00000006, | ||
3172 | 0x4050a800, 0x4004b000, 0x0201f800, 0x0010ab28, | ||
3173 | 0x59a00407, 0x59a01207, 0x900811c0, 0x80081540, | ||
3174 | 0x59a00409, 0x59a01a09, 0x900c19c0, 0x800c1d40, | ||
3175 | 0x832c0400, 0x00000006, 0x4c140000, 0x0201f800, | ||
3176 | 0x00103a28, 0x5c002800, 0x801429c0, 0x04000003, | ||
3177 | 0x4a01d809, 0x001030ff, 0x1c01f000, 0x4031d800, | ||
3178 | 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580, | ||
3179 | 0x00000200, 0x02000000, 0x00102304, 0x812e59c0, | ||
3180 | 0x02000800, 0x001005d8, 0x592c0006, 0x82000500, | ||
3181 | 0xff000000, 0x80000904, 0x800409c0, 0x02000000, | ||
3182 | 0x00102304, 0x82040480, 0x0000000e, 0x04001003, | ||
3183 | 0x42000800, 0x0000000d, 0x592e5801, 0x812e59c0, | ||
3184 | 0x02000800, 0x001005d8, 0x832ca400, 0x00000005, | ||
3185 | 0x4050a800, 0x4004b000, 0x0201f800, 0x0010ab28, | ||
3186 | 0x58ec1007, 0x58ec1808, 0x832c0400, 0x00000005, | ||
3187 | 0x0201f000, 0x00103a28, 0x0201f800, 0x00103a00, | ||
3188 | 0x04020005, 0x4a034406, 0x00000002, 0x0201f000, | ||
3189 | 0x0010230c, 0x59a00c06, 0x82040500, 0x0000ff00, | ||
3190 | 0x840001c0, 0x82001480, 0x00000007, 0x02021000, | ||
3191 | 0x00102310, 0x0c01f001, 0x0010313d, 0x00103144, | ||
3192 | 0x0010314b, 0x0010314b, 0x0010314b, 0x0010314d, | ||
3193 | 0x00103152, 0x42000800, 0x0000000d, 0x42003800, | ||
3194 | 0x00103166, 0x4a034000, 0x0010b4eb, 0x0401f013, | ||
3195 | 0x42000800, 0x0000000d, 0x42003800, 0x00103166, | ||
3196 | 0x4a034000, 0x0010b4f8, 0x0401f00c, 0x0201f000, | ||
3197 | 0x00102310, 0x42000800, 0x00000008, 0x42003800, | ||
3198 | 0x00103179, 0x0401f005, 0x42000800, 0x00000004, | ||
3199 | 0x42003800, 0x001031c3, 0x59a00207, 0x59a01407, | ||
3200 | 0x900001c0, 0x80081540, 0x59a00209, 0x59a01c09, | ||
3201 | 0x900001c0, 0x800c1d40, 0x832c0400, 0x00000005, | ||
3202 | 0x4c1c0000, 0x0201f800, 0x00103a25, 0x5c003800, | ||
3203 | 0x481dd809, 0x1c01f000, 0x4031d800, 0x58ef400b, | ||
3204 | 0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200, | ||
3205 | 0x02000000, 0x00102304, 0x4a03501f, 0x00000001, | ||
3206 | 0x4200b000, 0x0000000d, 0x59a0a800, 0x832ca400, | ||
3207 | 0x00000005, 0x0201f800, 0x0010ab17, 0x0201f000, | ||
3208 | 0x001022c0, 0x4031d800, 0x58ef400b, 0x58ee580d, | ||
3209 | 0x58ec0002, 0x82000580, 0x00000200, 0x02000000, | ||
3210 | 0x00102304, 0x832ca400, 0x00000005, 0x50500000, | ||
3211 | 0x82001500, 0x000c0016, 0x02020000, 0x00102310, | ||
3212 | 0x82500c00, 0x00000003, 0x50040000, 0x82001500, | ||
3213 | 0x00000001, 0x02020000, 0x00102310, 0x50500000, | ||
3214 | 0x82001500, 0x00000028, 0x0400001d, 0x82081580, | ||
3215 | 0x00000028, 0x02020000, 0x00102310, 0x80500800, | ||
3216 | 0x50040000, 0x82001500, 0x00000013, 0x82081580, | ||
3217 | 0x00000013, 0x02020000, 0x00102310, 0x80040800, | ||
3218 | 0x50040000, 0x82001500, 0x00010000, 0x82081580, | ||
3219 | 0x00010000, 0x02020000, 0x00102310, 0x836c0580, | ||
3220 | 0x00000000, 0x04000012, 0x599c0019, 0x8c00050e, | ||
3221 | 0x0402000f, 0x0201f000, 0x00102310, 0x80500800, | ||
3222 | 0x50040000, 0x82001500, 0x00000013, 0x02020000, | ||
3223 | 0x00102310, 0x80040800, 0x50040000, 0x82001500, | ||
3224 | 0x00010000, 0x02020000, 0x00102310, 0x4200b000, | ||
3225 | 0x00000008, 0x4200a800, 0x0010b4e3, 0x0201f800, | ||
3226 | 0x0010ab17, 0x0201f000, 0x001022c0, 0x4031d800, | ||
3227 | 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580, | ||
3228 | 0x00000200, 0x02000000, 0x00102304, 0x4200b000, | ||
3229 | 0x00000004, 0x4200a800, 0x0010b8fa, 0x832ca400, | ||
3230 | 0x00000005, 0x0201f800, 0x0010ab17, 0x59a80005, | ||
3231 | 0x84000550, 0x48035005, 0x0201f000, 0x001022c0, | ||
3232 | 0x0201f800, 0x00103a00, 0x04020005, 0x4a034406, | ||
3233 | 0x00000002, 0x0201f000, 0x0010230c, 0x59a00c06, | ||
3234 | 0x82040500, 0x0000ff00, 0x840001c0, 0x82001480, | ||
3235 | 0x00000006, 0x02021000, 0x00102310, 0x0c01f001, | ||
3236 | 0x001031ee, 0x001031f3, 0x001031f8, 0x001031f8, | ||
3237 | 0x001031f8, 0x001031fa, 0x42000800, 0x0000000d, | ||
3238 | 0x4200a000, 0x0010b4eb, 0x0401f00c, 0x42000800, | ||
3239 | 0x0000000d, 0x4200a000, 0x0010b4f8, 0x0401f007, | ||
3240 | 0x0201f000, 0x00102310, 0x42000800, 0x00000008, | ||
3241 | 0x4200a000, 0x0010b4e3, 0x4004b000, 0x832cac00, | ||
3242 | 0x00000005, 0x0201f800, 0x0010ab17, 0x59a00207, | ||
3243 | 0x59a01407, 0x900001c0, 0x80081540, 0x59a00209, | ||
3244 | 0x59a01c09, 0x900001c0, 0x800c1d40, 0x832c0400, | ||
3245 | 0x00000005, 0x0201f000, 0x00103a28, 0x836c0580, | ||
3246 | 0x00000000, 0x04020005, 0x4a034406, 0x00000007, | ||
3247 | 0x0201f000, 0x0010230c, 0x59a00406, 0x800001c0, | ||
3248 | 0x0400001a, 0x59a80005, 0x8c000514, 0x04000005, | ||
3249 | 0x42000000, 0x00000001, 0x40000800, 0x0401f003, | ||
3250 | 0x59a00207, 0x59a80853, 0x48035053, 0x0201f800, | ||
3251 | 0x0010163b, 0x04000022, 0x0201f800, 0x00101642, | ||
3252 | 0x0400001f, 0x0201f800, 0x00101649, 0x0400001c, | ||
3253 | 0x0201f800, 0x00101650, 0x04000019, 0x48075053, | ||
3254 | 0x0201f000, 0x00102310, 0x59c40801, 0x82040d00, | ||
3255 | 0x00018000, 0x82040580, 0x00000000, 0x04020004, | ||
3256 | 0x4a034406, 0x00000000, 0x0401f00d, 0x82040580, | ||
3257 | 0x00008000, 0x04020004, 0x4a034406, 0x00000001, | ||
3258 | 0x0401f007, 0x82040580, 0x00010000, 0x02020800, | ||
3259 | 0x001005d8, 0x4a034406, 0x00000003, 0x59a00406, | ||
3260 | 0x82000580, 0x00000002, 0x0402001f, 0x59c40006, | ||
3261 | 0x84000500, 0x48038806, 0x0201f800, 0x00106ede, | ||
3262 | 0x497b8880, 0x0201f800, 0x0010a9c0, 0x0201f800, | ||
3263 | 0x0010a9ce, 0x42000000, 0x0010b8ca, 0x0201f800, | ||
3264 | 0x0010aa47, 0x82000540, 0x00000001, 0x0201f800, | ||
3265 | 0x0010518c, 0x4a038808, 0x00000000, 0x4202d800, | ||
3266 | 0x00000004, 0x42001000, 0x00000001, 0x0201f800, | ||
3267 | 0x0010193d, 0x4a035049, 0x00000001, 0x0201f800, | ||
3268 | 0x001006d4, 0x0201f000, 0x001022c0, 0x800409c0, | ||
3269 | 0x04000005, 0x4a034406, 0x00000001, 0x0201f000, | ||
3270 | 0x0010230c, 0x836c0580, 0x00000003, 0x04000005, | ||
3271 | 0x4a034406, 0x00000007, 0x0201f000, 0x0010230c, | ||
3272 | 0x59a28c06, 0x59a0320b, 0x82183500, 0x000000ff, | ||
3273 | 0x0201f800, 0x00020245, 0x02020000, 0x00102310, | ||
3274 | 0x83440580, 0x000007fd, 0x04000008, 0x0201f800, | ||
3275 | 0x001049e7, 0x04000005, 0x42000800, 0x00000009, | ||
3276 | 0x0201f000, 0x0010230c, 0x0201f800, 0x00103a00, | ||
3277 | 0x04020005, 0x4a034406, 0x00000002, 0x0201f000, | ||
3278 | 0x0010230c, 0x497a5a04, 0x4a025c04, 0x00008000, | ||
3279 | 0x0201f800, 0x00109115, 0x04020005, 0x4a034406, | ||
3280 | 0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809, | ||
3281 | 0x0010329e, 0x1c01f000, 0x592c0005, 0x82000d00, | ||
3282 | 0x0000ffff, 0x82000500, 0xffff0000, 0x82000580, | ||
3283 | 0x01000000, 0x04020005, 0x4a034406, 0x00000004, | ||
3284 | 0x0201f000, 0x0010230c, 0x80040904, 0x832ca400, | ||
3285 | 0x00000005, 0x4050a800, 0x4004b000, 0x0201f800, | ||
3286 | 0x0010ab28, 0x59a00207, 0x59a01407, 0x900001c0, | ||
3287 | 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0, | ||
3288 | 0x800c1d40, 0x832c0400, 0x00000005, 0x0201f000, | ||
3289 | 0x00103a28, 0x496fc857, 0x836c0580, 0x00000000, | ||
3290 | 0x04000005, 0x4a034406, 0x0000001a, 0x0201f000, | ||
3291 | 0x0010230c, 0x0201f800, 0x0010513b, 0x02020800, | ||
3292 | 0x00104142, 0x42000800, 0x00000020, 0x59a00407, | ||
3293 | 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409, | ||
3294 | 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x419c0000, | ||
3295 | 0x49a3c857, 0x0201f800, 0x00103a25, 0x4a01d809, | ||
3296 | 0x001032da, 0x1c01f000, 0x4833c857, 0x4031d800, | ||
3297 | 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200, | ||
3298 | 0x02000000, 0x00102304, 0x599c0200, 0x800001c0, | ||
3299 | 0x02000000, 0x00102310, 0x59a80005, 0x8c000512, | ||
3300 | 0x04000004, 0x599c0019, 0x8400050c, 0x48033819, | ||
3301 | 0x0201f800, 0x001097d7, 0x59a80005, 0x8c000514, | ||
3302 | 0x04000004, 0x599c0017, 0x84000508, 0x48033817, | ||
3303 | 0x0201f800, 0x00103b25, 0x04020004, 0x8c00050a, | ||
3304 | 0x02020000, 0x00102310, 0x4803c857, 0x8c000504, | ||
3305 | 0x04020004, 0x59c408a3, 0x84040d7a, 0x480788a3, | ||
3306 | 0x8c000502, 0x04020004, 0x59c408a3, 0x84040d08, | ||
3307 | 0x480788a3, 0x599c0c02, 0x8c000500, 0x04020004, | ||
3308 | 0x8c000516, 0x04000012, 0x0401f001, 0x82041480, | ||
3309 | 0x0000007f, 0x02021000, 0x00102310, 0x82041400, | ||
3310 | 0x0010210e, 0x50081000, 0x82081500, 0x000000ff, | ||
3311 | 0x8c000500, 0x04020006, 0x480b5010, 0x42000800, | ||
3312 | 0x00000003, 0x0201f800, 0x00106c78, 0x599c0019, | ||
3313 | 0x8c00050e, 0x0402000b, 0x59a80806, 0x8c040d14, | ||
3314 | 0x04000008, 0x42000800, 0x0010b4e3, 0x50040800, | ||
3315 | 0x82040d00, 0x00000028, 0x02020000, 0x00102310, | ||
3316 | 0x82000500, 0x00000030, 0x04000003, 0x80000108, | ||
3317 | 0x0401f003, 0x42000000, 0x00000002, 0x48039040, | ||
3318 | 0x42000800, 0x00000002, 0x82000400, 0x00103415, | ||
3319 | 0x50001000, 0x0201f800, 0x00106c78, 0x599c0201, | ||
3320 | 0x82000c80, 0x00000100, 0x02001000, 0x00102310, | ||
3321 | 0x82000c80, 0x00000841, 0x02021000, 0x00102310, | ||
3322 | 0x82000500, 0x00000007, 0x02020000, 0x00102310, | ||
3323 | 0x599c0401, 0x80000540, 0x02000000, 0x00102310, | ||
3324 | 0x599c0409, 0x599c0c07, 0x80040c80, 0x02021000, | ||
3325 | 0x00102310, 0x80000040, 0x02000000, 0x00102310, | ||
3326 | 0x599c0209, 0x599c0a07, 0x80040c80, 0x02021000, | ||
3327 | 0x00102310, 0x80000040, 0x02000000, 0x00102310, | ||
3328 | 0x0201f800, 0x001053cd, 0x0201f800, 0x00104cb6, | ||
3329 | 0x599c0201, 0x48035004, 0x0201f800, 0x001012ee, | ||
3330 | 0x599c020a, 0x800001c0, 0x04000003, 0x4803504d, | ||
3331 | 0x0401f003, 0x4a03504d, 0x000000c8, 0x0201f800, | ||
3332 | 0x00103b25, 0x04000004, 0x0201f800, 0x001060df, | ||
3333 | 0x417a5000, 0x836c0580, 0x00000000, 0x04020098, | ||
3334 | 0x599c0003, 0x599c0804, 0x9c0001c0, 0x9c0409c0, | ||
3335 | 0x48035002, 0x48075003, 0x599c1017, 0x8c08151c, | ||
3336 | 0x04000006, 0x599c0005, 0x599c0806, 0x9c0001c0, | ||
3337 | 0x9c0409c0, 0x0401f003, 0x82000500, 0xf0ffffff, | ||
3338 | 0x48035000, 0x48075001, 0x42001000, 0x0010b4eb, | ||
3339 | 0x48001000, 0x48041001, 0x42001000, 0x0010b4f8, | ||
3340 | 0x48001000, 0x48041001, 0x59a80005, 0x8c000514, | ||
3341 | 0x04020015, 0x599c1019, 0x82081500, 0x0000e000, | ||
3342 | 0x82080580, 0x00000000, 0x0402000c, 0x4a035053, | ||
3343 | 0x00000000, 0x42000000, 0x00000001, 0x0201f800, | ||
3344 | 0x0010188c, 0x42000000, 0x00000001, 0x0201f800, | ||
3345 | 0x00101821, 0x0401f02b, 0x82080580, 0x00002000, | ||
3346 | 0x0402000a, 0x4a035053, 0x00000001, 0x41780000, | ||
3347 | 0x0201f800, 0x0010188c, 0x41780000, 0x0201f800, | ||
3348 | 0x00101821, 0x0401f01f, 0x82080580, 0x00004000, | ||
3349 | 0x04020006, 0x4a035053, 0x00000002, 0x4a035049, | ||
3350 | 0x00000001, 0x0401f017, 0x82080580, 0x00006000, | ||
3351 | 0x02020000, 0x00102310, 0x59a80858, 0x82040d80, | ||
3352 | 0x01391077, 0x04020005, 0x59e00813, 0x8c040d00, | ||
3353 | 0x02020000, 0x00102310, 0x4a035053, 0x00000003, | ||
3354 | 0x42000000, 0x00000002, 0x0201f800, 0x0010188c, | ||
3355 | 0x42000000, 0x00000002, 0x0201f800, 0x00101821, | ||
3356 | 0x599c0019, 0x8c000520, 0x0400000d, 0x42000000, | ||
3357 | 0x00000004, 0x42000800, 0x00000040, 0x0201f800, | ||
3358 | 0x00101944, 0x42000000, 0x00000010, 0x42000800, | ||
3359 | 0x000000c0, 0x0201f800, 0x00101944, 0x4a035032, | ||
3360 | 0x0000aaaa, 0x599c1018, 0x82081500, 0x00000030, | ||
3361 | 0x59a8006c, 0x80000540, 0x0400000c, 0x82080580, | ||
3362 | 0x00000000, 0x02000000, 0x00102310, 0x599c1018, | ||
3363 | 0x82081500, 0xffffffcf, 0x82081540, 0x00000010, | ||
3364 | 0x480b3818, 0x0401f010, 0x82080d80, 0x00000000, | ||
3365 | 0x04000007, 0x82080d80, 0x00000010, 0x0400000a, | ||
3366 | 0x82080d80, 0x00000020, 0x04020002, 0x48075032, | ||
3367 | 0x0201f800, 0x00103aba, 0x04000008, 0x0201f800, | ||
3368 | 0x001015fe, 0x0201f800, 0x0010162a, 0x59a8002a, | ||
3369 | 0x80040540, 0x4803502a, 0x49f3c857, 0x42001000, | ||
3370 | 0x00105065, 0x0201f800, 0x00105f90, 0x42001000, | ||
3371 | 0x00105058, 0x0201f800, 0x00106084, 0x4a038805, | ||
3372 | 0xffffffff, 0x4a03c014, 0x00400040, 0x4a03c013, | ||
3373 | 0x00400000, 0x0201f800, 0x001048c7, 0x59a0001d, | ||
3374 | 0x84000540, 0x4803401d, 0x49f3c857, 0x0201f000, | ||
3375 | 0x001022c0, 0x00000018, 0x0000000c, 0x00000018, | ||
3376 | 0x00000020, 0x836c0580, 0x00000000, 0x04020005, | ||
3377 | 0x42000800, 0x00000007, 0x0201f000, 0x0010230c, | ||
3378 | 0x42000800, 0x00000020, 0x59a00407, 0x59a01207, | ||
3379 | 0x900811c0, 0x80081540, 0x59a00409, 0x59a01a09, | ||
3380 | 0x900c19c0, 0x800c1d40, 0x419c0000, 0x0201f000, | ||
3381 | 0x00103a28, 0x800409c0, 0x04000005, 0x4a034406, | ||
3382 | 0x00000001, 0x0201f000, 0x0010230c, 0x0201f800, | ||
3383 | 0x0010513b, 0x04020005, 0x4a034406, 0x00000016, | ||
3384 | 0x0201f000, 0x0010230c, 0x59a80013, 0x8c000500, | ||
3385 | 0x04000011, 0x4a034406, 0x00000000, 0x42000800, | ||
3386 | 0x00000020, 0x59a00407, 0x59a01207, 0x900811c0, | ||
3387 | 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0, | ||
3388 | 0x800c1d40, 0x42000000, 0x0010be21, 0x0201f000, | ||
3389 | 0x00103a28, 0x4a034406, 0x00000001, 0x4200b000, | ||
3390 | 0x00000020, 0x4200a800, 0x0010be21, 0x4200a000, | ||
3391 | 0xffffffff, 0x4450a800, 0x8054a800, 0x8058b040, | ||
3392 | 0x040207fd, 0x4d440000, 0x4d340000, 0x42028800, | ||
3393 | 0xffffffff, 0x42002000, 0xffffffff, 0x42003000, | ||
3394 | 0x00000001, 0x42003800, 0x00000001, 0x42001800, | ||
3395 | 0x0010be21, 0x59a81010, 0x82081500, 0x000000ff, | ||
3396 | 0x40180000, 0x0c01f001, 0x0010346e, 0x00103471, | ||
3397 | 0x00103475, 0x00103479, 0x82102500, 0xffffff00, | ||
3398 | 0x0401f014, 0x82102500, 0xffff00ff, 0x840811c0, | ||
3399 | 0x0401f010, 0x82102500, 0xff00ffff, 0x900811c0, | ||
3400 | 0x0401f00c, 0x82102500, 0x00ffffff, 0x9c0801c0, | ||
3401 | 0x80102540, 0x44101800, 0x42003000, 0xffffffff, | ||
3402 | 0x42002000, 0xffffffff, 0x800c1800, 0x0401f003, | ||
3403 | 0x40080000, 0x80102540, 0x81468800, 0x83442c80, | ||
3404 | 0x0000007f, 0x04021014, 0x4c080000, 0x4c0c0000, | ||
3405 | 0x4c180000, 0x4c1c0000, 0x0201f800, 0x00020245, | ||
3406 | 0x5c003800, 0x5c003000, 0x5c001800, 0x5c001000, | ||
3407 | 0x040207f2, 0x0201f800, 0x001049f3, 0x040207ef, | ||
3408 | 0x80183000, 0x801c3800, 0x59341202, 0x40180000, | ||
3409 | 0x0c01f7ce, 0x82100580, 0xffffffff, 0x04000002, | ||
3410 | 0x44101800, 0x42001800, 0x0010be21, 0x500c0000, | ||
3411 | 0x82000500, 0xffffff00, 0x801c0540, 0x44001800, | ||
3412 | 0x5c026800, 0x5c028800, 0x42000800, 0x00000020, | ||
3413 | 0x59a00407, 0x59a01207, 0x900811c0, 0x80081540, | ||
3414 | 0x59a00409, 0x59a01a09, 0x900c19c0, 0x800c1d40, | ||
3415 | 0x42000000, 0x0010be21, 0x0201f000, 0x00103a28, | ||
3416 | 0x59a28c06, 0x59a0020b, 0x8c000500, 0x0400000e, | ||
3417 | 0x59a01208, 0x59a00408, 0x82000500, 0x000000ff, | ||
3418 | 0x900001c0, 0x80081540, 0x41784000, 0x0201f800, | ||
3419 | 0x00104919, 0x04000008, 0x48034406, 0x0201f000, | ||
3420 | 0x00102310, 0x0201f800, 0x00020245, 0x02020000, | ||
3421 | 0x00102310, 0x0201f800, 0x00103a00, 0x04020005, | ||
3422 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3423 | 0x59a0020b, 0x8c000500, 0x04000005, 0x0201f800, | ||
3424 | 0x001049f3, 0x02020000, 0x00103ac4, 0x59a0020b, | ||
3425 | 0x8c000502, 0x04000019, 0x83440480, 0x000007f0, | ||
3426 | 0x04021016, 0x0201f800, 0x001049fc, 0x04020013, | ||
3427 | 0x497a5a04, 0x4a025c04, 0x00008000, 0x0201f800, | ||
3428 | 0x001090e6, 0x04020005, 0x4a034406, 0x00000003, | ||
3429 | 0x0201f000, 0x0010230c, 0x4a01d809, 0x001034f1, | ||
3430 | 0x1c01f000, 0x59a28c06, 0x0201f800, 0x00020245, | ||
3431 | 0x02020000, 0x00102310, 0x4200b000, 0x0000000a, | ||
3432 | 0x4134a000, 0x832e5c00, 0x00000002, 0x412ca800, | ||
3433 | 0x0201f800, 0x0010ab17, 0x832cac00, 0x00000006, | ||
3434 | 0x4054a000, 0x4200b000, 0x00000004, 0x0201f800, | ||
3435 | 0x0010ab28, 0x592c0802, 0x82040500, 0x00ff00ff, | ||
3436 | 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540, | ||
3437 | 0x48025802, 0x592c0801, 0x82040500, 0x00ff00ff, | ||
3438 | 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540, | ||
3439 | 0x48025801, 0x42000800, 0x0000000a, 0x59a00407, | ||
3440 | 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409, | ||
3441 | 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x412c0000, | ||
3442 | 0x0201f000, 0x00103a28, 0x496fc857, 0x496f4406, | ||
3443 | 0x0201f000, 0x001022c0, 0x59a28c06, 0x0201f800, | ||
3444 | 0x00020245, 0x02020000, 0x00102310, 0x836c0580, | ||
3445 | 0x00000003, 0x04000005, 0x4a034406, 0x00000007, | ||
3446 | 0x0201f000, 0x0010230c, 0x83340c00, 0x00000006, | ||
3447 | 0x59a0020b, 0x8c000500, 0x04000003, 0x83340c00, | ||
3448 | 0x00000008, 0x58040001, 0x48034409, 0x900001c0, | ||
3449 | 0x48034209, 0x50040000, 0x48034407, 0x900001c0, | ||
3450 | 0x48034207, 0x59340200, 0x48034406, 0x0201f000, | ||
3451 | 0x001022c0, 0x800409c0, 0x04000005, 0x4a034406, | ||
3452 | 0x00000001, 0x0201f000, 0x0010230c, 0x59a0220b, | ||
3453 | 0x8c102500, 0x0402002e, 0x8c102506, 0x04020006, | ||
3454 | 0x59a03208, 0x82180480, 0x00000003, 0x02021000, | ||
3455 | 0x00102310, 0x59a28c06, 0x0201f800, 0x00020245, | ||
3456 | 0x02020000, 0x00102310, 0x0201f800, 0x001049e7, | ||
3457 | 0x04000005, 0x4a034406, 0x00000009, 0x0201f000, | ||
3458 | 0x0010230c, 0x0201f800, 0x00103a00, 0x04020005, | ||
3459 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3460 | 0x59a0220b, 0x8c102506, 0x04000004, 0x59343002, | ||
3461 | 0x82183500, 0x00ffffff, 0x497a5a04, 0x4a025c04, | ||
3462 | 0x00008000, 0x0201f800, 0x001090a8, 0x04020005, | ||
3463 | 0x4a034406, 0x00000003, 0x0201f000, 0x0010230c, | ||
3464 | 0x4a01d809, 0x001035d1, 0x1c01f000, 0x59a28c06, | ||
3465 | 0x0201f800, 0x00020245, 0x02020000, 0x00102310, | ||
3466 | 0x0201f800, 0x001049e7, 0x04000005, 0x4a034406, | ||
3467 | 0x00000009, 0x0201f000, 0x0010230c, 0x0201f800, | ||
3468 | 0x00103a00, 0x04020005, 0x4a034406, 0x00000002, | ||
3469 | 0x0201f000, 0x0010230c, 0x497a5a04, 0x4a025c04, | ||
3470 | 0x00008000, 0x0201f800, 0x00103a00, 0x04020005, | ||
3471 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3472 | 0x592e5800, 0x0201f800, 0x001090bd, 0x04020005, | ||
3473 | 0x4a034406, 0x00000003, 0x0201f000, 0x0010230c, | ||
3474 | 0x4a01d809, 0x001035a3, 0x1c01f000, 0x592c2805, | ||
3475 | 0x82140d80, 0x01000000, 0x04020005, 0x4a034406, | ||
3476 | 0x00000004, 0x0201f000, 0x0010230c, 0x42000800, | ||
3477 | 0x00000008, 0x59a00207, 0x59a01407, 0x900001c0, | ||
3478 | 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0, | ||
3479 | 0x800c1d40, 0x832c0400, 0x00000005, 0x0201f800, | ||
3480 | 0x00103a28, 0x8c142d00, 0x04000003, 0x4a01d809, | ||
3481 | 0x001035be, 0x1c01f000, 0x4031d800, 0x58ef400b, | ||
3482 | 0x58ee580e, 0x58ec0002, 0x82000580, 0x00000200, | ||
3483 | 0x02000000, 0x00102304, 0x812e59c0, 0x02000800, | ||
3484 | 0x001005d8, 0x42000800, 0x00000008, 0x832c0400, | ||
3485 | 0x00000005, 0x58ec1007, 0x58ec1808, 0x0201f000, | ||
3486 | 0x00103a28, 0x592c0005, 0x82000580, 0x01000000, | ||
3487 | 0x04020005, 0x4a034406, 0x00000004, 0x0201f000, | ||
3488 | 0x0010230c, 0x59a00207, 0x59a01407, 0x900001c0, | ||
3489 | 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0, | ||
3490 | 0x800c1d40, 0x42000800, 0x00000006, 0x832c0400, | ||
3491 | 0x00000006, 0x0201f000, 0x00103a28, 0x59a00a0a, | ||
3492 | 0x800409c0, 0x02000000, 0x00102310, 0x82040480, | ||
3493 | 0x000000e7, 0x04001003, 0x42000800, 0x000000e6, | ||
3494 | 0x59a00207, 0x59a01407, 0x900001c0, 0x80081540, | ||
3495 | 0x59a00209, 0x59a01c09, 0x900001c0, 0x800c1d40, | ||
3496 | 0x83880400, 0x00000000, 0x0201f800, 0x00103a28, | ||
3497 | 0x4a01d809, 0x001035ff, 0x1c01f000, 0x4031d800, | ||
3498 | 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200, | ||
3499 | 0x02000000, 0x00102304, 0x58ef400b, 0x59a0020b, | ||
3500 | 0x8c000500, 0x04000008, 0x83880400, 0x00000000, | ||
3501 | 0x4803c840, 0x4a03c842, 0x00000006, 0x04011000, | ||
3502 | 0x497b8885, 0x4a034207, 0x000000e6, 0x0201f000, | ||
3503 | 0x001022c0, 0x800409c0, 0x04000005, 0x4a034406, | ||
3504 | 0x00000001, 0x0201f000, 0x0010230c, 0x0401fbe5, | ||
3505 | 0x04020005, 0x4a034406, 0x00000002, 0x0201f000, | ||
3506 | 0x0010230c, 0x497a5a04, 0x4a025c04, 0x00008000, | ||
3507 | 0x59a00406, 0x800001c0, 0x02000000, 0x00102310, | ||
3508 | 0x82001580, 0x000000ff, 0x04000005, 0x82001480, | ||
3509 | 0x00000004, 0x02021000, 0x00102310, 0x40001000, | ||
3510 | 0x0201f800, 0x00101fbf, 0x04020005, 0x4a034406, | ||
3511 | 0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809, | ||
3512 | 0x0010363a, 0x1c01f000, 0x592c0005, 0x82000580, | ||
3513 | 0x01000000, 0x02020000, 0x001022c0, 0x4a034406, | ||
3514 | 0x00000004, 0x0201f000, 0x0010230c, 0x59a01406, | ||
3515 | 0x8c081508, 0x04020007, 0x800409c0, 0x04000005, | ||
3516 | 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c, | ||
3517 | 0x59a01c07, 0x820c0480, 0x00001000, 0x02021000, | ||
3518 | 0x00102310, 0x497b2804, 0x497b2805, 0x497b281c, | ||
3519 | 0x497b281d, 0x497b281f, 0x497b2820, 0x497b2822, | ||
3520 | 0x497b2823, 0x80000580, 0x0201f800, 0x001015fe, | ||
3521 | 0x59a80805, 0x8c081500, 0x04000004, 0x82040d40, | ||
3522 | 0x00000011, 0x0401f004, 0x8c081506, 0x04000002, | ||
3523 | 0x84040d42, 0x84040d0a, 0x48075005, 0x4202d800, | ||
3524 | 0x00000001, 0x82081500, 0x000000e0, 0x8008010a, | ||
3525 | 0x0c020036, 0x0201f800, 0x0010513b, 0x04020009, | ||
3526 | 0x4a035033, 0x00000001, 0x0201f800, 0x001050a2, | ||
3527 | 0x0401f01f, 0x4a035033, 0x00000000, 0x0401f7fb, | ||
3528 | 0x497b5032, 0x0201f800, 0x00104142, 0x0201f800, | ||
3529 | 0x00106c55, 0x0201f800, 0x00106ede, 0x0201f800, | ||
3530 | 0x00106c4b, 0x59a00a07, 0x480788a7, 0x59c400a3, | ||
3531 | 0x82000500, 0xfeffffff, 0x82000540, 0x80018000, | ||
3532 | 0x40000800, 0x84040d20, 0x480388a3, 0x480788a3, | ||
3533 | 0x497b504e, 0x42000800, 0x0000002d, 0x42001000, | ||
3534 | 0x001041bc, 0x0201f800, 0x00105f69, 0x59a00407, | ||
3535 | 0x800000c2, 0x800008c4, 0x8005d400, 0x42000000, | ||
3536 | 0x0000ffff, 0x0201f800, 0x0010513b, 0x04000003, | ||
3537 | 0x59a00207, 0x80000110, 0x0201f800, 0x00103afc, | ||
3538 | 0x0201f000, 0x001022c0, 0x0010366d, 0x00103670, | ||
3539 | 0x00103678, 0x00102310, 0x00103675, 0x00102310, | ||
3540 | 0x00102310, 0x00102310, 0x836c0580, 0x00000003, | ||
3541 | 0x04000005, 0x4a034406, 0x00000007, 0x0201f000, | ||
3542 | 0x0010230c, 0x59a03c06, 0x59a00407, 0x59a04a07, | ||
3543 | 0x902449c0, 0x80244d40, 0x59a00409, 0x59a05209, | ||
3544 | 0x902851c0, 0x80285540, 0x0401fb46, 0x04020005, | ||
3545 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3546 | 0x417a8800, 0x41783000, 0x497b4001, 0x497b4004, | ||
3547 | 0x832c4400, 0x00000005, 0x48234002, 0x8c1c3d04, | ||
3548 | 0x04020078, 0x0201f800, 0x00020245, 0x0402002a, | ||
3549 | 0x0201f800, 0x001049e7, 0x04000004, 0x0201f800, | ||
3550 | 0x001048e3, 0x04020024, 0x8c1c3d00, 0x04000008, | ||
3551 | 0x59340009, 0x44004000, 0x59340008, 0x80204000, | ||
3552 | 0x44004000, 0x80204000, 0x0401f007, 0x59340007, | ||
3553 | 0x44004000, 0x59340006, 0x80204000, 0x44004000, | ||
3554 | 0x80204000, 0x83440580, 0x000007fe, 0x0400000d, | ||
3555 | 0x83440580, 0x000007fc, 0x0400000a, 0x0201f800, | ||
3556 | 0x001049f3, 0x04000003, 0x85468d5e, 0x0401f005, | ||
3557 | 0x0201f800, 0x00104838, 0x04020002, 0x85468d5e, | ||
3558 | 0x45444000, 0x85468d1e, 0x80204000, 0x82183400, | ||
3559 | 0x00000003, 0x81468800, 0x83440480, 0x000007f0, | ||
3560 | 0x0400100e, 0x8c1c3d06, 0x04000010, 0x83440580, | ||
3561 | 0x000007f0, 0x04020004, 0x42028800, 0x000007fe, | ||
3562 | 0x0401f006, 0x83440580, 0x000007ff, 0x04020007, | ||
3563 | 0x42028800, 0x000007fc, 0x82180580, 0x0000000f, | ||
3564 | 0x0400000b, 0x0401f7c0, 0x801831c0, 0x04020006, | ||
3565 | 0x59a00801, 0x800408c4, 0x48074406, 0x0201f000, | ||
3566 | 0x001022c0, 0x4a034004, 0x00000001, 0x49474000, | ||
3567 | 0x59a00001, 0x80180400, 0x48034001, 0x481f4003, | ||
3568 | 0x4a01d801, 0x00000000, 0x4819d804, 0x59a00002, | ||
3569 | 0x4801d803, 0x4825d807, 0x4829d808, 0x4000a800, | ||
3570 | 0x4000a000, 0x4018b000, 0x0201f800, 0x0010ab17, | ||
3571 | 0x40ec1000, 0x0201f800, 0x00100858, 0x4a01d809, | ||
3572 | 0x0010372a, 0x1c01f000, 0x4031d800, 0x58ef400b, | ||
3573 | 0x58ec0002, 0x82000580, 0x00000200, 0x02000000, | ||
3574 | 0x00102304, 0x59a00004, 0x80000540, 0x04020008, | ||
3575 | 0x59a28800, 0x59a04002, 0x59a03803, 0x41783000, | ||
3576 | 0x58ec4807, 0x58ec5008, 0x0401f78f, 0x59a00801, | ||
3577 | 0x800408c4, 0x48074406, 0x0201f000, 0x001022c0, | ||
3578 | 0x0201f800, 0x00020245, 0x0402002f, 0x0201f800, | ||
3579 | 0x001049e7, 0x04000004, 0x0201f800, 0x001048e3, | ||
3580 | 0x04020029, 0x83440580, 0x000007fe, 0x04000011, | ||
3581 | 0x83440580, 0x000007fc, 0x0400000e, 0x0201f800, | ||
3582 | 0x001049f3, 0x04000005, 0x59340403, 0x8400055e, | ||
3583 | 0x48026c03, 0x0401f007, 0x0201f800, 0x00104838, | ||
3584 | 0x04020004, 0x59340403, 0x8400055e, 0x48026c03, | ||
3585 | 0x4134a000, 0x4020a800, 0x4200b000, 0x00000006, | ||
3586 | 0x0201f800, 0x0010ab17, 0x59340007, 0x4400a800, | ||
3587 | 0x59340006, 0x4800a801, 0x59340009, 0x4800a802, | ||
3588 | 0x59340008, 0x4800a803, 0x59340403, 0x8400051e, | ||
3589 | 0x48026c03, 0x82204400, 0x0000000a, 0x82183400, | ||
3590 | 0x0000000a, 0x81468800, 0x83440480, 0x000007f0, | ||
3591 | 0x0400100e, 0x8c1c3d06, 0x04000010, 0x83440580, | ||
3592 | 0x000007f0, 0x04020004, 0x42028800, 0x000007fe, | ||
3593 | 0x0401f006, 0x83440580, 0x000007ff, 0x04020007, | ||
3594 | 0x42028800, 0x000007fc, 0x82180580, 0x0000000a, | ||
3595 | 0x0400000b, 0x0401f7bb, 0x801831c0, 0x04020006, | ||
3596 | 0x59a00801, 0x800408c4, 0x48074406, 0x0201f000, | ||
3597 | 0x001022c0, 0x4a034004, 0x00000001, 0x49474000, | ||
3598 | 0x59a00001, 0x80180400, 0x48034001, 0x481f4003, | ||
3599 | 0x4a01d801, 0x00000000, 0x4819d804, 0x59a00002, | ||
3600 | 0x4801d803, 0x4825d807, 0x4829d808, 0x40ec1000, | ||
3601 | 0x0201f800, 0x00100858, 0x4a01d809, 0x001037a1, | ||
3602 | 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ec0002, | ||
3603 | 0x82000580, 0x00000200, 0x02000000, 0x00102304, | ||
3604 | 0x59a00004, 0x80000540, 0x04020008, 0x59a28800, | ||
3605 | 0x59a04002, 0x59a03803, 0x41783000, 0x58ec4807, | ||
3606 | 0x58ec5008, 0x0401f78f, 0x59a00801, 0x800408c4, | ||
3607 | 0x48074406, 0x0201f000, 0x001022c0, 0x42002800, | ||
3608 | 0x0000007e, 0x59a00c06, 0x59a01207, 0x59a01c07, | ||
3609 | 0x59a02209, 0x82040500, 0x0000ff00, 0x840001c0, | ||
3610 | 0x82003480, 0x00000020, 0x02001000, 0x00102310, | ||
3611 | 0x80140480, 0x02001000, 0x00102310, 0x82040500, | ||
3612 | 0x000000ff, 0x82003480, 0x00000020, 0x02001000, | ||
3613 | 0x00102310, 0x80140480, 0x02001000, 0x00102310, | ||
3614 | 0x82080500, 0x0000ff00, 0x840001c0, 0x82003480, | ||
3615 | 0x00000020, 0x02001000, 0x00102310, 0x80140480, | ||
3616 | 0x02001000, 0x00102310, 0x82080500, 0x000000ff, | ||
3617 | 0x82003480, 0x00000020, 0x02001000, 0x00102310, | ||
3618 | 0x80140480, 0x02001000, 0x00102310, 0x820c0500, | ||
3619 | 0x0000ff00, 0x840001c0, 0x82003480, 0x00000020, | ||
3620 | 0x02001000, 0x00102310, 0x80140480, 0x02001000, | ||
3621 | 0x00102310, 0x820c0500, 0x000000ff, 0x82003480, | ||
3622 | 0x00000020, 0x02001000, 0x00102310, 0x80140480, | ||
3623 | 0x02001000, 0x00102310, 0x82100500, 0x0000ff00, | ||
3624 | 0x840001c0, 0x82003480, 0x00000020, 0x02001000, | ||
3625 | 0x00102310, 0x80140480, 0x02001000, 0x00102310, | ||
3626 | 0x82100500, 0x000000ff, 0x82003480, 0x00000020, | ||
3627 | 0x02001000, 0x00102310, 0x80140480, 0x02001000, | ||
3628 | 0x00102310, 0x900401c0, 0x80080d40, 0x900c01c0, | ||
3629 | 0x80101d40, 0x83a83400, 0x0000003a, 0x44043000, | ||
3630 | 0x80183000, 0x440c3000, 0x0201f000, 0x001022c0, | ||
3631 | 0x0401f9ec, 0x04020005, 0x4a034406, 0x00000002, | ||
3632 | 0x0201f000, 0x0010230c, 0x42000800, 0x0000000c, | ||
3633 | 0x0401f853, 0x4a01d809, 0x00103820, 0x1c01f000, | ||
3634 | 0x4031d800, 0x58ee580d, 0x58ef400b, 0x58ec0002, | ||
3635 | 0x82000580, 0x00000200, 0x02000000, 0x00102304, | ||
3636 | 0x832ca400, 0x00000004, 0x4200b000, 0x0000000c, | ||
3637 | 0x40c8a800, 0x0201f800, 0x0010ab17, 0x58c80200, | ||
3638 | 0x80000540, 0x04000034, 0x58c80400, 0x82000500, | ||
3639 | 0xfffffffb, 0x04020030, 0x58c80401, 0x80000540, | ||
3640 | 0x0400002d, 0x82000480, 0x0000ff01, 0x0402102a, | ||
3641 | 0x58c80202, 0x82000480, 0x0000005c, 0x04001026, | ||
3642 | 0x0201f800, 0x001063a3, 0x58c80c08, 0x58c80204, | ||
3643 | 0x80040480, 0x04001020, 0x58c80204, 0x82000480, | ||
3644 | 0x00000005, 0x0402101c, 0x58c80205, 0x58c80c08, | ||
3645 | 0x80040902, 0x80040480, 0x04001017, 0x58c80c08, | ||
3646 | 0x0201f800, 0x001062f1, 0x0400001b, 0x0201f800, | ||
3647 | 0x001061b9, 0x04020012, 0x4979940b, 0x59c408a3, | ||
3648 | 0x82040d40, 0x00000002, 0x480788a3, 0x4a038830, | ||
3649 | 0x00000001, 0x4a038832, 0x01ffffff, 0x58c80202, | ||
3650 | 0x48030804, 0x0201f800, 0x0010619b, 0x0201f000, | ||
3651 | 0x001022c0, 0x0201f000, 0x00102310, 0x0201f800, | ||
3652 | 0x001063f5, 0x0201f800, 0x00106402, 0x0201f800, | ||
3653 | 0x001062e4, 0x0201f000, 0x0010230c, 0x4c000000, | ||
3654 | 0x59a01207, 0x59a00407, 0x900811c0, 0x80081540, | ||
3655 | 0x59a01a09, 0x59a00409, 0x900c19c0, 0x800c1d40, | ||
3656 | 0x5c000000, 0x0401f1ac, 0x59840000, 0x82000580, | ||
3657 | 0x00000000, 0x04000054, 0x59840002, 0x8c000504, | ||
3658 | 0x04000051, 0x84000546, 0x48030802, 0x0201f800, | ||
3659 | 0x001062e4, 0x59c408a3, 0x82040d00, 0xfffffffd, | ||
3660 | 0x480788a3, 0x4c5c0000, 0x4200b800, 0x0010ac00, | ||
3661 | 0x505e6800, 0x813669c0, 0x04000008, 0x5936600e, | ||
3662 | 0x813261c0, 0x04000005, 0x0201f800, 0x001062d5, | ||
3663 | 0x02000800, 0x001064ad, 0x805cb800, 0x825c0580, | ||
3664 | 0x0010b3f0, 0x040207f3, 0x59866003, 0x813261c0, | ||
3665 | 0x0400000b, 0x59300406, 0x82000580, 0x00000009, | ||
3666 | 0x02020800, 0x001005d8, 0x5930b800, 0x0201f800, | ||
3667 | 0x001062c1, 0x405e6000, 0x0401f7f5, 0x497b0803, | ||
3668 | 0x4200b800, 0x0010b51b, 0x505e6000, 0x813261c0, | ||
3669 | 0x04000011, 0x59300406, 0x82000580, 0x00000009, | ||
3670 | 0x0402000d, 0x59300203, 0x82000580, 0x00000004, | ||
3671 | 0x04020009, 0x59326809, 0x813669c0, 0x02020800, | ||
3672 | 0x001005d8, 0x0201f800, 0x00100e99, 0x0201f800, | ||
3673 | 0x001062c1, 0x4578b800, 0x805cb800, 0x825c0580, | ||
3674 | 0x0010b523, 0x040207e9, 0x42000800, 0x0010b519, | ||
3675 | 0x49780801, 0x49780800, 0x59a80069, 0x82000400, | ||
3676 | 0x00000007, 0x48035069, 0x0201f800, 0x001063f5, | ||
3677 | 0x0201f800, 0x00106402, 0x5c00b800, 0x0201f800, | ||
3678 | 0x001061b4, 0x0201f000, 0x001022c0, 0x836c0580, | ||
3679 | 0x00000003, 0x04000005, 0x4a034406, 0x00000007, | ||
3680 | 0x0201f000, 0x0010230c, 0x59a00407, 0x59a02207, | ||
3681 | 0x901021c0, 0x80102540, 0x59a00409, 0x59a02a09, | ||
3682 | 0x901429c0, 0x80142d40, 0x0401f91e, 0x04020005, | ||
3683 | 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c, | ||
3684 | 0x417a8800, 0x41781800, 0x497b4001, 0x497b4003, | ||
3685 | 0x832c3400, 0x00000004, 0x481b4002, 0x41440000, | ||
3686 | 0x81ac0400, 0x50026800, 0x813669c0, 0x0400000b, | ||
3687 | 0x0201f800, 0x001049e7, 0x04020008, 0x59340002, | ||
3688 | 0x48003000, 0x49443001, 0x82183400, 0x00000002, | ||
3689 | 0x820c1c00, 0x00000002, 0x81468800, 0x83440480, | ||
3690 | 0x00000800, 0x04000005, 0x820c0480, 0x00000010, | ||
3691 | 0x0402100b, 0x0401f7ea, 0x800c19c0, 0x04020006, | ||
3692 | 0x59a00801, 0x80040902, 0x48074406, 0x0201f000, | ||
3693 | 0x001022c0, 0x4a034003, 0x00000001, 0x49474000, | ||
3694 | 0x59a00001, 0x800c0400, 0x48034001, 0x40ec1000, | ||
3695 | 0x4a001001, 0x00000000, 0x480c1004, 0x59a00002, | ||
3696 | 0x48001003, 0x48101007, 0x48141008, 0x0201f800, | ||
3697 | 0x00100858, 0x4a01d809, 0x00103920, 0x1c01f000, | ||
3698 | 0x4031d800, 0x58ef400b, 0x58ec0002, 0x82000580, | ||
3699 | 0x00000200, 0x02000000, 0x00102304, 0x59a00003, | ||
3700 | 0x80000540, 0x04020008, 0x59a28800, 0x59a03002, | ||
3701 | 0x41781800, 0x40ec1000, 0x58082007, 0x58082808, | ||
3702 | 0x0401f7bf, 0x59a00801, 0x80040902, 0x48074406, | ||
3703 | 0x0201f000, 0x001022c0, 0x800409c0, 0x04000005, | ||
3704 | 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c, | ||
3705 | 0x59a80026, 0x8c00050a, 0x04020007, 0x8c000506, | ||
3706 | 0x04020005, 0x4a034406, 0x00000016, 0x0201f000, | ||
3707 | 0x0010230c, 0x0401f8bb, 0x04020005, 0x4a034406, | ||
3708 | 0x00000002, 0x0201f000, 0x0010230c, 0x59a00c06, | ||
3709 | 0x80040902, 0x59a00407, 0x59a01207, 0x900811c0, | ||
3710 | 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0, | ||
3711 | 0x800c1d40, 0x832c0400, 0x00000005, 0x0401f8ce, | ||
3712 | 0x4a01d809, 0x0010395b, 0x1c01f000, 0x4031d800, | ||
3713 | 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580, | ||
3714 | 0x00000200, 0x02000000, 0x00102304, 0x592c0009, | ||
3715 | 0x0201f800, 0x00105c9a, 0x02000800, 0x001045a6, | ||
3716 | 0x02020000, 0x00102310, 0x49474001, 0x481a6802, | ||
3717 | 0x592c000a, 0x82001d80, 0x70000000, 0x04020007, | ||
3718 | 0x0401f890, 0x04020011, 0x4a034406, 0x00000002, | ||
3719 | 0x0201f000, 0x0010230c, 0x82001d80, 0x72000000, | ||
3720 | 0x02020000, 0x00102310, 0x0401f886, 0x04020885, | ||
3721 | 0x04020884, 0x04020005, 0x4a034406, 0x00000002, | ||
3722 | 0x0201f000, 0x0010230c, 0x58ee580d, 0x4a025c04, | ||
3723 | 0x00008000, 0x497a5a04, 0x592c3208, 0x80183102, | ||
3724 | 0x592c1801, 0x4a001805, 0x01000000, 0x0201f800, | ||
3725 | 0x001090d1, 0x04020005, 0x4a034406, 0x00000003, | ||
3726 | 0x0201f000, 0x0010230c, 0x4a01d809, 0x00103995, | ||
3727 | 0x1c01f000, 0x592c4000, 0x592c0005, 0x82000580, | ||
3728 | 0x01000000, 0x04020005, 0x4a034406, 0x00000004, | ||
3729 | 0x0201f000, 0x0010230c, 0x832c3c00, 0x00000005, | ||
3730 | 0x401ca000, 0x401ca800, 0x5820280a, 0x4200b000, | ||
3731 | 0x00000002, 0x82143580, 0x70000000, 0x04000003, | ||
3732 | 0x4200b000, 0x0000000f, 0x0201f800, 0x0010ab28, | ||
3733 | 0x401c0000, 0x58201006, 0x58201807, 0x58202205, | ||
3734 | 0x80102102, 0x82143580, 0x70000000, 0x04020008, | ||
3735 | 0x82103480, 0x00000002, 0x02001000, 0x00102310, | ||
3736 | 0x42000800, 0x00000002, 0x0401f06e, 0x82143580, | ||
3737 | 0x72000000, 0x02020000, 0x00102310, 0x82103480, | ||
3738 | 0x0000002a, 0x02001000, 0x00102310, 0x42000800, | ||
3739 | 0x0000000f, 0x0401f863, 0x4a01d809, 0x001039c9, | ||
3740 | 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ee580e, | ||
3741 | 0x58ec0002, 0x82000580, 0x00000200, 0x02000000, | ||
3742 | 0x00102304, 0x592e5800, 0x832c0c00, 0x00000005, | ||
3743 | 0x4004a000, 0x4004a800, 0x4200b000, 0x0000000f, | ||
3744 | 0x0201f800, 0x0010ab28, 0x40ec1000, 0x4a001001, | ||
3745 | 0x00000000, 0x4a001004, 0x0000000f, 0x48041003, | ||
3746 | 0x0201f800, 0x00100858, 0x4a01d809, 0x001039e5, | ||
3747 | 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ee580e, | ||
3748 | 0x58ec0002, 0x82000580, 0x00000200, 0x02000000, | ||
3749 | 0x00102304, 0x832c0c00, 0x00000005, 0x4004a000, | ||
3750 | 0x4004a800, 0x4200b000, 0x0000000c, 0x0201f800, | ||
3751 | 0x0010ab28, 0x40ec1000, 0x4a001001, 0x00000000, | ||
3752 | 0x4a001004, 0x0000000c, 0x48041003, 0x0201f800, | ||
3753 | 0x00100858, 0x4a01d809, 0x001022b9, 0x1c01f000, | ||
3754 | 0x0201f800, 0x001007e4, 0x04000010, 0x497a5800, | ||
3755 | 0x58ec000d, 0x80000540, 0x04020004, 0x492dd80d, | ||
3756 | 0x492dd80e, 0x0401f007, 0x58ec000e, 0x48025800, | ||
3757 | 0x82000400, 0x00000001, 0x452c0000, 0x492dd80e, | ||
3758 | 0x832c0400, 0x00000004, 0x492fc857, 0x4803c857, | ||
3759 | 0x1c01f000, 0x4d2c0000, 0x48efc857, 0x58ec400d, | ||
3760 | 0x4823c857, 0x802041c0, 0x04000007, 0x40225800, | ||
3761 | 0x592c4001, 0x497a5801, 0x0201f800, 0x001007f4, | ||
3762 | 0x0401f7f8, 0x4979d80d, 0x4979d80e, 0x5c025800, | ||
3763 | 0x1c01f000, 0x42003000, 0x00000001, 0x0401f003, | ||
3764 | 0x42003000, 0x00000000, 0x4803c857, 0x4807c857, | ||
3765 | 0x480bc857, 0x480fc857, 0x481bc857, 0x48efc857, | ||
3766 | 0x4819d801, 0x800409c0, 0x02000800, 0x001005d8, | ||
3767 | 0x4805d804, 0x4801d803, 0x4809d807, 0x480dd808, | ||
3768 | 0x40ec1000, 0x0201f800, 0x00100858, 0x4a01d809, | ||
3769 | 0x001022b9, 0x1c01f000, 0x80002d80, 0x480bc857, | ||
3770 | 0x480fc857, 0x4813c857, 0x4817c857, 0x4d2c0000, | ||
3771 | 0x4da00000, 0x42034000, 0x0010b4a4, 0x59a00017, | ||
3772 | 0x800001c0, 0x04020013, 0x04006012, 0x480bc020, | ||
3773 | 0x480fc021, 0x4813c022, 0x4817c023, 0x900811c0, | ||
3774 | 0x82081540, 0x00000012, 0x480bc011, 0x59e00017, | ||
3775 | 0x8c000508, 0x04020004, 0x4203e000, 0x30000001, | ||
3776 | 0x0401f053, 0x4a03c017, 0x00000002, 0x0401f7fb, | ||
3777 | 0x4c040000, 0x4c1c0000, 0x80000800, 0x48074017, | ||
3778 | 0x59a0381a, 0x481fc857, 0x801c39c0, 0x04020027, | ||
3779 | 0x82000480, 0x0000000a, 0x04021010, 0x59a00018, | ||
3780 | 0x80000000, 0x48034018, 0x59a00219, 0x82000400, | ||
3781 | 0x00000002, 0x82000c80, 0x00000013, 0x48034219, | ||
3782 | 0x04001003, 0x497b4219, 0x41780000, 0x59a03816, | ||
3783 | 0x801c3c00, 0x0401f030, 0x4803c856, 0x0201f800, | ||
3784 | 0x001007e4, 0x04000007, 0x492f401a, 0x492f401b, | ||
3785 | 0x412c3800, 0x497b421c, 0x497a5813, 0x0401f026, | ||
3786 | 0x59880051, 0x80000000, 0x48031051, 0x59a00017, | ||
3787 | 0x80000040, 0x48034017, 0x59a00219, 0x59a03816, | ||
3788 | 0x801c3c00, 0x0401f01c, 0x59a0021c, 0x82000400, | ||
3789 | 0x00000002, 0x82000c80, 0x00000012, 0x04021004, | ||
3790 | 0x4803421c, 0x801c3c00, 0x0401f013, 0x0201f800, | ||
3791 | 0x001007e4, 0x0402000b, 0x59880051, 0x80000000, | ||
3792 | 0x48031051, 0x59a00017, 0x80000040, 0x48034017, | ||
3793 | 0x4803c856, 0x59a0021c, 0x801c3c00, 0x0401f006, | ||
3794 | 0x492f401a, 0x492c3813, 0x412c3800, 0x497b421c, | ||
3795 | 0x497a5813, 0x48083c00, 0x480c3a00, 0x48103c01, | ||
3796 | 0x48143a01, 0x5c003800, 0x5c000800, 0x5c034000, | ||
3797 | 0x5c025800, 0x1c01f000, 0x480fc857, 0x4813c857, | ||
3798 | 0x481bc857, 0x42000000, 0x0010b813, 0x0201f800, | ||
3799 | 0x0010aa47, 0x801800d0, 0x40002800, 0x42001000, | ||
3800 | 0x00008014, 0x0401f786, 0x4c000000, 0x599c0017, | ||
3801 | 0x8c000512, 0x5c000000, 0x1c01f000, 0x4c000000, | ||
3802 | 0x599c0018, 0x8c00050e, 0x5c000000, 0x1c01f000, | ||
3803 | 0x59a80821, 0x800409c0, 0x04000005, 0x4a034406, | ||
3804 | 0x00000001, 0x0201f000, 0x0010230c, 0x836c0580, | ||
3805 | 0x00000003, 0x04000005, 0x4a034406, 0x00000007, | ||
3806 | 0x0201f000, 0x0010230c, 0x599c0017, 0x8c00050a, | ||
3807 | 0x04000005, 0x4a034406, 0x00000008, 0x0201f000, | ||
3808 | 0x0010230c, 0x59340405, 0x8c000508, 0x04020004, | ||
3809 | 0x8c00050a, 0x02020000, 0x001034db, 0x497a5a04, | ||
3810 | 0x497a5805, 0x4a025c04, 0x00008000, 0x0201f800, | ||
3811 | 0x00109176, 0x04020005, 0x4a034406, 0x00000003, | ||
3812 | 0x0201f000, 0x0010230c, 0x4a01d809, 0x00103aed, | ||
3813 | 0x1c01f000, 0x592c0005, 0x82000580, 0x01000000, | ||
3814 | 0x04020005, 0x4a034406, 0x00000004, 0x0201f000, | ||
3815 | 0x0010230c, 0x59a28c06, 0x0201f800, 0x00020245, | ||
3816 | 0x02020000, 0x00102310, 0x0201f000, 0x001034db, | ||
3817 | 0x82001580, 0x0000ffff, 0x04000009, 0x0201f800, | ||
3818 | 0x00105c9a, 0x02000800, 0x00020245, 0x0402000c, | ||
3819 | 0x0201f800, 0x00105fae, 0x0401f009, 0x42028800, | ||
3820 | 0x000007ef, 0x0201f800, 0x00020245, 0x02000800, | ||
3821 | 0x00105fae, 0x81468840, 0x040217fb, 0x1c01f000, | ||
3822 | 0x4803c856, 0x4c0c0000, 0x4d340000, 0x4d440000, | ||
3823 | 0x42028800, 0x000007fe, 0x0201f800, 0x00020245, | ||
3824 | 0x04020009, 0x5934180a, 0x820c1d00, 0x00000001, | ||
3825 | 0x820c1d80, 0x00000001, 0x42001000, 0x0000801b, | ||
3826 | 0x0401ff1e, 0x5c028800, 0x5c026800, 0x5c001800, | ||
3827 | 0x1c01f000, 0x599c0017, 0x8c000508, 0x1c01f000, | ||
3828 | 0x48efc857, 0x04011000, 0x48efc840, 0x4a03c842, | ||
3829 | 0x00000011, 0x40000000, 0x040117ff, 0x4a01d80f, | ||
3830 | 0xbeefbeef, 0x1c01f000, 0x497b4000, 0x497b4001, | ||
3831 | 0x497b4002, 0x497b4003, 0x497b4004, 0x1c01f000, | ||
3832 | 0x59c400a4, 0x4c580000, 0x4c500000, 0x4c540000, | ||
3833 | 0x82000500, 0x0000000f, 0x82000480, 0x00000007, | ||
3834 | 0x0400100a, 0x82006c80, 0x00000006, 0x02021800, | ||
3835 | 0x001005d8, 0x0c01f807, 0x5c00a800, 0x5c00a000, | ||
3836 | 0x5c00b000, 0x1c01f000, 0x0401f906, 0x0401f7fb, | ||
3837 | 0x00103b51, 0x00103b57, 0x00103b7c, 0x00103b9e, | ||
3838 | 0x00103c59, 0x59c40806, 0x8c040d00, 0x04020003, | ||
3839 | 0x84040d40, 0x48078806, 0x1c01f000, 0x59c40005, | ||
3840 | 0x8c000534, 0x02020000, 0x0010429e, 0x4a038805, | ||
3841 | 0xffffffff, 0x42006000, 0x00020000, 0x0201f800, | ||
3842 | 0x00104282, 0x59a80015, 0x82000500, 0xfffffffa, | ||
3843 | 0x84000542, 0x48035015, 0x497b5026, 0x42000800, | ||
3844 | 0x0010be21, 0x45780800, 0x497b5013, 0x42006000, | ||
3845 | 0xffefffff, 0x42006800, 0x40000000, 0x0201f800, | ||
3846 | 0x0010427d, 0x59c40006, 0x82000500, 0xffffff0f, | ||
3847 | 0x48038806, 0x42000800, 0x00000010, 0x42001000, | ||
3848 | 0x001041f3, 0x0201f800, 0x00105f83, 0x0401f001, | ||
3849 | 0x42006000, 0xffffffff, 0x42006800, 0x00800000, | ||
3850 | 0x0201f800, 0x0010427d, 0x4200b000, 0x000000c8, | ||
3851 | 0x59c400a4, 0x82000500, 0x0000000f, 0x82000580, | ||
3852 | 0x0000000a, 0x0400000f, 0x8058b040, 0x040207f9, | ||
3853 | 0x497b5014, 0x42006000, 0xbf7fffff, 0x42006800, | ||
3854 | 0x00018000, 0x0201f800, 0x0010427d, 0x42006000, | ||
3855 | 0xfffeffff, 0x41786800, 0x0201f000, 0x0010427d, | ||
3856 | 0x497b5014, 0x4a035012, 0x00000000, 0x80000580, | ||
3857 | 0x0201f000, 0x00104289, 0x4a038805, 0xffffffff, | ||
3858 | 0x59a80012, 0x82000c80, 0x00000004, 0x02021800, | ||
3859 | 0x001005d8, 0x0c01f001, 0x00103ba9, 0x00103bd6, | ||
3860 | 0x00103c4f, 0x4803c856, 0x59c400a3, 0x8400051e, | ||
3861 | 0x480388a3, 0x4a035012, 0x00000001, 0x59c40008, | ||
3862 | 0x8400054e, 0x48038808, 0x0201f800, 0x00104263, | ||
3863 | 0x42007800, 0x0010b54c, 0x4a007806, 0x11010000, | ||
3864 | 0x4200a000, 0x0010b402, 0x4200a800, 0x0010b553, | ||
3865 | 0x4200b000, 0x00000002, 0x0201f800, 0x0010ab17, | ||
3866 | 0x497b8802, 0x42000800, 0x00000003, 0x497b504a, | ||
3867 | 0x0201f800, 0x0010416e, 0x4a03504a, 0x00000001, | ||
3868 | 0x497b5016, 0x0201f800, 0x00104290, 0x42006000, | ||
3869 | 0xffffffff, 0x42006800, 0x00080000, 0x0201f800, | ||
3870 | 0x0010427d, 0x42006000, 0xfff7ffff, 0x41786800, | ||
3871 | 0x0201f000, 0x0010427d, 0x59a80016, 0x497b5016, | ||
3872 | 0x80002540, 0x04000066, 0x59c40004, 0x82000500, | ||
3873 | 0x00000003, 0x04020071, 0x59a80815, 0x8c040d02, | ||
3874 | 0x0400004b, 0x82100580, 0x0000000c, 0x0402004f, | ||
3875 | 0x82100400, 0x00000018, 0x8000b104, 0x41cc1000, | ||
3876 | 0x42001800, 0x0010b54c, 0x50080800, 0x500c0000, | ||
3877 | 0x80040580, 0x0402001a, 0x80081000, 0x800c1800, | ||
3878 | 0x8058b040, 0x040207f9, 0x0201f800, 0x00104290, | ||
3879 | 0x42006000, 0xffffffff, 0x42006800, 0x00500000, | ||
3880 | 0x0201f800, 0x0010427d, 0x4a035012, 0x00000002, | ||
3881 | 0x4a035014, 0x00000002, 0x42000800, 0x000007d0, | ||
3882 | 0x42001000, 0x00104148, 0x0201f800, 0x0010606e, | ||
3883 | 0x0201f800, 0x00104263, 0x0401f048, 0x59cc0806, | ||
3884 | 0x82040d80, 0x11010000, 0x04020028, 0x59cc0800, | ||
3885 | 0x82040500, 0x00ffffff, 0x0400001a, 0x82000580, | ||
3886 | 0x000000ef, 0x04020017, 0x59cc0801, 0x82040500, | ||
3887 | 0x00ffffff, 0x82000580, 0x000000ef, 0x04020011, | ||
3888 | 0x83cca400, 0x00000007, 0x4200a800, 0x0010b402, | ||
3889 | 0x4200b000, 0x00000002, 0x50500800, 0x50540000, | ||
3890 | 0x80040480, 0x04001007, 0x04020010, 0x8050a000, | ||
3891 | 0x8054a800, 0x8058b040, 0x040207f8, 0x0401f00b, | ||
3892 | 0x59a80015, 0x84000502, 0x48035015, 0x41cca000, | ||
3893 | 0x4200a800, 0x0010b54c, 0x4200b000, 0x00000009, | ||
3894 | 0x0201f800, 0x0010ab17, 0x0201f800, 0x00104290, | ||
3895 | 0x42006000, 0xffffffff, 0x42006800, 0x00080000, | ||
3896 | 0x0201f800, 0x0010427d, 0x42006000, 0xfff7ffff, | ||
3897 | 0x41786800, 0x0201f800, 0x0010427d, 0x42006000, | ||
3898 | 0xffffffff, 0x42006800, 0x00004000, 0x0201f800, | ||
3899 | 0x0010427d, 0x59c40004, 0x82000500, 0x00000003, | ||
3900 | 0x04020006, 0x497b5016, 0x42000800, 0x00000003, | ||
3901 | 0x0201f000, 0x0010416e, 0x1c01f000, 0x1c01f000, | ||
3902 | 0x59a80014, 0x82006d80, 0x0000000f, 0x04000005, | ||
3903 | 0x82000580, 0x0000001b, 0x02020800, 0x00104139, | ||
3904 | 0x1c01f000, 0x59a80015, 0x84000506, 0x48035015, | ||
3905 | 0x497b504a, 0x59a80014, 0x82000c80, 0x0000001e, | ||
3906 | 0x02021800, 0x001005d8, 0x0c01f001, 0x00103c97, | ||
3907 | 0x00103cac, 0x00103cd5, 0x00103cf0, 0x00103d14, | ||
3908 | 0x00103d45, 0x00103d68, 0x00103d9b, 0x00103dbe, | ||
3909 | 0x00103de4, 0x00103e21, 0x00103e48, 0x00103e5f, | ||
3910 | 0x00103e71, 0x00103e8a, 0x00103ea0, 0x00103ea5, | ||
3911 | 0x00103ecd, 0x00103ef0, 0x00103f16, 0x00103f39, | ||
3912 | 0x00103f6c, 0x00103fae, 0x00103fd8, 0x00103ff0, | ||
3913 | 0x00104030, 0x00104049, 0x0010405c, 0x0010405d, | ||
3914 | 0x4803c856, 0x4202d800, 0x00000007, 0x0201f800, | ||
3915 | 0x0010513b, 0x04000007, 0x42006000, 0xffffffd7, | ||
3916 | 0x41786800, 0x0201f800, 0x0010427d, 0x0401f00b, | ||
3917 | 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806, | ||
3918 | 0x42001000, 0x000000f0, 0x0201f800, 0x0010193d, | ||
3919 | 0x0201f800, 0x00105098, 0x1c01f000, 0x4803c856, | ||
3920 | 0x42006000, 0xbf7fffff, 0x42006800, 0x00400000, | ||
3921 | 0x0201f800, 0x0010427d, 0x4a035014, 0x00000001, | ||
3922 | 0x42001000, 0x001041f3, 0x0201f800, 0x00105fa4, | ||
3923 | 0x0201f800, 0x001041f8, 0x42000800, 0x000007d0, | ||
3924 | 0x42001000, 0x00104148, 0x0201f000, 0x0010606e, | ||
3925 | 0x59a80016, 0x82000580, 0x00000014, 0x04020025, | ||
3926 | 0x4803c857, 0x42006000, 0xffbfffff, 0x41786800, | ||
3927 | 0x0201f800, 0x0010427d, 0x59c40004, 0x82000500, | ||
3928 | 0x00000003, 0x0402001b, 0x59cc1006, 0x82081580, | ||
3929 | 0x11020000, 0x04020016, 0x59cc1007, 0x8c08153e, | ||
3930 | 0x0400000b, 0x59a80015, 0x8c000504, 0x04020008, | ||
3931 | 0x42000000, 0x0010b83f, 0x0201f800, 0x0010aa47, | ||
3932 | 0x59a80015, 0x84000544, 0x48035015, 0x42001000, | ||
3933 | 0x00104148, 0x0201f800, 0x00105f90, 0x4a035014, | ||
3934 | 0x00000010, 0x0401f9d4, 0x0401f002, 0x497b5016, | ||
3935 | 0x1c01f000, 0x4803c856, 0x4a035014, 0x00000003, | ||
3936 | 0x42006000, 0xbf3fffff, 0x42006800, 0x00100000, | ||
3937 | 0x0201f800, 0x0010427d, 0x42001000, 0x001041f3, | ||
3938 | 0x0201f800, 0x00105fa4, 0x0201f800, 0x001041f8, | ||
3939 | 0x42001000, 0x00104148, 0x0201f800, 0x00105f90, | ||
3940 | 0x42007800, 0x0010b552, 0x46007800, 0x11020000, | ||
3941 | 0x42000800, 0x00000005, 0x0201f000, 0x0010416e, | ||
3942 | 0x59a80016, 0x80000540, 0x04000021, 0x4803c857, | ||
3943 | 0x42001000, 0x00104148, 0x0201f800, 0x00105f90, | ||
3944 | 0x59a80016, 0x82000580, 0x00000014, 0x04020016, | ||
3945 | 0x59cc1006, 0x82081580, 0x11020000, 0x04020012, | ||
3946 | 0x59cc1007, 0x8c08153e, 0x0400000b, 0x59a80015, | ||
3947 | 0x8c000504, 0x04020008, 0x42000000, 0x0010b83f, | ||
3948 | 0x0201f800, 0x0010aa47, 0x59a80015, 0x84000544, | ||
3949 | 0x48035015, 0x4a035014, 0x00000004, 0x0401f805, | ||
3950 | 0x0401f003, 0x0201f800, 0x00104139, 0x1c01f000, | ||
3951 | 0x4803c856, 0x4a035014, 0x00000005, 0x83cca400, | ||
3952 | 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000, | ||
3953 | 0x00000005, 0x0201f800, 0x0010ab17, 0x42007800, | ||
3954 | 0x0010b552, 0x46007800, 0x11030000, 0x0201f800, | ||
3955 | 0x0010413e, 0x04020014, 0x59a80015, 0x8c000500, | ||
3956 | 0x04020011, 0x59a80810, 0x82040580, 0x00ffffff, | ||
3957 | 0x0400000d, 0x82040d00, 0x000000ff, 0x82040400, | ||
3958 | 0x0010210e, 0x50000800, 0x80040910, 0x42001000, | ||
3959 | 0x00000004, 0x0401fb9b, 0x0400000b, 0x0201f800, | ||
3960 | 0x0010420d, 0x4200b000, 0x00000004, 0x83cca400, | ||
3961 | 0x00000007, 0x4200a800, 0x0010b553, 0x0201f800, | ||
3962 | 0x0010ab17, 0x42000800, 0x00000005, 0x0201f000, | ||
3963 | 0x0010416e, 0x59a80016, 0x80000540, 0x04000020, | ||
3964 | 0x4803c857, 0x42001000, 0x00104148, 0x0201f800, | ||
3965 | 0x00105f90, 0x59a80016, 0x82000580, 0x00000014, | ||
3966 | 0x04020016, 0x59cc1006, 0x82081580, 0x11030000, | ||
3967 | 0x04020012, 0x59cc1007, 0x8c08153e, 0x0400000b, | ||
3968 | 0x59a80015, 0x8c000504, 0x04020008, 0x42000000, | ||
3969 | 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015, | ||
3970 | 0x84000544, 0x48035015, 0x4a035014, 0x00000006, | ||
3971 | 0x0401f804, 0x0401f002, 0x0401fbd3, 0x1c01f000, | ||
3972 | 0x4803c856, 0x4a035014, 0x00000007, 0x83cca400, | ||
3973 | 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000, | ||
3974 | 0x00000005, 0x0201f800, 0x0010ab17, 0x42007800, | ||
3975 | 0x0010b552, 0x46007800, 0x11040000, 0x0401fbc7, | ||
3976 | 0x04020020, 0x59a80015, 0x8c000500, 0x0402001d, | ||
3977 | 0x599c0017, 0x8c000500, 0x0400001a, 0x599c1402, | ||
3978 | 0x82080480, 0x0000007f, 0x02021800, 0x001005d8, | ||
3979 | 0x4c080000, 0x82081400, 0x0010210e, 0x50081000, | ||
3980 | 0x82081500, 0x000000ff, 0x480b5010, 0x42000800, | ||
3981 | 0x00000003, 0x0201f800, 0x00106c78, 0x5c000800, | ||
3982 | 0x42001000, 0x00000004, 0x0401fb3e, 0x04000005, | ||
3983 | 0x0401fd2b, 0x04000003, 0x0201f800, 0x001015fe, | ||
3984 | 0x42000800, 0x00000005, 0x0401f3d4, 0x59a80016, | ||
3985 | 0x80000540, 0x04000020, 0x4803c857, 0x42001000, | ||
3986 | 0x00104148, 0x0201f800, 0x00105f90, 0x59a80016, | ||
3987 | 0x82000580, 0x00000014, 0x04020016, 0x59cc1006, | ||
3988 | 0x82081580, 0x11040000, 0x04020012, 0x59cc1007, | ||
3989 | 0x8c08153e, 0x0400000b, 0x59a80015, 0x8c000504, | ||
3990 | 0x04020008, 0x42000000, 0x0010b83f, 0x0201f800, | ||
3991 | 0x0010aa47, 0x59a80015, 0x84000544, 0x48035015, | ||
3992 | 0x4a035014, 0x00000008, 0x0401f804, 0x0401f002, | ||
3993 | 0x0401fb7d, 0x1c01f000, 0x4803c856, 0x4a035014, | ||
3994 | 0x00000009, 0x83cca400, 0x00000006, 0x4200a800, | ||
3995 | 0x0010b552, 0x4200b000, 0x00000005, 0x0201f800, | ||
3996 | 0x0010ab17, 0x42007800, 0x0010b552, 0x46007800, | ||
3997 | 0x11050100, 0x0401fb71, 0x0402000a, 0x59a80015, | ||
3998 | 0x8c000500, 0x04020007, 0x0401fa8c, 0x04020005, | ||
3999 | 0x82000540, 0x00000001, 0x0201f800, 0x001015fe, | ||
4000 | 0x42000800, 0x00000005, 0x0401fb94, 0x0401fb63, | ||
4001 | 0x04020ea4, 0x4d3c0000, 0x42027800, 0x00000001, | ||
4002 | 0x0201f800, 0x00109874, 0x5c027800, 0x1c01f000, | ||
4003 | 0x59a80016, 0x80000540, 0x0400003a, 0x4803c857, | ||
4004 | 0x42001000, 0x00104148, 0x0201f800, 0x00105f90, | ||
4005 | 0x59a80016, 0x82000580, 0x00000014, 0x04020030, | ||
4006 | 0x59cc1006, 0x82080500, 0x11050000, 0x82000580, | ||
4007 | 0x11050000, 0x0402002a, 0x8c081510, 0x04000014, | ||
4008 | 0x59cc1007, 0x8c08153e, 0x0400000b, 0x59a80015, | ||
4009 | 0x8c000504, 0x04020008, 0x42000000, 0x0010b83f, | ||
4010 | 0x0201f800, 0x0010aa47, 0x59a80015, 0x84000544, | ||
4011 | 0x48035015, 0x4a035013, 0x00000001, 0x4a035014, | ||
4012 | 0x0000000a, 0x0401f818, 0x0401f016, 0x80000540, | ||
4013 | 0x04020013, 0x59cc1007, 0x8c08153e, 0x0400000b, | ||
4014 | 0x59a80015, 0x8c000504, 0x04020008, 0x42000000, | ||
4015 | 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015, | ||
4016 | 0x84000544, 0x48035015, 0x497b5013, 0x4a035014, | ||
4017 | 0x0000000e, 0x0401f86d, 0x0401f002, 0x0401fb1a, | ||
4018 | 0x1c01f000, 0x4803c856, 0x4a035014, 0x0000000b, | ||
4019 | 0x42001000, 0x0010b553, 0x4008a800, 0x4200b000, | ||
4020 | 0x00000020, 0x4600a800, 0xffffffff, 0x8054a800, | ||
4021 | 0x8058b040, 0x040207fc, 0x42007800, 0x0010b552, | ||
4022 | 0x46007800, 0x11060000, 0x42001000, 0x0010b553, | ||
4023 | 0x0401fb0a, 0x04000005, 0x50080000, 0x46001000, | ||
4024 | 0x00ffffff, 0x0401f00c, 0x50080800, 0x82040d00, | ||
4025 | 0x0000ffff, 0x59a80010, 0x82000500, 0x000000ff, | ||
4026 | 0x82000540, 0x00000100, 0x800000e0, 0x80040d40, | ||
4027 | 0x44041000, 0x42000800, 0x00000021, 0x0401f327, | ||
4028 | 0x59a80016, 0x80000540, 0x04000014, 0x4803c857, | ||
4029 | 0x59a80016, 0x42001000, 0x00104148, 0x0201f800, | ||
4030 | 0x00105f90, 0x59a80016, 0x82000580, 0x00000084, | ||
4031 | 0x04020009, 0x59cc1006, 0x82081580, 0x11060000, | ||
4032 | 0x04020005, 0x4a035014, 0x0000000c, 0x0401f804, | ||
4033 | 0x0401f002, 0x0401fadc, 0x1c01f000, 0x4803c856, | ||
4034 | 0x4a035014, 0x0000000d, 0x83cca400, 0x00000006, | ||
4035 | 0x4200a800, 0x0010b552, 0x4200b000, 0x00000021, | ||
4036 | 0x0201f800, 0x0010ab17, 0x42007800, 0x0010b552, | ||
4037 | 0x46007800, 0x11070000, 0x42000800, 0x00000021, | ||
4038 | 0x0401f2fe, 0x59a80016, 0x80000540, 0x04000016, | ||
4039 | 0x4803c857, 0x59a80016, 0x42001000, 0x00104148, | ||
4040 | 0x0201f800, 0x00105f90, 0x82000580, 0x00000084, | ||
4041 | 0x0402000c, 0x59cc1006, 0x82081580, 0x11070000, | ||
4042 | 0x04020008, 0x4a035013, 0x00000001, 0x0401fa91, | ||
4043 | 0x4a035014, 0x0000000e, 0x0401f804, 0x0401f002, | ||
4044 | 0x0401fab1, 0x1c01f000, 0x4803c856, 0x82040d40, | ||
4045 | 0x00000001, 0x0401fbfc, 0x4a035014, 0x0000000f, | ||
4046 | 0x497b5016, 0x42006000, 0xffffffff, 0x42006800, | ||
4047 | 0x00300000, 0x0401fbe8, 0x42006000, 0xffdfffff, | ||
4048 | 0x41786800, 0x0401fbe4, 0x42000800, 0x000007d0, | ||
4049 | 0x42001000, 0x00104148, 0x0201f000, 0x00105f69, | ||
4050 | 0x4803c856, 0x59a80016, 0x80000540, 0x04020296, | ||
4051 | 0x1c01f000, 0x4803c856, 0x4a035014, 0x00000011, | ||
4052 | 0x83cca400, 0x00000006, 0x4200a800, 0x0010b552, | ||
4053 | 0x4200b000, 0x00000005, 0x0201f800, 0x0010ab17, | ||
4054 | 0x4200a800, 0x0010b552, 0x4600a800, 0x11020000, | ||
4055 | 0x0401fa8a, 0x04020015, 0x59a80010, 0x82000d00, | ||
4056 | 0xffff0000, 0x04000011, 0x82000500, 0x000000ff, | ||
4057 | 0x0400000e, 0x82000c00, 0x0010210e, 0x50040800, | ||
4058 | 0x80040910, 0x82040580, 0x0000007e, 0x04000007, | ||
4059 | 0x82040580, 0x00000080, 0x04000004, 0x42001000, | ||
4060 | 0x00000004, 0x0401fa07, 0x42000800, 0x00000005, | ||
4061 | 0x0401f2a2, 0x59a80016, 0x80000540, 0x04000020, | ||
4062 | 0x4803c857, 0x42001000, 0x00104148, 0x0201f800, | ||
4063 | 0x00105f90, 0x59a80016, 0x82000580, 0x00000014, | ||
4064 | 0x04020016, 0x59cc1006, 0x82081580, 0x11030000, | ||
4065 | 0x04020012, 0x59cc1007, 0x8c08153e, 0x0400000b, | ||
4066 | 0x59a80015, 0x8c000504, 0x04020008, 0x42000000, | ||
4067 | 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015, | ||
4068 | 0x84000544, 0x48035015, 0x4a035014, 0x00000012, | ||
4069 | 0x0401f804, 0x0401f002, 0x0401fa4b, 0x1c01f000, | ||
4070 | 0x4803c856, 0x4a035014, 0x00000013, 0x83cca400, | ||
4071 | 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000, | ||
4072 | 0x00000005, 0x0201f800, 0x0010ab17, 0x4200a800, | ||
4073 | 0x0010b552, 0x4600a800, 0x11030000, 0x0401fa3f, | ||
4074 | 0x04020013, 0x59a80015, 0x8c000500, 0x04020010, | ||
4075 | 0x59a80810, 0x82040580, 0x00ffffff, 0x0400000c, | ||
4076 | 0x82040d00, 0x000000ff, 0x82040400, 0x0010210e, | ||
4077 | 0x50000800, 0x80040910, 0x42001000, 0x00000004, | ||
4078 | 0x0401f9c0, 0x04000002, 0x0401fafb, 0x42000800, | ||
4079 | 0x00000005, 0x0401f259, 0x59a80016, 0x80000540, | ||
4080 | 0x04000020, 0x4803c857, 0x42001000, 0x00104148, | ||
4081 | 0x0201f800, 0x00105f90, 0x59a80016, 0x82000580, | ||
4082 | 0x00000014, 0x04020016, 0x59cc1006, 0x82081580, | ||
4083 | 0x11040000, 0x04020012, 0x59cc1007, 0x8c08153e, | ||
4084 | 0x0400000b, 0x59a80015, 0x8c000504, 0x04020008, | ||
4085 | 0x42000000, 0x0010b83f, 0x0201f800, 0x0010aa47, | ||
4086 | 0x59a80015, 0x84000544, 0x48035015, 0x4a035014, | ||
4087 | 0x00000014, 0x0401f804, 0x0401f002, 0x0401fa02, | ||
4088 | 0x1c01f000, 0x4803c856, 0x4a035014, 0x00000015, | ||
4089 | 0x83cca400, 0x00000006, 0x4200a800, 0x0010b552, | ||
4090 | 0x4200b000, 0x00000005, 0x0201f800, 0x0010ab17, | ||
4091 | 0x4200a800, 0x0010b552, 0x4600a800, 0x11040000, | ||
4092 | 0x0401f9f6, 0x04020020, 0x59a80015, 0x8c000500, | ||
4093 | 0x0402001d, 0x599c0017, 0x8c000500, 0x0400001a, | ||
4094 | 0x599c1402, 0x82080480, 0x0000007f, 0x02021800, | ||
4095 | 0x001005d8, 0x4c080000, 0x82081400, 0x0010210e, | ||
4096 | 0x50081000, 0x82081500, 0x000000ff, 0x480b5010, | ||
4097 | 0x42000800, 0x00000003, 0x0201f800, 0x00106c78, | ||
4098 | 0x5c000800, 0x42001000, 0x00000004, 0x0401f96d, | ||
4099 | 0x04000005, 0x0201f800, 0x00103abf, 0x02020800, | ||
4100 | 0x001015fe, 0x42000800, 0x00000005, 0x0401f203, | ||
4101 | 0x59a80016, 0x80000540, 0x0400003f, 0x4803c857, | ||
4102 | 0x42001000, 0x00104148, 0x0201f800, 0x00105f90, | ||
4103 | 0x59a80016, 0x82000580, 0x00000014, 0x04020035, | ||
4104 | 0x59cc1006, 0x82080500, 0x11050000, 0x82000580, | ||
4105 | 0x11050000, 0x0402002f, 0x8c081510, 0x04000010, | ||
4106 | 0x0401fb09, 0x59cc1007, 0x8c08153e, 0x0400000b, | ||
4107 | 0x59a80015, 0x8c000504, 0x04020008, 0x42000000, | ||
4108 | 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015, | ||
4109 | 0x84000544, 0x48035015, 0x0401f013, 0x59cc1007, | ||
4110 | 0x8c08153e, 0x0400000b, 0x59a80015, 0x8c000504, | ||
4111 | 0x04020008, 0x42000000, 0x0010b83f, 0x0201f800, | ||
4112 | 0x0010aa47, 0x59a80015, 0x84000544, 0x48035015, | ||
4113 | 0x82000540, 0x00000001, 0x0401faeb, 0x497b5013, | ||
4114 | 0x0401f003, 0x4a035013, 0x00000001, 0x59cc1007, | ||
4115 | 0x8c08153c, 0x04000003, 0x4a035026, 0x00000008, | ||
4116 | 0x4a035014, 0x00000016, 0x0401f804, 0x0401f002, | ||
4117 | 0x0401f98d, 0x1c01f000, 0x4803c856, 0x83cca400, | ||
4118 | 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000, | ||
4119 | 0x00000005, 0x0201f800, 0x0010ab17, 0x4a035014, | ||
4120 | 0x00000017, 0x59a80013, 0x8c000500, 0x04000006, | ||
4121 | 0x42001000, 0x0010b552, 0x46001000, 0x11050100, | ||
4122 | 0x0401f003, 0x4a035014, 0x0000001b, 0x0401f97b, | ||
4123 | 0x0402000a, 0x59a80015, 0x8c000500, 0x04020007, | ||
4124 | 0x0401f896, 0x04020005, 0x82000540, 0x00000001, | ||
4125 | 0x0201f800, 0x001015fe, 0x42000800, 0x00000005, | ||
4126 | 0x0401f99e, 0x4d3c0000, 0x42027800, 0x00000001, | ||
4127 | 0x0201f800, 0x00109874, 0x5c027800, 0x1c01f000, | ||
4128 | 0x59a80016, 0x80000540, 0x04000015, 0x4803c857, | ||
4129 | 0x42001000, 0x00104148, 0x0201f800, 0x00105f90, | ||
4130 | 0x59a80016, 0x82000580, 0x00000084, 0x0402000b, | ||
4131 | 0x59cc1006, 0x82081580, 0x11060000, 0x04020007, | ||
4132 | 0x80000580, 0x0401faa0, 0x4a035014, 0x00000018, | ||
4133 | 0x0401f804, 0x0401f002, 0x0401f94b, 0x1c01f000, | ||
4134 | 0x4803c856, 0x4a035014, 0x00000019, 0x83cca400, | ||
4135 | 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000, | ||
4136 | 0x00000021, 0x0201f800, 0x0010ab17, 0x42003800, | ||
4137 | 0x0010b553, 0x0401f941, 0x04020018, 0x401c2800, | ||
4138 | 0x50141000, 0x80080130, 0x80000000, 0x40001800, | ||
4139 | 0x82081500, 0x00ffffff, 0x800000f0, 0x80080540, | ||
4140 | 0x44002800, 0x59a80810, 0x82040d00, 0x000000ff, | ||
4141 | 0x400c1000, 0x80081104, 0x82082400, 0x0010b553, | ||
4142 | 0x50101000, 0x820c0500, 0x00000003, 0x0c01f806, | ||
4143 | 0x80081540, 0x44082000, 0x42000800, 0x00000021, | ||
4144 | 0x0401f156, 0x0010401d, 0x00104022, 0x00104027, | ||
4145 | 0x0010402c, 0x800408f0, 0x40040000, 0x82081500, | ||
4146 | 0x00ffffff, 0x1c01f000, 0x800408e0, 0x40040000, | ||
4147 | 0x82081500, 0xff00ffff, 0x1c01f000, 0x800408d0, | ||
4148 | 0x40040000, 0x82081500, 0xffff00ff, 0x1c01f000, | ||
4149 | 0x40040000, 0x82081500, 0xffffff00, 0x1c01f000, | ||
4150 | 0x59a80016, 0x80000540, 0x04000016, 0x4803c857, | ||
4151 | 0x42001000, 0x00104148, 0x0201f800, 0x00105f90, | ||
4152 | 0x59a80016, 0x82000580, 0x00000084, 0x0402000c, | ||
4153 | 0x59cc1006, 0x82081580, 0x11070000, 0x04020008, | ||
4154 | 0x4a035013, 0x00000001, 0x0401f8d2, 0x4a035014, | ||
4155 | 0x0000001a, 0x0401f804, 0x0401f002, 0x0401f8f2, | ||
4156 | 0x1c01f000, 0x82000540, 0x00000001, 0x0401fa3e, | ||
4157 | 0x4a035014, 0x0000001b, 0x83cca400, 0x00000006, | ||
4158 | 0x4200a800, 0x0010b552, 0x59a82016, 0x40100000, | ||
4159 | 0x8000b104, 0x40580800, 0x5450a800, 0x8050a000, | ||
4160 | 0x8054a800, 0x8058b040, 0x040207fc, 0x0401f113, | ||
4161 | 0x1c01f000, 0x1c01f000, 0x4803c856, 0x42003000, | ||
4162 | 0x00000004, 0x42004000, 0x0010b553, 0x599c2817, | ||
4163 | 0x8c142d14, 0x0402001f, 0x42001000, 0x00000003, | ||
4164 | 0x40200000, 0x80080400, 0x50000800, 0x82042580, | ||
4165 | 0xffffffff, 0x04020005, 0x80081040, 0x80183040, | ||
4166 | 0x040207f8, 0x0401f05e, 0x800811c0, 0x04020006, | ||
4167 | 0x82042580, 0x3fffffff, 0x04000058, 0x82040d40, | ||
4168 | 0xc0000000, 0x4200b000, 0x00000020, 0x42001800, | ||
4169 | 0x00000001, 0x40042000, 0x80102102, 0x04021021, | ||
4170 | 0x800c18c2, 0x8058b040, 0x040207fc, 0x0401f04b, | ||
4171 | 0x41781000, 0x40200000, 0x80080400, 0x50000800, | ||
4172 | 0x82042580, 0xffffffff, 0x04020005, 0x80081000, | ||
4173 | 0x80183040, 0x040207f8, 0x0401f040, 0x800811c0, | ||
4174 | 0x04020003, 0x82040d40, 0xc0000000, 0x4200b000, | ||
4175 | 0x00000001, 0x42001800, 0x80000000, 0x40042000, | ||
4176 | 0x801020c2, 0x04021007, 0x800c1902, 0x8058b000, | ||
4177 | 0x82580480, 0x00000021, 0x040017fa, 0x0401f02f, | ||
4178 | 0x40200000, 0x80082400, 0x50100000, 0x800c0540, | ||
4179 | 0x44002000, 0x59a80015, 0x84000540, 0x48035015, | ||
4180 | 0x40580000, 0x42002800, 0x00000020, 0x80142c80, | ||
4181 | 0x40080000, 0x42003800, 0x00000003, 0x801c0480, | ||
4182 | 0x800000ca, 0x80142d40, 0x82144c00, 0x0010210e, | ||
4183 | 0x50242800, 0x82142d00, 0x000000ff, 0x48175010, | ||
4184 | 0x4c040000, 0x40140800, 0x0201f800, 0x001015eb, | ||
4185 | 0x5c000800, 0x40001800, 0x500c0000, 0x80100540, | ||
4186 | 0x44001800, 0x59a80015, 0x84000540, 0x48035015, | ||
4187 | 0x4200a800, 0x0010b553, 0x4020a000, 0x4200b000, | ||
4188 | 0x00000004, 0x0201f800, 0x0010ab17, 0x82000540, | ||
4189 | 0x00000001, 0x0401f002, 0x80000580, 0x1c01f000, | ||
4190 | 0x4807c857, 0x480bc857, 0x4008b000, 0x83cca400, | ||
4191 | 0x00000007, 0x4200a800, 0x0010b553, 0x40541000, | ||
4192 | 0x0201f800, 0x0010ab17, 0x40041800, 0x41782000, | ||
4193 | 0x42000000, 0x00000003, 0x820c1c80, 0x00000020, | ||
4194 | 0x04001004, 0x80102000, 0x80000040, 0x0401f7fb, | ||
4195 | 0x40041800, 0x801021c0, 0x04000005, 0x820c1c80, | ||
4196 | 0x00000020, 0x80102040, 0x040207fd, 0x42002000, | ||
4197 | 0x00000001, 0x800c19c0, 0x04000004, 0x801020c2, | ||
4198 | 0x800c1840, 0x040207fe, 0x80083c00, 0x83cc2c00, | ||
4199 | 0x00000007, 0x80142c00, 0x50140000, 0x80102d00, | ||
4200 | 0x04020012, 0x80100540, 0x44003800, 0x82042400, | ||
4201 | 0x0010210e, 0x50102800, 0x82142d00, 0x000000ff, | ||
4202 | 0x48175010, 0x4c040000, 0x40140800, 0x0201f800, | ||
4203 | 0x001015eb, 0x5c000800, 0x59a80015, 0x84000540, | ||
4204 | 0x48035015, 0x80000580, 0x1c01f000, 0x4807c856, | ||
4205 | 0x42001000, 0x00008017, 0x59a8184e, 0x0201f800, | ||
4206 | 0x0010aa4f, 0x0201f800, 0x00103a3e, 0x1c01f000, | ||
4207 | 0x4807c856, 0x4200b000, 0x00000020, 0x83cca400, | ||
4208 | 0x00000007, 0x4200a800, 0x0010be21, 0x0201f000, | ||
4209 | 0x0010ab28, 0x4807c856, 0x0201f800, 0x00106ede, | ||
4210 | 0x42000800, 0x000000f7, 0x0401f8de, 0x497b2804, | ||
4211 | 0x497b2805, 0x497b281c, 0x497b281d, 0x4202d800, | ||
4212 | 0x00000001, 0x42006000, 0xbf7fffff, 0x42006800, | ||
4213 | 0x00018000, 0x0401f950, 0x42006000, 0xfffeffff, | ||
4214 | 0x41786800, 0x0401f94c, 0x497b504e, 0x42000800, | ||
4215 | 0x0000002d, 0x42001000, 0x001041bc, 0x0201f000, | ||
4216 | 0x00105f69, 0x4807c856, 0x0401ffe3, 0x497b5014, | ||
4217 | 0x497b5016, 0x1c01f000, 0x4807c856, 0x59a80005, | ||
4218 | 0x8c000506, 0x1c01f000, 0x4807c856, 0x42006000, | ||
4219 | 0xffffffff, 0x42006800, 0x00000028, 0x0401f136, | ||
4220 | 0x4807c856, 0x0401ffc2, 0x0201f800, 0x00106c55, | ||
4221 | 0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000, | ||
4222 | 0x02000800, 0x00106c4b, 0x59c400a4, 0x82000500, | ||
4223 | 0x0000000f, 0x82000580, 0x00000002, 0x0402000a, | ||
4224 | 0x42006000, 0xffffffff, 0x42006800, 0x00200000, | ||
4225 | 0x0401f921, 0x42006000, 0xffdfffff, 0x41786800, | ||
4226 | 0x0401f91d, 0x497b5014, 0x42000800, 0x000000f7, | ||
4227 | 0x0401f89c, 0x59c400a3, 0x82000500, 0xbf20bfff, | ||
4228 | 0x82000540, 0x0001c000, 0x480388a3, 0x84000520, | ||
4229 | 0x480388a3, 0x1c01f000, 0x497b5016, 0x59b400f5, | ||
4230 | 0x8c000500, 0x04020004, 0x82000540, 0x00000001, | ||
4231 | 0x480368f5, 0x800400c4, 0x82000400, 0x00002000, | ||
4232 | 0x4803910a, 0x59b400f6, 0x82000500, 0x00000018, | ||
4233 | 0x040207fd, 0x4a0368f0, 0x0010b54b, 0x42000000, | ||
4234 | 0x0010b552, 0x480368f1, 0x82040400, 0x0000dc00, | ||
4235 | 0x480368f3, 0x59c400a4, 0x82000500, 0x0000000f, | ||
4236 | 0x82000580, 0x00000008, 0x04020017, 0x4c5c0000, | ||
4237 | 0x4c600000, 0x59c4b805, 0x8c5cbd3a, 0x04020005, | ||
4238 | 0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47, | ||
4239 | 0x4a038805, 0x02000000, 0x0201f800, 0x001019fe, | ||
4240 | 0x4000c000, 0x0201f800, 0x00101963, 0x4202d800, | ||
4241 | 0x00000001, 0x497b5014, 0x5c00c000, 0x5c00b800, | ||
4242 | 0x1c01f000, 0x59c8010b, 0x8c000502, 0x040007e2, | ||
4243 | 0x59c408a4, 0x82040d00, 0x0000000f, 0x82040d80, | ||
4244 | 0x0000000b, 0x04020005, 0x59a80814, 0x82040d40, | ||
4245 | 0x00002000, 0x0401f004, 0x59a80812, 0x82040d40, | ||
4246 | 0x00001000, 0x4807504e, 0x59a8084a, 0x800409c0, | ||
4247 | 0x04020007, 0x42000800, 0x000007d0, 0x42001000, | ||
4248 | 0x00104148, 0x0201f800, 0x0010606e, 0x1c01f000, | ||
4249 | 0x4807c856, 0x0401ff4e, 0x0201f800, 0x00106c55, | ||
4250 | 0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000, | ||
4251 | 0x02000800, 0x00106c4b, 0x59c400a4, 0x82000500, | ||
4252 | 0x0000000f, 0x82000580, 0x00000002, 0x0402000a, | ||
4253 | 0x42006000, 0xffffffff, 0x42006800, 0x00200000, | ||
4254 | 0x0401f8ad, 0x42006000, 0xffdfffff, 0x41786800, | ||
4255 | 0x0401f8a9, 0x0201f800, 0x00105141, 0x04000014, | ||
4256 | 0x0201f800, 0x00105151, 0x04020011, 0x4a035032, | ||
4257 | 0x0000aaaa, 0x4c040000, 0x0201f800, 0x0010162a, | ||
4258 | 0x59a8002a, 0x82000500, 0xffff0000, 0x80040540, | ||
4259 | 0x4803502a, 0x5c000800, 0x4a035033, 0x00000000, | ||
4260 | 0x0201f800, 0x001050a2, 0x0401f008, 0x4a03504c, | ||
4261 | 0x00000005, 0x42000000, 0x00000001, 0x0201f800, | ||
4262 | 0x00101590, 0x0401ff2c, 0x1c01f000, 0x0401f805, | ||
4263 | 0x42006000, 0xbf7f7fff, 0x41786800, 0x0401f086, | ||
4264 | 0x0201f800, 0x00105151, 0x04020005, 0x59c40006, | ||
4265 | 0x82000540, 0x000000f0, 0x48038806, 0x1c01f000, | ||
4266 | 0x800408d0, 0x59a80015, 0x8c000506, 0x04000006, | ||
4267 | 0x59a80010, 0x82000500, 0x000000ff, 0x80040540, | ||
4268 | 0x0401f003, 0x82040540, 0x000000f7, 0x480388a7, | ||
4269 | 0x1c01f000, 0x4807c856, 0x42000000, 0x0010b83b, | ||
4270 | 0x0201f800, 0x0010aa47, 0x42003000, 0x00000005, | ||
4271 | 0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000d, | ||
4272 | 0x42027800, 0x00000002, 0x0401f038, 0x4807c856, | ||
4273 | 0x42000000, 0x0010b86b, 0x0201f800, 0x0010aa47, | ||
4274 | 0x42003000, 0x00000000, 0x4d3c0000, 0x4c180000, | ||
4275 | 0x42003000, 0x0000000f, 0x42027800, 0x00000002, | ||
4276 | 0x0401f02a, 0x4807c856, 0x42000000, 0x0010b86a, | ||
4277 | 0x0201f800, 0x0010aa47, 0x42003000, 0x00000003, | ||
4278 | 0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000e, | ||
4279 | 0x42027800, 0x00000202, 0x0401f01c, 0x4807c856, | ||
4280 | 0x42000000, 0x0010b869, 0x0201f800, 0x0010aa47, | ||
4281 | 0x42003000, 0x00000004, 0x4d3c0000, 0x4c180000, | ||
4282 | 0x42003000, 0x00000010, 0x42027800, 0x00000202, | ||
4283 | 0x0401f00e, 0x4807c856, 0x42000000, 0x0010b83e, | ||
4284 | 0x0201f800, 0x0010aa47, 0x42003000, 0x00000001, | ||
4285 | 0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000c, | ||
4286 | 0x42027800, 0x00000202, 0x42001800, 0x0000ffff, | ||
4287 | 0x42002000, 0x00000007, 0x0201f800, 0x00103aae, | ||
4288 | 0x5c003000, 0x4d400000, 0x0201f800, 0x0010a95d, | ||
4289 | 0x42028000, 0x0000002a, 0x0201f800, 0x00101fe5, | ||
4290 | 0x5c028000, 0x5c027800, 0x1c01f000, 0x4807c856, | ||
4291 | 0x04011000, 0x4a03c840, 0x0010b54b, 0x4a03c842, | ||
4292 | 0x00000040, 0x40000000, 0x040117ff, 0x42007800, | ||
4293 | 0x0010b54b, 0x46007800, 0x00000011, 0x803c7800, | ||
4294 | 0x4a007800, 0x220000ef, 0x4a007801, 0x000000ef, | ||
4295 | 0x4a007802, 0x01380000, 0x4a007803, 0x00000000, | ||
4296 | 0x4a007804, 0xffffffff, 0x4a007805, 0x00000000, | ||
4297 | 0x1c01f000, 0x59c400a3, 0x80300500, 0x80340540, | ||
4298 | 0x480388a3, 0x1c01f000, 0x4833c857, 0x59c400a3, | ||
4299 | 0x80300540, 0x480388a3, 0x80300580, 0x480388a3, | ||
4300 | 0x1c01f000, 0x4803c856, 0x04000004, 0x4a03504b, | ||
4301 | 0x00000001, 0x0401f002, 0x497b504b, 0x1c01f000, | ||
4302 | 0x4803c856, 0x59c80002, 0x80000540, 0x0400000a, | ||
4303 | 0x80000040, 0x04000008, 0x4a039005, 0x00000140, | ||
4304 | 0x42000000, 0x00000006, 0x80000040, 0x040207ff, | ||
4305 | 0x0401f7f4, 0x1c01f000, 0x4c5c0000, 0x4c600000, | ||
4306 | 0x59c4b805, 0x485fc856, 0x8c5cbd3a, 0x04020005, | ||
4307 | 0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47, | ||
4308 | 0x4a038805, 0x02000000, 0x0201f800, 0x001019fe, | ||
4309 | 0x4000c000, 0x0201f800, 0x00101963, 0x4a038805, | ||
4310 | 0x04000000, 0x5c00c000, 0x5c00b800, 0x1c01f000, | ||
4311 | 0x497a6a00, 0x4937c857, 0x4a026c00, 0x00000707, | ||
4312 | 0x497a6801, 0x497a6808, 0x497a6809, 0x497a6806, | ||
4313 | 0x497a6807, 0x497a6c0b, 0x497a680c, 0x0201f800, | ||
4314 | 0x00103b25, 0x04020006, 0x5934080f, 0x59340010, | ||
4315 | 0x80040540, 0x02020800, 0x001005d8, 0x4a026a04, | ||
4316 | 0x00000100, 0x497a6a03, 0x59340402, 0x82000500, | ||
4317 | 0x000000ff, 0x48026c02, 0x497a6c04, 0x497a6a05, | ||
4318 | 0x497a6c05, 0x497a6811, 0x4d2c0000, 0x5934000d, | ||
4319 | 0x49466c03, 0x80025d40, 0x04000004, 0x0201f800, | ||
4320 | 0x001007fd, 0x497a680d, 0x5c025800, 0x599c0401, | ||
4321 | 0x48026a0b, 0x599c0208, 0x48026c12, 0x497a680a, | ||
4322 | 0x0201f000, 0x00104c62, 0x42000000, 0x00000005, | ||
4323 | 0x80000d80, 0x0401f02d, 0x0201f800, 0x00104a09, | ||
4324 | 0x04020017, 0x59a80026, 0x8c00050a, 0x04020010, | ||
4325 | 0x59340212, 0x82000500, 0x0000ff00, 0x4803c857, | ||
4326 | 0x0400000b, 0x59340a00, 0x8c040d1e, 0x02000000, | ||
4327 | 0x000201c4, 0x42000000, 0x00000029, 0x42000800, | ||
4328 | 0x00001000, 0x492fc857, 0x0401f018, 0x492fc857, | ||
4329 | 0x42000000, 0x00000028, 0x0401f012, 0x59a80805, | ||
4330 | 0x8c040d02, 0x04020003, 0x8c040d00, 0x04000004, | ||
4331 | 0x42000000, 0x00000004, 0x0401f00a, 0x42000000, | ||
4332 | 0x00000029, 0x59340a00, 0x8c040d1e, 0x04000005, | ||
4333 | 0x492fc857, 0x42000800, 0x00001000, 0x0401f003, | ||
4334 | 0x492fc857, 0x80000d80, 0x4803c857, 0x80028540, | ||
4335 | 0x1c01f000, 0x4803c857, 0x59a80005, 0x8c000500, | ||
4336 | 0x040207ec, 0x0201f800, 0x001049e7, 0x040207e4, | ||
4337 | 0x59340200, 0x8c00050e, 0x040007e1, 0x0201f000, | ||
4338 | 0x000201c4, 0x0201f800, 0x001047eb, 0x040007bf, | ||
4339 | 0x0201f000, 0x000201c8, 0x592c0206, 0x492fc857, | ||
4340 | 0x82000d80, 0x000007ff, 0x04020006, 0x4a025c0a, | ||
4341 | 0x00000030, 0x42026800, 0x0010b524, 0x0401f021, | ||
4342 | 0x82000c80, 0x000007f0, 0x04021046, 0x81ac0400, | ||
4343 | 0x50000000, 0x80026d40, 0x04000038, 0x0201f800, | ||
4344 | 0x001048e3, 0x04020038, 0x592c040a, 0x8c00050a, | ||
4345 | 0x04020014, 0x592e6009, 0x83300480, 0x0010d1c0, | ||
4346 | 0x0400103b, 0x41580000, 0x81300480, 0x04021038, | ||
4347 | 0x59300c06, 0x82040580, 0x00000009, 0x04020037, | ||
4348 | 0x4a025a06, 0x00000000, 0x497a5800, 0x59300008, | ||
4349 | 0x80000540, 0x04020018, 0x492e6008, 0x0401f010, | ||
4350 | 0x0201f800, 0x0002075a, 0x04000019, 0x592c0206, | ||
4351 | 0x49366009, 0x492e6008, 0x4a026406, 0x00000009, | ||
4352 | 0x497a6015, 0x49325809, 0x82000d80, 0x000007ff, | ||
4353 | 0x04020003, 0x4a026015, 0x00008000, 0x42027000, | ||
4354 | 0x00000043, 0x0201f800, 0x000207a1, 0x80000580, | ||
4355 | 0x0401f020, 0x40000800, 0x58040000, 0x80000d40, | ||
4356 | 0x040207fd, 0x492c0800, 0x0401f01a, 0x42000000, | ||
4357 | 0x0000002c, 0x0401f016, 0x42000000, 0x00000028, | ||
4358 | 0x0401f013, 0x59a80805, 0x82040500, 0x00000003, | ||
4359 | 0x04000004, 0x42000000, 0x00000004, 0x0401f00c, | ||
4360 | 0x42000000, 0x00000029, 0x0401f009, 0x42000000, | ||
4361 | 0x00000008, 0x0401f006, 0x82040580, 0x00000007, | ||
4362 | 0x040207fb, 0x42000000, 0x00000005, 0x80000540, | ||
4363 | 0x1c01f000, 0x492fc857, 0x592e8c06, 0x83440d80, | ||
4364 | 0x000007fc, 0x04000004, 0x83440480, 0x000007f0, | ||
4365 | 0x04021014, 0x0201f800, 0x00020245, 0x04020011, | ||
4366 | 0x0201f800, 0x001049f3, 0x04020011, 0x0201f800, | ||
4367 | 0x0002075a, 0x0400001c, 0x49366009, 0x492e6008, | ||
4368 | 0x4a026406, 0x0000000a, 0x42027000, 0x00000040, | ||
4369 | 0x0201f800, 0x000207a1, 0x80000580, 0x0401f011, | ||
4370 | 0x42000000, 0x00000028, 0x0401f00d, 0x0201f800, | ||
4371 | 0x00104a09, 0x040007fb, 0x59a80805, 0x82040d00, | ||
4372 | 0x00000003, 0x04000004, 0x42000000, 0x00000004, | ||
4373 | 0x0401f003, 0x42000000, 0x00000029, 0x80000540, | ||
4374 | 0x1c01f000, 0x42000000, 0x0000002c, 0x0401f7fc, | ||
4375 | 0x492fc857, 0x592e8c06, 0x4947c857, 0x83440c80, | ||
4376 | 0x00000800, 0x42000000, 0x0000000a, 0x04021176, | ||
4377 | 0x592c4207, 0x4823c857, 0x82200500, 0x0000000f, | ||
4378 | 0x0c01f001, 0x001043d5, 0x0010445d, 0x001044a9, | ||
4379 | 0x001044b4, 0x001044bf, 0x001043d1, 0x001043d1, | ||
4380 | 0x001043d1, 0x001044cf, 0x00104513, 0x00104530, | ||
4381 | 0x001043d1, 0x001043d1, 0x001043d1, 0x001043d1, | ||
4382 | 0x001043d1, 0x4803c857, 0x42000000, 0x0000000c, | ||
4383 | 0x0401f15d, 0x592c1008, 0x82081500, 0x00ffffff, | ||
4384 | 0x59a80010, 0x80084d80, 0x42000000, 0x00000010, | ||
4385 | 0x04000155, 0x0201f800, 0x00104919, 0x04000036, | ||
4386 | 0x4803c857, 0x82004d80, 0x0000001d, 0x0402001a, | ||
4387 | 0x0201f800, 0x00105755, 0x59340405, 0x4c000000, | ||
4388 | 0x0201f800, 0x001049e7, 0x5c000000, 0x04000004, | ||
4389 | 0x8c20450a, 0x04000028, 0x80000580, 0x44002800, | ||
4390 | 0x59340008, 0x48002802, 0x59340009, 0x48002801, | ||
4391 | 0x59340006, 0x48002804, 0x59340007, 0x48002803, | ||
4392 | 0x4200b000, 0x00000005, 0x0201f800, 0x0010955f, | ||
4393 | 0x0401f166, 0x4803c857, 0x82004d80, 0x0000001a, | ||
4394 | 0x04020003, 0x40101000, 0x0401f136, 0x4803c857, | ||
4395 | 0x82004d80, 0x0000001b, 0x04020003, 0x40181000, | ||
4396 | 0x0401f130, 0x4803c857, 0x82004d80, 0x0000001c, | ||
4397 | 0x04000131, 0x82004d80, 0x00000019, 0x42000000, | ||
4398 | 0x0000000a, 0x04000120, 0x42000000, 0x0000000a, | ||
4399 | 0x04020137, 0x59a80005, 0x8c000514, 0x0400001b, | ||
4400 | 0x0201f800, 0x001049e7, 0x04000018, 0x59340212, | ||
4401 | 0x82000500, 0x0000ff00, 0x42001000, 0x00000010, | ||
4402 | 0x0402000c, 0x42001000, 0x00000008, 0x59a80026, | ||
4403 | 0x8c000506, 0x04020009, 0x59340002, 0x82000500, | ||
4404 | 0x00ff0000, 0x82000580, 0x00ff0000, 0x04000007, | ||
4405 | 0x0201f800, 0x00104c6d, 0x42000000, 0x0000001c, | ||
4406 | 0x40181000, 0x04020107, 0x0201f800, 0x0002075a, | ||
4407 | 0x04000111, 0x49366009, 0x492e6008, 0x4a026406, | ||
4408 | 0x00000001, 0x8c20450a, 0x04000004, 0x592c0404, | ||
4409 | 0x8400055c, 0x48025c04, 0x4c200000, 0x4d3c0000, | ||
4410 | 0x42027800, 0x00001000, 0x0201f800, 0x0010203c, | ||
4411 | 0x5c027800, 0x5c004000, 0x8c204512, 0x0400000b, | ||
4412 | 0x599c0018, 0x8c000518, 0x04000008, 0x592c0009, | ||
4413 | 0x82000500, 0x00000380, 0x5934080a, 0x80040d40, | ||
4414 | 0x84040d54, 0x4806680a, 0x417a7800, 0x0401f914, | ||
4415 | 0x42000800, 0x00000003, 0x0401f91b, 0x42027000, | ||
4416 | 0x00000002, 0x0201f800, 0x000207a1, 0x80000580, | ||
4417 | 0x0401f10a, 0x0201f800, 0x00020245, 0x040200ec, | ||
4418 | 0x0201f800, 0x001049ed, 0x04000008, 0x0201f800, | ||
4419 | 0x001049e7, 0x040200ec, 0x417a7800, 0x417a6000, | ||
4420 | 0x0201f800, 0x001020a1, 0x59a80005, 0x8c000514, | ||
4421 | 0x0400001b, 0x0201f800, 0x001049e7, 0x04000018, | ||
4422 | 0x59340212, 0x82000500, 0x0000ff00, 0x42001000, | ||
4423 | 0x00000010, 0x0402000c, 0x42001000, 0x00000008, | ||
4424 | 0x59a80026, 0x8c000506, 0x04020009, 0x59340002, | ||
4425 | 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, | ||
4426 | 0x04000007, 0x0201f800, 0x00104c6d, 0x42000000, | ||
4427 | 0x0000001c, 0x40181000, 0x040200b2, 0x0201f800, | ||
4428 | 0x0002075a, 0x040000bc, 0x5934080a, 0x8c204512, | ||
4429 | 0x0400000c, 0x599c0018, 0x8c000518, 0x04000009, | ||
4430 | 0x592c0009, 0x82000500, 0x00000380, 0x82041500, | ||
4431 | 0xfffffc7f, 0x80080d40, 0x84040d54, 0x0401f002, | ||
4432 | 0x84040d14, 0x4806680a, 0x49366009, 0x492e6008, | ||
4433 | 0x4a026406, 0x00000001, 0x417a7800, 0x0401f8c8, | ||
4434 | 0x42000800, 0x00000005, 0x0401f8cf, 0x42027000, | ||
4435 | 0x00000003, 0x0201f800, 0x000207a1, 0x80000580, | ||
4436 | 0x0401f0be, 0x0201f800, 0x00020245, 0x040200a0, | ||
4437 | 0x0201f800, 0x001049fc, 0x040200a3, 0x0201f800, | ||
4438 | 0x00109517, 0x04000094, 0x80000580, 0x0401f0b3, | ||
4439 | 0x0201f800, 0x00020245, 0x04020095, 0x0201f800, | ||
4440 | 0x001049fc, 0x04020098, 0x0201f800, 0x001090e6, | ||
4441 | 0x04000089, 0x80000580, 0x0401f0a8, 0x0201f800, | ||
4442 | 0x00020245, 0x0402008a, 0x83444d80, 0x000007fe, | ||
4443 | 0x42000000, 0x0000000a, 0x0402006b, 0x0201f800, | ||
4444 | 0x001049e7, 0x04020088, 0x0201f800, 0x0010952f, | ||
4445 | 0x04000079, 0x80000580, 0x0401f098, 0x82200500, | ||
4446 | 0x00000070, 0x04020005, 0x8c20450e, 0x42000000, | ||
4447 | 0x0000000c, 0x0402005c, 0x8c20450a, 0x0400000d, | ||
4448 | 0x4d3c0000, 0x42027800, 0x00001000, 0x8c20450e, | ||
4449 | 0x04020002, 0x853e7d56, 0x82200500, 0x000000a0, | ||
4450 | 0x0201f800, 0x001049d3, 0x5c027800, 0x0401f07f, | ||
4451 | 0x0201f800, 0x00020245, 0x04020065, 0x8c204508, | ||
4452 | 0x04000010, 0x4d3c0000, 0x42027800, 0x00001000, | ||
4453 | 0x8c20450e, 0x04020002, 0x853e7d56, 0x82200500, | ||
4454 | 0x00000090, 0x0201f800, 0x001049bb, 0x5c027800, | ||
4455 | 0x42000000, 0x0000000a, 0x0402003b, 0x0401f06b, | ||
4456 | 0x836c0580, 0x00000003, 0x42000800, 0x00000007, | ||
4457 | 0x0402000f, 0x0201f800, 0x001049f3, 0x04000007, | ||
4458 | 0x4c000000, 0x0201f800, 0x00104a1f, 0x5c000000, | ||
4459 | 0x0400004d, 0x0401f05d, 0x0201f800, 0x001094c5, | ||
4460 | 0x04000007, 0x80000580, 0x0401f05c, 0x0201f800, | ||
4461 | 0x00104a1f, 0x04000051, 0x0401f054, 0x0201f800, | ||
4462 | 0x00104a1f, 0x04000034, 0x0401f050, 0x0201f800, | ||
4463 | 0x00020245, 0x04020036, 0x836c0580, 0x00000003, | ||
4464 | 0x04020040, 0x8c204508, 0x04000006, 0x417a7800, | ||
4465 | 0x417a6000, 0x0201f800, 0x001020a1, 0x0401f043, | ||
4466 | 0x0201f800, 0x001049ed, 0x04000008, 0x0201f800, | ||
4467 | 0x001049e7, 0x0402002c, 0x417a7800, 0x417a6000, | ||
4468 | 0x0201f800, 0x001020a1, 0x480bc856, 0x0201f800, | ||
4469 | 0x00109332, 0x04000018, 0x80000580, 0x0401f037, | ||
4470 | 0x0401f7e3, 0x480bc857, 0x42000800, 0x00000019, | ||
4471 | 0x40001000, 0x4200b000, 0x00000002, 0x0401f00a, | ||
4472 | 0x480bc857, 0x40000800, 0x4200b000, 0x00000002, | ||
4473 | 0x0401f005, 0x480bc857, 0x40000800, 0x4200b000, | ||
4474 | 0x00000001, 0x480bc857, 0x42028000, 0x00000031, | ||
4475 | 0x0401f020, 0x480bc857, 0x42000800, 0x00000003, | ||
4476 | 0x4200b000, 0x00000001, 0x0401f7f7, 0x480bc857, | ||
4477 | 0x42000800, 0x0000000a, 0x4200b000, 0x00000001, | ||
4478 | 0x0401f7f1, 0x480bc857, 0x42000800, 0x00000009, | ||
4479 | 0x40001000, 0x4200b000, 0x00000002, 0x0401f7ea, | ||
4480 | 0x480bc857, 0x42000800, 0x00000007, 0x4200b000, | ||
4481 | 0x00000001, 0x0401f7e4, 0x480bc857, 0x4200b000, | ||
4482 | 0x00000001, 0x0401f7e0, 0x80028580, 0x4178b000, | ||
4483 | 0x82000540, 0x00000001, 0x1c01f000, 0x4937c857, | ||
4484 | 0x59326809, 0x59341200, 0x813e79c0, 0x04000003, | ||
4485 | 0x84081540, 0x0401f002, 0x84081500, 0x480a6a00, | ||
4486 | 0x1c01f000, 0x59326809, 0x5c000000, 0x4c000000, | ||
4487 | 0x4803c857, 0x4937c857, 0x82040580, 0x00000006, | ||
4488 | 0x04020004, 0x42000000, 0x00000606, 0x0401f021, | ||
4489 | 0x82040580, 0x00000004, 0x04020004, 0x42000000, | ||
4490 | 0x00000404, 0x0401f01b, 0x82040580, 0x00000007, | ||
4491 | 0x42000000, 0x00000707, 0x04000016, 0x82040580, | ||
4492 | 0x00000003, 0x42000000, 0x00000703, 0x04000011, | ||
4493 | 0x82040580, 0x00000005, 0x42000000, 0x00000405, | ||
4494 | 0x0400000c, 0x82040580, 0x00000009, 0x42000000, | ||
4495 | 0x00000409, 0x04000007, 0x82040580, 0x0000000b, | ||
4496 | 0x42000000, 0x0000070b, 0x02020800, 0x001005d8, | ||
4497 | 0x4803c857, 0x48026c00, 0x82040d80, 0x00000006, | ||
4498 | 0x04020005, 0x59341404, 0x800811c0, 0x02000800, | ||
4499 | 0x001005d8, 0x1c01f000, 0x5c000000, 0x4c000000, | ||
4500 | 0x4803c857, 0x4947c857, 0x481bc857, 0x83440480, | ||
4501 | 0x00000800, 0x04021034, 0x83441400, 0x0010ac00, | ||
4502 | 0x50080000, 0x80026d40, 0x04020011, 0x4c180000, | ||
4503 | 0x4d2c0000, 0x0201f800, 0x001007d3, 0x412e6800, | ||
4504 | 0x5c025800, 0x5c003000, 0x04000027, 0x45341000, | ||
4505 | 0x497a680d, 0x497a6810, 0x497a680f, 0x497a680e, | ||
4506 | 0x4c180000, 0x0401fcf3, 0x5c003000, 0x59340a12, | ||
4507 | 0x4c040000, 0x0201f800, 0x0010513b, 0x5c000800, | ||
4508 | 0x04000009, 0x82180500, 0x00ffff00, 0x04000008, | ||
4509 | 0x59a81010, 0x82081500, 0x00ffff00, 0x80080580, | ||
4510 | 0x04000003, 0x80000580, 0x0401f004, 0x82180500, | ||
4511 | 0x000000ff, 0x800000d0, 0x80040d80, 0x04000003, | ||
4512 | 0x4803c857, 0x48026a12, 0x59340002, 0x80180580, | ||
4513 | 0x04000003, 0x481bc857, 0x481a6802, 0x80000580, | ||
4514 | 0x1c01f000, 0x4803c856, 0x82000540, 0x00000001, | ||
4515 | 0x0401f7fc, 0x4947c857, 0x83440480, 0x00000800, | ||
4516 | 0x04021011, 0x83441400, 0x0010ac00, 0x50080000, | ||
4517 | 0x80026d40, 0x0400000b, 0x0401fbf9, 0x0402000a, | ||
4518 | 0x59a80005, 0x8c000502, 0x04000004, 0x59340200, | ||
4519 | 0x8c00050e, 0x04000004, 0x82000540, 0x00000001, | ||
4520 | 0x1c01f000, 0x80000580, 0x0401f7fe, 0x5c000000, | ||
4521 | 0x4c000000, 0x4803c857, 0x4947c857, 0x4d2c0000, | ||
4522 | 0x4d300000, 0x83440480, 0x00000800, 0x04021024, | ||
4523 | 0x83441400, 0x0010ac00, 0x50080000, 0x80026d40, | ||
4524 | 0x0400001b, 0x45781000, 0x5934000d, 0x80025d40, | ||
4525 | 0x02020800, 0x001007fd, 0x59366011, 0x813261c0, | ||
4526 | 0x0400000e, 0x4c640000, 0x5930c800, 0x59325808, | ||
4527 | 0x0201f800, 0x00109037, 0x02020800, 0x001007fd, | ||
4528 | 0x0201f800, 0x0002077d, 0x82666540, 0x00000000, | ||
4529 | 0x040207f6, 0x5c00c800, 0x0201f800, 0x00104c62, | ||
4530 | 0x41365800, 0x0201f800, 0x001007f5, 0x80000580, | ||
4531 | 0x5c026000, 0x5c025800, 0x1c01f000, 0x82000540, | ||
4532 | 0x00000001, 0x0401f7fb, 0x4937c857, 0x4c580000, | ||
4533 | 0x59cc0001, 0x82000500, 0x00ffffff, 0x48026802, | ||
4534 | 0x497a6c01, 0x497a6a01, 0x59340200, 0x84000502, | ||
4535 | 0x48026a00, 0x0201f800, 0x0010513b, 0x04020017, | ||
4536 | 0x59340403, 0x82000580, 0x000007fe, 0x04000005, | ||
4537 | 0x59a80026, 0x8c00050a, 0x04020010, 0x0401f008, | ||
4538 | 0x59cc0408, 0x8c000518, 0x0400000c, 0x59cc0009, | ||
4539 | 0x48035035, 0x59cc000a, 0x48035036, 0x59cc0207, | ||
4540 | 0x80000540, 0x04020003, 0x42000000, 0x00000001, | ||
4541 | 0x48038893, 0x4803501e, 0x59cc0a09, 0x82040d00, | ||
4542 | 0x00000010, 0x59cc0408, 0x82000500, 0x00000020, | ||
4543 | 0x04000002, 0x84040d40, 0x5934000a, 0x82000500, | ||
4544 | 0xffffffee, 0x80040540, 0x4802680a, 0x83cca400, | ||
4545 | 0x0000000b, 0x8334ac00, 0x00000006, 0x4200b000, | ||
4546 | 0x00000002, 0x0201f800, 0x0010ab17, 0x83cca400, | ||
4547 | 0x0000000d, 0x8334ac00, 0x00000008, 0x4200b000, | ||
4548 | 0x00000002, 0x0201f800, 0x0010ab17, 0x59cc0a18, | ||
4549 | 0x82040480, 0x00000800, 0x0402100c, 0x82040480, | ||
4550 | 0x00000400, 0x04001004, 0x42000800, 0x00000400, | ||
4551 | 0x0401f006, 0x82040480, 0x00000200, 0x04001003, | ||
4552 | 0x42000800, 0x00000200, 0x48066a04, 0x59340403, | ||
4553 | 0x82000580, 0x000007fe, 0x04020003, 0x59cc0a08, | ||
4554 | 0x48066a04, 0x42000800, 0x00000004, 0x59cc1207, | ||
4555 | 0x800811c0, 0x04000005, 0x82080480, 0x00000004, | ||
4556 | 0x04021002, 0x40080800, 0x48066c04, 0x5c00b000, | ||
4557 | 0x1c01f000, 0x4937c857, 0x59a80026, 0x8c000508, | ||
4558 | 0x04000004, 0x84000556, 0x4803c857, 0x48035026, | ||
4559 | 0x59cc0207, 0x4803c857, 0x48026a05, 0x59cc020a, | ||
4560 | 0x4803c857, 0x48026c05, 0x59341200, 0x599c0818, | ||
4561 | 0x5934180a, 0x4807c857, 0x480bc857, 0x480fc857, | ||
4562 | 0x59cc2006, 0x82102500, 0xff000000, 0x82102580, | ||
4563 | 0x02000000, 0x04000007, 0x8c00050e, 0x04000009, | ||
4564 | 0x8c0c1d14, 0x04000003, 0x8c0c1d0e, 0x04000005, | ||
4565 | 0x8c040d18, 0x04000003, 0x8408154a, 0x0401f002, | ||
4566 | 0x8408150a, 0x8c000510, 0x04000009, 0x8c0c1d14, | ||
4567 | 0x04000003, 0x8c0c1d10, 0x04000005, 0x8c040d18, | ||
4568 | 0x04000003, 0x8408154e, 0x0401f002, 0x8408150e, | ||
4569 | 0x8c000512, 0x04000009, 0x8c0c1d14, 0x04000003, | ||
4570 | 0x8c0c1d12, 0x04000005, 0x8c040d18, 0x04000003, | ||
4571 | 0x8408155c, 0x0401f002, 0x8408151c, 0x480a6a00, | ||
4572 | 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4d2c0000, | ||
4573 | 0x4c580000, 0x5934000d, 0x80025d40, 0x04000029, | ||
4574 | 0x592c0003, 0x82000480, 0x00000008, 0x0400100b, | ||
4575 | 0x412cb800, 0x592c0001, 0x80025d40, 0x040207f9, | ||
4576 | 0x0201f800, 0x001007e4, 0x04000037, 0x492fc857, | ||
4577 | 0x492cb801, 0x0401f020, 0x832c0c00, 0x00000004, | ||
4578 | 0x4200b000, 0x00000008, 0x50040000, 0x82000580, | ||
4579 | 0xffffffff, 0x04020006, 0x80041000, 0x50080000, | ||
4580 | 0x82000580, 0xffffffff, 0x04000007, 0x82040c00, | ||
4581 | 0x00000002, 0x8058b040, 0x040207f4, 0x0201f800, | ||
4582 | 0x001005d8, 0x45480800, 0x454c1000, 0x592c1803, | ||
4583 | 0x800c1800, 0x480e5803, 0x480fc857, 0x0401f014, | ||
4584 | 0x0201f800, 0x001007e4, 0x04000017, 0x492fc857, | ||
4585 | 0x492e680d, 0x497a5802, 0x4a025803, 0x00000001, | ||
4586 | 0x494a5804, 0x494e5805, 0x832c0c00, 0x00000006, | ||
4587 | 0x4200b000, 0x0000000e, 0x46000800, 0xffffffff, | ||
4588 | 0x80040800, 0x8058b040, 0x040207fc, 0x82000540, | ||
4589 | 0x00000001, 0x5c00b000, 0x5c025800, 0x5c00b800, | ||
4590 | 0x1c01f000, 0x80000580, 0x0401f7fb, 0x4803c856, | ||
4591 | 0x4d3c0000, 0x4d2c0000, 0x5934000d, 0x80025d40, | ||
4592 | 0x0400001f, 0x592c0002, 0x80000540, 0x0402001f, | ||
4593 | 0x412e7800, 0x0401f8ce, 0x0402001c, 0x46000800, | ||
4594 | 0xffffffff, 0x46001000, 0xffffffff, 0x4813c857, | ||
4595 | 0x480fc857, 0x580c0003, 0x82000c80, 0x00000002, | ||
4596 | 0x04021014, 0x480fc857, 0x400c0000, 0x812c0580, | ||
4597 | 0x04020004, 0x580c0001, 0x4802680d, 0x0401f003, | ||
4598 | 0x580c0001, 0x48002001, 0x400e5800, 0x0201f800, | ||
4599 | 0x001007f4, 0x82000540, 0x00000001, 0x5c025800, | ||
4600 | 0x5c027800, 0x1c01f000, 0x80000580, 0x0401f7fc, | ||
4601 | 0x80000040, 0x48001803, 0x4803c857, 0x0401f7f6, | ||
4602 | 0x0201f800, 0x00020086, 0x59300007, 0x8400054e, | ||
4603 | 0x48026007, 0x592c1a04, 0x820c1d00, 0x000000ff, | ||
4604 | 0x820c0580, 0x00000048, 0x04000013, 0x0201f000, | ||
4605 | 0x0002028e, 0x8c000500, 0x02020800, 0x000200e5, | ||
4606 | 0x4a026203, 0x00000002, 0x592c1a04, 0x820c1d00, | ||
4607 | 0x000000ff, 0x820c0580, 0x00000018, 0x02000000, | ||
4608 | 0x0002028e, 0x820c0580, 0x00000048, 0x02020000, | ||
4609 | 0x0002028e, 0x42000800, 0x80000804, 0x0201f800, | ||
4610 | 0x00106721, 0x0201f000, 0x00020297, 0x4a025a06, | ||
4611 | 0x00000008, 0x0201f000, 0x000202da, 0x4a025a06, | ||
4612 | 0x00000029, 0x0201f000, 0x000202da, 0x4a025a06, | ||
4613 | 0x0000002a, 0x0201f000, 0x000202da, 0x4a025a06, | ||
4614 | 0x00000028, 0x0201f000, 0x000202da, 0x4943c857, | ||
4615 | 0x4d440000, 0x4d340000, 0x4d2c0000, 0x4c580000, | ||
4616 | 0x4200b000, 0x000007f0, 0x417a8800, 0x0201f800, | ||
4617 | 0x00020245, 0x0402000d, 0x8d3e7d14, 0x04000005, | ||
4618 | 0x59340212, 0x82000500, 0x0000ff00, 0x04000007, | ||
4619 | 0x8d3e7d06, 0x04000004, 0x59340200, 0x8c00050e, | ||
4620 | 0x04020002, 0x0401f813, 0x81468800, 0x8058b040, | ||
4621 | 0x040207ef, 0x83440480, 0x00000800, 0x04021008, | ||
4622 | 0x8d3e7d02, 0x04000006, 0x42028800, 0x000007f0, | ||
4623 | 0x4200b000, 0x00000010, 0x0401f7e5, 0x5c00b000, | ||
4624 | 0x5c025800, 0x5c026800, 0x5c028800, 0x1c01f000, | ||
4625 | 0x4d2c0000, 0x41783000, 0x5936580f, 0x812e59c0, | ||
4626 | 0x04000029, 0x592c0204, 0x82000500, 0x000000ff, | ||
4627 | 0x82000580, 0x00000012, 0x04000020, 0x8d3e7d00, | ||
4628 | 0x04000003, 0x0401f83c, 0x0402001c, 0x592c2000, | ||
4629 | 0x497a5800, 0x801831c0, 0x04020009, 0x59340010, | ||
4630 | 0x812c0580, 0x04020004, 0x497a680f, 0x497a6810, | ||
4631 | 0x0401f008, 0x4812680f, 0x0401f006, 0x48103000, | ||
4632 | 0x59340010, 0x812c0580, 0x04020002, 0x481a6810, | ||
4633 | 0x4a025a04, 0x00000103, 0x49425a06, 0x497a5c09, | ||
4634 | 0x0201f800, 0x001091c6, 0x0201f800, 0x000202da, | ||
4635 | 0x40125800, 0x0401f7da, 0x412c3000, 0x592e5800, | ||
4636 | 0x0401f7d7, 0x5c025800, 0x1c01f000, 0x4803c856, | ||
4637 | 0x41781800, 0x5934000f, 0x80025d40, 0x04000010, | ||
4638 | 0x592c0005, 0x80200580, 0x592c0000, 0x04000003, | ||
4639 | 0x412c1800, 0x0401f7f9, 0x497a5800, 0x800c19c0, | ||
4640 | 0x04000008, 0x48001800, 0x80000540, 0x04020004, | ||
4641 | 0x480e6810, 0x82000540, 0x00000001, 0x1c01f000, | ||
4642 | 0x4802680f, 0x80000540, 0x040207fd, 0x497a6810, | ||
4643 | 0x0401f7f9, 0x592c0008, 0x81480580, 0x04020003, | ||
4644 | 0x592c0009, 0x814c0580, 0x1c01f000, 0x4803c856, | ||
4645 | 0x4c580000, 0x413c1800, 0x400c2000, 0x593c0002, | ||
4646 | 0x80000540, 0x04020018, 0x4200b000, 0x00000008, | ||
4647 | 0x820c0c00, 0x00000004, 0x50040000, 0x81480580, | ||
4648 | 0x04020005, 0x80041000, 0x50080000, 0x814c0580, | ||
4649 | 0x0400000d, 0x82040c00, 0x00000002, 0x8058b040, | ||
4650 | 0x040207f6, 0x400c2000, 0x580c0001, 0x80001d40, | ||
4651 | 0x040207ee, 0x82000540, 0x00000001, 0x5c00b000, | ||
4652 | 0x1c01f000, 0x80000580, 0x0401f7fd, 0x4937c857, | ||
4653 | 0x4c580000, 0x4d2c0000, 0x5934000d, 0x80025d40, | ||
4654 | 0x04020016, 0x0201f800, 0x001007e4, 0x04000010, | ||
4655 | 0x492e680d, 0x4a025802, 0x00000001, 0x497a5803, | ||
4656 | 0x832c0c00, 0x00000004, 0x4200b000, 0x00000010, | ||
4657 | 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, | ||
4658 | 0x040207fc, 0x82000540, 0x00000001, 0x5c025800, | ||
4659 | 0x5c00b000, 0x1c01f000, 0x4d2c0000, 0x592e5801, | ||
4660 | 0x0201f800, 0x001007fd, 0x5c025800, 0x0401f7ea, | ||
4661 | 0x4d2c0000, 0x5936580d, 0x812e59c0, 0x04000007, | ||
4662 | 0x4937c857, 0x497a680d, 0x0201f800, 0x001007fd, | ||
4663 | 0x82000540, 0x00000001, 0x5c025800, 0x1c01f000, | ||
4664 | 0x59340405, 0x4937c857, 0x4803c857, 0x8c000508, | ||
4665 | 0x1c01f000, 0x4803c856, 0x0201f800, 0x0010513b, | ||
4666 | 0x04000011, 0x59a80815, 0x8c040d04, 0x0402000e, | ||
4667 | 0x59a80826, 0x8c040d06, 0x0400000b, 0x83ac0400, | ||
4668 | 0x000007fe, 0x50000000, 0x80026d40, 0x04000006, | ||
4669 | 0x0401f9a7, 0x04020004, 0x59340200, 0x8400055a, | ||
4670 | 0x48026a00, 0x599c0017, 0x8c000508, 0x04000015, | ||
4671 | 0x4200b000, 0x000007f0, 0x417a8800, 0x0201f800, | ||
4672 | 0x00020245, 0x0402000c, 0x0401f999, 0x0402000a, | ||
4673 | 0x59a80010, 0x59340802, 0x80040580, 0x82000500, | ||
4674 | 0x00ffff00, 0x04020004, 0x59340200, 0x8400055a, | ||
4675 | 0x48026a00, 0x81468800, 0x8058b040, 0x040207f0, | ||
4676 | 0x0401f884, 0x04000003, 0x59a80836, 0x0401f006, | ||
4677 | 0x599c0017, 0x8c000508, 0x04000007, 0x42000800, | ||
4678 | 0x000007d0, 0x42001000, 0x00104876, 0x0201f800, | ||
4679 | 0x0010606e, 0x1c01f000, 0x4803c856, 0x4d340000, | ||
4680 | 0x4d440000, 0x4d3c0000, 0x4c580000, 0x42001000, | ||
4681 | 0x00104876, 0x0201f800, 0x00105f90, 0x59a80826, | ||
4682 | 0x8c040d06, 0x04000015, 0x0401f86a, 0x04000013, | ||
4683 | 0x83ae6c00, 0x000007fe, 0x51366800, 0x59340200, | ||
4684 | 0x8400051a, 0x48026a00, 0x599c0017, 0x8c000508, | ||
4685 | 0x04000007, 0x42000800, 0x000007d0, 0x42001000, | ||
4686 | 0x00104876, 0x0201f800, 0x0010606e, 0x0201f800, | ||
4687 | 0x00101e45, 0x0401f027, 0x4200b000, 0x000007f0, | ||
4688 | 0x80028d80, 0x0201f800, 0x00020245, 0x0402001e, | ||
4689 | 0x59340200, 0x8c00051a, 0x0400001b, 0x59368c03, | ||
4690 | 0x417a7800, 0x42028000, 0x00000029, 0x41783000, | ||
4691 | 0x0201f800, 0x0010a446, 0x59340200, 0x84000558, | ||
4692 | 0x8400051a, 0x48026a00, 0x4937c857, 0x4a026c00, | ||
4693 | 0x00000707, 0x42028000, 0x00000029, 0x0201f800, | ||
4694 | 0x00106ab4, 0x417a7800, 0x0201f800, 0x001067fd, | ||
4695 | 0x80000d80, 0x0201f800, 0x0010a2ff, 0x0201f800, | ||
4696 | 0x00106c4b, 0x81468800, 0x8058b040, 0x040207de, | ||
4697 | 0x5c00b000, 0x5c027800, 0x5c028800, 0x5c026800, | ||
4698 | 0x1c01f000, 0x4933c857, 0x59303809, 0x581c0200, | ||
4699 | 0x8400051a, 0x48003a00, 0x1c01f000, 0x4803c856, | ||
4700 | 0x42026800, 0x0010b524, 0x497a680e, 0x42028800, | ||
4701 | 0x000007ff, 0x0201f800, 0x001042b4, 0x4937c857, | ||
4702 | 0x4a026c00, 0x00000606, 0x4a026802, 0x00ffffff, | ||
4703 | 0x4a026a04, 0x00000200, 0x4a026c04, 0x00000002, | ||
4704 | 0x1c01f000, 0x59300009, 0x50000000, 0x4933c857, | ||
4705 | 0x4803c857, 0x8c00050e, 0x1c01f000, 0x59300009, | ||
4706 | 0x50000000, 0x8c00050a, 0x1c01f000, 0x4933c856, | ||
4707 | 0x0401f90f, 0x04000006, 0x59340400, 0x82000d00, | ||
4708 | 0x000000ff, 0x82041580, 0x00000005, 0x1c01f000, | ||
4709 | 0x4d340000, 0x83ac0400, 0x000007fe, 0x50000000, | ||
4710 | 0x80026d40, 0x04000003, 0x59340200, 0x8c00051a, | ||
4711 | 0x5c026800, 0x1c01f000, 0x4937c857, 0x493fc857, | ||
4712 | 0x59340403, 0x81ac0400, 0x50000000, 0x81340580, | ||
4713 | 0x02020800, 0x001005d8, 0x59341200, 0x813e79c0, | ||
4714 | 0x04000003, 0x8408155e, 0x0401f002, 0x8408151e, | ||
4715 | 0x480a6a00, 0x1c01f000, 0x4937c857, 0x0201f800, | ||
4716 | 0x0010210a, 0x04000006, 0x59a80835, 0x42001000, | ||
4717 | 0x00104910, 0x0201f800, 0x0010606e, 0x1c01f000, | ||
4718 | 0x4937c857, 0x42001000, 0x00104910, 0x0201f800, | ||
4719 | 0x00105f90, 0x59a81026, 0x84081512, 0x480b5026, | ||
4720 | 0x1c01f000, 0x4c380000, 0x4c340000, 0x4c240000, | ||
4721 | 0x4c600000, 0x4008c000, 0x83440480, 0x00000800, | ||
4722 | 0x04021045, 0x80002d80, 0x41442000, 0x83447400, | ||
4723 | 0x0010ac00, 0x4200b000, 0x000007f0, 0x83444c80, | ||
4724 | 0x000007f0, 0x04001003, 0x4200b000, 0x00000010, | ||
4725 | 0x50380000, 0x80000540, 0x0402001e, 0x41440000, | ||
4726 | 0x80100580, 0x04020043, 0x40102800, 0x82104c80, | ||
4727 | 0x000007f0, 0x04001015, 0x82104d80, 0x000007fc, | ||
4728 | 0x04020005, 0x82604d80, 0x00fffffc, 0x0402002a, | ||
4729 | 0x0401f00e, 0x82104d80, 0x000007fd, 0x04020005, | ||
4730 | 0x82604d80, 0x00fffffd, 0x04020023, 0x0401f007, | ||
4731 | 0x82104d80, 0x000007ff, 0x0402001f, 0x82604d80, | ||
4732 | 0x00ffffff, 0x0402001c, 0x84142d5e, 0x0401f029, | ||
4733 | 0x40006800, 0x58343002, 0x82183500, 0x00ffffff, | ||
4734 | 0x40180000, 0x80600580, 0x04020019, 0x40100000, | ||
4735 | 0x81440580, 0x0402000a, 0x40366800, 0x8c204508, | ||
4736 | 0x04000053, 0x0401ff8a, 0x04020051, 0x4947c857, | ||
4737 | 0x42000000, 0x0000001d, 0x0401f04e, 0x4947c857, | ||
4738 | 0x480bc857, 0x4823c857, 0x42000000, 0x0000001a, | ||
4739 | 0x0401f048, 0x4947c857, 0x4863c857, 0x4813c857, | ||
4740 | 0x42000000, 0x00000019, 0x0401f042, 0x40100000, | ||
4741 | 0x81440580, 0x04020007, 0x58343002, 0x4947c857, | ||
4742 | 0x481bc857, 0x42000000, 0x0000001b, 0x0401f039, | ||
4743 | 0x80102000, 0x80387000, 0x83444c80, 0x000007f0, | ||
4744 | 0x04001009, 0x82104d80, 0x00000800, 0x0402000c, | ||
4745 | 0x42002000, 0x000007f0, 0x42007000, 0x0010b3f0, | ||
4746 | 0x0401f007, 0x82104d80, 0x000007f0, 0x04020004, | ||
4747 | 0x41782000, 0x42007000, 0x0010ac00, 0x8058b040, | ||
4748 | 0x040207a4, 0x801429c0, 0x04020007, 0x0201f800, | ||
4749 | 0x001005d8, 0x4947c857, 0x42000000, 0x0000000a, | ||
4750 | 0x0401f01c, 0x4d2c0000, 0x4c180000, 0x40603000, | ||
4751 | 0x0401fc12, 0x4947c857, 0x4937c857, 0x5c003000, | ||
4752 | 0x5c025800, 0x040207f4, 0x497a6a12, 0x59a80026, | ||
4753 | 0x8c00050a, 0x0402000d, 0x82600500, 0x00ffff00, | ||
4754 | 0x04000006, 0x59a84810, 0x82244d00, 0x00ffff00, | ||
4755 | 0x80240580, 0x04020005, 0x82600500, 0x000000ff, | ||
4756 | 0x800000d0, 0x48026a12, 0x48626802, 0x80000580, | ||
4757 | 0x80000540, 0x5c00c000, 0x5c004800, 0x5c006800, | ||
4758 | 0x5c007000, 0x1c01f000, 0x5934000f, 0x5934140b, | ||
4759 | 0x80081040, 0x04001002, 0x480a6c0b, 0x80000540, | ||
4760 | 0x02020800, 0x00020253, 0x1c01f000, 0x4803c857, | ||
4761 | 0x4947c857, 0x4c300000, 0x82006500, 0x00000030, | ||
4762 | 0x04000006, 0x4c000000, 0x0201f800, 0x0010942a, | ||
4763 | 0x5c000000, 0x0402000b, 0x8c00050e, 0x04000006, | ||
4764 | 0x0201f800, 0x00020245, 0x04020006, 0x4937c857, | ||
4765 | 0x0401fc2f, 0x80000580, 0x5c006000, 0x1c01f000, | ||
4766 | 0x82000540, 0x00000001, 0x0401f7fc, 0x4803c857, | ||
4767 | 0x4c580000, 0x4d440000, 0x40001000, 0x80000d80, | ||
4768 | 0x4200b000, 0x000007f0, 0x4c040000, 0x40068800, | ||
4769 | 0x4c080000, 0x40080000, 0x0401ffdd, 0x5c001000, | ||
4770 | 0x5c000800, 0x80040800, 0x8058b040, 0x040207f7, | ||
4771 | 0x5c028800, 0x5c00b000, 0x1c01f000, 0x4c5c0000, | ||
4772 | 0x59340400, 0x8200bd80, 0x00000606, 0x5c00b800, | ||
4773 | 0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80, | ||
4774 | 0x00000404, 0x5c00b800, 0x1c01f000, 0x4c5c0000, | ||
4775 | 0x59340400, 0x8200bd80, 0x00000404, 0x04000003, | ||
4776 | 0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000, | ||
4777 | 0x4c5c0000, 0x4c600000, 0x59340400, 0x8200bd00, | ||
4778 | 0x0000ff00, 0x825cc580, 0x00000400, 0x04000003, | ||
4779 | 0x825cc580, 0x00000600, 0x5c00c000, 0x5c00b800, | ||
4780 | 0x1c01f000, 0x4c5c0000, 0x59340400, 0x82000500, | ||
4781 | 0x000000ff, 0x8200bd80, 0x00000003, 0x04000003, | ||
4782 | 0x8200bd80, 0x00000005, 0x5c00b800, 0x1c01f000, | ||
4783 | 0x4c5c0000, 0x59340400, 0x82000500, 0x0000ff00, | ||
4784 | 0x8400b9c0, 0x805c0580, 0x4937c857, 0x4803c857, | ||
4785 | 0x48026c00, 0x5c00b800, 0x1c01f000, 0x4c040000, | ||
4786 | 0x4c080000, 0x592c0207, 0x8c00050c, 0x0400000f, | ||
4787 | 0x592e8c06, 0x82000500, 0x00000080, 0x84000548, | ||
4788 | 0x4d3c0000, 0x42027800, 0x00001000, 0x0401ff90, | ||
4789 | 0x5c027800, 0x82000540, 0x00000001, 0x5c001000, | ||
4790 | 0x5c000800, 0x1c01f000, 0x80000580, 0x0401f7fc, | ||
4791 | 0x592c040b, 0x82000500, 0x0000e000, 0x82000580, | ||
4792 | 0x00006000, 0x04000019, 0x836c0580, 0x00000003, | ||
4793 | 0x04000016, 0x836c0580, 0x00000002, 0x040200ff, | ||
4794 | 0x59a80026, 0x82000d00, 0x00000038, 0x04020005, | ||
4795 | 0x59a80832, 0x800409c0, 0x0400000c, 0x0401f0f7, | ||
4796 | 0x82000d00, 0x00000003, 0x82040d80, 0x00000003, | ||
4797 | 0x040200f2, 0x82000d00, 0x00000028, 0x04020003, | ||
4798 | 0x8c00050c, 0x040000ed, 0x592c100a, 0x82080500, | ||
4799 | 0xff000000, 0x040200ce, 0x59a80010, 0x80080580, | ||
4800 | 0x040000c8, 0x592c0c0b, 0x82040d00, 0x0000e000, | ||
4801 | 0x82040480, 0x00008000, 0x040210c8, 0x592e8c06, | ||
4802 | 0x83440480, 0x00000800, 0x04001007, 0x83440580, | ||
4803 | 0x0000ffff, 0x040200af, 0x800409c0, 0x040200f7, | ||
4804 | 0x0401f0ac, 0x800409c0, 0x040200f4, 0x41784000, | ||
4805 | 0x0401fead, 0x040200db, 0x42027000, 0x00000053, | ||
4806 | 0x592c2409, 0x82100500, 0xffffff00, 0x040200aa, | ||
4807 | 0x4813c857, 0x592c000c, 0x800001c0, 0x04000083, | ||
4808 | 0x82100580, 0x00000004, 0x040000a0, 0x82100580, | ||
4809 | 0x00000051, 0x0400009d, 0x82100580, 0x00000003, | ||
4810 | 0x04000016, 0x82100580, 0x00000020, 0x0400004b, | ||
4811 | 0x82100580, 0x00000024, 0x04000042, 0x82100580, | ||
4812 | 0x00000021, 0x04000042, 0x82100580, 0x00000050, | ||
4813 | 0x04000037, 0x82100580, 0x00000052, 0x04000031, | ||
4814 | 0x82100580, 0x00000005, 0x0402006b, 0x42027000, | ||
4815 | 0x00000001, 0x0401f01b, 0x42027000, 0x00000002, | ||
4816 | 0x59a80005, 0x8c000514, 0x04000016, 0x0401ff4c, | ||
4817 | 0x04000014, 0x59340212, 0x82000500, 0x0000ff00, | ||
4818 | 0x42001000, 0x00000010, 0x0402000c, 0x59a80026, | ||
4819 | 0x8c000506, 0x0402006f, 0x42001000, 0x00000008, | ||
4820 | 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, | ||
4821 | 0x00ff0000, 0x04000003, 0x0401f9bf, 0x04020065, | ||
4822 | 0x0201f800, 0x0002075a, 0x0400007e, 0x4a026406, | ||
4823 | 0x00000010, 0x49366009, 0x42000800, 0x00000003, | ||
4824 | 0x83380580, 0x00000002, 0x04000003, 0x42000800, | ||
4825 | 0x0000000b, 0x0201f800, 0x00104571, 0x0401f044, | ||
4826 | 0x42027000, 0x00000000, 0x0401f003, 0x42027000, | ||
4827 | 0x00000004, 0x0401ff37, 0x04020071, 0x0401f036, | ||
4828 | 0x42027000, 0x00000033, 0x0401f006, 0x42027000, | ||
4829 | 0x00000005, 0x0401f003, 0x42027000, 0x00000003, | ||
4830 | 0x0401ff23, 0x04020066, 0x59a80005, 0x8c000514, | ||
4831 | 0x04000016, 0x0401ff12, 0x04000014, 0x59340212, | ||
4832 | 0x82000500, 0x0000ff00, 0x42001000, 0x00000010, | ||
4833 | 0x0402000c, 0x59a80026, 0x8c000506, 0x04020035, | ||
4834 | 0x42001000, 0x00000008, 0x59340002, 0x82000500, | ||
4835 | 0x00ff0000, 0x82000580, 0x00ff0000, 0x04000003, | ||
4836 | 0x0401f985, 0x0402002b, 0x0201f800, 0x0002075a, | ||
4837 | 0x04000044, 0x4a026406, 0x00000010, 0x49366009, | ||
4838 | 0x42000800, 0x00000005, 0x83380580, 0x00000003, | ||
4839 | 0x04000003, 0x42000800, 0x00000009, 0x0201f800, | ||
4840 | 0x00104571, 0x0401f00a, 0x82102580, 0x00000011, | ||
4841 | 0x0402002d, 0x0201f800, 0x0002075a, 0x04000031, | ||
4842 | 0x4a026406, 0x00000010, 0x49366009, 0x492e6008, | ||
4843 | 0x49325808, 0x813669c0, 0x04000007, 0x592c0c0b, | ||
4844 | 0x8c040d18, 0x04000004, 0x59340200, 0x84000514, | ||
4845 | 0x48026a00, 0x0201f800, 0x000207a1, 0x80000580, | ||
4846 | 0x1c01f000, 0x82000540, 0x00000001, 0x0401f7fd, | ||
4847 | 0x42001000, 0x0000000a, 0x0401f015, 0x42001000, | ||
4848 | 0x00000010, 0x0401f012, 0x42001000, 0x00000016, | ||
4849 | 0x0401f00f, 0x42001000, 0x00000017, 0x0401f00c, | ||
4850 | 0x42001000, 0x00000018, 0x0401f009, 0x42001000, | ||
4851 | 0x0000001b, 0x0401f006, 0x42001000, 0x0000001e, | ||
4852 | 0x0401f003, 0x42001000, 0x00000020, 0x42000800, | ||
4853 | 0x00000019, 0x42028000, 0x00000031, 0x0401f7e2, | ||
4854 | 0x42000800, 0x00000003, 0x0401f003, 0x42000800, | ||
4855 | 0x0000000a, 0x41781000, 0x0401f7f7, 0x42000800, | ||
4856 | 0x00000009, 0x59341400, 0x0401f7f3, 0x42028000, | ||
4857 | 0x00000008, 0x0401f005, 0x42000800, 0x00000007, | ||
4858 | 0x416c1000, 0x0401f7ec, 0x41780800, 0x41781000, | ||
4859 | 0x0401f7cd, 0x42028000, 0x00000000, 0x0401f7fb, | ||
4860 | 0x82004d80, 0x0000001d, 0x02000800, 0x001005d8, | ||
4861 | 0x82004d80, 0x0000001a, 0x04020004, 0x40101000, | ||
4862 | 0x40000800, 0x0401f7dc, 0x82004d80, 0x0000001b, | ||
4863 | 0x04020003, 0x40181000, 0x0401f7fa, 0x82004d80, | ||
4864 | 0x0000001c, 0x040007f7, 0x82004d80, 0x00000019, | ||
4865 | 0x040007b8, 0x0401f7d6, 0x592e6008, 0x0201f800, | ||
4866 | 0x0010941a, 0x040007b6, 0x59300c06, 0x82040580, | ||
4867 | 0x00000011, 0x040207d6, 0x83440580, 0x0000ffff, | ||
4868 | 0x04020005, 0x59326809, 0x813669c0, 0x0400000e, | ||
4869 | 0x0401f7cf, 0x592c100a, 0x82081500, 0x00ffffff, | ||
4870 | 0x41784000, 0x0401fda8, 0x040207d6, 0x59300009, | ||
4871 | 0x800001c0, 0x04000003, 0x81340580, 0x040207c4, | ||
4872 | 0x49366009, 0x592c0c0b, 0x82041500, 0x0000e000, | ||
4873 | 0x82080580, 0x00006000, 0x04000009, 0x59300a03, | ||
4874 | 0x82040580, 0x00000007, 0x040207b9, 0x492e6008, | ||
4875 | 0x42027000, 0x00000054, 0x0401f77f, 0x0201f800, | ||
4876 | 0x0010a8d4, 0x040007bc, 0x0401f7b1, 0x492fc857, | ||
4877 | 0x59a80021, 0x800001c0, 0x04020073, 0x592e6008, | ||
4878 | 0x4933c857, 0x0201f800, 0x0010941a, 0x04000041, | ||
4879 | 0x59301406, 0x82080580, 0x00000005, 0x0402005b, | ||
4880 | 0x59301203, 0x82080580, 0x00000007, 0x04020057, | ||
4881 | 0x592e8c06, 0x83440480, 0x00000800, 0x04021032, | ||
4882 | 0x41784000, 0x592c1009, 0x82081500, 0x00ffffff, | ||
4883 | 0x0401fd75, 0x0402005f, 0x59300009, 0x800001c0, | ||
4884 | 0x04000003, 0x81340580, 0x04020048, 0x4d300000, | ||
4885 | 0x592e6013, 0x4933c857, 0x83300580, 0xffffffff, | ||
4886 | 0x0400000d, 0x0201f800, 0x0010941a, 0x5c026000, | ||
4887 | 0x04000029, 0x591c1406, 0x82080580, 0x00000006, | ||
4888 | 0x04000046, 0x82080580, 0x00000011, 0x04000043, | ||
4889 | 0x0401f002, 0x5c026000, 0x59a80010, 0x592c100a, | ||
4890 | 0x82081500, 0x00ffffff, 0x80081580, 0x04020017, | ||
4891 | 0x592c1009, 0x82081500, 0x00ffffff, 0x80081580, | ||
4892 | 0x0400000f, 0x49366009, 0x492e6008, 0x42027000, | ||
4893 | 0x00000092, 0x0201f800, 0x000207a1, 0x80000580, | ||
4894 | 0x1c01f000, 0x42001000, 0x0000000a, 0x0401f00c, | ||
4895 | 0x42001000, 0x00000010, 0x0401f009, 0x42001000, | ||
4896 | 0x00000014, 0x0401f006, 0x42001000, 0x00000018, | ||
4897 | 0x0401f003, 0x42001000, 0x0000003c, 0x492fc857, | ||
4898 | 0x480bc857, 0x42000800, 0x00000019, 0x42028000, | ||
4899 | 0x00000031, 0x82000540, 0x00000001, 0x0401f7e9, | ||
4900 | 0x492fc857, 0x4803c857, 0x480bc857, 0x40000800, | ||
4901 | 0x0401f7f7, 0x492fc857, 0x42000800, 0x0000000a, | ||
4902 | 0x41781000, 0x0401f7f2, 0x4933c857, 0x59300406, | ||
4903 | 0x4803c857, 0x59300203, 0x4803c857, 0x59300009, | ||
4904 | 0x4803c857, 0x42028000, 0x00000008, 0x41780800, | ||
4905 | 0x41781000, 0x0401f7e8, 0x42000800, 0x0000001e, | ||
4906 | 0x0401f7f0, 0x42000800, 0x00000001, 0x0401f7ed, | ||
4907 | 0x82004d80, 0x0000001d, 0x02000800, 0x001005d8, | ||
4908 | 0x82004d80, 0x0000001a, 0x04020003, 0x40101000, | ||
4909 | 0x0401f7dc, 0x82004d80, 0x0000001b, 0x04020003, | ||
4910 | 0x40181000, 0x0401f7d7, 0x82004d80, 0x0000001c, | ||
4911 | 0x040007d4, 0x82004d80, 0x00000019, 0x040007d1, | ||
4912 | 0x0401f7d5, 0x59302009, 0x801021c0, 0x04000035, | ||
4913 | 0x58101400, 0x82081d00, 0x000000ff, 0x59300c03, | ||
4914 | 0x82040580, 0x00000008, 0x04000022, 0x82040580, | ||
4915 | 0x0000000a, 0x04000017, 0x82040580, 0x0000000c, | ||
4916 | 0x04000010, 0x82040580, 0x00000002, 0x04000019, | ||
4917 | 0x82040580, 0x00000001, 0x04000012, 0x82040580, | ||
4918 | 0x00000003, 0x0400000b, 0x82040580, 0x00000005, | ||
4919 | 0x04000004, 0x82040580, 0x00000033, 0x04020019, | ||
4920 | 0x820c0580, 0x00000009, 0x0400000d, 0x0401f015, | ||
4921 | 0x820c0580, 0x00000005, 0x04000009, 0x0401f011, | ||
4922 | 0x820c0580, 0x0000000b, 0x04000005, 0x0401f00d, | ||
4923 | 0x820c0580, 0x00000003, 0x0402000a, 0x82081d00, | ||
4924 | 0xffffff00, 0x840c01c0, 0x800c0540, 0x4813c857, | ||
4925 | 0x480bc857, 0x4807c857, 0x4803c857, 0x48002400, | ||
4926 | 0x1c01f000, 0x599c0017, 0x8c00050a, 0x04000003, | ||
4927 | 0x80000580, 0x1c01f000, 0x59a80026, 0x82000500, | ||
4928 | 0x00000028, 0x04000008, 0x42028800, 0x000007fd, | ||
4929 | 0x0201f800, 0x00020245, 0x04020003, 0x5934000a, | ||
4930 | 0x8c000504, 0x1c01f000, 0x4d300000, 0x5934000e, | ||
4931 | 0x80026540, 0x04000006, 0x0201f800, 0x001062d5, | ||
4932 | 0x02000800, 0x001064ad, 0x497a680e, 0x5c026000, | ||
4933 | 0x1c01f000, 0x4d440000, 0x4d340000, 0x80000580, | ||
4934 | 0x40001800, 0x40028800, 0x82080580, 0x00000008, | ||
4935 | 0x04020003, 0x42001800, 0x00000001, 0x0201f800, | ||
4936 | 0x00020245, 0x0402000a, 0x0401fd6d, 0x04020008, | ||
4937 | 0x800c19c0, 0x04000004, 0x59340405, 0x8c000508, | ||
4938 | 0x04000003, 0x80081040, 0x04000009, 0x81468800, | ||
4939 | 0x83440480, 0x00000800, 0x040017f1, 0x80000580, | ||
4940 | 0x5c026800, 0x5c028800, 0x1c01f000, 0x82000540, | ||
4941 | 0x00000001, 0x5c026800, 0x5c028800, 0x1c01f000, | ||
4942 | 0x4a033020, 0x00000000, 0x497b3026, 0x497b3027, | ||
4943 | 0x497b3028, 0x497b3029, 0x497b302b, 0x497b3021, | ||
4944 | 0x4a03b104, 0x60000001, 0x1c01f000, 0x4803c856, | ||
4945 | 0x599c0018, 0x497b3024, 0x497b3025, 0x82000500, | ||
4946 | 0x0000000f, 0x82000d80, 0x00000005, 0x04000006, | ||
4947 | 0x82000580, 0x00000006, 0x0400000d, 0x497b3022, | ||
4948 | 0x1c01f000, 0x4a033022, 0x00000005, 0x599c0216, | ||
4949 | 0x82000500, 0x0000ffff, 0x04020003, 0x42000000, | ||
4950 | 0x00000002, 0x48033023, 0x1c01f000, 0x4a033022, | ||
4951 | 0x00000006, 0x0401f7f6, 0x0401ffe5, 0x4a03c826, | ||
4952 | 0x00000004, 0x599c0209, 0x80000540, 0x0400001f, | ||
4953 | 0x599c0207, 0x80000540, 0x04000007, 0x800000cc, | ||
4954 | 0x599c080d, 0x80040400, 0x4803b100, 0x497bb102, | ||
4955 | 0x59d80101, 0x599c000d, 0x4803b100, 0x599c000e, | ||
4956 | 0x4803b101, 0x599c0207, 0x80000540, 0x04020002, | ||
4957 | 0x497bb102, 0x599c0a09, 0x82040540, 0x00400000, | ||
4958 | 0x59980822, 0x4803b103, 0x4a03b109, 0x00000004, | ||
4959 | 0x4a03b104, 0x10000001, 0x800409c0, 0x04020004, | ||
4960 | 0x4a033020, 0x00000001, 0x1c01f000, 0x4a033020, | ||
4961 | 0x00000002, 0x0401f7fd, 0x59980022, 0x4803c856, | ||
4962 | 0x80000540, 0x02000000, 0x000202de, 0x0401f017, | ||
4963 | 0x42034000, 0x0010b4a4, 0x59a1d81e, 0x80edd9c0, | ||
4964 | 0x02000800, 0x001005d8, 0x58ec0009, 0x48efc857, | ||
4965 | 0x49a3c857, 0x492fc857, 0x4803c857, 0x800001c0, | ||
4966 | 0x08020000, 0x0201f800, 0x001005d8, 0x5931d821, | ||
4967 | 0x58ef400b, 0x58ec0009, 0x800001c0, 0x08020000, | ||
4968 | 0x0201f800, 0x001005d8, 0x497a5800, 0x59980026, | ||
4969 | 0x80000540, 0x0402008c, 0x59d80105, 0x82000d00, | ||
4970 | 0x00018780, 0x040201da, 0x80000106, 0x82000500, | ||
4971 | 0x00000003, 0x0c01f001, 0x00104d0a, 0x00104d89, | ||
4972 | 0x00104d22, 0x00104d50, 0x592c0001, 0x492fc857, | ||
4973 | 0x492fb107, 0x80000d40, 0x04020007, 0x59940019, | ||
4974 | 0x80000540, 0x04022003, 0x59980023, 0x48032819, | ||
4975 | 0x1c01f000, 0x497a5801, 0x40065800, 0x592c0001, | ||
4976 | 0x496a5800, 0x815eb800, 0x412ed000, 0x80000d40, | ||
4977 | 0x040207f9, 0x59c80000, 0x82000540, 0x00001200, | ||
4978 | 0x48039000, 0x0401f7ee, 0x492fc857, 0x492fb107, | ||
4979 | 0x592c0001, 0x80000d40, 0x04020012, 0x59da5908, | ||
4980 | 0x835c0480, 0x00000020, 0x0400101c, 0x0402b01a, | ||
4981 | 0x492fb007, 0x0400e7fa, 0x59d80105, 0x82000500, | ||
4982 | 0x00018780, 0x040201aa, 0x59940019, 0x80000540, | ||
4983 | 0x04022003, 0x59980023, 0x48032819, 0x1c01f000, | ||
4984 | 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800, | ||
4985 | 0x815eb800, 0x412ed000, 0x80000d40, 0x040207f9, | ||
4986 | 0x59c80000, 0x82000540, 0x00001200, 0x48039000, | ||
4987 | 0x0401f7e3, 0x0400f009, 0x496a5800, 0x412ed000, | ||
4988 | 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, | ||
4989 | 0x48039000, 0x0401f7e0, 0x492fa807, 0x0401f7de, | ||
4990 | 0x492fc857, 0x59d81108, 0x45681000, 0x400ad000, | ||
4991 | 0x815eb800, 0x0400e7fc, 0x59c80000, 0x82000540, | ||
4992 | 0x00001200, 0x48039000, 0x0402d00c, 0x592c0001, | ||
4993 | 0x492fc857, 0x492fb107, 0x80000d40, 0x0402001d, | ||
4994 | 0x59940019, 0x80000540, 0x04022003, 0x59980023, | ||
4995 | 0x48032819, 0x1c01f000, 0x59d80105, 0x82000500, | ||
4996 | 0x00018780, 0x04020172, 0x42000000, 0x0010b855, | ||
4997 | 0x0201f800, 0x0010aa47, 0x59980026, 0x59980828, | ||
4998 | 0x80000000, 0x48033026, 0x492fc857, 0x800409c0, | ||
4999 | 0x492f3028, 0x04000003, 0x492c0800, 0x0401f002, | ||
5000 | 0x492f3029, 0x592c0001, 0x80000d40, 0x040007e5, | ||
5001 | 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800, | ||
5002 | 0x815eb800, 0x412ed000, 0x80000d40, 0x040207f9, | ||
5003 | 0x59c80000, 0x82000540, 0x00001200, 0x48039000, | ||
5004 | 0x0401f7d8, 0x59980026, 0x59980828, 0x80000000, | ||
5005 | 0x48033026, 0x492fc857, 0x800409c0, 0x492f3028, | ||
5006 | 0x04000003, 0x492c0800, 0x0401f002, 0x492f3029, | ||
5007 | 0x592c0001, 0x80000d40, 0x04020027, 0x0402d00e, | ||
5008 | 0x59980029, 0x80025d40, 0x0400000f, 0x59980026, | ||
5009 | 0x80000040, 0x48033026, 0x04020002, 0x48033028, | ||
5010 | 0x592c0000, 0x48033029, 0x492fc857, 0x492fb107, | ||
5011 | 0x0400d7f4, 0x42000000, 0x0010b855, 0x0201f800, | ||
5012 | 0x0010aa47, 0x0402e00a, 0x59da5908, 0x496a5800, | ||
5013 | 0x412ed000, 0x815eb800, 0x0400e7fc, 0x59c80000, | ||
5014 | 0x82000540, 0x00001200, 0x48039000, 0x59d80105, | ||
5015 | 0x82000500, 0x00018780, 0x04020125, 0x59940019, | ||
5016 | 0x80000540, 0x04022003, 0x59980023, 0x48032819, | ||
5017 | 0x1c01f000, 0x497a5801, 0x40065800, 0x592c0001, | ||
5018 | 0x496a5800, 0x815eb800, 0x412ed000, 0x80000d40, | ||
5019 | 0x040207f9, 0x59c80000, 0x82000540, 0x00001200, | ||
5020 | 0x48039000, 0x0401f7ce, 0x592c0204, 0x4803c856, | ||
5021 | 0x04000008, 0x42034000, 0x0010b4a4, 0x59a1d81e, | ||
5022 | 0x80edd9c0, 0x02000800, 0x001005d8, 0x0401f003, | ||
5023 | 0x5931d821, 0x58ef400b, 0x58ec0009, 0x800001c0, | ||
5024 | 0x08020000, 0x0201f800, 0x001005d8, 0x497a5801, | ||
5025 | 0x40065800, 0x592c0001, 0x496a5800, 0x412ed000, | ||
5026 | 0x815eb800, 0x80000d40, 0x040207f9, 0x59c80000, | ||
5027 | 0x82000540, 0x00001200, 0x48039000, 0x1c01f000, | ||
5028 | 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800, | ||
5029 | 0x412ed000, 0x815eb800, 0x80000d40, 0x040207f9, | ||
5030 | 0x59c80000, 0x82000540, 0x00001200, 0x48039000, | ||
5031 | 0x0200e000, 0x000202fb, 0x0201f000, 0x00020302, | ||
5032 | 0x5998002b, 0x84000540, 0x4803302b, 0x0201f000, | ||
5033 | 0x0002035e, 0x42000000, 0x0010b855, 0x0201f800, | ||
5034 | 0x0010aa47, 0x492fc857, 0x59980026, 0x59980828, | ||
5035 | 0x80000000, 0x48033026, 0x800409c0, 0x492f3028, | ||
5036 | 0x04000003, 0x492c0800, 0x0401f002, 0x492f3029, | ||
5037 | 0x592c0001, 0x80000d40, 0x04020002, 0x1c01f000, | ||
5038 | 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800, | ||
5039 | 0x412ed000, 0x815eb800, 0x80000d40, 0x040207f9, | ||
5040 | 0x59c80000, 0x82000540, 0x00001200, 0x48039000, | ||
5041 | 0x1c01f000, 0x59980026, 0x59980828, 0x80000000, | ||
5042 | 0x48033026, 0x492fc857, 0x800409c0, 0x492f3028, | ||
5043 | 0x04000003, 0x492c0800, 0x0401f002, 0x492f3029, | ||
5044 | 0x592c0001, 0x80000d40, 0x04020039, 0x0402d00e, | ||
5045 | 0x59980029, 0x80025d40, 0x0400000f, 0x59980026, | ||
5046 | 0x80000040, 0x48033026, 0x04020002, 0x48033028, | ||
5047 | 0x592c0000, 0x48033029, 0x492fc857, 0x492fb107, | ||
5048 | 0x0400d7f4, 0x42000000, 0x0010b855, 0x0201f800, | ||
5049 | 0x0010aa47, 0x0402e01d, 0x59da5908, 0x496a5800, | ||
5050 | 0x412ed000, 0x815eb800, 0x0400e7fc, 0x59c80000, | ||
5051 | 0x82000540, 0x00001200, 0x48039000, 0x04006018, | ||
5052 | 0x59d8010a, 0x59d8090a, 0x80040d80, 0x040207fd, | ||
5053 | 0x900001c0, 0x82000540, 0x00000013, 0x4803c011, | ||
5054 | 0x5998002b, 0x84000500, 0x4803302b, 0x59e00017, | ||
5055 | 0x8c000508, 0x04000003, 0x4a03c017, 0x00000003, | ||
5056 | 0x4203e000, 0x30000001, 0x59d80105, 0x82000500, | ||
5057 | 0x00018780, 0x0402007e, 0x1c01f000, 0x5998002b, | ||
5058 | 0x84000540, 0x4803302b, 0x0401f7f8, 0x497a5801, | ||
5059 | 0x40065800, 0x592c0001, 0x496a5800, 0x412ed000, | ||
5060 | 0x815eb800, 0x80000d40, 0x040207f9, 0x59c80000, | ||
5061 | 0x82000540, 0x00001200, 0x48039000, 0x0401f7bc, | ||
5062 | 0x5c000000, 0x4c000000, 0x4803c857, 0x492fc857, | ||
5063 | 0x4943c857, 0x4807c857, 0x4a025a04, 0x00000103, | ||
5064 | 0x49425a06, 0x48065a08, 0x4a025c06, 0x0000ffff, | ||
5065 | 0x813261c0, 0x04000003, 0x59300402, 0x48025c06, | ||
5066 | 0x832c0400, 0x00000009, 0x04011000, 0x4803c840, | ||
5067 | 0x4a03c842, 0x0000000b, 0x04011000, 0x1c01f000, | ||
5068 | 0x4df00000, 0x4203e000, 0x50000000, 0x599cb817, | ||
5069 | 0x59940019, 0x80000540, 0x04002023, 0x0400000e, | ||
5070 | 0x59980022, 0x82000580, 0x00000005, 0x0400001e, | ||
5071 | 0x59a80069, 0x81640580, 0x0402001b, 0x8c5cbd08, | ||
5072 | 0x04000005, 0x59a8006a, 0x59a80866, 0x80040580, | ||
5073 | 0x04020015, 0x8c5cbd08, 0x04020030, 0x59d8090b, | ||
5074 | 0x59d8010a, 0x80040580, 0x0400000d, 0x0400600e, | ||
5075 | 0x4a03c011, 0x80400012, 0x4a03c020, 0x00008040, | ||
5076 | 0x59e00017, 0x8c000508, 0x04000003, 0x4a03c017, | ||
5077 | 0x00000002, 0x4203e000, 0x30000001, 0x4a032819, | ||
5078 | 0xffff0000, 0x04026835, 0x04006003, 0x8c5cbd08, | ||
5079 | 0x04020860, 0x59980029, 0x80025d40, 0x04000010, | ||
5080 | 0x59d80105, 0x82000500, 0x00018780, 0x04020020, | ||
5081 | 0x0402d00d, 0x59980026, 0x492fc857, 0x80000040, | ||
5082 | 0x48033026, 0x592c0000, 0x492fb107, 0x48033029, | ||
5083 | 0x04020003, 0x4803c856, 0x48033028, 0x5c03e000, | ||
5084 | 0x1c01f000, 0x42000000, 0x0010b855, 0x0201f800, | ||
5085 | 0x0010aa47, 0x0401f7fa, 0x59e0000f, 0x59e0080f, | ||
5086 | 0x80040580, 0x040207fd, 0x59e00010, 0x59e01010, | ||
5087 | 0x80081580, 0x040207fd, 0x40065000, 0x80041580, | ||
5088 | 0x040007c7, 0x040067dc, 0x0401f7ca, 0x4803c857, | ||
5089 | 0x485fc857, 0x8c00050e, 0x02020800, 0x001005d0, | ||
5090 | 0x4203e000, 0x50000000, 0x4200b800, 0x00008004, | ||
5091 | 0x0201f000, 0x001005dd, 0x5998002b, 0x8c000500, | ||
5092 | 0x04000013, 0x84000500, 0x4803302b, 0x59d8010a, | ||
5093 | 0x59d8090a, 0x80040580, 0x040207fd, 0x800408e0, | ||
5094 | 0x82040d40, 0x00000013, 0x4807c011, 0x59e00017, | ||
5095 | 0x8c000508, 0x04000003, 0x4a03c017, 0x00000003, | ||
5096 | 0x4203e000, 0x30000001, 0x1c01f000, 0x0402e014, | ||
5097 | 0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800, | ||
5098 | 0x0400e7fc, 0x59c80000, 0x82000540, 0x00001200, | ||
5099 | 0x48039000, 0x59d8090b, 0x59980024, 0x48073024, | ||
5100 | 0x80040480, 0x04020004, 0x59940019, 0x80000540, | ||
5101 | 0x04022003, 0x59980823, 0x48072819, 0x59d80105, | ||
5102 | 0x82000500, 0x00018780, 0x040207c9, 0x1c01f000, | ||
5103 | 0x59981025, 0x59e00010, 0x59e00810, 0x80041d80, | ||
5104 | 0x040207fd, 0x80080580, 0x04000013, 0x48073025, | ||
5105 | 0x59e0000f, 0x59e0100f, 0x80081d80, 0x040207fd, | ||
5106 | 0x81280580, 0x04000008, 0x400a5000, 0x40080000, | ||
5107 | 0x80040580, 0x04000003, 0x59980823, 0x48072819, | ||
5108 | 0x1c01f000, 0x59940019, 0x80000540, 0x040227f8, | ||
5109 | 0x0401f7fc, 0x59e0000f, 0x59e0100f, 0x80081d80, | ||
5110 | 0x040207fd, 0x81280580, 0x040007f6, 0x400a5000, | ||
5111 | 0x59940019, 0x80000540, 0x040027ed, 0x0401f7f1, | ||
5112 | 0x59a80017, 0x82000c80, 0x0000000a, 0x02021800, | ||
5113 | 0x001005d8, 0x0c01f809, 0x4a038805, 0x000000f0, | ||
5114 | 0x59c400a3, 0x82000500, 0x02870000, 0x02020800, | ||
5115 | 0x001005d8, 0x1c01f000, 0x00104fc5, 0x00104f51, | ||
5116 | 0x00104f6c, 0x00104f95, 0x00104fb8, 0x00104ff2, | ||
5117 | 0x00105004, 0x00104f6c, 0x00104fd6, 0x00104f50, | ||
5118 | 0x1c01f000, 0x4a038808, 0x00000004, 0x0401f8f9, | ||
5119 | 0x0201f800, 0x001053ab, 0x59c40805, 0x8c040d0e, | ||
5120 | 0x04020013, 0x8c040d0a, 0x0402000b, 0x8c040d0c, | ||
5121 | 0x04020006, 0x8c040d08, 0x0400000d, 0x4a035017, | ||
5122 | 0x00000003, 0x0401f00a, 0x4a035017, 0x00000000, | ||
5123 | 0x0401f007, 0x42000000, 0x0010b844, 0x0201f800, | ||
5124 | 0x0010aa47, 0x4a035017, 0x00000002, 0x1c01f000, | ||
5125 | 0x4a038808, 0x00000002, 0x0401f8de, 0x59c40805, | ||
5126 | 0x8c040d08, 0x04020021, 0x8c040d0c, 0x0402001c, | ||
5127 | 0x8c040d0e, 0x04020017, 0x82040500, 0x000000f0, | ||
5128 | 0x0402001c, 0x0201f800, 0x001053ab, 0x4a038808, | ||
5129 | 0x00000080, 0x59c40002, 0x8400050c, 0x48038802, | ||
5130 | 0x0401f9d9, 0x4d3c0000, 0x42027800, 0x00000001, | ||
5131 | 0x0201f800, 0x00109874, 0x5c027800, 0x4a038808, | ||
5132 | 0x00000080, 0x4a035017, 0x00000009, 0x0401f009, | ||
5133 | 0x4a035017, 0x00000001, 0x0401f006, 0x4a035017, | ||
5134 | 0x00000000, 0x0401f003, 0x4a035017, 0x00000003, | ||
5135 | 0x1c01f000, 0x0401f8b7, 0x4a038808, 0x00000080, | ||
5136 | 0x59c40805, 0x8c040d0a, 0x0402001b, 0x8c040d0c, | ||
5137 | 0x04020016, 0x8c040d0e, 0x04020011, 0x82040500, | ||
5138 | 0x000000f0, 0x04020016, 0x59c40002, 0x8400050c, | ||
5139 | 0x48038802, 0x0401f9b4, 0x4d3c0000, 0x42027800, | ||
5140 | 0x00000001, 0x0201f800, 0x00109874, 0x5c027800, | ||
5141 | 0x4a035017, 0x00000009, 0x0401f009, 0x4a035017, | ||
5142 | 0x00000001, 0x0401f006, 0x4a035017, 0x00000000, | ||
5143 | 0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000, | ||
5144 | 0x4a038808, 0x00000008, 0x59c40805, 0x8c040d0c, | ||
5145 | 0x04020006, 0x8c040d0e, 0x04000006, 0x4a035017, | ||
5146 | 0x00000001, 0x0401f003, 0x4a035017, 0x00000000, | ||
5147 | 0x1c01f000, 0x0401f8d3, 0x59c40805, 0x8c040d0c, | ||
5148 | 0x0402000d, 0x4c040000, 0x0401f882, 0x5c000800, | ||
5149 | 0x8c040d0a, 0x04020006, 0x8c040d0e, 0x04000006, | ||
5150 | 0x4a035017, 0x00000001, 0x0401f003, 0x4a035017, | ||
5151 | 0x00000002, 0x1c01f000, 0x4a038808, 0x00000008, | ||
5152 | 0x42001000, 0x00105058, 0x0201f800, 0x00106084, | ||
5153 | 0x59c40805, 0x8c040d0a, 0x0402000d, 0x8c040d08, | ||
5154 | 0x0402000b, 0x8c040d0c, 0x04020006, 0x8c040d0e, | ||
5155 | 0x0400000d, 0x4a035017, 0x00000001, 0x0401f00a, | ||
5156 | 0x4a035017, 0x00000000, 0x0401f007, 0x42000000, | ||
5157 | 0x0010b844, 0x0201f800, 0x0010aa47, 0x4a035017, | ||
5158 | 0x00000004, 0x1c01f000, 0x0401f8a6, 0x0401f859, | ||
5159 | 0x59c40805, 0x8c040d0a, 0x0402000b, 0x8c040d0c, | ||
5160 | 0x04020006, 0x8c040d0e, 0x04000009, 0x4a035017, | ||
5161 | 0x00000001, 0x0401f006, 0x4a035017, 0x00000000, | ||
5162 | 0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000, | ||
5163 | 0x4a038808, 0x00000004, 0x0401f846, 0x59c40805, | ||
5164 | 0x8c040d0a, 0x04020010, 0x8c040d08, 0x0402000b, | ||
5165 | 0x8c040d0c, 0x04020006, 0x8c040d0e, 0x0400000c, | ||
5166 | 0x4a035017, 0x00000001, 0x0401f009, 0x4a035017, | ||
5167 | 0x00000000, 0x0401f006, 0x4a035017, 0x00000003, | ||
5168 | 0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000, | ||
5169 | 0x0401f91f, 0x02020800, 0x001005d8, 0x59a80805, | ||
5170 | 0x8c040d0c, 0x04000015, 0x84040d0c, 0x48075005, | ||
5171 | 0x4a038805, 0x00000010, 0x0201f800, 0x00101937, | ||
5172 | 0x59c40005, 0x8c000508, 0x04000008, 0x4a038808, | ||
5173 | 0x00000008, 0x4a035033, 0x00000001, 0x4202d800, | ||
5174 | 0x00000001, 0x0401f01a, 0x59c40006, 0x84000548, | ||
5175 | 0x48038806, 0x0401f016, 0x59a80017, 0x82000580, | ||
5176 | 0x00000001, 0x0400000c, 0x59a80017, 0x82000580, | ||
5177 | 0x00000005, 0x0402000c, 0x42000000, 0x0010b844, | ||
5178 | 0x0201f800, 0x0010aa47, 0x4a035017, 0x00000008, | ||
5179 | 0x0401f007, 0x42000000, 0x0010b844, 0x0201f800, | ||
5180 | 0x0010aa47, 0x4a035017, 0x00000004, 0x1c01f000, | ||
5181 | 0x4803c856, 0x4c040000, 0x4c080000, 0x42000800, | ||
5182 | 0x00000064, 0x42001000, 0x00105058, 0x0201f800, | ||
5183 | 0x00106079, 0x5c001000, 0x5c000800, 0x1c01f000, | ||
5184 | 0x4803c856, 0x4c040000, 0x0201f800, 0x00106c55, | ||
5185 | 0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000, | ||
5186 | 0x02000800, 0x00106c4b, 0x0401ffba, 0x5c000800, | ||
5187 | 0x1c01f000, 0x4803c856, 0x4c040000, 0x4c080000, | ||
5188 | 0x0201f800, 0x00106c55, 0x4df00000, 0x0201f800, | ||
5189 | 0x00106e21, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
5190 | 0x59c40006, 0x84000500, 0x48038806, 0x0201f800, | ||
5191 | 0x00106ede, 0x497b8880, 0x0201f800, 0x0010a9c0, | ||
5192 | 0x0201f800, 0x0010a9ce, 0x0201f800, 0x00101815, | ||
5193 | 0x4a03504c, 0x00000004, 0x4202d800, 0x00000004, | ||
5194 | 0x4a038805, 0x00000001, 0x42001000, 0x00105058, | ||
5195 | 0x0201f800, 0x00106084, 0x0201f800, 0x001006d4, | ||
5196 | 0x0401f8c1, 0x04000006, 0x42006000, 0xfeffffff, | ||
5197 | 0x41786800, 0x0201f800, 0x0010427d, 0x0201f800, | ||
5198 | 0x00100452, 0x42000000, 0x00000001, 0x0201f800, | ||
5199 | 0x00101590, 0x5c001000, 0x5c000800, 0x1c01f000, | ||
5200 | 0x59c40008, 0x8c000508, 0x04020007, 0x4a038808, | ||
5201 | 0x00000010, 0x4201d000, 0x00001388, 0x0201f800, | ||
5202 | 0x0010608e, 0x1c01f000, 0x4c040000, 0x59a80833, | ||
5203 | 0x82040580, 0x00000000, 0x0400000b, 0x82040580, | ||
5204 | 0x00000001, 0x0400000b, 0x82040580, 0x00000002, | ||
5205 | 0x0400000b, 0x82040580, 0x00000003, 0x0400000b, | ||
5206 | 0x0401f057, 0x4a035017, 0x00000000, 0x0401f009, | ||
5207 | 0x4a035017, 0x00000004, 0x0401f006, 0x4a035017, | ||
5208 | 0x00000001, 0x0401f003, 0x4a035017, 0x00000007, | ||
5209 | 0x497b8880, 0x4a038893, 0x00000001, 0x41780000, | ||
5210 | 0x0201f800, 0x00101606, 0x0201f800, 0x00106ede, | ||
5211 | 0x836c0d80, 0x00000004, 0x04000008, 0x59c40006, | ||
5212 | 0x82000500, 0xffffff0f, 0x82000540, 0x04000001, | ||
5213 | 0x48038806, 0x0401f007, 0x59c40006, 0x82000500, | ||
5214 | 0xffffff0f, 0x82000540, 0x04000000, 0x48038806, | ||
5215 | 0x0401f875, 0x04020005, 0x59c40806, 0x82040d00, | ||
5216 | 0xfbffff0f, 0x48078806, 0x4200b000, 0x00000005, | ||
5217 | 0x59c40005, 0x8c000534, 0x04020033, 0x42006000, | ||
5218 | 0xfc18ffff, 0x42006800, 0x01000000, 0x0201f800, | ||
5219 | 0x0010427d, 0x0201f800, 0x00101937, 0x59c408a4, | ||
5220 | 0x82040d00, 0x0000000f, 0x82040d80, 0x0000000c, | ||
5221 | 0x0400000a, 0x42006000, 0xfeffffff, 0x42006800, | ||
5222 | 0x02000000, 0x0201f800, 0x0010427d, 0x8058b040, | ||
5223 | 0x040207e8, 0x0401f8a1, 0x0401f853, 0x04000006, | ||
5224 | 0x42006000, 0xfeffffff, 0x41786800, 0x0201f800, | ||
5225 | 0x0010427d, 0x836c0d80, 0x00000004, 0x04000006, | ||
5226 | 0x59a8084d, 0x42001000, 0x00105065, 0x0201f800, | ||
5227 | 0x0010606e, 0x4a035033, 0x00000004, 0x0401fe31, | ||
5228 | 0x0401f841, 0x04020008, 0x59c408a4, 0x82040d00, | ||
5229 | 0x0000000f, 0x82040580, 0x0000000c, 0x02020800, | ||
5230 | 0x001005d8, 0x5c000800, 0x1c01f000, 0x4803c856, | ||
5231 | 0x4c000000, 0x0201f800, 0x0010609e, 0x4a035010, | ||
5232 | 0x00ffffff, 0x497b5032, 0x59a8002a, 0x82000500, | ||
5233 | 0xffff0000, 0x4803502a, 0x497b8880, 0x497b8893, | ||
5234 | 0x41780000, 0x0201f800, 0x00101606, 0x59c40001, | ||
5235 | 0x82000500, 0xfffffcff, 0x48038801, 0x42006000, | ||
5236 | 0xfc18ffff, 0x41786800, 0x0201f800, 0x0010427d, | ||
5237 | 0x4a038808, 0x00000000, 0x5c000000, 0x800001c0, | ||
5238 | 0x02020800, 0x0010411d, 0x4a038805, 0x040000f0, | ||
5239 | 0x59c40006, 0x82000500, 0xffffffcf, 0x82000540, | ||
5240 | 0x440000c1, 0x48038806, 0x1c01f000, 0x4c5c0000, | ||
5241 | 0x59a8b832, 0x825cbd80, 0x0000aaaa, 0x5c00b800, | ||
5242 | 0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00, | ||
5243 | 0x00000030, 0x825cbd80, 0x00000000, 0x5c00b800, | ||
5244 | 0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00, | ||
5245 | 0x00000030, 0x825cbd80, 0x00000010, 0x5c00b800, | ||
5246 | 0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00, | ||
5247 | 0x00000030, 0x825cbd80, 0x00000020, 0x5c00b800, | ||
5248 | 0x1c01f000, 0x59a80005, 0x4803c857, 0x82000d00, | ||
5249 | 0x00000013, 0x04000025, 0x599c1017, 0x4d3c0000, | ||
5250 | 0x82000500, 0x00000011, 0x04000007, 0x42027800, | ||
5251 | 0x00000400, 0x0201f800, 0x00103b25, 0x0402000a, | ||
5252 | 0x0401f012, 0x42027800, 0x00000408, 0x0201f800, | ||
5253 | 0x00103b25, 0x0400000d, 0x42003000, 0x00000003, | ||
5254 | 0x0401f003, 0x42003000, 0x00000004, 0x42028000, | ||
5255 | 0x0000000e, 0x0201f800, 0x0010a449, 0x599c1017, | ||
5256 | 0x8c08150a, 0x04020007, 0x42028000, 0x00000004, | ||
5257 | 0x0201f800, 0x00101fe5, 0x80000580, 0x0401f80d, | ||
5258 | 0x5c027800, 0x0401f00a, 0x0201f800, 0x00103b25, | ||
5259 | 0x04000007, 0x42028000, 0x0000000f, 0x42003000, | ||
5260 | 0x00000001, 0x0201f800, 0x0010a449, 0x1c01f000, | ||
5261 | 0x59a80005, 0x04000004, 0x82000540, 0x00000010, | ||
5262 | 0x0401f003, 0x82000500, 0xffffffef, 0x48035005, | ||
5263 | 0x4803c857, 0x1c01f000, 0x4803c856, 0x4c580000, | ||
5264 | 0x42000000, 0x0010b8cb, 0x0201f800, 0x0010aa47, | ||
5265 | 0x42000800, 0x0010c0f1, 0x59c40003, 0x44000800, | ||
5266 | 0x59c40004, 0x48000801, 0x59c4000b, 0x48000802, | ||
5267 | 0x59c4008e, 0x48000803, 0x59c4008f, 0x48000804, | ||
5268 | 0x59c40090, 0x48000805, 0x59c40091, 0x48000806, | ||
5269 | 0x59c40092, 0x48000807, 0x59c40093, 0x48000808, | ||
5270 | 0x59c40099, 0x48000809, 0x59c4009e, 0x4800080a, | ||
5271 | 0x59c400aa, 0x4800080b, 0x59c400af, 0x4800080c, | ||
5272 | 0x59c400b2, 0x4800080d, 0x59c400b1, 0x4800080e, | ||
5273 | 0x82040c00, 0x0000000f, 0x41c41800, 0x4200b000, | ||
5274 | 0x00000030, 0x580c0050, 0x44000800, 0x80040800, | ||
5275 | 0x800c1800, 0x8058b040, 0x040207fb, 0x41c41800, | ||
5276 | 0x4200b000, 0x00000020, 0x580c0010, 0x44000800, | ||
5277 | 0x80040800, 0x800c1800, 0x8058b040, 0x040207fb, | ||
5278 | 0x497b8830, 0x4200b000, 0x00000040, 0x59c40031, | ||
5279 | 0x44000800, 0x80040800, 0x8058b040, 0x040207fc, | ||
5280 | 0x497b88ac, 0x4200b000, 0x00000010, 0x59c400ad, | ||
5281 | 0x44000800, 0x80040800, 0x8058b040, 0x040207fc, | ||
5282 | 0x59c41001, 0x4c080000, 0x8408150c, 0x480b8801, | ||
5283 | 0x4a0370e4, 0x00000300, 0x4a0370e5, 0xb0000000, | ||
5284 | 0x42000800, 0x00000800, 0x80040840, 0x02000800, | ||
5285 | 0x001005d8, 0x59b800e5, 0x8c000538, 0x040207fb, | ||
5286 | 0x4a0370e4, 0x00000200, 0x42006000, 0xffffffff, | ||
5287 | 0x42006800, 0x80000000, 0x0201f800, 0x0010427d, | ||
5288 | 0x4a038807, 0x00000001, 0x497b8807, 0x4a038808, | ||
5289 | 0x00000010, 0x42006000, 0xfcf8ffff, 0x42006800, | ||
5290 | 0x01000000, 0x0201f800, 0x0010427d, 0x5c001000, | ||
5291 | 0x480b8801, 0x42000800, 0x0010c0f1, 0x50040000, | ||
5292 | 0x48038803, 0x58040001, 0x48038804, 0x58040002, | ||
5293 | 0x4803880b, 0x58040003, 0x4803888e, 0x58040004, | ||
5294 | 0x4803888f, 0x58040005, 0x48038890, 0x58040006, | ||
5295 | 0x48038891, 0x58040007, 0x48038892, 0x58040008, | ||
5296 | 0x48038893, 0x58040009, 0x48038899, 0x5804000a, | ||
5297 | 0x4803889e, 0x5804000b, 0x480388aa, 0x5804000c, | ||
5298 | 0x480388af, 0x5804000d, 0x480388b2, 0x5804000e, | ||
5299 | 0x480388b1, 0x82040c00, 0x0000000f, 0x41c41800, | ||
5300 | 0x4200b000, 0x00000030, 0x50040000, 0x48001850, | ||
5301 | 0x80040800, 0x800c1800, 0x8058b040, 0x040207fb, | ||
5302 | 0x41c41800, 0x4200b000, 0x00000020, 0x50040000, | ||
5303 | 0x48001810, 0x80040800, 0x800c1800, 0x8058b040, | ||
5304 | 0x040207fb, 0x497b8830, 0x4200b000, 0x00000040, | ||
5305 | 0x50040000, 0x48038831, 0x80040800, 0x8058b040, | ||
5306 | 0x040207fc, 0x497b88ac, 0x4200b000, 0x00000010, | ||
5307 | 0x50040000, 0x480388ad, 0x80040800, 0x8058b040, | ||
5308 | 0x040207fc, 0x497b8880, 0x41780000, 0x0201f800, | ||
5309 | 0x00101606, 0x59c408a4, 0x82040d00, 0x0000000f, | ||
5310 | 0x82040580, 0x0000000c, 0x02020800, 0x001005d8, | ||
5311 | 0x4a038805, 0x04000000, 0x5c00b000, 0x1c01f000, | ||
5312 | 0x4803c856, 0x4c580000, 0x4ce80000, 0x42000000, | ||
5313 | 0x0010b845, 0x0201f800, 0x0010aa47, 0x59c41008, | ||
5314 | 0x4c080000, 0x82080500, 0xffffff7f, 0x48038808, | ||
5315 | 0x59c40004, 0x82000500, 0x00003e02, 0x04000005, | ||
5316 | 0x4201d000, 0x00000014, 0x0201f800, 0x0010608e, | ||
5317 | 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806, | ||
5318 | 0x4a038805, 0x00000010, 0x4a038808, 0x00000004, | ||
5319 | 0x4200b000, 0x00000065, 0x59c40005, 0x8c000508, | ||
5320 | 0x04020012, 0x4201d000, 0x000003e8, 0x0201f800, | ||
5321 | 0x0010608e, 0x8058b040, 0x040207f8, 0x0201f800, | ||
5322 | 0x00106ede, 0x4a038808, 0x00000008, 0x4a035033, | ||
5323 | 0x00000001, 0x4202d800, 0x00000001, 0x82000540, | ||
5324 | 0x00000001, 0x0401f030, 0x0201f800, 0x00100ae0, | ||
5325 | 0x42000000, 0x0010b8a8, 0x0201f800, 0x0010aa47, | ||
5326 | 0x0201f800, 0x00100ef4, 0x497b8880, 0x59a8002a, | ||
5327 | 0x82000500, 0x0000ffff, 0x4c000000, 0x0201f800, | ||
5328 | 0x00101606, 0x5c000000, 0x48038880, 0x4a038808, | ||
5329 | 0x00000000, 0x4200b000, 0x00000065, 0x4a038805, | ||
5330 | 0x000000f0, 0x0201f800, 0x00101937, 0x42000800, | ||
5331 | 0x000000f0, 0x59c40005, 0x80040d00, 0x04000008, | ||
5332 | 0x4201d000, 0x000003e8, 0x0201f800, 0x0010608e, | ||
5333 | 0x8058b040, 0x040207f2, 0x0401f7d1, 0x59c40006, | ||
5334 | 0x82000540, 0x000000f0, 0x48038806, 0x59a8001e, | ||
5335 | 0x80000540, 0x04020002, 0x80000000, 0x48038893, | ||
5336 | 0x80000580, 0x5c001000, 0x4df00000, 0x0201f800, | ||
5337 | 0x0010195d, 0x5c03e000, 0x480b8808, 0x5c01d000, | ||
5338 | 0x5c00b000, 0x1c01f000, 0x4803c856, 0x4c580000, | ||
5339 | 0x4ce80000, 0x59c41008, 0x82080500, 0xffffff7f, | ||
5340 | 0x48038808, 0x4c080000, 0x59c40004, 0x82000500, | ||
5341 | 0x00003e02, 0x04000005, 0x4201d000, 0x00000014, | ||
5342 | 0x0201f800, 0x0010608e, 0x0201f800, 0x00100ae0, | ||
5343 | 0x42000000, 0x0010b8a9, 0x0201f800, 0x0010aa47, | ||
5344 | 0x0201f800, 0x00100ef4, 0x4a038808, 0x00000002, | ||
5345 | 0x80000580, 0x48038880, 0x48038893, 0x0201f800, | ||
5346 | 0x00101606, 0x4200b000, 0x00000384, 0x4a038805, | ||
5347 | 0x000000f0, 0x0201f800, 0x00101937, 0x42000800, | ||
5348 | 0x000000f0, 0x59c40005, 0x80040d00, 0x04000015, | ||
5349 | 0x82000500, 0x000000d0, 0x04020012, 0x4201d000, | ||
5350 | 0x00000067, 0x0201f800, 0x0010608e, 0x8058b040, | ||
5351 | 0x040207ef, 0x0201f800, 0x00106ede, 0x4a038808, | ||
5352 | 0x00000008, 0x4a035033, 0x00000001, 0x4202d800, | ||
5353 | 0x00000001, 0x82000540, 0x00000001, 0x0401f010, | ||
5354 | 0x497b8880, 0x59a8001e, 0x80000540, 0x04020002, | ||
5355 | 0x80000000, 0x48038893, 0x59a8002a, 0x82000500, | ||
5356 | 0x0000ffff, 0x4c000000, 0x0201f800, 0x00101606, | ||
5357 | 0x5c000000, 0x48038880, 0x80000580, 0x5c001000, | ||
5358 | 0x4df00000, 0x0201f800, 0x0010195d, 0x5c03e000, | ||
5359 | 0x480b8808, 0x5c01d000, 0x5c00b000, 0x1c01f000, | ||
5360 | 0x4803c856, 0x59c40004, 0x82000500, 0x00003e02, | ||
5361 | 0x0400000a, 0x0201f800, 0x00106ede, 0x4a038808, | ||
5362 | 0x00000008, 0x4a035033, 0x00000001, 0x4202d800, | ||
5363 | 0x00000001, 0x0401f052, 0x0201f800, 0x00100ae0, | ||
5364 | 0x42000000, 0x0010b8aa, 0x0201f800, 0x0010aa47, | ||
5365 | 0x0201f800, 0x00100ef4, 0x59c40006, 0x84000508, | ||
5366 | 0x48038806, 0x4a038805, 0x00000010, 0x59a80805, | ||
5367 | 0x84040d4c, 0x48075005, 0x42000800, 0x00000064, | ||
5368 | 0x42001000, 0x00105058, 0x0201f800, 0x0010606e, | ||
5369 | 0x4a038808, 0x00000000, 0x497b8880, 0x4a038805, | ||
5370 | 0x000000f0, 0x0201f800, 0x00101937, 0x42000800, | ||
5371 | 0x000000f0, 0x59c40005, 0x80040d00, 0x0400000e, | ||
5372 | 0x82000500, 0x000000e0, 0x0402000b, 0x4201d000, | ||
5373 | 0x000003e8, 0x0201f800, 0x0010608e, 0x0201f800, | ||
5374 | 0x00105f48, 0x59940004, 0x80000540, 0x040207ec, | ||
5375 | 0x0401f023, 0x4c080000, 0x42001000, 0x00105065, | ||
5376 | 0x0201f800, 0x00105f90, 0x42001000, 0x00105058, | ||
5377 | 0x0201f800, 0x00106084, 0x5c001000, 0x497b8880, | ||
5378 | 0x59a8001e, 0x80000540, 0x04020002, 0x80000000, | ||
5379 | 0x48038893, 0x59a8002a, 0x82000500, 0x0000ffff, | ||
5380 | 0x4c000000, 0x0201f800, 0x00101606, 0x5c000000, | ||
5381 | 0x48038880, 0x59a80805, 0x84040d0c, 0x48075005, | ||
5382 | 0x59c40006, 0x84000548, 0x48038806, 0x0201f800, | ||
5383 | 0x0010195d, 0x4a038808, 0x00000080, 0x1c01f000, | ||
5384 | 0x4803c856, 0x4d400000, 0x4d3c0000, 0x0201f800, | ||
5385 | 0x00106ede, 0x0201f800, 0x0010ab33, 0x04020025, | ||
5386 | 0x599c1017, 0x59a80805, 0x8c040d00, 0x0402000c, | ||
5387 | 0x8c08151a, 0x0400001f, 0x84040d42, 0x48075005, | ||
5388 | 0x42028000, 0x00000004, 0x42027800, 0x0000000c, | ||
5389 | 0x8c081508, 0x04020008, 0x0401f012, 0x42028000, | ||
5390 | 0x00000004, 0x42027800, 0x00000004, 0x8c081508, | ||
5391 | 0x0400000c, 0x4d400000, 0x42028000, 0x0000000e, | ||
5392 | 0x42028800, 0x0000ffff, 0x0201f800, 0x0010a446, | ||
5393 | 0x5c028000, 0x599c0817, 0x8c040d0a, 0x04020005, | ||
5394 | 0x4943c857, 0x493fc857, 0x0201f800, 0x00101fe5, | ||
5395 | 0x497b8880, 0x4202d800, 0x00000001, 0x0401fcfb, | ||
5396 | 0x5c027800, 0x5c028000, 0x1c01f000, 0x0201f800, | ||
5397 | 0x00100ae0, 0x42000000, 0x0010b8ab, 0x0201f800, | ||
5398 | 0x0010aa47, 0x0201f800, 0x00100ef4, 0x42000000, | ||
5399 | 0x00000001, 0x0201f800, 0x00101606, 0x4a038880, | ||
5400 | 0x00000001, 0x0201f000, 0x0010195d, 0x4202e000, | ||
5401 | 0x00000000, 0x4a033015, 0x00000001, 0x497b301d, | ||
5402 | 0x497b3006, 0x4a03b004, 0x60000001, 0x59d80005, | ||
5403 | 0x4a03b004, 0x90000001, 0x4a03a804, 0x60000001, | ||
5404 | 0x59d40005, 0x4a03a804, 0x90000001, 0x0201f000, | ||
5405 | 0x00105983, 0x4a03c825, 0x00000004, 0x4a03c827, | ||
5406 | 0x00000004, 0x599c0409, 0x80000d40, 0x04000020, | ||
5407 | 0x599c0407, 0x80000540, 0x04000007, 0x800000cc, | ||
5408 | 0x599c100b, 0x80080400, 0x4803b000, 0x497bb002, | ||
5409 | 0x59d80001, 0x599c000b, 0x4803b000, 0x599c000c, | ||
5410 | 0x4803b001, 0x599c0407, 0x80000540, 0x04020002, | ||
5411 | 0x497bb002, 0x599c0c09, 0x82040540, 0x00400000, | ||
5412 | 0x4803b003, 0x4a03b009, 0x00000004, 0x4a03b004, | ||
5413 | 0x10000001, 0x59e00803, 0x82040d00, 0xfffffeff, | ||
5414 | 0x82040d40, 0x00008000, 0x4807c003, 0x599c040a, | ||
5415 | 0x80000540, 0x04000020, 0x599c0408, 0x80000540, | ||
5416 | 0x04000007, 0x800000cc, 0x599c100f, 0x80080400, | ||
5417 | 0x4803a800, 0x497ba802, 0x59d40001, 0x599c000f, | ||
5418 | 0x4803a800, 0x599c0010, 0x4803a801, 0x599c0408, | ||
5419 | 0x80000540, 0x04020002, 0x497ba802, 0x599c0c0a, | ||
5420 | 0x82040540, 0x00400000, 0x4803a803, 0x4a03a809, | ||
5421 | 0x00000004, 0x4a03a804, 0x10000001, 0x59e00803, | ||
5422 | 0x82040d00, 0xfffffbff, 0x82040d40, 0x00008000, | ||
5423 | 0x4807c003, 0x800409c0, 0x04000007, 0x4202e000, | ||
5424 | 0x00000001, 0x0200b800, 0x00020551, 0x0200f000, | ||
5425 | 0x00020566, 0x1c01f000, 0x0201f800, 0x001005d8, | ||
5426 | 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, | ||
5427 | 0x59981005, 0x800811c0, 0x0400001e, 0x58080005, | ||
5428 | 0x82000d00, 0x43018780, 0x02020000, 0x00105846, | ||
5429 | 0x8c000508, 0x04000015, 0x580a5808, 0x592c0204, | ||
5430 | 0x497a5800, 0x497a5801, 0x82000500, 0x000000ff, | ||
5431 | 0x82000c80, 0x0000004b, 0x0402100b, 0x0c01f80f, | ||
5432 | 0x5c03e000, 0x83700580, 0x00000003, 0x040007e6, | ||
5433 | 0x0200f800, 0x00020566, 0x0200b000, 0x00020551, | ||
5434 | 0x1c01f000, 0x0401f850, 0x5c03e000, 0x0401f7f9, | ||
5435 | 0x0401f8de, 0x0401f7fd, 0x00105491, 0x00105491, | ||
5436 | 0x00105491, 0x00105491, 0x001054a1, 0x00105491, | ||
5437 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5438 | 0x00105519, 0x00105491, 0x00105491, 0x001054a1, | ||
5439 | 0x001054a1, 0x00105491, 0x00105491, 0x00105491, | ||
5440 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5441 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5442 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5443 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5444 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5445 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5446 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5447 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5448 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5449 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5450 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5451 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5452 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5453 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
5454 | 0x00105491, 0x492fc857, 0x42000000, 0x0010b85e, | ||
5455 | 0x0201f800, 0x0010aa47, 0x42000000, 0x00000400, | ||
5456 | 0x0401f019, 0x492fc857, 0x42000000, 0x0010b85d, | ||
5457 | 0x0201f800, 0x0010aa47, 0x42000000, 0x00001000, | ||
5458 | 0x0401f011, 0x492fc857, 0x42000000, 0x0010b85c, | ||
5459 | 0x0201f800, 0x0010aa47, 0x42000000, 0x00002000, | ||
5460 | 0x0401f009, 0x492fc857, 0x42000000, 0x0010b85f, | ||
5461 | 0x0201f800, 0x0010aa47, 0x42000000, 0x00000800, | ||
5462 | 0x0401f001, 0x4803c857, 0x4202e000, 0x00000001, | ||
5463 | 0x592c0c04, 0x82040d00, 0xffff80ff, 0x80040540, | ||
5464 | 0x48025c04, 0x0201f000, 0x000202da, 0x592c0204, | ||
5465 | 0x492fc857, 0x80000110, 0x040007db, 0x80000040, | ||
5466 | 0x04000025, 0x48033002, 0x492f3003, 0x492f3004, | ||
5467 | 0x4a033008, 0x001054e5, 0x4202e000, 0x00000003, | ||
5468 | 0x1c01f000, 0x592c0204, 0x492fc857, 0x80000110, | ||
5469 | 0x040007cd, 0x80000040, 0x04000033, 0x48033002, | ||
5470 | 0x492f3003, 0x492f3004, 0x4a033008, 0x00105501, | ||
5471 | 0x4202e000, 0x00000003, 0x1c01f000, 0x0201f800, | ||
5472 | 0x0010ab33, 0x02020000, 0x000204d9, 0x42028000, | ||
5473 | 0x00000028, 0x41780800, 0x417a6000, 0x0201f800, | ||
5474 | 0x00104e70, 0x0201f800, 0x001091c6, 0x0201f000, | ||
5475 | 0x000202da, 0x592c0a0a, 0x8c040d02, 0x04020016, | ||
5476 | 0x59a80021, 0x492fc857, 0x80000540, 0x0402000f, | ||
5477 | 0x592c0207, 0x80000540, 0x04000005, 0x0201f800, | ||
5478 | 0x00104326, 0x04020004, 0x1c01f000, 0x42000000, | ||
5479 | 0x00000000, 0x592c0a06, 0x48065c06, 0x48025a06, | ||
5480 | 0x0201f000, 0x000202da, 0x42000000, 0x00000028, | ||
5481 | 0x0401f7f9, 0x42000800, 0x00000009, 0x0201f000, | ||
5482 | 0x0010665b, 0x592c0208, 0x492fc857, 0x82000c80, | ||
5483 | 0x0000199a, 0x040217a4, 0x592c0408, 0x80000540, | ||
5484 | 0x040207a1, 0x59a80821, 0x800409c0, 0x04020009, | ||
5485 | 0x592c0207, 0x80000540, 0x0400079b, 0x497a5a06, | ||
5486 | 0x0201f800, 0x00104385, 0x04020004, 0x1c01f000, | ||
5487 | 0x42000000, 0x00000028, 0x48025a06, 0x0201f000, | ||
5488 | 0x000202da, 0x59980804, 0x59980002, 0x48065800, | ||
5489 | 0x492c0801, 0x492f3004, 0x80000040, 0x48033002, | ||
5490 | 0x04000002, 0x1c01f000, 0x599a5803, 0x59980008, | ||
5491 | 0x4202e000, 0x00000001, 0x0801f000, 0x592e8a06, | ||
5492 | 0x592c0406, 0x4803c856, 0x82000500, 0x000000ff, | ||
5493 | 0x4200b800, 0x00000001, 0x82000d80, 0x00000001, | ||
5494 | 0x04000015, 0x417a8800, 0x4200b800, 0x000007f0, | ||
5495 | 0x82000d80, 0x00000002, 0x0400000f, 0x80000540, | ||
5496 | 0x02020000, 0x000202da, 0x592e8a06, 0x0201f800, | ||
5497 | 0x00020245, 0x02020000, 0x000202da, 0x592e9008, | ||
5498 | 0x592e9809, 0x0201f800, 0x00104713, 0x0201f000, | ||
5499 | 0x000202da, 0x59a80805, 0x84040d00, 0x48075005, | ||
5500 | 0x0201f800, 0x00020245, 0x02000800, 0x0010482c, | ||
5501 | 0x81468800, 0x805cb840, 0x040207fa, 0x0201f000, | ||
5502 | 0x000202da, 0x592c0a08, 0x4807c857, 0x82040580, | ||
5503 | 0x0000000e, 0x04000045, 0x82040580, 0x00000046, | ||
5504 | 0x04000046, 0x82040580, 0x00000045, 0x04000020, | ||
5505 | 0x82040580, 0x00000029, 0x04000010, 0x82040580, | ||
5506 | 0x0000002a, 0x04000009, 0x82040580, 0x0000000f, | ||
5507 | 0x040001fc, 0x82040580, 0x0000002e, 0x040001f9, | ||
5508 | 0x4807c856, 0x0401f1f2, 0x59a80805, 0x84040d04, | ||
5509 | 0x48075005, 0x0401f1f3, 0x592e8a06, 0x0201f800, | ||
5510 | 0x00020245, 0x040201ef, 0x59340200, 0x84000518, | ||
5511 | 0x48026a00, 0x592e6009, 0x4933c857, 0x83300580, | ||
5512 | 0xffffffff, 0x0402002a, 0x0401f1e6, 0x592c1407, | ||
5513 | 0x480bc857, 0x0201f800, 0x00109410, 0x411e6000, | ||
5514 | 0x04020003, 0x4803c856, 0x0401f1d9, 0x592e3809, | ||
5515 | 0x591c1414, 0x84081516, 0x84081554, 0x480a3c14, | ||
5516 | 0x4a026403, 0x0000003a, 0x592c040b, 0x80000540, | ||
5517 | 0x04000007, 0x4a026403, 0x0000003b, 0x592c020c, | ||
5518 | 0x4802641a, 0x592c040c, 0x4802621a, 0x4a026203, | ||
5519 | 0x00000001, 0x42000800, 0x80000040, 0x0201f800, | ||
5520 | 0x00020721, 0x0401f1c7, 0x59a80068, 0x84000510, | ||
5521 | 0x48035068, 0x0401f1c3, 0x592c1207, 0x8c081500, | ||
5522 | 0x040201c0, 0x592e8a06, 0x592e6009, 0x0201f800, | ||
5523 | 0x0010941a, 0x04020003, 0x4803c856, 0x0401f1b4, | ||
5524 | 0x59300c06, 0x82040580, 0x00000004, 0x04000003, | ||
5525 | 0x4803c856, 0x0401f1ae, 0x59300a03, 0x82040580, | ||
5526 | 0x00000007, 0x04000003, 0x4803c856, 0x0401f1a8, | ||
5527 | 0x59300c03, 0x82040580, 0x00000001, 0x04000021, | ||
5528 | 0x82040580, 0x00000003, 0x04000016, 0x82040580, | ||
5529 | 0x00000006, 0x04000020, 0x82040580, 0x00000008, | ||
5530 | 0x04000015, 0x82040580, 0x0000000a, 0x0400000a, | ||
5531 | 0x82040580, 0x0000000c, 0x04000004, 0x82040580, | ||
5532 | 0x0000002e, 0x04020018, 0x42000800, 0x00000009, | ||
5533 | 0x0401f013, 0x42000800, 0x00000005, 0x0401f010, | ||
5534 | 0x417a7800, 0x0201f800, 0x0010203c, 0x4a026406, | ||
5535 | 0x00000001, 0x42000800, 0x00000003, 0x0401f008, | ||
5536 | 0x417a7800, 0x0201f800, 0x0010203c, 0x4a026406, | ||
5537 | 0x00000001, 0x42000800, 0x0000000b, 0x0201f800, | ||
5538 | 0x00104571, 0x4a026203, 0x00000001, 0x0201f800, | ||
5539 | 0x0010672b, 0x0401f17b, 0x40000800, 0x58040000, | ||
5540 | 0x80000540, 0x040207fd, 0x492c0800, 0x1c01f000, | ||
5541 | 0x492fc857, 0x59300c06, 0x82040580, 0x00000006, | ||
5542 | 0x04020094, 0x0201f800, 0x001049e7, 0x04020005, | ||
5543 | 0x59340200, 0x8c00051a, 0x02000000, 0x00020533, | ||
5544 | 0x59340200, 0x8c00050e, 0x0400008a, 0x59300203, | ||
5545 | 0x42027800, 0x00000001, 0x82000580, 0x00000007, | ||
5546 | 0x02020000, 0x00020533, 0x4a026203, 0x00000002, | ||
5547 | 0x0201f000, 0x00020533, 0x42028000, 0x00000002, | ||
5548 | 0x4a026206, 0x00000014, 0x4d2c0000, 0x0201f800, | ||
5549 | 0x0010a1d1, 0x5c025800, 0x59300c06, 0x4807c857, | ||
5550 | 0x82040580, 0x00000007, 0x04020063, 0x492fc857, | ||
5551 | 0x4a025a06, 0x00000001, 0x0201f000, 0x000202da, | ||
5552 | 0x592c240a, 0x492fc857, 0x4813c857, 0x8c10251c, | ||
5553 | 0x04020016, 0x8c10251a, 0x04000003, 0x8c10250a, | ||
5554 | 0x04000069, 0x59340a00, 0x8c040d0e, 0x04000003, | ||
5555 | 0x8c10251e, 0x04000064, 0x0201f800, 0x0002075a, | ||
5556 | 0x0400006b, 0x592c240a, 0x49366009, 0x49325809, | ||
5557 | 0x4a026406, 0x00000006, 0x4a026203, 0x00000007, | ||
5558 | 0x0201f000, 0x0002052f, 0x592c0a0c, 0x5934000f, | ||
5559 | 0x41784000, 0x80001540, 0x0400006d, 0x58080204, | ||
5560 | 0x82000500, 0x000000ff, 0x82000580, 0x00000012, | ||
5561 | 0x04020004, 0x5808020c, 0x80040580, 0x04000004, | ||
5562 | 0x58080000, 0x40084000, 0x0401f7f3, 0x58080000, | ||
5563 | 0x49781000, 0x802041c0, 0x04000006, 0x48004000, | ||
5564 | 0x80000540, 0x04020007, 0x48226810, 0x0401f005, | ||
5565 | 0x4802680f, 0x80000540, 0x04020002, 0x497a6810, | ||
5566 | 0x4d2c0000, 0x400a5800, 0x4a025a06, 0x00000002, | ||
5567 | 0x0201f800, 0x000202da, 0x5c025800, 0x0401f7bc, | ||
5568 | 0x592c040a, 0x8c00051c, 0x04000016, 0x592c0206, | ||
5569 | 0x82000580, 0x0000ffff, 0x04020012, 0x592e6009, | ||
5570 | 0x83300580, 0xffffffff, 0x040007b1, 0x83300480, | ||
5571 | 0x0010d1c0, 0x04001010, 0x59a8000b, 0x81300480, | ||
5572 | 0x0402100d, 0x59300008, 0x800001c0, 0x04020005, | ||
5573 | 0x59300203, 0x82000580, 0x00000007, 0x04000797, | ||
5574 | 0x492fc857, 0x4a025a06, 0x00000029, 0x0201f000, | ||
5575 | 0x000202da, 0x492fc857, 0x4a025a06, 0x00000008, | ||
5576 | 0x0201f000, 0x000202da, 0x492fc857, 0x4a025a06, | ||
5577 | 0x00000045, 0x0201f000, 0x000202da, 0x492fc857, | ||
5578 | 0x4a025a06, 0x0000002a, 0x0201f000, 0x000202da, | ||
5579 | 0x492fc857, 0x4a025a06, 0x00000028, 0x0201f000, | ||
5580 | 0x000202da, 0x492fc857, 0x4a025a06, 0x00000006, | ||
5581 | 0x0201f000, 0x000202da, 0x492fc857, 0x4a025a06, | ||
5582 | 0x0000000e, 0x0201f000, 0x000202da, 0x59340010, | ||
5583 | 0x492e6810, 0x492fc857, 0x80000d40, 0x04000003, | ||
5584 | 0x492c0800, 0x1c01f000, 0x5934040b, 0x492e680f, | ||
5585 | 0x492fc857, 0x4803c857, 0x80000540, 0x04020003, | ||
5586 | 0x4a026a03, 0x00000001, 0x1c01f000, 0x59a8000e, | ||
5587 | 0x81640480, 0x0402176e, 0x42026000, 0x0010d1c0, | ||
5588 | 0x59300009, 0x81340580, 0x04020004, 0x59300202, | ||
5589 | 0x80040580, 0x04000759, 0x83326400, 0x00000024, | ||
5590 | 0x41580000, 0x81300480, 0x040017f6, 0x0401f760, | ||
5591 | 0x492fc857, 0x592c0407, 0x82000c80, 0x0000199a, | ||
5592 | 0x040215f1, 0x592c0204, 0x80000112, 0x040205de, | ||
5593 | 0x592e8a06, 0x0201f800, 0x00020245, 0x04020059, | ||
5594 | 0x0201f800, 0x001049e7, 0x04020059, 0x592e780a, | ||
5595 | 0x493fc857, 0x8d3e7d3e, 0x04020007, 0x59a80021, | ||
5596 | 0x80000540, 0x0402004f, 0x0201f800, 0x00104838, | ||
5597 | 0x040005dd, 0x833c1d00, 0x0000001f, 0x040005da, | ||
5598 | 0x592c0207, 0x82000c80, 0x00001000, 0x040215d6, | ||
5599 | 0x800000c2, 0x800008c4, 0x8005d400, 0x592e9008, | ||
5600 | 0x592e9809, 0x5934080d, 0x800409c0, 0x0402002e, | ||
5601 | 0x833c1d00, 0x0000001f, 0x81780040, 0x80000000, | ||
5602 | 0x800c1902, 0x040217fe, 0x040205c7, 0x0c01f001, | ||
5603 | 0x001056e9, 0x001056ec, 0x001056f9, 0x001056fc, | ||
5604 | 0x001056ff, 0x0201f800, 0x0010903e, 0x0401f01a, | ||
5605 | 0x0201f800, 0x0010480b, 0x04000027, 0x80e9d1c0, | ||
5606 | 0x02020800, 0x00105fae, 0x42028000, 0x00000005, | ||
5607 | 0x417a9000, 0x417a9800, 0x0201f800, 0x0010904e, | ||
5608 | 0x0401f00d, 0x42027000, 0x0000004d, 0x0401f006, | ||
5609 | 0x42027000, 0x0000004e, 0x0401f003, 0x42027000, | ||
5610 | 0x00000052, 0x0201f800, 0x001046c9, 0x02020800, | ||
5611 | 0x0010907e, 0x04000010, 0x8d3e7d3e, 0x04020017, | ||
5612 | 0x1c01f000, 0x58040002, 0x80000540, 0x04020007, | ||
5613 | 0x4d3c0000, 0x40067800, 0x0201f800, 0x001047eb, | ||
5614 | 0x5c027800, 0x040207cb, 0x4a025a06, 0x00000030, | ||
5615 | 0x0401f00d, 0x4a025a06, 0x0000002c, 0x0401f00a, | ||
5616 | 0x4a025a06, 0x00000028, 0x0401f007, 0x4a025a06, | ||
5617 | 0x00000029, 0x0401f004, 0x497a5c09, 0x4a025a06, | ||
5618 | 0x00000000, 0x4a025a04, 0x00000103, 0x0201f000, | ||
5619 | 0x000202da, 0x492fc857, 0x592c0204, 0x80000110, | ||
5620 | 0x80000040, 0x04000002, 0x0401f56f, 0x592c0207, | ||
5621 | 0x82000500, 0x000003ff, 0x48025a07, 0x8c000506, | ||
5622 | 0x04000004, 0x82000500, 0x00000070, 0x04020004, | ||
5623 | 0x59a80821, 0x800409c0, 0x04020018, 0x4a025a06, | ||
5624 | 0x0000dead, 0x592c0408, 0x82000500, 0x0000f0ff, | ||
5625 | 0x48025c08, 0x0201f800, 0x001043b4, 0x04020002, | ||
5626 | 0x1c01f000, 0x49425a06, 0x8058b1c0, 0x04000009, | ||
5627 | 0x0201f800, 0x0010955f, 0x0401f80f, 0x44042800, | ||
5628 | 0x82580580, 0x00000002, 0x04020002, 0x48082801, | ||
5629 | 0x0201f000, 0x000202da, 0x42028000, 0x00000031, | ||
5630 | 0x42000800, 0x00000001, 0x4200b000, 0x00000001, | ||
5631 | 0x0401f7ed, 0x592c0408, 0x80000118, 0x832c2c00, | ||
5632 | 0x00000009, 0x80142c00, 0x1c01f000, 0x492fc857, | ||
5633 | 0x4a025a08, 0x00000006, 0x0201f000, 0x000202da, | ||
5634 | 0x492fc857, 0x4a025a08, 0x00000001, 0x0201f000, | ||
5635 | 0x000202da, 0x492fc857, 0x592c040a, 0x82000500, | ||
5636 | 0x00000003, 0x04000020, 0x0201f800, 0x0002075a, | ||
5637 | 0x04000021, 0x592c0204, 0x492e6008, 0x82000500, | ||
5638 | 0x000000ff, 0x82000580, 0x00000045, 0x0400000e, | ||
5639 | 0x592c000b, 0x0201f800, 0x00105c9a, 0x02000800, | ||
5640 | 0x00020245, 0x04020018, 0x42027000, 0x00000041, | ||
5641 | 0x49366009, 0x4a026406, 0x00000001, 0x0201f000, | ||
5642 | 0x000207a1, 0x59300015, 0x8400055e, 0x48026015, | ||
5643 | 0x42026800, 0x0010b524, 0x42027000, 0x00000040, | ||
5644 | 0x0401f7f4, 0x4a025a06, 0x00000101, 0x0201f000, | ||
5645 | 0x000202da, 0x4a025a06, 0x0000002c, 0x0201f000, | ||
5646 | 0x000202da, 0x4a025a06, 0x00000028, 0x0201f800, | ||
5647 | 0x000202da, 0x0201f000, 0x0002077d, 0x492fc857, | ||
5648 | 0x0201f800, 0x001062e1, 0x0400000b, 0x592c0204, | ||
5649 | 0x80000110, 0x80000040, 0x040204fb, 0x592c0c06, | ||
5650 | 0x800409c0, 0x04000009, 0x42000000, 0x00000102, | ||
5651 | 0x0401f003, 0x42000000, 0x00000104, 0x48025a06, | ||
5652 | 0x0201f000, 0x000202da, 0x592c0c07, 0x800409c0, | ||
5653 | 0x04000024, 0x82040480, 0x00000005, 0x04021021, | ||
5654 | 0x4c040000, 0x80040800, 0x0201f800, 0x00106306, | ||
5655 | 0x5c001000, 0x04020018, 0x832c0400, 0x00000008, | ||
5656 | 0x4000a000, 0x0201f800, 0x0010632f, 0x04020012, | ||
5657 | 0x592c1207, 0x82cc0580, 0x0010b50e, 0x04020009, | ||
5658 | 0x58c80c0b, 0x84040d00, 0x84040d02, 0x8c081500, | ||
5659 | 0x04000002, 0x84040d5e, 0x4805940b, 0x0401f001, | ||
5660 | 0x42000000, 0x00000000, 0x48025a06, 0x0201f000, | ||
5661 | 0x000202da, 0x42000000, 0x00000103, 0x0401f7fb, | ||
5662 | 0x42000000, 0x00000102, 0x0401f7f8, 0x492fc857, | ||
5663 | 0x592e7c06, 0x833c0500, 0xfffffffe, 0x04020043, | ||
5664 | 0x592c4007, 0x42026000, 0x0010d1c0, 0x41581800, | ||
5665 | 0x400c0000, 0x81300480, 0x04021023, 0x59300203, | ||
5666 | 0x82000580, 0x00000000, 0x04000007, 0x59300008, | ||
5667 | 0x80000d40, 0x04000004, 0x58040005, 0x80200580, | ||
5668 | 0x04000004, 0x83326400, 0x00000024, 0x0401f7f1, | ||
5669 | 0x58040204, 0x82000500, 0x000000ff, 0x82000d80, | ||
5670 | 0x00000053, 0x04000007, 0x82000d80, 0x00000048, | ||
5671 | 0x04000004, 0x82000580, 0x00000018, 0x04020023, | ||
5672 | 0x4d2c0000, 0x0201f800, 0x00108be3, 0x5c025800, | ||
5673 | 0x0400001e, 0x4a025a06, 0x00000000, 0x0201f000, | ||
5674 | 0x000202da, 0x592e8a06, 0x83440480, 0x000007f0, | ||
5675 | 0x04021016, 0x83440400, 0x0010ac00, 0x50000000, | ||
5676 | 0x80026d40, 0x04000011, 0x4d2c0000, 0x0201f800, | ||
5677 | 0x001047cb, 0x0400000c, 0x42028000, 0x00000005, | ||
5678 | 0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800, | ||
5679 | 0x001091cc, 0x0201f800, 0x000202da, 0x5c025800, | ||
5680 | 0x0401f7e5, 0x5c025800, 0x4a025a06, 0x00000031, | ||
5681 | 0x0201f000, 0x000202da, 0x492fc857, 0x4d2c0000, | ||
5682 | 0x0201f800, 0x001007e4, 0x04000016, 0x492fc857, | ||
5683 | 0x412f4000, 0x0201f800, 0x001007e4, 0x0400000e, | ||
5684 | 0x492fc857, 0x412dd800, 0x0201f800, 0x00103b28, | ||
5685 | 0x0201f800, 0x00103b32, 0x49a1d80b, 0x5c025800, | ||
5686 | 0x492dd80a, 0x0201f800, 0x00102214, 0x0201f000, | ||
5687 | 0x00102233, 0x41a25800, 0x0201f800, 0x001007f4, | ||
5688 | 0x5c025800, 0x4a025a06, 0x00004005, 0x4a025c06, | ||
5689 | 0x00000002, 0x0201f000, 0x000202da, 0x4807c857, | ||
5690 | 0x485fc857, 0x4200b800, 0x00000001, 0x5c000800, | ||
5691 | 0x4c5c0000, 0x0401f005, 0x4807c857, 0x485fc857, | ||
5692 | 0x5c000800, 0x4d780000, 0x4803c857, 0x492fc857, | ||
5693 | 0x8c00050e, 0x02020800, 0x001005d0, 0x4203e000, | ||
5694 | 0x50000000, 0x4200b800, 0x00008003, 0x0201f000, | ||
5695 | 0x001005dd, 0x592c0204, 0x80000110, 0x80000040, | ||
5696 | 0x04020441, 0x0201f800, 0x00104a34, 0x04020002, | ||
5697 | 0x1c01f000, 0x49425a06, 0x4806580d, 0x480a580e, | ||
5698 | 0x4943c857, 0x4807c857, 0x480bc857, 0x0201f000, | ||
5699 | 0x000202da, 0x592c0204, 0x80000110, 0x80000040, | ||
5700 | 0x04020431, 0x0201f800, 0x00104b8b, 0x04020002, | ||
5701 | 0x1c01f000, 0x49425a06, 0x48065811, 0x480a5812, | ||
5702 | 0x0201f000, 0x000202da, 0x592c0204, 0x80000110, | ||
5703 | 0x04000425, 0x80000040, 0x0402000c, 0x4202e000, | ||
5704 | 0x00000001, 0x592c020a, 0x8c000504, 0x02000000, | ||
5705 | 0x000204d0, 0x592c0207, 0x82000c80, 0x00001001, | ||
5706 | 0x04021429, 0x0401f009, 0x4202e000, 0x00000003, | ||
5707 | 0x48033002, 0x492f3003, 0x492f3004, 0x4a033008, | ||
5708 | 0x000204d0, 0x1c01f000, 0x4202e000, 0x00000002, | ||
5709 | 0x42000000, 0x0010beda, 0x50007000, 0x492c700b, | ||
5710 | 0x4978700e, 0x4978700c, 0x592c0011, 0x592c0812, | ||
5711 | 0x48007007, 0x48047008, 0x592c1013, 0x82080500, | ||
5712 | 0xffff0000, 0x04000003, 0x0201f800, 0x001005d8, | ||
5713 | 0x4978700d, 0x82080480, 0x00000180, 0x4803c857, | ||
5714 | 0x04001007, 0x4800700f, 0x4a007005, 0x00000180, | ||
5715 | 0x4a007004, 0x00000060, 0x0401f005, 0x4978700f, | ||
5716 | 0x48087005, 0x80081104, 0x48087004, 0x5838000a, | ||
5717 | 0x48007003, 0x40381000, 0x0201f000, 0x00100858, | ||
5718 | 0x0201f800, 0x001007d3, 0x04000003, 0x59980007, | ||
5719 | 0x0801f000, 0x1c01f000, 0x40307000, 0x5838000b, | ||
5720 | 0x80025d40, 0x0400001b, 0x58380002, 0x82000580, | ||
5721 | 0x00000100, 0x0400001d, 0x4c380000, 0x592c0204, | ||
5722 | 0x82000500, 0x000000ff, 0x82000580, 0x00000012, | ||
5723 | 0x0400000b, 0x592c0208, 0x8400054e, 0x48025a08, | ||
5724 | 0x4a025a06, 0x00000002, 0x4a025a04, 0x00000103, | ||
5725 | 0x0201f800, 0x000202c1, 0x0401f005, 0x4a025a06, | ||
5726 | 0x00000010, 0x0201f800, 0x000202da, 0x5c007000, | ||
5727 | 0x4202e000, 0x00000001, 0x4a007002, 0x00000100, | ||
5728 | 0x49787010, 0x1c01f000, 0x58380004, 0x82000480, | ||
5729 | 0x00000003, 0x04000087, 0x58380010, 0x8c000500, | ||
5730 | 0x04020019, 0x4200b000, 0x00000003, 0x832cac00, | ||
5731 | 0x00000011, 0x5838000a, 0x5838100d, 0x8008a400, | ||
5732 | 0x4c380000, 0x0201f800, 0x0010ab17, 0x5c007000, | ||
5733 | 0x5838000d, 0x82000400, 0x00000003, 0x4800700d, | ||
5734 | 0x4a007010, 0x00000001, 0x58380004, 0x82000480, | ||
5735 | 0x00000003, 0x48007004, 0x82000580, 0x00000003, | ||
5736 | 0x0400006c, 0x5838000e, 0x80001d40, 0x04020020, | ||
5737 | 0x4c380000, 0x0201f800, 0x001007d3, 0x5c007000, | ||
5738 | 0x04000010, 0x4a025a04, 0x0000010a, 0x42001800, | ||
5739 | 0x00000005, 0x480c700e, 0x5838000c, 0x80000540, | ||
5740 | 0x04020002, 0x5838000b, 0x40000800, 0x492c0801, | ||
5741 | 0x492c700c, 0x42000800, 0x0000000f, 0x0401f011, | ||
5742 | 0x4202e000, 0x00000008, 0x4a033007, 0x00105915, | ||
5743 | 0x1c01f000, 0x4202e000, 0x00000002, 0x42000000, | ||
5744 | 0x0010beda, 0x50007000, 0x0401f7e7, 0x583a580c, | ||
5745 | 0x400c0000, 0x42000800, 0x00000014, 0x80040c80, | ||
5746 | 0x58381004, 0x5838000f, 0x41783000, 0x80000540, | ||
5747 | 0x04020005, 0x84183540, 0x82081480, 0x00000003, | ||
5748 | 0x0400003c, 0x40080000, 0x80040480, 0x04001002, | ||
5749 | 0x40080800, 0x4004b000, 0x412c0000, 0x800c0400, | ||
5750 | 0x4000a800, 0x5838000a, 0x5838100d, 0x8008a400, | ||
5751 | 0x4c080000, 0x4c040000, 0x4c0c0000, 0x4c380000, | ||
5752 | 0x0201f800, 0x0010ab17, 0x5c007000, 0x5c001800, | ||
5753 | 0x5c000800, 0x40040000, 0x58381004, 0x80080480, | ||
5754 | 0x48007004, 0x82000580, 0x00000003, 0x04000002, | ||
5755 | 0x84183500, 0x5c000000, 0x80041400, 0x82080480, | ||
5756 | 0x00000060, 0x04020003, 0x84183542, 0x41781000, | ||
5757 | 0x400c0000, 0x80041c00, 0x820c0480, 0x00000014, | ||
5758 | 0x04020003, 0x84183544, 0x40001800, 0x40080800, | ||
5759 | 0x4804700d, 0x480c700e, 0x40180000, 0x0c01f001, | ||
5760 | 0x00105960, 0x00105964, 0x00105962, 0x00105960, | ||
5761 | 0x001058fc, 0x00105964, 0x00105962, 0x00105960, | ||
5762 | 0x0201f800, 0x001005d8, 0x5838100f, 0x0401f739, | ||
5763 | 0x5838080d, 0x82040400, 0x00000002, 0x5838100a, | ||
5764 | 0x80080400, 0x50001000, 0x800811c0, 0x0402000f, | ||
5765 | 0x4202e000, 0x00000001, 0x583a580b, 0x4978700b, | ||
5766 | 0x49787010, 0x592c0204, 0x82000500, 0x000000ff, | ||
5767 | 0x82000580, 0x00000012, 0x02000000, 0x00020507, | ||
5768 | 0x0201f000, 0x000204d0, 0x5838000a, 0x80040c00, | ||
5769 | 0x82381c00, 0x00000007, 0x54041800, 0x80040800, | ||
5770 | 0x800c1800, 0x54041800, 0x0401f71a, 0x0201f800, | ||
5771 | 0x001007d3, 0x02000800, 0x001005d8, 0x4a02580a, | ||
5772 | 0x0010be79, 0x42000800, 0x0010beda, 0x452c0800, | ||
5773 | 0x497a580b, 0x497a580c, 0x497a580d, 0x497a580e, | ||
5774 | 0x497a580f, 0x4a025809, 0x001058b6, 0x497a5810, | ||
5775 | 0x4a025802, 0x00000100, 0x4a025801, 0x00000001, | ||
5776 | 0x1c01f000, 0x59c80007, 0x8c000502, 0x04000070, | ||
5777 | 0x835c2c80, 0x00000005, 0x02001000, 0x00105f23, | ||
5778 | 0x59c82817, 0x497b9005, 0x82140500, 0x00e00000, | ||
5779 | 0x0402004f, 0x82140500, 0x000003ff, 0x82001c00, | ||
5780 | 0x00000006, 0x41cc2000, 0x42003000, 0x00006080, | ||
5781 | 0x820c0480, 0x00000040, 0x04001006, 0x42001000, | ||
5782 | 0x00000040, 0x820c1c80, 0x00000040, 0x0401f003, | ||
5783 | 0x400c1000, 0x41781800, 0x54182000, 0x80102000, | ||
5784 | 0x80183000, 0x80081040, 0x040207fc, 0x800c19c0, | ||
5785 | 0x04000005, 0x59c80005, 0x80000000, 0x48039005, | ||
5786 | 0x0401f7ea, 0x82140500, 0x01f60000, 0x04020029, | ||
5787 | 0x82140500, 0x0000f000, 0x0400000b, 0x82000c80, | ||
5788 | 0x00002000, 0x0402100f, 0x82140500, 0x0e000000, | ||
5789 | 0x80000132, 0x0c01f840, 0x4a039005, 0x00000140, | ||
5790 | 0x1c01f000, 0x59cc0400, 0x82000500, 0x0000ff00, | ||
5791 | 0x82000580, 0x00008100, 0x040007f4, 0x0401f01c, | ||
5792 | 0x4817c857, 0x82140500, 0x000003ff, 0x04020007, | ||
5793 | 0x59cc0400, 0x82000500, 0x0000ff00, 0x82000580, | ||
5794 | 0x00008100, 0x04020012, 0x42000000, 0x0010b8bd, | ||
5795 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x00105dfa, | ||
5796 | 0x4803c856, 0x4a039005, 0x00000140, 0x0401f020, | ||
5797 | 0x4817c857, 0x82140500, 0x00f60000, 0x04020004, | ||
5798 | 0x0201f800, 0x00105e35, 0x040207d2, 0x0201f800, | ||
5799 | 0x0010513b, 0x04000010, 0x59c400a4, 0x4803c857, | ||
5800 | 0x82000500, 0x0000000f, 0x82000580, 0x0000000a, | ||
5801 | 0x04020009, 0x497b5016, 0x59c400a3, 0x82000540, | ||
5802 | 0x00080000, 0x480388a3, 0x82000500, 0xfff7ffff, | ||
5803 | 0x480388a3, 0x4817c856, 0x0201f800, 0x0010a978, | ||
5804 | 0x4a039005, 0x00000140, 0x0401f842, 0x4803c856, | ||
5805 | 0x1c01f000, 0x00105a1d, 0x00105cf4, 0x00105a15, | ||
5806 | 0x00105a15, 0x00105a15, 0x00105a15, 0x00105a15, | ||
5807 | 0x00105a15, 0x4803c857, 0x42000000, 0x0010b85a, | ||
5808 | 0x0201f800, 0x0010aa47, 0x4a039005, 0x00000140, | ||
5809 | 0x1c01f000, 0x4817c857, 0x59cc0400, 0x4803c857, | ||
5810 | 0x82000d00, 0x0000ff00, 0x82041500, 0x0000f000, | ||
5811 | 0x840409c0, 0x82140500, 0x000003ff, 0x800018c4, | ||
5812 | 0x8c142d14, 0x04000005, 0x59cc0002, 0x82000500, | ||
5813 | 0x00000003, 0x800c1c80, 0x480f5016, 0x82080580, | ||
5814 | 0x00002000, 0x04020011, 0x836c0580, 0x00000001, | ||
5815 | 0x0402000c, 0x59cc0006, 0x82000500, 0xff000000, | ||
5816 | 0x82000580, 0x11000000, 0x04020011, 0x0201f800, | ||
5817 | 0x00103b38, 0x0201f800, 0x00105f48, 0x0401f00c, | ||
5818 | 0x0401f81f, 0x0401f00a, 0x82080580, 0x00003000, | ||
5819 | 0x04020003, 0x0401fa06, 0x0401f005, 0x82080580, | ||
5820 | 0x00008000, 0x04020002, 0x0401fafc, 0x1c01f000, | ||
5821 | 0x4817c857, 0x42000000, 0x0010b859, 0x0201f800, | ||
5822 | 0x0010aa47, 0x836c0580, 0x00000003, 0x0402000b, | ||
5823 | 0x4c080000, 0x4c0c0000, 0x42001000, 0x00008048, | ||
5824 | 0x40141800, 0x80142120, 0x0201f800, 0x00103a3e, | ||
5825 | 0x5c001800, 0x5c001000, 0x1c01f000, 0x4807c857, | ||
5826 | 0x59cc0002, 0x82000500, 0xff000000, 0x82001580, | ||
5827 | 0x01000000, 0x04000004, 0x82001580, 0x23000000, | ||
5828 | 0x04020192, 0x82040580, 0x00000023, 0x0402003f, | ||
5829 | 0x0401fb6a, 0x0400018d, 0x59300c06, 0x82040580, | ||
5830 | 0x00000010, 0x04000013, 0x82040580, 0x00000011, | ||
5831 | 0x04000010, 0x82040580, 0x00000001, 0x0400000d, | ||
5832 | 0x82040580, 0x00000004, 0x0400000a, 0x82040580, | ||
5833 | 0x00000008, 0x04000007, 0x82040580, 0x0000000a, | ||
5834 | 0x04000004, 0x4933c857, 0x4807c857, 0x0401f177, | ||
5835 | 0x59300004, 0x82000500, 0x80010000, 0x04000004, | ||
5836 | 0x0201f800, 0x00106f60, 0x04020170, 0x59cc0a04, | ||
5837 | 0x48066202, 0x59cc0006, 0x82000500, 0xffff0000, | ||
5838 | 0x82000d80, 0x02000000, 0x04020005, 0x42027000, | ||
5839 | 0x00000015, 0x0201f000, 0x000207a1, 0x82000d80, | ||
5840 | 0x02140000, 0x040007fa, 0x82000d80, 0x02100000, | ||
5841 | 0x040007f7, 0x82000d80, 0x02100000, 0x040007f4, | ||
5842 | 0x82000d80, 0x01000000, 0x04020158, 0x59cc0006, | ||
5843 | 0x82000500, 0x0000ffff, 0x04020154, 0x42027000, | ||
5844 | 0x00000016, 0x0401f7ec, 0x82040580, 0x00000022, | ||
5845 | 0x0402014e, 0x59a80806, 0x8c040d14, 0x04000011, | ||
5846 | 0x0401f967, 0x0402000f, 0x0401f97d, 0x0400000d, | ||
5847 | 0x42027000, 0x0000004c, 0x59cc0001, 0x82000500, | ||
5848 | 0x00ffffff, 0x0201f800, 0x00105eec, 0x0400012a, | ||
5849 | 0x42028800, 0x0000ffff, 0x417a6800, 0x0401f126, | ||
5850 | 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80, | ||
5851 | 0x03000000, 0x04020021, 0x59a80026, 0x8c000508, | ||
5852 | 0x04000017, 0x8400054c, 0x48035026, 0x59cc0800, | ||
5853 | 0x82040d00, 0x00ffffff, 0x48075010, 0x497b8830, | ||
5854 | 0x84040d70, 0x48078832, 0x59c40802, 0x84040d4c, | ||
5855 | 0x48078802, 0x59cc0007, 0x82000500, 0x0000ffff, | ||
5856 | 0x48038893, 0x4803501e, 0x42000800, 0x00000003, | ||
5857 | 0x59a81010, 0x0201f800, 0x00106c78, 0x59cc0006, | ||
5858 | 0x82000500, 0x0000ffff, 0x04020118, 0x42027000, | ||
5859 | 0x00000017, 0x0401f0d9, 0x82000d80, 0x04000000, | ||
5860 | 0x04020011, 0x59cc0006, 0x82000500, 0x0000ffff, | ||
5861 | 0x0402010e, 0x0201f800, 0x0010513b, 0x04000004, | ||
5862 | 0x42027000, 0x0000001d, 0x0401f0cc, 0x59a80026, | ||
5863 | 0x84000548, 0x48035026, 0x42027000, 0x00000030, | ||
5864 | 0x0401f0c6, 0x82000d80, 0x05000000, 0x04020008, | ||
5865 | 0x59cc0006, 0x82000500, 0x0000ffff, 0x040200fb, | ||
5866 | 0x42027000, 0x00000018, 0x0401f0bc, 0x82000d80, | ||
5867 | 0x20100000, 0x04020004, 0x42027000, 0x00000019, | ||
5868 | 0x0401f0b6, 0x82000d80, 0x21100000, 0x04020004, | ||
5869 | 0x42027000, 0x0000001a, 0x0401f0b0, 0x82000d80, | ||
5870 | 0x52000000, 0x04020008, 0x59cc0006, 0x82000500, | ||
5871 | 0x0000ffff, 0x040200e5, 0x42027000, 0x0000001b, | ||
5872 | 0x0401f0a6, 0x82000d80, 0x50000000, 0x04020008, | ||
5873 | 0x59cc0006, 0x82000500, 0x0000ffff, 0x040200db, | ||
5874 | 0x42027000, 0x0000001c, 0x0401f09c, 0x82000d80, | ||
5875 | 0x13000000, 0x04020004, 0x42027000, 0x00000034, | ||
5876 | 0x0401f096, 0x82000d80, 0x12000000, 0x04020008, | ||
5877 | 0x59cc0006, 0x82000500, 0x0000ffff, 0x040200cb, | ||
5878 | 0x42027000, 0x00000024, 0x0401f08c, 0x82000d00, | ||
5879 | 0xff000000, 0x82040d80, 0x24000000, 0x04020004, | ||
5880 | 0x42027000, 0x0000002d, 0x0401f084, 0x82000d00, | ||
5881 | 0xff000000, 0x82040d80, 0x53000000, 0x04020004, | ||
5882 | 0x42027000, 0x0000002a, 0x0401f07c, 0x82000d80, | ||
5883 | 0x0f000000, 0x04020004, 0x42027000, 0x00000020, | ||
5884 | 0x0401f076, 0x82000d80, 0x61040000, 0x04020036, | ||
5885 | 0x83cc1400, 0x00000006, 0x80080800, 0x50080000, | ||
5886 | 0x82000500, 0x0000ffff, 0x82000480, 0x00000004, | ||
5887 | 0x4c580000, 0x8000b104, 0x8058b1c0, 0x04000026, | ||
5888 | 0x4c100000, 0x50041800, 0x820c1500, 0x03000000, | ||
5889 | 0x80081130, 0x42000000, 0x0010b817, 0x82082580, | ||
5890 | 0x00000000, 0x04020004, 0x42000000, 0x0010b814, | ||
5891 | 0x0401f00c, 0x82082580, 0x00000001, 0x04020004, | ||
5892 | 0x42000000, 0x0010b815, 0x0401f006, 0x82082580, | ||
5893 | 0x00000002, 0x04020003, 0x42000000, 0x0010b816, | ||
5894 | 0x0201f800, 0x0010aa47, 0x42001000, 0x00008015, | ||
5895 | 0x820c2500, 0x0000ffff, 0x800c1920, 0x0201f800, | ||
5896 | 0x00103a3e, 0x5c002000, 0x80040800, 0x8058b040, | ||
5897 | 0x040207da, 0x5c00b000, 0x42027000, 0x00000023, | ||
5898 | 0x0401f03e, 0x82000d80, 0x60000000, 0x04020004, | ||
5899 | 0x42027000, 0x0000003f, 0x0401f038, 0x82000d80, | ||
5900 | 0x54000000, 0x04020006, 0x0401fb12, 0x0402006f, | ||
5901 | 0x42027000, 0x00000046, 0x0401f030, 0x82000d80, | ||
5902 | 0x55000000, 0x04020009, 0x0401fb32, 0x04020004, | ||
5903 | 0x42027000, 0x00000041, 0x0401f028, 0x42027000, | ||
5904 | 0x00000042, 0x0401f025, 0x82000d80, 0x78000000, | ||
5905 | 0x04020004, 0x42027000, 0x00000045, 0x0401f01f, | ||
5906 | 0x82000d80, 0x10000000, 0x04020004, 0x42027000, | ||
5907 | 0x0000004e, 0x0401f019, 0x82000d80, 0x63000000, | ||
5908 | 0x04020004, 0x42027000, 0x0000004a, 0x0401f013, | ||
5909 | 0x82000d00, 0xff000000, 0x82040d80, 0x56000000, | ||
5910 | 0x04020004, 0x42027000, 0x0000004f, 0x0401f00b, | ||
5911 | 0x82000d00, 0xff000000, 0x82040d80, 0x57000000, | ||
5912 | 0x04020004, 0x42027000, 0x00000050, 0x0401f003, | ||
5913 | 0x42027000, 0x0000001d, 0x59cc3800, 0x821c3d00, | ||
5914 | 0x00ffffff, 0x821c0580, 0x00fffffe, 0x59cc0001, | ||
5915 | 0x04020005, 0x40003000, 0x42028800, 0x000007fe, | ||
5916 | 0x0401f003, 0x0401f8d1, 0x04020030, 0x0201f800, | ||
5917 | 0x001045a6, 0x0402002d, 0x83380580, 0x00000046, | ||
5918 | 0x04020004, 0x59a80010, 0x80180580, 0x04000027, | ||
5919 | 0x59340200, 0x8c000514, 0x0400000f, 0x83380580, | ||
5920 | 0x00000030, 0x0400000c, 0x83380580, 0x0000003f, | ||
5921 | 0x04000009, 0x83380580, 0x00000034, 0x04000006, | ||
5922 | 0x83380580, 0x00000024, 0x04000003, 0x42027000, | ||
5923 | 0x0000004c, 0x0201f800, 0x0002075a, 0x04000018, | ||
5924 | 0x49366009, 0x4a026406, 0x00000004, 0x59cc0c04, | ||
5925 | 0x48066202, 0x83380580, 0x0000004c, 0x04020009, | ||
5926 | 0x4a026406, 0x00000011, 0x813669c0, 0x04020005, | ||
5927 | 0x59cc0001, 0x82000500, 0x00ffffff, 0x4802601e, | ||
5928 | 0x0201f000, 0x000207a1, 0x59880052, 0x4803c857, | ||
5929 | 0x80000000, 0x48031052, 0x1c01f000, 0x42001000, | ||
5930 | 0x00008049, 0x59cc1806, 0x800c1930, 0x0201f800, | ||
5931 | 0x00103a3e, 0x0201f800, 0x00107942, 0x040007f3, | ||
5932 | 0x49366009, 0x4a026406, 0x00000004, 0x59cc0c04, | ||
5933 | 0x48066202, 0x4a026403, 0x00000009, 0x4a02641a, | ||
5934 | 0x00000009, 0x4a02621a, 0x00002900, 0x4a026203, | ||
5935 | 0x00000001, 0x0201f000, 0x0010672b, 0x59a80026, | ||
5936 | 0x4803c857, 0x8c000508, 0x04000010, 0x59cc0006, | ||
5937 | 0x82000500, 0xff000000, 0x82000d80, 0x03000000, | ||
5938 | 0x0400000c, 0x82000d80, 0x20000000, 0x04000009, | ||
5939 | 0x82000d80, 0x05000000, 0x04000006, 0x82000d80, | ||
5940 | 0x21000000, 0x04000003, 0x80000580, 0x1c01f000, | ||
5941 | 0x82000540, 0x00000001, 0x0401f7fd, 0x59cc2006, | ||
5942 | 0x82102500, 0xff000000, 0x9c1021c0, 0x0401f807, | ||
5943 | 0x820c1c00, 0x0010b4e3, 0x500c1800, 0x800c0500, | ||
5944 | 0x4803c857, 0x1c01f000, 0x40100800, 0x41781800, | ||
5945 | 0x82040480, 0x00000020, 0x04001004, 0x800c1800, | ||
5946 | 0x40000800, 0x0401f7fb, 0x82040500, 0x0000000f, | ||
5947 | 0x82000400, 0x0010ab38, 0x50000000, 0x8c040d08, | ||
5948 | 0x04000002, 0x900001c0, 0x1c01f000, 0x4803c856, | ||
5949 | 0x0401fac3, 0x0402000a, 0x0201f800, 0x0010210a, | ||
5950 | 0x04020007, 0x59cc0002, 0x82000500, 0xff000000, | ||
5951 | 0x82000d80, 0x08000000, 0x04000802, 0x1c01f000, | ||
5952 | 0x4803c856, 0x59cc0400, 0x82000d00, 0x0000ff00, | ||
5953 | 0x840409c0, 0x82040580, 0x00000033, 0x0402001f, | ||
5954 | 0x0401f976, 0x04000038, 0x59cc0a04, 0x48066202, | ||
5955 | 0x59cc0006, 0x4803c857, 0x82000500, 0xffff0000, | ||
5956 | 0x82000d80, 0x02000000, 0x04020009, 0x59cc0006, | ||
5957 | 0x82000500, 0x0000ffff, 0x0402002b, 0x42027000, | ||
5958 | 0x00000015, 0x0201f000, 0x000207a1, 0x82000d80, | ||
5959 | 0x01000000, 0x04020024, 0x59cc0006, 0x82000500, | ||
5960 | 0x0000ffff, 0x04020020, 0x42027000, 0x00000016, | ||
5961 | 0x0201f000, 0x000207a1, 0x82040580, 0x00000032, | ||
5962 | 0x04020019, 0x59cc0006, 0x82000500, 0xffff0000, | ||
5963 | 0x82000d80, 0x14000000, 0x04020013, 0x42027000, | ||
5964 | 0x00000038, 0x59cc0001, 0x0401f810, 0x0402000e, | ||
5965 | 0x0201f800, 0x001045a6, 0x0402000b, 0x0201f800, | ||
5966 | 0x0002075a, 0x04000008, 0x49366009, 0x4a026406, | ||
5967 | 0x00000004, 0x59cc0c04, 0x48066202, 0x0201f000, | ||
5968 | 0x000207a1, 0x1c01f000, 0x4803c857, 0x4c580000, | ||
5969 | 0x4c100000, 0x4c380000, 0x4c340000, 0x82003500, | ||
5970 | 0x00ffffff, 0x82181500, 0x00ff0000, 0x82081580, | ||
5971 | 0x00ff0000, 0x04020016, 0x82181480, 0x00fffffc, | ||
5972 | 0x04001013, 0x82181580, 0x00fffffd, 0x04020004, | ||
5973 | 0x42028800, 0x000007fd, 0x0401f040, 0x82181580, | ||
5974 | 0x00fffffe, 0x04020004, 0x42028800, 0x000007fe, | ||
5975 | 0x0401f03a, 0x82181580, 0x00fffffc, 0x04020004, | ||
5976 | 0x42028800, 0x000007fc, 0x0401f034, 0x41781000, | ||
5977 | 0x42002000, 0x00000000, 0x4200b000, 0x000007f0, | ||
5978 | 0x41ac7000, 0x50380000, 0x80006d40, 0x04020005, | ||
5979 | 0x800811c0, 0x0402001e, 0x8410155e, 0x0401f01c, | ||
5980 | 0x58340212, 0x82000500, 0x0000ff00, 0x04000011, | ||
5981 | 0x59a84010, 0x82204500, 0x00ffff00, 0x82180500, | ||
5982 | 0x00ffff00, 0x04000002, 0x80200580, 0x58340002, | ||
5983 | 0x0402000f, 0x82000500, 0x000000ff, 0x82184500, | ||
5984 | 0x000000ff, 0x80204580, 0x04020009, 0x0401f006, | ||
5985 | 0x58340002, 0x82000500, 0x00ffffff, 0x80184580, | ||
5986 | 0x04020003, 0x40128800, 0x0401f00c, 0x80102000, | ||
5987 | 0x80387000, 0x8058b040, 0x040207db, 0x800811c0, | ||
5988 | 0x04020005, 0x481bc857, 0x82000540, 0x00000001, | ||
5989 | 0x0401f003, 0x840a8d1e, 0x80000580, 0x5c006800, | ||
5990 | 0x5c007000, 0x5c002000, 0x5c00b000, 0x1c01f000, | ||
5991 | 0x59a80026, 0x8c00050e, 0x04000003, 0x8c000502, | ||
5992 | 0x04000006, 0x59cc0c00, 0x80040910, 0x82040500, | ||
5993 | 0x0000000f, 0x0c01f002, 0x1c01f000, 0x00105d0f, | ||
5994 | 0x00105d0f, 0x00105d0f, 0x00105de5, 0x00105d0f, | ||
5995 | 0x00105d11, 0x00105d29, 0x00105d2c, 0x00105d0f, | ||
5996 | 0x00105d0f, 0x00105d0f, 0x00105d0f, 0x00105d0f, | ||
5997 | 0x00105d0f, 0x00105d0f, 0x00105d0f, 0x4803c856, | ||
5998 | 0x1c01f000, 0x0401f8c5, 0x04000014, 0x82140500, | ||
5999 | 0x000003ff, 0x800000c4, 0x82000480, 0x00000008, | ||
6000 | 0x0400100e, 0x59cc0001, 0x59326809, 0x59340802, | ||
6001 | 0x80040580, 0x82000500, 0x00ffffff, 0x04020007, | ||
6002 | 0x59cc0a04, 0x48066202, 0x42027000, 0x00000046, | ||
6003 | 0x0201f000, 0x000207a1, 0x59cc0004, 0x4803c857, | ||
6004 | 0x1c01f000, 0x59cc0004, 0x4803c857, 0x1c01f000, | ||
6005 | 0x0401f8aa, 0x04000016, 0x82140500, 0x000003ff, | ||
6006 | 0x800000c4, 0x82000480, 0x0000000c, 0x04001010, | ||
6007 | 0x59cc0001, 0x82000500, 0x00ffffff, 0x59326809, | ||
6008 | 0x59340802, 0x82040d00, 0x00ffffff, 0x80040580, | ||
6009 | 0x04020007, 0x59cc0a04, 0x48066202, 0x42027000, | ||
6010 | 0x00000045, 0x0201f000, 0x000207a1, 0x59cc0004, | ||
6011 | 0x4803c857, 0x1c01f000, 0x4817c857, 0x0401f9c8, | ||
6012 | 0x04020011, 0x0201f800, 0x0010210a, 0x0402000e, | ||
6013 | 0x59cc0002, 0x82000500, 0xff000000, 0x82000580, | ||
6014 | 0x00000000, 0x04020008, 0x82040500, 0x0000000f, | ||
6015 | 0x82000c80, 0x00000006, 0x04021003, 0x4803c857, | ||
6016 | 0x0c01f002, 0x1c01f000, 0x00105d60, 0x00105d64, | ||
6017 | 0x00105d60, 0x00105d60, 0x00105db2, 0x00105dc3, | ||
6018 | 0x4803c857, 0x59cc0004, 0x4803c857, 0x1c01f000, | ||
6019 | 0x59cc0004, 0x4803c857, 0x59a80016, 0x800001c0, | ||
6020 | 0x040207f8, 0x59cc0802, 0x8c040d2e, 0x0402001d, | ||
6021 | 0x0201f800, 0x00107942, 0x02000800, 0x001005d8, | ||
6022 | 0x59cc0001, 0x4803c857, 0x0401ff28, 0x0402000d, | ||
6023 | 0x0201f800, 0x00020245, 0x0402000a, 0x4a026406, | ||
6024 | 0x00000005, 0x49366009, 0x59cc0c04, 0x48066202, | ||
6025 | 0x42027000, 0x00000088, 0x0201f000, 0x000207a1, | ||
6026 | 0x42028800, 0x0000ffff, 0x417a6800, 0x59cc0001, | ||
6027 | 0x82000500, 0x00ffffff, 0x4802601e, 0x0401f7f0, | ||
6028 | 0x59cc0001, 0x4803c857, 0x0401ff10, 0x040207d5, | ||
6029 | 0x0201f800, 0x001045a6, 0x040207d2, 0x59cc0005, | ||
6030 | 0x8c000500, 0x04020004, 0x59340200, 0x8c00050e, | ||
6031 | 0x040207cc, 0x0201f800, 0x001049f3, 0x0402000f, | ||
6032 | 0x0401f83e, 0x040007c7, 0x0201f800, 0x0002075a, | ||
6033 | 0x040007c4, 0x49366009, 0x4a026406, 0x00000002, | ||
6034 | 0x59cc0c04, 0x48066202, 0x42027000, 0x00000088, | ||
6035 | 0x0201f000, 0x000207a1, 0x0201f800, 0x0002075a, | ||
6036 | 0x040007b8, 0x49366009, 0x4a026406, 0x00000004, | ||
6037 | 0x59cc0c04, 0x48066202, 0x42027000, 0x00000001, | ||
6038 | 0x0201f000, 0x000207a1, 0x59cc0004, 0x4803c857, | ||
6039 | 0x59cc0802, 0x8c040d2e, 0x0400000b, 0x0401f81f, | ||
6040 | 0x04000009, 0x0401f960, 0x04020007, 0x59cc0a04, | ||
6041 | 0x48066202, 0x42027000, 0x00000089, 0x0201f000, | ||
6042 | 0x000207a1, 0x4933c857, 0x1c01f000, 0x59cc0004, | ||
6043 | 0x4803c857, 0x59cc0802, 0x8c040d2e, 0x0400000b, | ||
6044 | 0x0401f80e, 0x04000009, 0x0401f94f, 0x04020007, | ||
6045 | 0x59cc0a04, 0x48066202, 0x42027000, 0x0000008a, | ||
6046 | 0x0201f000, 0x000207a1, 0x4933c857, 0x1c01f000, | ||
6047 | 0x59cc0a04, 0x0401f002, 0x59cc0c04, 0x59a8000e, | ||
6048 | 0x59a81067, 0x80080400, 0x80040480, 0x04021008, | ||
6049 | 0x40040000, 0x800000c4, 0x800408ca, 0x80040c00, | ||
6050 | 0x82066400, 0x0010d1c0, 0x1c01f000, 0x80000580, | ||
6051 | 0x0401f7fe, 0x59cc0802, 0x8c040d2e, 0x04020010, | ||
6052 | 0x0401ffec, 0x0400000e, 0x59cc0001, 0x82000500, | ||
6053 | 0x00ffffff, 0x59326809, 0x59340802, 0x82040d00, | ||
6054 | 0x00ffffff, 0x80040580, 0x04020005, 0x42027000, | ||
6055 | 0x00000051, 0x0201f000, 0x000207a1, 0x59cc0004, | ||
6056 | 0x4803c857, 0x1c01f000, 0x4803c856, 0x42003000, | ||
6057 | 0x00000105, 0x0401f001, 0x4803c856, 0x4c3c0000, | ||
6058 | 0x41cc7800, 0x0401f803, 0x5c007800, 0x1c01f000, | ||
6059 | 0x4803c856, 0x4c580000, 0x583c0400, 0x82000500, | ||
6060 | 0x0000f000, 0x82000580, 0x0000c000, 0x04000024, | ||
6061 | 0x0201f800, 0x0002075a, 0x04000021, 0x4c180000, | ||
6062 | 0x583c0001, 0x0401fe89, 0x0402001f, 0x0201f800, | ||
6063 | 0x001045a6, 0x0402001c, 0x49366009, 0x0201f800, | ||
6064 | 0x001007e4, 0x04000018, 0x492e6017, 0x497a5800, | ||
6065 | 0x497a5a04, 0x48125c04, 0x832cac00, 0x00000005, | ||
6066 | 0x4200b000, 0x00000007, 0x403ca000, 0x0201f800, | ||
6067 | 0x0010ab17, 0x5c003000, 0x481a641a, 0x4a026403, | ||
6068 | 0x0000003e, 0x4a026406, 0x00000001, 0x4a026203, | ||
6069 | 0x00000001, 0x0201f800, 0x0010672b, 0x5c00b000, | ||
6070 | 0x1c01f000, 0x0201f800, 0x0002077d, 0x5c003000, | ||
6071 | 0x0401f7fb, 0x4803c856, 0x59cc0400, 0x82000d00, | ||
6072 | 0x0000ff00, 0x82040500, 0x0000f000, 0x840409c0, | ||
6073 | 0x82000580, 0x00002000, 0x04020049, 0x82040580, | ||
6074 | 0x00000022, 0x0402003a, 0x59c400a4, 0x82000500, | ||
6075 | 0x0000000f, 0x82000c80, 0x00000007, 0x04001004, | ||
6076 | 0x82000480, 0x0000000c, 0x0400103f, 0x59cc0006, | ||
6077 | 0x82000500, 0xffff0000, 0x82000d80, 0x04000000, | ||
6078 | 0x04000039, 0x82000d80, 0x60000000, 0x04000036, | ||
6079 | 0x82000d80, 0x54000000, 0x04000033, 0x82000d80, | ||
6080 | 0x03000000, 0x04020015, 0x59a80826, 0x8c040d02, | ||
6081 | 0x0402002d, 0x8c040d08, 0x0402002b, 0x0201f800, | ||
6082 | 0x001048ec, 0x0400002b, 0x59a8001d, 0x800000d0, | ||
6083 | 0x59a80810, 0x82040d00, 0x000000ff, 0x80040540, | ||
6084 | 0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580, | ||
6085 | 0x0402001b, 0x0401f01c, 0x59c40802, 0x8c040d0c, | ||
6086 | 0x04020017, 0x82000d80, 0x52000000, 0x040007ec, | ||
6087 | 0x82000d80, 0x05000000, 0x040007e9, 0x82000d80, | ||
6088 | 0x50000000, 0x040007e6, 0x0401f00d, 0x82040580, | ||
6089 | 0x00000023, 0x0402000a, 0x0401ff58, 0x04000008, | ||
6090 | 0x59300c03, 0x82040580, 0x00000002, 0x04000006, | ||
6091 | 0x82040580, 0x00000051, 0x04000003, 0x80000580, | ||
6092 | 0x0401f003, 0x82000540, 0x00000001, 0x1c01f000, | ||
6093 | 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80, | ||
6094 | 0x03000000, 0x04000004, 0x82000d80, 0x52000000, | ||
6095 | 0x040207f3, 0x59a80026, 0x82000500, 0x00000009, | ||
6096 | 0x82000580, 0x00000008, 0x040007ef, 0x0401f7ec, | ||
6097 | 0x4803c856, 0x4c5c0000, 0x4c580000, 0x59a80016, | ||
6098 | 0x82000580, 0x0000004c, 0x0402001f, 0x59ccb807, | ||
6099 | 0x9c5cb9c0, 0x825cbd00, 0x00000007, 0x8c5cbd00, | ||
6100 | 0x0400000a, 0x4200b000, 0x00000002, 0x83a81c00, | ||
6101 | 0x00000002, 0x83cc1400, 0x0000000d, 0x0201f800, | ||
6102 | 0x0010855a, 0x04020010, 0x8c5cbd02, 0x0400000a, | ||
6103 | 0x4200b000, 0x00000002, 0x83a81c00, 0x00000000, | ||
6104 | 0x83cc1400, 0x0000000f, 0x0201f800, 0x0010855a, | ||
6105 | 0x04020005, 0x8c5cbd04, 0x04000003, 0x82000540, | ||
6106 | 0x00000001, 0x5c00b000, 0x5c00b800, 0x1c01f000, | ||
6107 | 0x4803c856, 0x4c5c0000, 0x4c580000, 0x59a80016, | ||
6108 | 0x82000580, 0x0000004c, 0x0402001f, 0x59ccb807, | ||
6109 | 0x9c5cb9c0, 0x825cbd00, 0x00000007, 0x8c5cbd00, | ||
6110 | 0x0400000a, 0x4200b000, 0x00000002, 0x83a81c00, | ||
6111 | 0x00000002, 0x83cc1400, 0x00000009, 0x0201f800, | ||
6112 | 0x0010855a, 0x04020010, 0x8c5cbd02, 0x0400000a, | ||
6113 | 0x4200b000, 0x00000002, 0x83a81c00, 0x00000000, | ||
6114 | 0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a, | ||
6115 | 0x04020005, 0x8c5cbd04, 0x04000003, 0x82000540, | ||
6116 | 0x00000001, 0x5c00b000, 0x5c00b800, 0x1c01f000, | ||
6117 | 0x4803c857, 0x4c580000, 0x40003000, 0x42002000, | ||
6118 | 0x000007f0, 0x4200b000, 0x00000010, 0x83ac7400, | ||
6119 | 0x000007f0, 0x50380000, 0x80026d40, 0x04000006, | ||
6120 | 0x59340002, 0x82000500, 0x00ffffff, 0x80180580, | ||
6121 | 0x04000010, 0x80102000, 0x80387000, 0x8058b040, | ||
6122 | 0x040207f5, 0x82100480, 0x00000800, 0x42002000, | ||
6123 | 0x00000000, 0x4200b000, 0x000007f0, 0x41ac7000, | ||
6124 | 0x040217ed, 0x82000540, 0x00000001, 0x0401f002, | ||
6125 | 0x40128800, 0x5c00b000, 0x1c01f000, 0x59a80026, | ||
6126 | 0x8c00050e, 0x04000004, 0x8c000502, 0x04000003, | ||
6127 | 0x80000580, 0x1c01f000, 0x82000540, 0x00000001, | ||
6128 | 0x0401f7fd, 0x59300c06, 0x82040580, 0x00000002, | ||
6129 | 0x04000006, 0x82040580, 0x00000005, 0x04000003, | ||
6130 | 0x82000540, 0x00000001, 0x1c01f000, 0x59c80000, | ||
6131 | 0x84000558, 0x84000512, 0x48039000, 0x1c01f000, | ||
6132 | 0x4a03281a, 0x000003e8, 0x4a032802, 0x0010d1c0, | ||
6133 | 0x4a032800, 0x00000000, 0x4a032808, 0x00107049, | ||
6134 | 0x42000000, 0x00000005, 0x83947c00, 0x00000009, | ||
6135 | 0x49787801, 0x4a007802, 0x00106fff, 0x823c7c00, | ||
6136 | 0x00000003, 0x80000040, 0x040207fa, 0x4a032819, | ||
6137 | 0xffff0000, 0x4201d000, 0x00000064, 0x0401f96e, | ||
6138 | 0x4201d000, 0x000186a0, 0x0401f184, 0x00000000, | ||
6139 | 0x00000003, 0x00000006, 0x00000009, 0x0000000c, | ||
6140 | 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000, | ||
6141 | 0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000, | ||
6142 | 0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000, | ||
6143 | 0x4c640000, 0x4cc80000, 0x4ccc0000, 0x0201f800, | ||
6144 | 0x0002057b, 0x5c019800, 0x5c019000, 0x5c00c800, | ||
6145 | 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, | ||
6146 | 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, | ||
6147 | 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, | ||
6148 | 0x1c01f000, 0x59940004, 0x80000540, 0x0402000a, | ||
6149 | 0x59940025, 0x80040400, 0x02001800, 0x001005d8, | ||
6150 | 0x48032804, 0x480b2805, 0x4a032803, 0x0000000a, | ||
6151 | 0x80000580, 0x1c01f000, 0x5994001f, 0x80000540, | ||
6152 | 0x0402000a, 0x59940025, 0x80040400, 0x02001800, | ||
6153 | 0x001005d8, 0x4803281f, 0x480b2820, 0x4a03281e, | ||
6154 | 0x00000001, 0x80000580, 0x1c01f000, 0x59940022, | ||
6155 | 0x80000540, 0x0402000a, 0x59940025, 0x80040400, | ||
6156 | 0x02001800, 0x001005d8, 0x48032822, 0x480b2823, | ||
6157 | 0x4a032821, 0x0000000a, 0x80000580, 0x1c01f000, | ||
6158 | 0x4c000000, 0x59940005, 0x4803c857, 0x480bc857, | ||
6159 | 0x80080580, 0x04020003, 0x497b2804, 0x497b2805, | ||
6160 | 0x5c000000, 0x1c01f000, 0x4c000000, 0x59940020, | ||
6161 | 0x4803c857, 0x480bc857, 0x80080580, 0x04020003, | ||
6162 | 0x497b281f, 0x497b2820, 0x5c000000, 0x1c01f000, | ||
6163 | 0x4c000000, 0x59940023, 0x4803c857, 0x480bc857, | ||
6164 | 0x80080580, 0x04020003, 0x497b2822, 0x497b2823, | ||
6165 | 0x5c000000, 0x1c01f000, 0x4937c857, 0x48ebc857, | ||
6166 | 0x59340203, 0x80e80480, 0x04001002, 0x48ea6a03, | ||
6167 | 0x1c01f000, 0x5c03e000, 0x1c01f000, 0x4d440000, | ||
6168 | 0x42007800, 0x00000010, 0x59968801, 0x0201f800, | ||
6169 | 0x00020245, 0x04020012, 0x59341a03, 0x800c1840, | ||
6170 | 0x0400100f, 0x59940027, 0x800c0480, 0x04000003, | ||
6171 | 0x48026a03, 0x0402100a, 0x5934000f, 0x497a6a03, | ||
6172 | 0x80000540, 0x04000006, 0x4c3c0000, 0x5934140b, | ||
6173 | 0x0201f800, 0x00020253, 0x5c007800, 0x81468800, | ||
6174 | 0x83440480, 0x00000800, 0x04021007, 0x803c7840, | ||
6175 | 0x040207e7, 0x49472801, 0x5c028800, 0x5c03e000, | ||
6176 | 0x1c01f000, 0x4a032800, 0x00000002, 0x497b2801, | ||
6177 | 0x0401f7fa, 0x42007800, 0x00000010, 0x59966002, | ||
6178 | 0x59300205, 0x80000d40, 0x04000006, 0x59940027, | ||
6179 | 0x80040480, 0x48026205, 0x0400102d, 0x0400002c, | ||
6180 | 0x59300206, 0x80000d40, 0x04000014, 0x59b800e4, | ||
6181 | 0x8c000524, 0x04020011, 0x4a0370e4, 0x00030000, | ||
6182 | 0x40000000, 0x59b800e4, 0x8c000524, 0x04000004, | ||
6183 | 0x4a0370e4, 0x00020000, 0x0401f008, 0x59940027, | ||
6184 | 0x80040480, 0x48026206, 0x4a0370e4, 0x00020000, | ||
6185 | 0x0400101c, 0x0400001b, 0x83326400, 0x00000024, | ||
6186 | 0x49332802, 0x41540000, 0x81300480, 0x04021005, | ||
6187 | 0x803c7840, 0x040207db, 0x5c03e000, 0x1c01f000, | ||
6188 | 0x59940026, 0x48032827, 0x4a032802, 0x0010d1c0, | ||
6189 | 0x497b2826, 0x80000540, 0x0400000f, 0x4a032800, | ||
6190 | 0x00000001, 0x5c03e000, 0x1c01f000, 0x4c3c0000, | ||
6191 | 0x0201f800, 0x001091db, 0x5c007800, 0x0401f7d1, | ||
6192 | 0x4c3c0000, 0x0201f800, 0x00108d5d, 0x5c007800, | ||
6193 | 0x0401f7e2, 0x4a032800, 0x00000000, 0x5c03e000, | ||
6194 | 0x1c01f000, 0x59a8086b, 0x8c040d30, 0x04020029, | ||
6195 | 0x8c040d32, 0x0400000f, 0x59a80069, 0x81640480, | ||
6196 | 0x04001019, 0x59a8000b, 0x81500580, 0x04000005, | ||
6197 | 0x59a8006a, 0x59a81066, 0x80080580, 0x04020012, | ||
6198 | 0x900411c0, 0x82081500, 0x00007000, 0x0401f012, | ||
6199 | 0x82040500, 0x0000001f, 0x04000016, 0x80040840, | ||
6200 | 0x82040500, 0x0000001f, 0x04000003, 0x4807506b, | ||
6201 | 0x0401f010, 0x900401c0, 0x82000500, 0x0000001f, | ||
6202 | 0x80040d40, 0x900401c0, 0x80040580, 0x82001500, | ||
6203 | 0x00007000, 0x82040500, 0xffff8fff, 0x80080540, | ||
6204 | 0x4803506b, 0x80081114, 0x0201f800, 0x001006e2, | ||
6205 | 0x1c01f000, 0x4a032807, 0x000007d0, 0x4a032806, | ||
6206 | 0x0000000a, 0x1c01f000, 0x42000800, 0x000007d0, | ||
6207 | 0x83180480, 0x00000005, 0x02021800, 0x001005d8, | ||
6208 | 0x83947c00, 0x00000009, 0x83180400, 0x00105f43, | ||
6209 | 0x50000000, 0x803c7c00, 0x48047801, 0x4a007800, | ||
6210 | 0x0000000a, 0x1c01f000, 0x83180480, 0x00000005, | ||
6211 | 0x02021800, 0x001005d8, 0x83947c00, 0x00000009, | ||
6212 | 0x83180400, 0x00105f43, 0x50000000, 0x803c7c00, | ||
6213 | 0x49787801, 0x1c01f000, 0x4807c857, 0x480bc857, | ||
6214 | 0x59940025, 0x80040400, 0x02001800, 0x001005d8, | ||
6215 | 0x48032804, 0x480b2805, 0x4a032803, 0x0000000a, | ||
6216 | 0x1c01f000, 0x4807c857, 0x480bc857, 0x59940025, | ||
6217 | 0x80040400, 0x02001800, 0x001005d8, 0x4803281c, | ||
6218 | 0x480b281d, 0x4a03281b, 0x0000000a, 0x1c01f000, | ||
6219 | 0x4c000000, 0x5994001d, 0x4803c857, 0x480bc857, | ||
6220 | 0x80080580, 0x04020003, 0x4803281c, 0x4803281d, | ||
6221 | 0x5c000000, 0x1c01f000, 0x80e9d1c0, 0x0400000e, | ||
6222 | 0x0401f836, 0x04025000, 0x4203e000, 0x80000000, | ||
6223 | 0x40e81000, 0x41780800, 0x42000000, 0x00000064, | ||
6224 | 0x0201f800, 0x001066a0, 0x59940024, 0x80080400, | ||
6225 | 0x48032824, 0x1c01f000, 0x42001000, 0x00105065, | ||
6226 | 0x0401fef0, 0x42001000, 0x00105058, 0x0401ffe1, | ||
6227 | 0x42001000, 0x00104148, 0x0401feea, 0x42001000, | ||
6228 | 0x001041bc, 0x0401fee7, 0x42001000, 0x001041f3, | ||
6229 | 0x0401f6f8, 0x4203e000, 0x70000000, 0x4203e000, | ||
6230 | 0xb0300000, 0x41fc0000, 0x40ebf800, 0x80e80480, | ||
6231 | 0x04001011, 0x04000004, 0x82000480, 0x00000003, | ||
6232 | 0x0402100d, 0x42000000, 0x0000000f, 0x04004004, | ||
6233 | 0x80000040, 0x040207fe, 0x0401f007, 0x4203e000, | ||
6234 | 0x70000000, 0x42000000, 0x0010b87e, 0x0201f800, | ||
6235 | 0x0010aa47, 0x1c01f000, 0x4203e000, 0x80000000, | ||
6236 | 0x4203e000, 0xb0400000, 0x41fc0000, 0x40ebf800, | ||
6237 | 0x80e80480, 0x04001011, 0x04000004, 0x82000480, | ||
6238 | 0x00000003, 0x0402100d, 0x42000000, 0x0000000f, | ||
6239 | 0x04005004, 0x80000040, 0x040207fe, 0x0401f007, | ||
6240 | 0x4203e000, 0x80000000, 0x42000000, 0x0010b87f, | ||
6241 | 0x0201f800, 0x0010aa47, 0x1c01f000, 0x59a8000e, | ||
6242 | 0x82000480, 0x00000100, 0x599c0a02, 0x800409c0, | ||
6243 | 0x04020002, 0x80040800, 0x80041480, 0x04001002, | ||
6244 | 0x40000800, 0x48075067, 0x59a8100e, 0x40040000, | ||
6245 | 0x800acc80, 0x4967500e, 0x49675069, 0x59aaa80b, | ||
6246 | 0x41640800, 0x42001000, 0x00000024, 0x0201f800, | ||
6247 | 0x00106681, 0x8206a400, 0x0010d1c0, 0x49535065, | ||
6248 | 0x4152b000, 0x42006000, 0x0010be65, 0x4a006004, | ||
6249 | 0x0000012c, 0x4a006005, 0xda10da10, 0x4a006008, | ||
6250 | 0x00000011, 0x4a006009, 0x0010be65, 0x4a00600a, | ||
6251 | 0x001010b8, 0x599c0014, 0x48006011, 0x599c0015, | ||
6252 | 0x48006012, 0x42006000, 0x0010be41, 0x4a006203, | ||
6253 | 0x00000008, 0x4a006406, 0x00000006, 0x4a006002, | ||
6254 | 0xffff0000, 0x4a006008, 0x0010be65, 0x4a006014, | ||
6255 | 0x0010be65, 0x599c0014, 0x48006015, 0x599c0015, | ||
6256 | 0x48006016, 0x599c0413, 0x48006017, 0x49506018, | ||
6257 | 0x49546019, 0x59a80067, 0x4800601a, 0x4a00601b, | ||
6258 | 0x0010b465, 0x4a00601c, 0x0010b466, 0x4a00601d, | ||
6259 | 0x0010b46a, 0x42000000, 0xb0000000, 0x42000800, | ||
6260 | 0x0010be41, 0x0201f800, 0x00100b68, 0x1c01f000, | ||
6261 | 0x82000d00, 0x000000c0, 0x04000004, 0x82040d80, | ||
6262 | 0x000000c0, 0x04020055, 0x82000d00, 0x00002020, | ||
6263 | 0x59300414, 0x84000512, 0x82040d80, 0x00002020, | ||
6264 | 0x0400000b, 0x8c000514, 0x0402000f, 0x48026414, | ||
6265 | 0x813e79c0, 0x02020000, 0x000206d0, 0x42027000, | ||
6266 | 0x00000043, 0x0201f000, 0x000207a1, 0x59326809, | ||
6267 | 0x59340a00, 0x8c040d0a, 0x040007f3, 0x84000552, | ||
6268 | 0x0401f7f1, 0x84000514, 0x592c080d, 0x48066015, | ||
6269 | 0x0401f7ef, 0x59326809, 0x59340a00, 0x8c040d0a, | ||
6270 | 0x02000000, 0x000206e3, 0x59300c14, 0x84040d52, | ||
6271 | 0x48066414, 0x0201f000, 0x000206e3, 0x0201f800, | ||
6272 | 0x00020086, 0x813e79c0, 0x02020000, 0x000206d0, | ||
6273 | 0x0201f000, 0x000206f1, 0x8c00051e, 0x02000000, | ||
6274 | 0x000206fd, 0x82000d00, 0x00002020, 0x82040d80, | ||
6275 | 0x00002020, 0x04000014, 0x82000500, 0x000000c0, | ||
6276 | 0x82000d80, 0x00000080, 0x04000008, 0x813e79c0, | ||
6277 | 0x02020000, 0x000206d0, 0x42027000, 0x00000041, | ||
6278 | 0x0201f000, 0x000207a1, 0x813e79c0, 0x02020000, | ||
6279 | 0x000206d0, 0x42027000, 0x00000043, 0x0201f000, | ||
6280 | 0x000207a1, 0x59326809, 0x59340a00, 0x8c040d0a, | ||
6281 | 0x040007ea, 0x59300c14, 0x84040d52, 0x48066414, | ||
6282 | 0x0401f7e6, 0x492fc857, 0x42000800, 0x00000006, | ||
6283 | 0x0201f000, 0x000206f8, 0x492fc857, 0x42000800, | ||
6284 | 0x00000004, 0x0201f000, 0x000206f8, 0x4807c856, | ||
6285 | 0x59a80068, 0x800409c0, 0x04000003, 0x80080540, | ||
6286 | 0x0401f002, 0x80080500, 0x48035068, 0x1c01f000, | ||
6287 | 0x4a030800, 0x00000000, 0x4a030802, 0x00000001, | ||
6288 | 0x497b0803, 0x497b0804, 0x1c01f000, 0x59840002, | ||
6289 | 0x8c000500, 0x04000004, 0x84000500, 0x4a030800, | ||
6290 | 0x00000001, 0x84000544, 0x84000506, 0x48030802, | ||
6291 | 0x82000d00, 0x0fffffff, 0x42000000, 0x90000000, | ||
6292 | 0x0201f800, 0x00100b94, 0x59a80069, 0x82000480, | ||
6293 | 0x00000007, 0x48035069, 0x80000580, 0x42000800, | ||
6294 | 0x0010b519, 0x48000800, 0x48000801, 0x1c01f000, | ||
6295 | 0x59a80069, 0x82000480, 0x00000007, 0x48035069, | ||
6296 | 0x1c01f000, 0x83640480, 0x00000008, 0x0400101b, | ||
6297 | 0x58c80a03, 0x80000580, 0x82000400, 0x00000008, | ||
6298 | 0x80040840, 0x040207fd, 0x815c0480, 0x04001013, | ||
6299 | 0x4200b000, 0x00000007, 0x0201f800, 0x0002075a, | ||
6300 | 0x4a026203, 0x00000004, 0x4a026406, 0x00000009, | ||
6301 | 0x4a026203, 0x00000004, 0x4a026007, 0x00000101, | ||
6302 | 0x0401f809, 0x0401f880, 0x8058b040, 0x040207f3, | ||
6303 | 0x80000580, 0x1c01f000, 0x82000540, 0x00000001, | ||
6304 | 0x0401f7fd, 0x0201f800, 0x001007e4, 0x492e6008, | ||
6305 | 0x58c80a03, 0x4a025a04, 0x0000002c, 0x497a5800, | ||
6306 | 0x497a5801, 0x497a5c04, 0x497a5c06, 0x497a5805, | ||
6307 | 0x4a025a08, 0x00000005, 0x4a025a07, 0x00000002, | ||
6308 | 0x58c80201, 0x48025c04, 0x58c80202, 0x48025c07, | ||
6309 | 0x58c80204, 0x48025c08, 0x4a02580d, 0x0000ffff, | ||
6310 | 0x80040840, 0x0400000c, 0x412c2000, 0x0201f800, | ||
6311 | 0x001007e4, 0x4a025a04, 0x0000000a, 0x497a5c04, | ||
6312 | 0x48125800, 0x492c2001, 0x412c2000, 0x80040840, | ||
6313 | 0x040207f7, 0x1c01f000, 0x4d7c0000, 0x4202f800, | ||
6314 | 0x00000010, 0x4df00000, 0x4203e000, 0x50000000, | ||
6315 | 0x59847803, 0x803c79c0, 0x0400001e, 0x4c5c0000, | ||
6316 | 0x583cb808, 0x585c3408, 0x801831c0, 0x0400000b, | ||
6317 | 0x0401f84a, 0x04000016, 0x42001000, 0x0010b519, | ||
6318 | 0x0401f87f, 0x04000012, 0x0201f800, 0x001007d3, | ||
6319 | 0x0400000f, 0x492cb805, 0x585c0005, 0x80000540, | ||
6320 | 0x02000800, 0x001005d8, 0x0401f830, 0x585c5408, | ||
6321 | 0x0401f80b, 0x5c00b800, 0x5c03e000, 0x817ef840, | ||
6322 | 0x040207e1, 0x5c02f800, 0x1c01f000, 0x5c00b800, | ||
6323 | 0x5c03e000, 0x5c02f800, 0x1c01f000, 0x4803c856, | ||
6324 | 0x405c6000, 0x802851c0, 0x04000018, 0x585c0204, | ||
6325 | 0x82000d00, 0x0000000f, 0x82040c00, 0x001010bd, | ||
6326 | 0x50044000, 0x4cf00000, 0x4d000000, 0x4d040000, | ||
6327 | 0x4021e000, 0x40320800, 0x59860004, 0x4c280000, | ||
6328 | 0x0401f934, 0x5c005000, 0x40f04000, 0x41046000, | ||
6329 | 0x0201f800, 0x0010109b, 0x040207f6, 0x5c020800, | ||
6330 | 0x5c020000, 0x5c01e000, 0x58c80204, 0x4800bc08, | ||
6331 | 0x0201f800, 0x00020086, 0x4a026007, 0x00000101, | ||
6332 | 0x497a6009, 0x0401f055, 0x4803c856, 0x59840003, | ||
6333 | 0x80026540, 0x04000003, 0x59300000, 0x48030803, | ||
6334 | 0x1c01f000, 0x4803c856, 0x59840003, 0x48026000, | ||
6335 | 0x49330803, 0x1c01f000, 0x58cc0805, 0x40180000, | ||
6336 | 0x80040480, 0x0400100d, 0x82cc0580, 0x0010b50e, | ||
6337 | 0x02020800, 0x001005d8, 0x58c80205, 0x80040480, | ||
6338 | 0x0400101d, 0x82000540, 0x00000001, 0x1c01f000, | ||
6339 | 0x80003580, 0x0401f7fe, 0x82cc0580, 0x0010b50e, | ||
6340 | 0x02020800, 0x001005d8, 0x58c80400, 0x8c000504, | ||
6341 | 0x040007f8, 0x58c8040b, 0x8c00051e, 0x040007f5, | ||
6342 | 0x8c000500, 0x040207f3, 0x84000540, 0x4801940b, | ||
6343 | 0x42000000, 0x0010b839, 0x0201f800, 0x0010aa47, | ||
6344 | 0x42001000, 0x00008026, 0x0201f800, 0x00103a3e, | ||
6345 | 0x0401f7e8, 0x58c8040b, 0x8c00051e, 0x040007e2, | ||
6346 | 0x8c000502, 0x040207e0, 0x84000542, 0x4801940b, | ||
6347 | 0x42000000, 0x0010b838, 0x0201f800, 0x0010aa47, | ||
6348 | 0x42001000, 0x00008025, 0x42001800, 0x00000000, | ||
6349 | 0x0201f800, 0x00103a3e, 0x0401f7d3, 0x4803c856, | ||
6350 | 0x58080000, 0x42001800, 0x00000007, 0x58080801, | ||
6351 | 0x80040480, 0x04020004, 0x400c0000, 0x80000540, | ||
6352 | 0x0401f005, 0x04001003, 0x800c0480, 0x0401f002, | ||
6353 | 0x80000080, 0x1c01f000, 0x4803c856, 0x59300008, | ||
6354 | 0x80000d40, 0x02000800, 0x001005d8, 0x58040005, | ||
6355 | 0x80000540, 0x02000800, 0x001005d8, 0x59300007, | ||
6356 | 0x82000500, 0x00000101, 0x82000580, 0x00000101, | ||
6357 | 0x02020800, 0x001005d8, 0x42001000, 0x0010b519, | ||
6358 | 0x58080801, 0x82040400, 0x0010b51b, 0x497a6414, | ||
6359 | 0x4a026015, 0x0000ffff, 0x45300000, 0x80040800, | ||
6360 | 0x82040480, 0x00000008, 0x04001002, 0x80000d80, | ||
6361 | 0x48041001, 0x82040400, 0x0010b51b, 0x45780000, | ||
6362 | 0x1c01f000, 0x4933c857, 0x59300808, 0x800409c0, | ||
6363 | 0x02000800, 0x001005d8, 0x4d2c0000, 0x58065805, | ||
6364 | 0x812e59c0, 0x02020800, 0x001007f4, 0x49780805, | ||
6365 | 0x40065800, 0x0201f800, 0x001007fd, 0x5c025800, | ||
6366 | 0x4d300000, 0x0201f800, 0x0002077d, 0x5c026000, | ||
6367 | 0x1c01f000, 0x59300406, 0x82000580, 0x00000009, | ||
6368 | 0x04020006, 0x59300007, 0x8c000510, 0x04000003, | ||
6369 | 0x80000580, 0x1c01f000, 0x82000540, 0x00000001, | ||
6370 | 0x1c01f000, 0x59840802, 0x8c040d04, 0x1c01f000, | ||
6371 | 0x4803c856, 0x59840802, 0x84040d04, 0x84040d40, | ||
6372 | 0x4a030800, 0x00000000, 0x48070802, 0x82040d00, | ||
6373 | 0x0fffffff, 0x42000000, 0x90000000, 0x0201f000, | ||
6374 | 0x00100b94, 0x4807c857, 0x4805980a, 0x49799801, | ||
6375 | 0x49799803, 0x49799806, 0x49799807, 0x49799808, | ||
6376 | 0x49799805, 0x49799809, 0x0401f8c9, 0x0400000a, | ||
6377 | 0x0401f8eb, 0x04000008, 0x48359800, 0x48359802, | ||
6378 | 0x48359806, 0x4a019804, 0x00000001, 0x4a019807, | ||
6379 | 0x00000005, 0x1c01f000, 0x4807c857, 0x58cc1007, | ||
6380 | 0x40040000, 0x80080480, 0x04021020, 0x4c040000, | ||
6381 | 0x4c080000, 0x0401f8da, 0x5c001000, 0x5c000800, | ||
6382 | 0x0400001c, 0x58cc0006, 0x80006540, 0x0402000b, | ||
6383 | 0x48359800, 0x48359802, 0x48359806, 0x49799801, | ||
6384 | 0x49799803, 0x49786801, 0x49786800, 0x49799804, | ||
6385 | 0x49799807, 0x0401f005, 0x48306801, 0x48346000, | ||
6386 | 0x48359806, 0x49786800, 0x58cc0004, 0x58cc1007, | ||
6387 | 0x80000000, 0x82081400, 0x00000005, 0x48019804, | ||
6388 | 0x48099807, 0x0401f7df, 0x80000580, 0x1c01f000, | ||
6389 | 0x82000540, 0x00000001, 0x1c01f000, 0x480bc857, | ||
6390 | 0x4c500000, 0x4c540000, 0x4c580000, 0x40083000, | ||
6391 | 0x58cc0801, 0x82040480, 0x00000005, 0x02021800, | ||
6392 | 0x001005d8, 0x82040400, 0x00106418, 0x50000000, | ||
6393 | 0x58cca800, 0x8054ac00, 0x42001800, 0x00000005, | ||
6394 | 0x40040000, 0x800c0480, 0x80082480, 0x04021002, | ||
6395 | 0x40080000, 0x8000b0c2, 0x8058b400, 0x5450a800, | ||
6396 | 0x8050a000, 0x8054a800, 0x8058b040, 0x040207fc, | ||
6397 | 0x40001000, 0x58cc2805, 0x58cc0807, 0x58cc2001, | ||
6398 | 0x80142c00, 0x80040c80, 0x80102400, 0x48159805, | ||
6399 | 0x48059807, 0x48119801, 0x82100580, 0x00000005, | ||
6400 | 0x0400000c, 0x48119801, 0x40080000, 0x80181480, | ||
6401 | 0x40083000, 0x04000003, 0x040217d6, 0x80000580, | ||
6402 | 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000, | ||
6403 | 0x58cc0800, 0x800409c0, 0x02000800, 0x001005d8, | ||
6404 | 0x58040800, 0x48059800, 0x41782000, 0x0401f7ee, | ||
6405 | 0x0401f813, 0x50f00000, 0x81040400, 0x40001800, | ||
6406 | 0x585c0204, 0x4803c857, 0x82000580, 0x0000002c, | ||
6407 | 0x02020800, 0x001005d8, 0x58040202, 0x800000e0, | ||
6408 | 0x81000540, 0x48001802, 0x58040000, 0x48001800, | ||
6409 | 0x58040001, 0x48001801, 0x1c01f000, 0x4807c856, | ||
6410 | 0x58cc0005, 0x80000040, 0x02001800, 0x001005d8, | ||
6411 | 0x48019805, 0x58cc1003, 0x82080480, 0x00000005, | ||
6412 | 0x02021800, 0x001005d8, 0x82080400, 0x00106418, | ||
6413 | 0x50000000, 0x58cc0802, 0x80040c00, 0x80081000, | ||
6414 | 0x82080480, 0x00000005, 0x0402000f, 0x58cc2002, | ||
6415 | 0x58100000, 0x80006d40, 0x04000009, 0x4c340000, | ||
6416 | 0x0401f858, 0x5c006800, 0x49786801, 0x48359802, | ||
6417 | 0x58cc0004, 0x80000040, 0x48019804, 0x49799803, | ||
6418 | 0x0401f002, 0x48099803, 0x1c01f000, 0x4807c856, | ||
6419 | 0x41781800, 0x58c80201, 0x80000540, 0x04000002, | ||
6420 | 0x800c1800, 0x58c80c01, 0x80040c80, 0x0400100a, | ||
6421 | 0x04000009, 0x800c1800, 0x58c80202, 0x80041480, | ||
6422 | 0x04001005, 0x04000004, 0x800c1800, 0x40080800, | ||
6423 | 0x0401f7fb, 0x480d9204, 0x400c0000, 0x42002000, | ||
6424 | 0x00000001, 0x80000040, 0x04000007, 0x04001006, | ||
6425 | 0x80102000, 0x82000480, 0x00000005, 0x04000002, | ||
6426 | 0x040217fc, 0x48119203, 0x1c01f000, 0x4807c856, | ||
6427 | 0x4d2c0000, 0x58cc000a, 0x80000540, 0x02000800, | ||
6428 | 0x001005d8, 0x82002400, 0x00000005, 0x0201f800, | ||
6429 | 0x001007d3, 0x04000012, 0x492d9809, 0x497a5800, | ||
6430 | 0x497a5801, 0x0201f800, 0x001007d3, 0x0400000c, | ||
6431 | 0x58cc0009, 0x48025800, 0x497a5801, 0x492d9809, | ||
6432 | 0x82102480, 0x00000005, 0x040217f7, 0x82000540, | ||
6433 | 0x00000001, 0x5c025800, 0x1c01f000, 0x58cc0009, | ||
6434 | 0x80025d40, 0x040007fc, 0x592c2000, 0x0201f800, | ||
6435 | 0x001007f4, 0x40100000, 0x0401f7fa, 0x58cc0009, | ||
6436 | 0x48cfc857, 0x80006d40, 0x04000005, 0x50340000, | ||
6437 | 0x48019809, 0x49786800, 0x49786801, 0x1c01f000, | ||
6438 | 0x4813c857, 0x58cc0009, 0x48002000, 0x48119809, | ||
6439 | 0x1c01f000, 0x4807c856, 0x4d2c0000, 0x58cc0009, | ||
6440 | 0x80025d40, 0x04000007, 0x592c0000, 0x4c000000, | ||
6441 | 0x0201f800, 0x001007f4, 0x5c000000, 0x0401f7f9, | ||
6442 | 0x5c025800, 0x1c01f000, 0x4807c856, 0x4d2c0000, | ||
6443 | 0x58cc0002, 0x80025d40, 0x04000007, 0x592c0000, | ||
6444 | 0x4c000000, 0x0201f800, 0x001007f4, 0x5c000000, | ||
6445 | 0x0401f7f9, 0x49799800, 0x49799802, 0x49799801, | ||
6446 | 0x49799803, 0x49799806, 0x49799807, 0x49799808, | ||
6447 | 0x49799809, 0x4979980a, 0x5c025800, 0x1c01f000, | ||
6448 | 0x00000003, 0x00000006, 0x00000009, 0x0000000c, | ||
6449 | 0x0000000f, 0x00000012, 0x4803c856, 0x0401f857, | ||
6450 | 0x4a00c204, 0x0000003c, 0x59301009, 0x82080580, | ||
6451 | 0x0010b524, 0x04000013, 0x58080802, 0x82040d00, | ||
6452 | 0x00ffffff, 0x58080403, 0x4804c005, 0x4800c406, | ||
6453 | 0x4a00c207, 0x00000003, 0x59300811, 0x585c0404, | ||
6454 | 0x4978c206, 0x4804c407, 0x80000540, 0x0400000d, | ||
6455 | 0x58600206, 0x84000540, 0x4800c206, 0x0401f009, | ||
6456 | 0x585c080a, 0x82040d00, 0x00ffffff, 0x4804c005, | ||
6457 | 0x4a00c406, 0x000007ff, 0x4978c207, 0x0401f7ef, | ||
6458 | 0x82603c00, 0x00000008, 0x58605404, 0x40282000, | ||
6459 | 0x405c6000, 0x585c0a04, 0x82040d00, 0x0000000f, | ||
6460 | 0x82040c00, 0x001010bd, 0x50044000, 0x80004d80, | ||
6461 | 0x50200000, 0x80307400, 0x58380402, 0x8c244d00, | ||
6462 | 0x04020003, 0x48003a00, 0x0401f003, 0x48003c00, | ||
6463 | 0x801c3800, 0x80244800, 0x80102040, 0x04000006, | ||
6464 | 0x0201f800, 0x0010109b, 0x02000800, 0x001005d8, | ||
6465 | 0x0401f7f0, 0x1c01f000, 0x4803c856, 0x4d340000, | ||
6466 | 0x59300009, 0x80026d40, 0x02000800, 0x001005d8, | ||
6467 | 0x59340401, 0x80000540, 0x0400000e, 0x59840000, | ||
6468 | 0x80000540, 0x0400000b, 0x836c0580, 0x00000003, | ||
6469 | 0x04020008, 0x59341c03, 0x42002000, 0x00000004, | ||
6470 | 0x42003000, 0x00000004, 0x0201f800, 0x00103aae, | ||
6471 | 0x5c026800, 0x1c01f000, 0x4803c856, 0x80001580, | ||
6472 | 0x58c80c01, 0x59300011, 0x80040c80, 0x48066011, | ||
6473 | 0x58c80201, 0x80000540, 0x04000005, 0x80081000, | ||
6474 | 0x80040c80, 0x04001007, 0x04000006, 0x58c80202, | ||
6475 | 0x80081000, 0x80040c80, 0x04001002, 0x040207fd, | ||
6476 | 0x4808bc08, 0x4808c404, 0x1c01f000, 0x4803c856, | ||
6477 | 0x4a0370e5, 0x00020000, 0x59b800e5, 0x8c000524, | ||
6478 | 0x040207fc, 0x4a0370e5, 0x00030000, 0x40000000, | ||
6479 | 0x40000000, 0x59b800e5, 0x8c000524, 0x040207f5, | ||
6480 | 0x5934000e, 0x80006d40, 0x04000010, 0x81300580, | ||
6481 | 0x04020004, 0x58340000, 0x4802680e, 0x0401f00a, | ||
6482 | 0x40347800, 0x58340000, 0x80006d40, 0x02000800, | ||
6483 | 0x001005d8, 0x81300580, 0x040207fa, 0x58340000, | ||
6484 | 0x48007800, 0x497a6000, 0x4a0370e5, 0x00020000, | ||
6485 | 0x1c01f000, 0x4803c856, 0x4d300000, 0x4d2c0000, | ||
6486 | 0x42000800, 0x000003ff, 0x4a0370e5, 0x00020000, | ||
6487 | 0x59b800e5, 0x8c000524, 0x04000005, 0x80040840, | ||
6488 | 0x040207fa, 0x0201f800, 0x001005d8, 0x4a0370e5, | ||
6489 | 0x00030000, 0x40000000, 0x40000000, 0x59b800e5, | ||
6490 | 0x8c000524, 0x040207f1, 0x5934000e, 0x80026540, | ||
6491 | 0x0400000e, 0x4933c857, 0x59300000, 0x4802680e, | ||
6492 | 0x4a026203, 0x00000004, 0x497a6206, 0x497a6009, | ||
6493 | 0x4a026007, 0x00000101, 0x59325808, 0x497a5c08, | ||
6494 | 0x0401fd81, 0x0401f7f1, 0x4a0370e5, 0x00020000, | ||
6495 | 0x5c025800, 0x5c026000, 0x1c01f000, 0x4803c856, | ||
6496 | 0x4c000000, 0x0201f800, 0x00105c9a, 0x04020011, | ||
6497 | 0x0201f800, 0x001045a6, 0x02020800, 0x001005d8, | ||
6498 | 0x5c000000, 0x48026802, 0x0201f800, 0x0002075a, | ||
6499 | 0x04000009, 0x49366009, 0x4a026406, 0x00000001, | ||
6500 | 0x42027000, 0x00000001, 0x0201f000, 0x000207a1, | ||
6501 | 0x5c000000, 0x1c01f000, 0x59300203, 0x82000c80, | ||
6502 | 0x0000000e, 0x02021800, 0x001005d8, 0x4803c857, | ||
6503 | 0x0c01f001, 0x00106503, 0x00106503, 0x00106503, | ||
6504 | 0x00106505, 0x00106565, 0x00106503, 0x00106503, | ||
6505 | 0x001065b7, 0x001065b8, 0x00106503, 0x00106503, | ||
6506 | 0x00106503, 0x00106503, 0x00106503, 0x0201f800, | ||
6507 | 0x001005d8, 0x493bc857, 0x83380480, 0x00000050, | ||
6508 | 0x02021800, 0x001005d8, 0x83380480, 0x00000049, | ||
6509 | 0x02001800, 0x001005d8, 0x0c01f001, 0x00106518, | ||
6510 | 0x0010653a, 0x00106516, 0x00106516, 0x00106516, | ||
6511 | 0x00106516, 0x00106549, 0x0201f800, 0x001005d8, | ||
6512 | 0x4d2c0000, 0x59325808, 0x592c0206, 0x48025c06, | ||
6513 | 0x4a025a06, 0x00000000, 0x4c5c0000, 0x592cbc0a, | ||
6514 | 0x592c0000, 0x48026008, 0x0201f800, 0x00104cde, | ||
6515 | 0x59300008, 0x80000540, 0x04000008, 0x4a026203, | ||
6516 | 0x00000007, 0x42027000, 0x00000043, 0x5c00b800, | ||
6517 | 0x5c025800, 0x0401f08a, 0x8c5cbd08, 0x04020006, | ||
6518 | 0x4a026203, 0x00000007, 0x497a6206, 0x497a6008, | ||
6519 | 0x0401f003, 0x0201f800, 0x0002077d, 0x5c00b800, | ||
6520 | 0x5c025800, 0x1c01f000, 0x0201f800, 0x00106b8a, | ||
6521 | 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037, | ||
6522 | 0x04000006, 0x4d400000, 0x42028000, 0x00000001, | ||
6523 | 0x0401f8f8, 0x5c028000, 0x5c025800, 0x0201f000, | ||
6524 | 0x0002077d, 0x0201f800, 0x00106b8a, 0x4d3c0000, | ||
6525 | 0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800, | ||
6526 | 0x42003000, 0x00000014, 0x0201f800, 0x0010a942, | ||
6527 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
6528 | 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037, | ||
6529 | 0x04000006, 0x4d400000, 0x42028000, 0x00000029, | ||
6530 | 0x0401f8dc, 0x5c028000, 0x5c025800, 0x0201f000, | ||
6531 | 0x0002077d, 0x493bc857, 0x497a6206, 0x83380480, | ||
6532 | 0x00000054, 0x02021800, 0x001005d8, 0x83380480, | ||
6533 | 0x00000047, 0x02001800, 0x001005d8, 0x0c01f001, | ||
6534 | 0x001065b6, 0x0010657f, 0x0010657d, 0x0010657d, | ||
6535 | 0x0010657d, 0x0010657d, 0x0010657d, 0x0010657d, | ||
6536 | 0x0010657d, 0x0010657d, 0x0010657d, 0x0010657d, | ||
6537 | 0x00106583, 0x0201f800, 0x001005d8, 0x59300011, | ||
6538 | 0x82000500, 0xffff0000, 0x04020034, 0x59840802, | ||
6539 | 0x8c040d04, 0x04000025, 0x59300009, 0x80026d40, | ||
6540 | 0x0400001f, 0x4c5c0000, 0x4c600000, 0x497a6206, | ||
6541 | 0x5930b808, 0x585c0005, 0x8000c540, 0x02000800, | ||
6542 | 0x001005d8, 0x0401fe8d, 0x40625800, 0x0201f800, | ||
6543 | 0x00104cde, 0x4978b805, 0x0401fef5, 0x497a6009, | ||
6544 | 0x585c3408, 0x0401fcbd, 0x0400000e, 0x42001000, | ||
6545 | 0x0010b519, 0x0401fcf2, 0x0400000a, 0x0201f800, | ||
6546 | 0x001007e4, 0x04000007, 0x492cb805, 0x585c5408, | ||
6547 | 0x0401fc83, 0x5c00c000, 0x5c00b800, 0x1c01f000, | ||
6548 | 0x0401fca9, 0x0401f7fc, 0x8c040d06, 0x040207fc, | ||
6549 | 0x59300009, 0x80026d40, 0x04000006, 0x5934000e, | ||
6550 | 0x80000540, 0x02020800, 0x001005d8, 0x497a6009, | ||
6551 | 0x0401fd0d, 0x0401f7f2, 0x0401f06f, 0x4803c856, | ||
6552 | 0x4803c856, 0x83380580, 0x00000043, 0x02020800, | ||
6553 | 0x001005d8, 0x4a026203, 0x00000003, 0x493a6403, | ||
6554 | 0x59325808, 0x592c000f, 0x48026011, 0x497a6013, | ||
6555 | 0x592c0406, 0x800000c2, 0x800010c4, 0x80081400, | ||
6556 | 0x480a6206, 0x0201f800, 0x00100f4e, 0x42000800, | ||
6557 | 0x80000060, 0x0401f154, 0x42000000, 0x0010b875, | ||
6558 | 0x0201f800, 0x0010aa47, 0x59300203, 0x82000c80, | ||
6559 | 0x0000000e, 0x02021800, 0x001005d8, 0x4803c857, | ||
6560 | 0x82000d80, 0x00000003, 0x04000006, 0x82000d80, | ||
6561 | 0x00000004, 0x04000045, 0x0201f800, 0x001005d8, | ||
6562 | 0x0201f800, 0x00106c55, 0x59300004, 0x8c00053e, | ||
6563 | 0x04020007, 0x0201f800, 0x00106b6c, 0x02020800, | ||
6564 | 0x001005d8, 0x0201f000, 0x00106c4b, 0x0401f9c3, | ||
6565 | 0x0201f800, 0x00106c4b, 0x59325808, 0x42028000, | ||
6566 | 0x00000006, 0x0401f84b, 0x0201f000, 0x0002077d, | ||
6567 | 0x4803c856, 0x59300203, 0x82000c80, 0x0000000e, | ||
6568 | 0x02021800, 0x001005d8, 0x82000d80, 0x00000003, | ||
6569 | 0x04000006, 0x82000d80, 0x00000004, 0x04000023, | ||
6570 | 0x0201f800, 0x001005d8, 0x4803c856, 0x0201f800, | ||
6571 | 0x00106c55, 0x4df00000, 0x59300004, 0x8c00053e, | ||
6572 | 0x04020006, 0x0201f800, 0x00106f60, 0x02020800, | ||
6573 | 0x001005d8, 0x0401f010, 0x0201f800, 0x00108cd6, | ||
6574 | 0x04020004, 0x0201f800, 0x00106e62, 0x0402000a, | ||
6575 | 0x0401f99a, 0x02020800, 0x001005d8, 0x5c03e000, | ||
6576 | 0x02000800, 0x00106c4b, 0x82000540, 0x00000001, | ||
6577 | 0x1c01f000, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
6578 | 0x80000580, 0x1c01f000, 0x4933c857, 0x0201f800, | ||
6579 | 0x00100e99, 0x4933c857, 0x4c5c0000, 0x4d340000, | ||
6580 | 0x497a6206, 0x5930b808, 0x59300009, 0x80026d40, | ||
6581 | 0x04020e5f, 0x42001000, 0x0010b519, 0x0401fc60, | ||
6582 | 0x04000009, 0x58c80204, 0x4800bc08, 0x41785000, | ||
6583 | 0x0201f800, 0x00106227, 0x5c026800, 0x5c00b800, | ||
6584 | 0x1c01f000, 0x4978bc08, 0x0401fc17, 0x0401f7fb, | ||
6585 | 0x4803c856, 0x0201f800, 0x00109037, 0x0400000f, | ||
6586 | 0x592c0000, 0x80000d40, 0x04000009, 0x497a5800, | ||
6587 | 0x49425a06, 0x4c040000, 0x0201f800, 0x000202da, | ||
6588 | 0x5c000800, 0x40065800, 0x0401f7f6, 0x49425a06, | ||
6589 | 0x0201f800, 0x000202da, 0x1c01f000, 0x4933c857, | ||
6590 | 0x59300c06, 0x82040580, 0x0000000e, 0x04000004, | ||
6591 | 0x82040580, 0x00000009, 0x04020004, 0x0401ffe5, | ||
6592 | 0x497a6008, 0x80000580, 0x1c01f000, 0x592e6009, | ||
6593 | 0x83300480, 0x0010d1c0, 0x04001016, 0x41580000, | ||
6594 | 0x81300480, 0x04021013, 0x40040000, 0x59300c06, | ||
6595 | 0x80040580, 0x04020012, 0x59300a03, 0x82040580, | ||
6596 | 0x00000007, 0x02020800, 0x001005d8, 0x59300008, | ||
6597 | 0x80000540, 0x02020800, 0x001005d8, 0x0201f800, | ||
6598 | 0x0002077d, 0x42000000, 0x00000000, 0x0401f009, | ||
6599 | 0x42000000, 0x00000008, 0x0401f006, 0x82040580, | ||
6600 | 0x00000007, 0x040207fb, 0x42000000, 0x00000005, | ||
6601 | 0x592c0a06, 0x48065c06, 0x48025a06, 0x0201f000, | ||
6602 | 0x000202da, 0x4c0c0000, 0x4c100000, 0x4c140000, | ||
6603 | 0x4c180000, 0x80001d80, 0x80002580, 0x42003000, | ||
6604 | 0x00000020, 0x82040500, 0x00000001, 0x04000003, | ||
6605 | 0x40080000, 0x800c1c00, 0x400c2800, 0x800c1902, | ||
6606 | 0x80102102, 0x82140500, 0x00000001, 0x04000003, | ||
6607 | 0x82102540, 0x80000000, 0x80040902, 0x80183040, | ||
6608 | 0x040207f1, 0x40100800, 0x400c0000, 0x5c003000, | ||
6609 | 0x5c002800, 0x5c002000, 0x5c001800, 0x1c01f000, | ||
6610 | 0x4c580000, 0x4200b000, 0x00000020, 0x80000540, | ||
6611 | 0x04000018, 0x80041c80, 0x04021016, 0x800810c2, | ||
6612 | 0x80040982, 0x04001006, 0x80041c80, 0x04021005, | ||
6613 | 0x8058b040, 0x040207fa, 0x0401f006, 0x80041c80, | ||
6614 | 0x400c0800, 0x80081000, 0x8058b040, 0x040207f4, | ||
6615 | 0x4c000000, 0x41f00000, 0x82000500, 0xf7ffffff, | ||
6616 | 0x4003e000, 0x5c000000, 0x5c00b000, 0x1c01f000, | ||
6617 | 0x4c000000, 0x41f00000, 0x82000540, 0x08000000, | ||
6618 | 0x0401f7f8, 0x4a0378e8, 0x00000000, 0x4a03c821, | ||
6619 | 0x00000010, 0x4a03c823, 0x00000004, 0x0401f82c, | ||
6620 | 0x4a0378e9, 0x00003a0d, 0x4a0378e8, 0x00000001, | ||
6621 | 0x42000000, 0x00001000, 0x50000000, 0x82000480, | ||
6622 | 0x24220001, 0x04000004, 0x59e00002, 0x84000548, | ||
6623 | 0x4803c002, 0x42000800, 0x00000005, 0x4203a000, | ||
6624 | 0x00007600, 0x42000000, 0x00001000, 0x50000000, | ||
6625 | 0x82000480, 0x24320001, 0x04021003, 0x4a03a005, | ||
6626 | 0xd0000001, 0x59d00006, 0x4a03a005, 0x90000001, | ||
6627 | 0x83d3a400, 0x00000020, 0x80040840, 0x040207fa, | ||
6628 | 0x59e00003, 0x82000500, 0xffffffe0, 0x82000540, | ||
6629 | 0x00008000, 0x4803c003, 0x59c40006, 0x82000500, | ||
6630 | 0xfffcffff, 0x48038806, 0x1c01f000, 0x4d900000, | ||
6631 | 0x4d180000, 0x4a0378e7, 0xaaaaaaaa, 0x4a0378e6, | ||
6632 | 0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, 0x4a0378e4, | ||
6633 | 0xaaaaaaaa, 0x42000800, 0x0000bf00, 0x4a00081a, | ||
6634 | 0x0010b7d4, 0x4a00081b, 0x001010bd, 0x4a00081c, | ||
6635 | 0x001010cd, 0x4a031800, 0x00000000, 0x4a031801, | ||
6636 | 0x0010b544, 0x4a031802, 0x0010b54b, 0x42000800, | ||
6637 | 0x0010b7d7, 0x417a3000, 0x811b20c8, 0x83932400, | ||
6638 | 0x0000bf32, 0x48072000, 0x4a032001, 0x00000000, | ||
6639 | 0x83180400, 0x001070ea, 0x50000000, 0x48032002, | ||
6640 | 0x82040c00, 0x00000003, 0x811a3000, 0x83180480, | ||
6641 | 0x00000005, 0x040017f1, 0x5c023000, 0x5c032000, | ||
6642 | 0x1c01f000, 0x48066004, 0x497a6000, 0x497a6001, | ||
6643 | 0x59bc00ea, 0x8c000516, 0x040207fe, 0x83300400, | ||
6644 | 0xa0000000, 0x480378e1, 0x1c01f000, 0x4933c857, | ||
6645 | 0x42000800, 0x80000040, 0x48066004, 0x497a6000, | ||
6646 | 0x59bc00ea, 0x8c000516, 0x040207fe, 0x83300400, | ||
6647 | 0x60000000, 0x480378e1, 0x1c01f000, 0x0201f800, | ||
6648 | 0x00106c55, 0x4df00000, 0x4d300000, 0x4d340000, | ||
6649 | 0x4d2c0000, 0x4d180000, 0x4c5c0000, 0x4c600000, | ||
6650 | 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, | ||
6651 | 0x42003000, 0x0000bf2e, 0x581a6001, 0x813261c0, | ||
6652 | 0x0400002c, 0x41302800, 0x4178c000, 0x59300000, | ||
6653 | 0x4c000000, 0x59326809, 0x5930b801, 0x59300406, | ||
6654 | 0x82000d80, 0x00000006, 0x04020003, 0x8d3e7d18, | ||
6655 | 0x04000010, 0x8d3e7d06, 0x04000007, 0x82000580, | ||
6656 | 0x00000003, 0x04020004, 0x59340200, 0x8c00050e, | ||
6657 | 0x04020008, 0x0401f92f, 0x4c0c0000, 0x4c140000, | ||
6658 | 0x0401fb5f, 0x5c002800, 0x5c001800, 0x0401f005, | ||
6659 | 0x41301800, 0x8060c1c0, 0x04020002, 0x400cc000, | ||
6660 | 0x805cb9c0, 0x04000003, 0x405e6000, 0x0401f7e3, | ||
6661 | 0x5c026000, 0x813261c0, 0x04000006, 0x8060c1c0, | ||
6662 | 0x04000002, 0x40602800, 0x4178c000, 0x0401f7d8, | ||
6663 | 0x417a3000, 0x0201f800, 0x001070d8, 0x59926004, | ||
6664 | 0x813261c0, 0x04000023, 0x59326809, 0x4130c000, | ||
6665 | 0x59300001, 0x8000bd40, 0x04000016, 0x40026000, | ||
6666 | 0x40602800, 0x5930b801, 0x59300406, 0x82000d80, | ||
6667 | 0x00000006, 0x0400000e, 0x8d3e7d06, 0x04000007, | ||
6668 | 0x82000580, 0x00000003, 0x04020004, 0x59340200, | ||
6669 | 0x8c00050e, 0x04020006, 0x0401f8dc, 0x4c140000, | ||
6670 | 0x0401fb2f, 0x5c002800, 0x0401f002, 0x41302800, | ||
6671 | 0x405e6000, 0x813261c0, 0x040207eb, 0x8060c1c0, | ||
6672 | 0x04000004, 0x40626000, 0x4178c000, 0x0401f7e7, | ||
6673 | 0x811a3000, 0x83180480, 0x00000005, 0x040017d6, | ||
6674 | 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, | ||
6675 | 0x5c00c000, 0x5c00b800, 0x5c023000, 0x5c025800, | ||
6676 | 0x5c026800, 0x5c026000, 0x5c03e000, 0x02000800, | ||
6677 | 0x00106c4b, 0x1c01f000, 0x4933c857, 0x0201f800, | ||
6678 | 0x00106c55, 0x4df00000, 0x4d340000, 0x4d180000, | ||
6679 | 0x4d900000, 0x42003000, 0x0000bf2e, 0x59326809, | ||
6680 | 0x58182001, 0x40102800, 0x801021c0, 0x04000016, | ||
6681 | 0x41300000, 0x80100580, 0x04000011, 0x58100009, | ||
6682 | 0x81340580, 0x0402000b, 0x40101800, 0x58102001, | ||
6683 | 0x41300000, 0x801021c0, 0x0400000b, 0x80100d80, | ||
6684 | 0x04000007, 0x40101800, 0x58102001, 0x0401f7fa, | ||
6685 | 0x40102800, 0x58102000, 0x0401f7ec, 0x0401f8bd, | ||
6686 | 0x0401f01a, 0x42032000, 0x0000bf32, 0x417a3000, | ||
6687 | 0x59902004, 0x40102800, 0x801021c0, 0x0400000b, | ||
6688 | 0x58100009, 0x81340580, 0x04020008, 0x41300000, | ||
6689 | 0x80100580, 0x0400000c, 0x40102800, 0x58102001, | ||
6690 | 0x801021c0, 0x040207fa, 0x811a3000, 0x83180480, | ||
6691 | 0x00000005, 0x0402100d, 0x83932400, 0x00000010, | ||
6692 | 0x0401f7ec, 0x0401f881, 0x5c032000, 0x5c023000, | ||
6693 | 0x5c026800, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
6694 | 0x80000580, 0x1c01f000, 0x0401fb6f, 0x040007f7, | ||
6695 | 0x5c032000, 0x5c023000, 0x5c026800, 0x5c03e000, | ||
6696 | 0x02000800, 0x00106c4b, 0x82000540, 0x00000001, | ||
6697 | 0x1c01f000, 0x0201f800, 0x00106c55, 0x4df00000, | ||
6698 | 0x4d300000, 0x4d340000, 0x4d180000, 0x4d2c0000, | ||
6699 | 0x4c5c0000, 0x4c600000, 0x4d900000, 0x4dd00000, | ||
6700 | 0x4da40000, 0x4d140000, 0x42003000, 0x0000bf2e, | ||
6701 | 0x581a6001, 0x813261c0, 0x04000023, 0x41302800, | ||
6702 | 0x5930b800, 0x59326809, 0x59340403, 0x81440580, | ||
6703 | 0x04000006, 0x805cb9c0, 0x0400001b, 0x41302800, | ||
6704 | 0x405e6000, 0x0401f7f7, 0x5930b801, 0x8d3e7d00, | ||
6705 | 0x04000003, 0x0401fb67, 0x0402000e, 0x59300406, | ||
6706 | 0x82000580, 0x00000006, 0x04020003, 0x8d3e7d18, | ||
6707 | 0x04000008, 0x0401f867, 0x4c0c0000, 0x4c140000, | ||
6708 | 0x0401fa97, 0x5c002800, 0x5c001800, 0x0401f002, | ||
6709 | 0x41301800, 0x405e6000, 0x813261c0, 0x040207eb, | ||
6710 | 0x0401f02d, 0x417a3000, 0x0201f800, 0x001070d8, | ||
6711 | 0x59926004, 0x813261c0, 0x04000005, 0x59326809, | ||
6712 | 0x59340403, 0x81440580, 0x04000006, 0x811a3000, | ||
6713 | 0x83180480, 0x00000005, 0x040017f4, 0x0401f01e, | ||
6714 | 0x4130c000, 0x59300001, 0x8000bd40, 0x04000012, | ||
6715 | 0x40026000, 0x40602800, 0x5930b801, 0x8d3e7d00, | ||
6716 | 0x04000003, 0x0401fb3b, 0x0402000a, 0x59300406, | ||
6717 | 0x82000580, 0x00000006, 0x04000006, 0x0401f81b, | ||
6718 | 0x4c140000, 0x0401fa6e, 0x5c002800, 0x0401f002, | ||
6719 | 0x41302800, 0x405e6000, 0x813261c0, 0x040207ef, | ||
6720 | 0x8060c1c0, 0x04000004, 0x40626000, 0x4178c000, | ||
6721 | 0x0401f7eb, 0x5c022800, 0x5c034800, 0x5c03a000, | ||
6722 | 0x5c032000, 0x5c00c000, 0x5c00b800, 0x5c025800, | ||
6723 | 0x5c023000, 0x5c026800, 0x5c026000, 0x5c03e000, | ||
6724 | 0x04000be3, 0x1c01f000, 0x0401fbc8, 0x59900004, | ||
6725 | 0x81300580, 0x04020018, 0x4c140000, 0x0201f800, | ||
6726 | 0x00106dc3, 0x0401fbb8, 0x5c002800, 0x59300001, | ||
6727 | 0x800001c0, 0x04020003, 0x497a680c, 0x1c01f000, | ||
6728 | 0x42003000, 0x0000bf2e, 0x497a6001, 0x58180801, | ||
6729 | 0x800409c0, 0x04020004, 0x48003000, 0x48003001, | ||
6730 | 0x1c01f000, 0x58180800, 0x48000800, 0x48003000, | ||
6731 | 0x1c01f000, 0x59300001, 0x48002801, 0x800001c0, | ||
6732 | 0x04020002, 0x4816680c, 0x497a6001, 0x1c01f000, | ||
6733 | 0x0401fba6, 0x42003000, 0x0000bf2e, 0x58180001, | ||
6734 | 0x81300580, 0x0402001c, 0x59300801, 0x800409c0, | ||
6735 | 0x0400000e, 0x59300000, 0x800001c0, 0x04020005, | ||
6736 | 0x48043001, 0x48043000, 0x497a6001, 0x1c01f000, | ||
6737 | 0x59300000, 0x48000800, 0x48043001, 0x497a6000, | ||
6738 | 0x497a6001, 0x1c01f000, 0x59300800, 0x800409c0, | ||
6739 | 0x04020005, 0x49783001, 0x49783000, 0x497a680c, | ||
6740 | 0x1c01f000, 0x48043001, 0x497a6000, 0x497a680c, | ||
6741 | 0x1c01f000, 0x58180000, 0x81300580, 0x0402000c, | ||
6742 | 0x59300001, 0x800001c0, 0x04020005, 0x48143000, | ||
6743 | 0x49782800, 0x497a680c, 0x1c01f000, 0x48003000, | ||
6744 | 0x48002800, 0x497a6001, 0x1c01f000, 0x59300000, | ||
6745 | 0x800001c0, 0x04020008, 0x59300001, 0x48001801, | ||
6746 | 0x800001c0, 0x04020002, 0x480e680c, 0x497a6001, | ||
6747 | 0x1c01f000, 0x59300801, 0x800409c0, 0x04020006, | ||
6748 | 0x59300800, 0x48042800, 0x497a6000, 0x497a680c, | ||
6749 | 0x1c01f000, 0x59300000, 0x48000800, 0x48042800, | ||
6750 | 0x497a6000, 0x497a6001, 0x1c01f000, 0x0401fb82, | ||
6751 | 0x4df00000, 0x0401f839, 0x040208c4, 0x04020945, | ||
6752 | 0x04020a89, 0x04020005, 0x5c03e000, 0x04000b70, | ||
6753 | 0x80000580, 0x1c01f000, 0x5c03e000, 0x04000b6c, | ||
6754 | 0x82000540, 0x00000001, 0x1c01f000, 0x4d2c0000, | ||
6755 | 0x4d340000, 0x4d300000, 0x41783000, 0x598e6009, | ||
6756 | 0x813261c0, 0x04000021, 0x59300406, 0x82000580, | ||
6757 | 0x00000006, 0x04020004, 0x8d3e7d18, 0x0402000a, | ||
6758 | 0x0401f017, 0x82040580, 0x00000005, 0x04020006, | ||
6759 | 0x8d3e7d16, 0x04000004, 0x59300420, 0x8c000500, | ||
6760 | 0x0402000f, 0x0401fa4e, 0x59300000, 0x4c000000, | ||
6761 | 0x8d3e7d06, 0x04000004, 0x0201f800, 0x001092d7, | ||
6762 | 0x04000005, 0x0401f867, 0x4c180000, 0x0401f9bc, | ||
6763 | 0x5c003000, 0x5c026000, 0x0401f7e2, 0x41303000, | ||
6764 | 0x59326000, 0x0401f7df, 0x5c026000, 0x5c026800, | ||
6765 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000, | ||
6766 | 0x813261c0, 0x02000800, 0x001005d8, 0x41300000, | ||
6767 | 0x598cb809, 0x41783000, 0x805cb9c0, 0x04000013, | ||
6768 | 0x805c0d80, 0x04000004, 0x405c3000, 0x5818b800, | ||
6769 | 0x0401f7fa, 0x0401f84b, 0x598c000d, 0x81300580, | ||
6770 | 0x02000800, 0x001070b9, 0x59300403, 0x82000580, | ||
6771 | 0x00000042, 0x04020002, 0x497a6007, 0x80000580, | ||
6772 | 0x5c00b800, 0x1c01f000, 0x82000540, 0x00000001, | ||
6773 | 0x5c00b800, 0x1c01f000, 0x0401fb27, 0x4df00000, | ||
6774 | 0x4d2c0000, 0x4d340000, 0x4d300000, 0x41783000, | ||
6775 | 0x598e6009, 0x813261c0, 0x0400002c, 0x59300c06, | ||
6776 | 0x82040580, 0x00000006, 0x04020004, 0x8d3e7d18, | ||
6777 | 0x0402000a, 0x0401f022, 0x82040580, 0x00000005, | ||
6778 | 0x04020006, 0x8d3e7d18, 0x04000004, 0x59300420, | ||
6779 | 0x8c000500, 0x0402001a, 0x59326809, 0x59340403, | ||
6780 | 0x81440580, 0x04020016, 0x8d3e7d00, 0x04000006, | ||
6781 | 0x82040580, 0x00000003, 0x04020011, 0x0401fa35, | ||
6782 | 0x0402000f, 0x0401f9f6, 0x59300000, 0x4c000000, | ||
6783 | 0x8d3e7d06, 0x04000004, 0x0201f800, 0x001092d7, | ||
6784 | 0x04000005, 0x0401f80f, 0x4c180000, 0x0401f964, | ||
6785 | 0x5c003000, 0x5c026000, 0x0401f7d7, 0x41303000, | ||
6786 | 0x59326000, 0x0401f7d4, 0x5c026000, 0x5c026800, | ||
6787 | 0x5c025800, 0x5c03e000, 0x04000ae5, 0x1c01f000, | ||
6788 | 0x59300800, 0x497a6000, 0x0401fac8, 0x801831c0, | ||
6789 | 0x04020009, 0x598c0008, 0x81300580, 0x04020004, | ||
6790 | 0x48031808, 0x48031809, 0x0401f008, 0x48071809, | ||
6791 | 0x0401f006, 0x48043000, 0x598c0008, 0x81300580, | ||
6792 | 0x04020002, 0x481b1808, 0x0401f2ca, 0x4d2c0000, | ||
6793 | 0x4d300000, 0x4d340000, 0x41783000, 0x598e600b, | ||
6794 | 0x813261c0, 0x04000013, 0x8d3e7d06, 0x04000005, | ||
6795 | 0x59326809, 0x59340200, 0x8c00050e, 0x0402000a, | ||
6796 | 0x0401f9bf, 0x59300000, 0x4c000000, 0x0401f853, | ||
6797 | 0x4c180000, 0x0401f932, 0x5c003000, 0x5c026000, | ||
6798 | 0x0401f7f0, 0x41303000, 0x59326000, 0x0401f7ed, | ||
6799 | 0x0201f800, 0x00104773, 0x5c026800, 0x5c026000, | ||
6800 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000, | ||
6801 | 0x813261c0, 0x02000800, 0x001005d8, 0x41300000, | ||
6802 | 0x598cb80b, 0x41783000, 0x805cb9c0, 0x0400000f, | ||
6803 | 0x805c0d80, 0x04000004, 0x405c3000, 0x5818b800, | ||
6804 | 0x0401f7fa, 0x0401f835, 0x598c000d, 0x81300580, | ||
6805 | 0x02000800, 0x001070b9, 0x497a6007, 0x80000580, | ||
6806 | 0x5c00b800, 0x1c01f000, 0x82000540, 0x00000001, | ||
6807 | 0x5c00b800, 0x1c01f000, 0x0401fa9f, 0x4df00000, | ||
6808 | 0x4d340000, 0x4d300000, 0x4d2c0000, 0x0201f800, | ||
6809 | 0x00020245, 0x02020800, 0x001005d8, 0x41783000, | ||
6810 | 0x598e600b, 0x813261c0, 0x04000014, 0x59300009, | ||
6811 | 0x81340580, 0x0402000e, 0x8d3e7d00, 0x04000003, | ||
6812 | 0x0401f9bc, 0x0402000a, 0x0401f97d, 0x59300000, | ||
6813 | 0x4c000000, 0x0401f811, 0x4c180000, 0x0401f8f0, | ||
6814 | 0x5c003000, 0x5c026000, 0x0401f7ef, 0x41303000, | ||
6815 | 0x59326000, 0x0401f7ec, 0x0201f800, 0x0010479c, | ||
6816 | 0x5c025800, 0x5c026000, 0x5c026800, 0x5c03e000, | ||
6817 | 0x04000a6f, 0x1c01f000, 0x59300800, 0x497a6000, | ||
6818 | 0x0401fa52, 0x801831c0, 0x04020009, 0x598c000a, | ||
6819 | 0x81300580, 0x04020004, 0x4803180a, 0x4803180b, | ||
6820 | 0x0401f008, 0x4807180b, 0x0401f006, 0x48043000, | ||
6821 | 0x598c000a, 0x81300580, 0x04020002, 0x481b180a, | ||
6822 | 0x0401f254, 0x0401fa64, 0x4df00000, 0x4d300000, | ||
6823 | 0x598e6005, 0x813261c0, 0x04000020, 0x59300000, | ||
6824 | 0x4c000000, 0x59300c06, 0x82040580, 0x00000011, | ||
6825 | 0x04020007, 0x833c0500, 0x00001800, 0x04000015, | ||
6826 | 0x8d3e7d16, 0x04020013, 0x0401f009, 0x82040580, | ||
6827 | 0x00000004, 0x04020006, 0x8d3e7d16, 0x04000004, | ||
6828 | 0x59300420, 0x8c000500, 0x0402000a, 0x0201f800, | ||
6829 | 0x0010914e, 0x02000800, 0x0010801c, 0x0201f800, | ||
6830 | 0x00109326, 0x0201f800, 0x0002077d, 0x0401fa31, | ||
6831 | 0x5c026000, 0x0401f7e0, 0x497b1805, 0x497b1804, | ||
6832 | 0x5c026000, 0x5c03e000, 0x04000a31, 0x1c01f000, | ||
6833 | 0x4933c857, 0x4c5c0000, 0x4c600000, 0x813261c0, | ||
6834 | 0x02000800, 0x001005d8, 0x41300000, 0x598cb805, | ||
6835 | 0x405cc000, 0x805cb9c0, 0x04000025, 0x805c0d80, | ||
6836 | 0x04000004, 0x405cc000, 0x5860b800, 0x0401f7fa, | ||
6837 | 0x598c000d, 0x81300580, 0x02000800, 0x001070b9, | ||
6838 | 0x0401fa02, 0x598c0005, 0x805c0580, 0x04020009, | ||
6839 | 0x585c0000, 0x48031805, 0x4978b800, 0x598c0004, | ||
6840 | 0x805c0580, 0x0402000d, 0x497b1804, 0x0401f00b, | ||
6841 | 0x598c0004, 0x805c0580, 0x04020005, 0x48631804, | ||
6842 | 0x4978b800, 0x4978c000, 0x0401f004, 0x585c0000, | ||
6843 | 0x4800c000, 0x4978b800, 0x0401f9fe, 0x80000580, | ||
6844 | 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x82000540, | ||
6845 | 0x00000001, 0x5c00c000, 0x5c00b800, 0x1c01f000, | ||
6846 | 0x4933c857, 0x0401fa04, 0x4df00000, 0x4d2c0000, | ||
6847 | 0x4d340000, 0x4d300000, 0x4c5c0000, 0x4178b800, | ||
6848 | 0x8d3e7d18, 0x0400000d, 0x8d3e7d16, 0x0402000b, | ||
6849 | 0x0201f800, 0x00109037, 0x04000008, 0x0201f800, | ||
6850 | 0x00109597, 0x04020005, 0x592c0207, 0x492fc857, | ||
6851 | 0x8200bd00, 0x0000000f, 0x41783000, 0x598e6005, | ||
6852 | 0x813261c0, 0x04000029, 0x59326809, 0x813669c0, | ||
6853 | 0x04000023, 0x59340403, 0x81440580, 0x04020020, | ||
6854 | 0x59300c06, 0x82040580, 0x00000011, 0x0400001a, | ||
6855 | 0x82040580, 0x00000004, 0x04020004, 0x59300420, | ||
6856 | 0x8c000500, 0x04020016, 0x0201f800, 0x00109037, | ||
6857 | 0x04000008, 0x0201f800, 0x00109597, 0x04020005, | ||
6858 | 0x59300403, 0x82000580, 0x00000043, 0x0400000c, | ||
6859 | 0x0401f8c3, 0x59300000, 0x4c000000, 0x0401f812, | ||
6860 | 0x4c180000, 0x0401f836, 0x5c003000, 0x5c026000, | ||
6861 | 0x0401f7dc, 0x805cb9c0, 0x040207ec, 0x41303000, | ||
6862 | 0x59326000, 0x0401f7d7, 0x5c00b800, 0x5c026000, | ||
6863 | 0x5c026800, 0x5c025800, 0x5c03e000, 0x040009b4, | ||
6864 | 0x1c01f000, 0x59300800, 0x497a6000, 0x0401f997, | ||
6865 | 0x801831c0, 0x04020009, 0x598c0004, 0x81300580, | ||
6866 | 0x04020004, 0x48031804, 0x48031805, 0x0401f008, | ||
6867 | 0x48071805, 0x0401f006, 0x48043000, 0x598c0004, | ||
6868 | 0x81300580, 0x04020002, 0x481b1804, 0x0401f199, | ||
6869 | 0x4943c857, 0x0401f9a8, 0x4df00000, 0x0401fe34, | ||
6870 | 0x0401fecb, 0x5c03e000, 0x04000999, 0x1c01f000, | ||
6871 | 0x4947c857, 0x0401f9a0, 0x4df00000, 0x4d3c0000, | ||
6872 | 0x853e7d00, 0x0401fe75, 0x0401fefc, 0x5c027800, | ||
6873 | 0x5c03e000, 0x0400098e, 0x1c01f000, 0x5c000000, | ||
6874 | 0x4c000000, 0x4803c857, 0x4d340000, 0x4d2c0000, | ||
6875 | 0x59326809, 0x59325808, 0x59300406, 0x82000c80, | ||
6876 | 0x00000012, 0x02021800, 0x001005d8, 0x4933c857, | ||
6877 | 0x4943c857, 0x493fc857, 0x4803c857, 0x0c01f804, | ||
6878 | 0x5c025800, 0x5c026800, 0x1c01f000, 0x00106ae5, | ||
6879 | 0x00106ae7, 0x00106af1, 0x00106b0b, 0x00106ae7, | ||
6880 | 0x00106afb, 0x00106b23, 0x00106ae5, 0x00106ae5, | ||
6881 | 0x00106b36, 0x00106b2d, 0x00106ae5, 0x00106ae5, | ||
6882 | 0x00106ae5, 0x00106ae5, 0x00106ae5, 0x00106b3c, | ||
6883 | 0x00106b3c, 0x0201f800, 0x001005d8, 0x0201f800, | ||
6884 | 0x00109134, 0x02000800, 0x00102074, 0x0201f800, | ||
6885 | 0x00109326, 0x0201f800, 0x0010801c, 0x0201f000, | ||
6886 | 0x00107911, 0x812e59c0, 0x02020800, 0x001005d8, | ||
6887 | 0x5930021d, 0x82000580, 0x00000003, 0x02000800, | ||
6888 | 0x0010912a, 0x0201f000, 0x00107911, 0x0201f800, | ||
6889 | 0x00109037, 0x02000000, 0x00107911, 0x592c1204, | ||
6890 | 0x82081500, 0x000000ff, 0x82080580, 0x00000055, | ||
6891 | 0x02020800, 0x001005d8, 0x49425a06, 0x0201f800, | ||
6892 | 0x000202da, 0x0201f000, 0x00107911, 0x59300004, | ||
6893 | 0x8400055c, 0x48026004, 0x59300007, 0x8c000500, | ||
6894 | 0x02020800, 0x00100e99, 0x0201f800, 0x00109037, | ||
6895 | 0x0400000d, 0x4a025a04, 0x00000103, 0x49425a06, | ||
6896 | 0x497a5c09, 0x0201f800, 0x001091c6, 0x0201f800, | ||
6897 | 0x0010a693, 0x0201f800, 0x000202da, 0x0201f800, | ||
6898 | 0x0010912a, 0x0201f000, 0x00107911, 0x59300007, | ||
6899 | 0x8c000500, 0x02020800, 0x00100e99, 0x0201f800, | ||
6900 | 0x00109037, 0x02020800, 0x0010a3ef, 0x0201f000, | ||
6901 | 0x00107911, 0x0201f800, 0x00109037, 0x04000005, | ||
6902 | 0x49425a06, 0x497a5c09, 0x0201f800, 0x000202da, | ||
6903 | 0x0201f000, 0x00107911, 0x0201f800, 0x00109037, | ||
6904 | 0x02020800, 0x0010664f, 0x0201f000, 0x00107911, | ||
6905 | 0x0201f800, 0x00109037, 0x04000004, 0x49425a06, | ||
6906 | 0x0201f800, 0x000202da, 0x59325817, 0x0201f800, | ||
6907 | 0x001007fd, 0x0201f000, 0x00107911, 0x598c000d, | ||
6908 | 0x81300580, 0x04000003, 0x497a6007, 0x1c01f000, | ||
6909 | 0x59c40004, 0x82000500, 0x0000000c, 0x04000005, | ||
6910 | 0x4a038804, 0x0000000c, 0x497b2807, 0x0401f00a, | ||
6911 | 0x0401facd, 0x59300403, 0x82000d80, 0x00000040, | ||
6912 | 0x04000004, 0x82000580, 0x00000042, 0x04020002, | ||
6913 | 0x497a6007, 0x0201f800, 0x001070b9, 0x80000580, | ||
6914 | 0x1c01f000, 0x59300804, 0x8c040d3e, 0x04020004, | ||
6915 | 0x82000540, 0x00000001, 0x0401f005, 0x4933c857, | ||
6916 | 0x84040d3e, 0x48066004, 0x80000580, 0x1c01f000, | ||
6917 | 0x59300804, 0x8c040d20, 0x04020004, 0x82000540, | ||
6918 | 0x00000001, 0x1c01f000, 0x4933c857, 0x4d380000, | ||
6919 | 0x59300804, 0x84040d20, 0x48066004, 0x42027000, | ||
6920 | 0x00000049, 0x59300203, 0x82000580, 0x00000003, | ||
6921 | 0x04000003, 0x42027000, 0x00000013, 0x0201f800, | ||
6922 | 0x000207a1, 0x80000580, 0x5c027000, 0x1c01f000, | ||
6923 | 0x59300017, 0x81480580, 0x04020003, 0x59300018, | ||
6924 | 0x814c0580, 0x1c01f000, 0x4d2c0000, 0x4d300000, | ||
6925 | 0x0401f8c9, 0x4df00000, 0x0201f800, 0x00106062, | ||
6926 | 0x59900001, 0x82000500, 0x00000003, 0x0c01f001, | ||
6927 | 0x00106bba, 0x00106b9a, 0x00106b98, 0x00106b98, | ||
6928 | 0x0201f800, 0x001005d8, 0x59926004, 0x0401f88e, | ||
6929 | 0x813261c0, 0x0400001d, 0x59300004, 0x8c000516, | ||
6930 | 0x04000004, 0x59325808, 0x497a5808, 0x497a5809, | ||
6931 | 0x0401f88e, 0x59300001, 0x800001c0, 0x0400000e, | ||
6932 | 0x497a6001, 0x42003000, 0x0000bf2e, 0x58180801, | ||
6933 | 0x800409c0, 0x04020004, 0x48003001, 0x48003000, | ||
6934 | 0x0401f00a, 0x58180800, 0x48000800, 0x48003000, | ||
6935 | 0x0401f006, 0x59300809, 0x800409c0, 0x02000800, | ||
6936 | 0x001005d8, 0x4978080c, 0x5c03e000, 0x04000890, | ||
6937 | 0x5c026000, 0x5c025800, 0x1c01f000, 0x4d300000, | ||
6938 | 0x497b2807, 0x0401f894, 0x4df00000, 0x598c0000, | ||
6939 | 0x82000500, 0x00000007, 0x4803c857, 0x0c01f001, | ||
6940 | 0x00106bef, 0x00106bd2, 0x00106bdb, 0x00106bdf, | ||
6941 | 0x00106bea, 0x00106bef, 0x00106bd0, 0x00106bd0, | ||
6942 | 0x0201f800, 0x001005d8, 0x598c000d, 0x80026540, | ||
6943 | 0x04000004, 0x0401f81e, 0x02020800, 0x001005d8, | ||
6944 | 0x0201f800, 0x001070b9, 0x0401f015, 0x0401f827, | ||
6945 | 0x0201f800, 0x001070b9, 0x0401f011, 0x598c000d, | ||
6946 | 0x80026540, 0x0400000e, 0x0401f838, 0x04000004, | ||
6947 | 0x0401f80f, 0x04000002, 0x0401f81c, 0x0201f800, | ||
6948 | 0x001070b9, 0x0401f006, 0x0401f830, 0x02020800, | ||
6949 | 0x001005d8, 0x0201f800, 0x001070b9, 0x5c03e000, | ||
6950 | 0x0400085b, 0x5c026000, 0x1c01f000, 0x598c0009, | ||
6951 | 0x81300580, 0x0402000c, 0x0401f84e, 0x0401f83b, | ||
6952 | 0x59300000, 0x800001c0, 0x04000004, 0x48031809, | ||
6953 | 0x497a6000, 0x0401f003, 0x497b1809, 0x497b1808, | ||
6954 | 0x80000580, 0x1c01f000, 0x4d2c0000, 0x59300406, | ||
6955 | 0x82000580, 0x00000003, 0x04020012, 0x598c000b, | ||
6956 | 0x81300580, 0x0402000f, 0x0401f83a, 0x59325808, | ||
6957 | 0x497a5808, 0x497a5809, 0x0401f824, 0x59300000, | ||
6958 | 0x800001c0, 0x04000004, 0x4803180b, 0x497a6000, | ||
6959 | 0x0401f003, 0x497b180a, 0x497b180b, 0x80000580, | ||
6960 | 0x5c025800, 0x1c01f000, 0x598c0005, 0x81300580, | ||
6961 | 0x0402000c, 0x0401f827, 0x0401f814, 0x59300000, | ||
6962 | 0x800001c0, 0x04000004, 0x48031805, 0x497a6000, | ||
6963 | 0x0401f003, 0x497b1805, 0x497b1804, 0x80000580, | ||
6964 | 0x1c01f000, 0x4a032001, 0x00000000, 0x497b2004, | ||
6965 | 0x497b2005, 0x59900006, 0x82000500, 0x0000ffff, | ||
6966 | 0x48032006, 0x1c01f000, 0x4c040000, 0x59300004, | ||
6967 | 0x82000500, 0x7ffeffff, 0x48026004, 0x59bc00e4, | ||
6968 | 0x8c000514, 0x04000009, 0x42000800, 0x0000bf00, | ||
6969 | 0x58040012, 0x81300580, 0x04020004, 0x49780812, | ||
6970 | 0x4a0378e4, 0x00000800, 0x5c000800, 0x1c01f000, | ||
6971 | 0x4803c856, 0x598c000c, 0x80000540, 0x04000003, | ||
6972 | 0x80000040, 0x4803180c, 0x1c01f000, 0x59bc00ea, | ||
6973 | 0x82000500, 0x00000007, 0x82000580, 0x00000003, | ||
6974 | 0x04020004, 0x4803c856, 0x4a0378e8, 0x00000001, | ||
6975 | 0x1c01f000, 0x59bc00ea, 0x82000500, 0x00000007, | ||
6976 | 0x82000580, 0x00000001, 0x04020011, 0x4803c856, | ||
6977 | 0x42000800, 0x00000000, 0x0401f80e, 0x42000800, | ||
6978 | 0x00001000, 0x59bc00ea, 0x82000500, 0x00000007, | ||
6979 | 0x82000580, 0x00000003, 0x04000005, 0x80040840, | ||
6980 | 0x040207f9, 0x0201f800, 0x001005d8, 0x1c01f000, | ||
6981 | 0x59bc00ea, 0x82000500, 0x00000007, 0x82000580, | ||
6982 | 0x00000001, 0x02020800, 0x001005d8, 0x59bc00ea, | ||
6983 | 0x8c000516, 0x040207fe, 0x480778e1, 0x1c01f000, | ||
6984 | 0x59bc00ea, 0x8c000516, 0x040207fe, 0x480778e1, | ||
6985 | 0x59bc00ea, 0x8c000516, 0x040207fe, 0x480b78e1, | ||
6986 | 0x1c01f000, 0x82000d00, 0x80000018, 0x02020800, | ||
6987 | 0x001005d0, 0x0201f800, 0x001005d8, 0x00106c97, | ||
6988 | 0x00106d3b, 0x00106d55, 0x00106c97, 0x00106c99, | ||
6989 | 0x00106cba, 0x00106cd9, 0x00106d0d, 0x00106c97, | ||
6990 | 0x00106d39, 0x00106c97, 0x00106c97, 0x00106c97, | ||
6991 | 0x00106c97, 0x00106c97, 0x00106c97, 0x0201f800, | ||
6992 | 0x001005d8, 0x4d300000, 0x4d900000, 0x4dd00000, | ||
6993 | 0x4da40000, 0x4d140000, 0x0201f800, 0x001070d8, | ||
6994 | 0x59bc00ea, 0x8c000510, 0x040007fe, 0x59be60e0, | ||
6995 | 0x59300004, 0x8c000520, 0x04000011, 0x82000500, | ||
6996 | 0xfffefeff, 0x48026004, 0x4a026203, 0x00000003, | ||
6997 | 0x0401ffa9, 0x0201f800, 0x00100fd0, 0x5c022800, | ||
6998 | 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c026000, | ||
6999 | 0x4a0378e4, 0x00000008, 0x0401f795, 0x84000510, | ||
7000 | 0x48026004, 0x0401f7f6, 0x4d300000, 0x4d900000, | ||
7001 | 0x4dd00000, 0x4da40000, 0x4d140000, 0x0201f800, | ||
7002 | 0x001070d8, 0x59bc00ea, 0x8c000510, 0x040007fe, | ||
7003 | 0x59be60e0, 0x59300004, 0x8c000520, 0x0400000f, | ||
7004 | 0x82000500, 0xfffefeff, 0x48026004, 0x0401ff8a, | ||
7005 | 0x0201f800, 0x0010100e, 0x5c022800, 0x5c034800, | ||
7006 | 0x5c03a000, 0x5c032000, 0x5c026000, 0x4a0378e4, | ||
7007 | 0x00000008, 0x0401f776, 0x84000510, 0x48026004, | ||
7008 | 0x0401f7f6, 0x4d300000, 0x4d2c0000, 0x4d340000, | ||
7009 | 0x4da40000, 0x4cd00000, 0x59bc00ea, 0x8c000510, | ||
7010 | 0x040007fe, 0x59be60e0, 0x813261c0, 0x02000800, | ||
7011 | 0x001005d8, 0x59300004, 0x8c000520, 0x0400001d, | ||
7012 | 0x82000500, 0xfffefeff, 0x48026004, 0x59326809, | ||
7013 | 0x42034800, 0x0010b544, 0x04011000, 0x4a03c840, | ||
7014 | 0x0010b54b, 0x4a03c842, 0x00000012, 0x04011000, | ||
7015 | 0x4a03c840, 0x0010b55d, 0x4a03c842, 0x000000ff, | ||
7016 | 0x04011000, 0x4a03c840, 0x0010b65c, 0x4a03c842, | ||
7017 | 0x000000ff, 0x0401fbf2, 0x5c01a000, 0x5c034800, | ||
7018 | 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000, | ||
7019 | 0x84000510, 0x48026004, 0x5c01a000, 0x5c034800, | ||
7020 | 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000, | ||
7021 | 0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000, | ||
7022 | 0x4cd00000, 0x4d900000, 0x4dd00000, 0x4da40000, | ||
7023 | 0x4d140000, 0x0401fbc3, 0x59bc00ea, 0x8c000510, | ||
7024 | 0x040007fe, 0x59be60e0, 0x813261c0, 0x02000800, | ||
7025 | 0x001005d8, 0x59300004, 0x8c000520, 0x0400000f, | ||
7026 | 0x82000500, 0xfffefeff, 0x48026004, 0x0201f800, | ||
7027 | 0x0010783a, 0x5c022800, 0x5c034800, 0x5c03a000, | ||
7028 | 0x5c032000, 0x5c01a000, 0x5c026800, 0x5c025800, | ||
7029 | 0x5c026000, 0x1c01f000, 0x84000510, 0x48026004, | ||
7030 | 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, | ||
7031 | 0x5c01a000, 0x5c026800, 0x5c025800, 0x5c026000, | ||
7032 | 0x1c01f000, 0x0201f800, 0x001005d8, 0x4d300000, | ||
7033 | 0x4d380000, 0x42000000, 0x0010b8c4, 0x0201f800, | ||
7034 | 0x0010aa47, 0x0401ff14, 0x598e600d, 0x59c40004, | ||
7035 | 0x8c000506, 0x04000004, 0x0401f8db, 0x4a038804, | ||
7036 | 0x00000008, 0x813261c0, 0x04000006, 0x0401fb87, | ||
7037 | 0x42027000, 0x00000014, 0x0201f800, 0x000207a1, | ||
7038 | 0x4a0378e4, 0x00000002, 0x5c027000, 0x5c026000, | ||
7039 | 0x0401f6f7, 0x4d180000, 0x4d300000, 0x4d380000, | ||
7040 | 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, | ||
7041 | 0x0401fef9, 0x417a3000, 0x59c40804, 0x83180400, | ||
7042 | 0x0010709f, 0x50000000, 0x80040500, 0x0400001b, | ||
7043 | 0x42000000, 0x0010b8c5, 0x0201f800, 0x0010aa47, | ||
7044 | 0x0401fb70, 0x59926004, 0x0401f859, 0x83180400, | ||
7045 | 0x0010709f, 0x50000000, 0x48038804, 0x813261c0, | ||
7046 | 0x0400000a, 0x59300004, 0x8c00050c, 0x04020003, | ||
7047 | 0x4a026203, 0x00000003, 0x42027000, 0x0000004a, | ||
7048 | 0x0201f800, 0x000207a1, 0x59c40004, 0x82000500, | ||
7049 | 0x00f80000, 0x04000005, 0x811a3000, 0x83180480, | ||
7050 | 0x00000005, 0x040017dd, 0x4a0378e4, 0x00000008, | ||
7051 | 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, | ||
7052 | 0x5c027000, 0x5c026000, 0x5c023000, 0x0401f6c0, | ||
7053 | 0x4d2c0000, 0x4d340000, 0x59326809, 0x598c0800, | ||
7054 | 0x82040580, 0x00000004, 0x04020004, 0x838c1400, | ||
7055 | 0x00000005, 0x0401f00c, 0x82040580, 0x00000001, | ||
7056 | 0x04020004, 0x838c1400, 0x00000009, 0x0401f006, | ||
7057 | 0x82040580, 0x00000002, 0x04020022, 0x838c1400, | ||
7058 | 0x0000000b, 0x41306800, 0x58340000, 0x80007d40, | ||
7059 | 0x0400001c, 0x583c0009, 0x81340580, 0x04020006, | ||
7060 | 0x403c6800, 0x583c0000, 0x80007d40, 0x040207fa, | ||
7061 | 0x0401f014, 0x4933c857, 0x483fc857, 0x583c0000, | ||
7062 | 0x48006800, 0x49307800, 0x443c1000, 0x80000580, | ||
7063 | 0x4803180d, 0x4803180f, 0x598c0000, 0x82000580, | ||
7064 | 0x00000003, 0x04000003, 0x4a031800, 0x00000000, | ||
7065 | 0x80000580, 0x5c026800, 0x5c025800, 0x1c01f000, | ||
7066 | 0x82000540, 0x00000001, 0x0401f7fb, 0x491bc857, | ||
7067 | 0x59c80840, 0x82040540, 0x00000010, 0x48039040, | ||
7068 | 0x59c41008, 0x82080500, 0xffffff7f, 0x48038808, | ||
7069 | 0x4c040000, 0x4c080000, 0x0401fabb, 0x04020007, | ||
7070 | 0x0401fabf, 0x04000022, 0x48038804, 0x0201f800, | ||
7071 | 0x0010107a, 0x0401f042, 0x4a038803, 0x00000008, | ||
7072 | 0x59c40003, 0x82000500, 0x00000003, 0x040007fd, | ||
7073 | 0x8c000502, 0x04020007, 0x0401fab1, 0x04000014, | ||
7074 | 0x48038804, 0x0201f800, 0x0010107a, 0x0401f034, | ||
7075 | 0x59c80040, 0x8400056a, 0x48039040, 0x59c80040, | ||
7076 | 0x8c00052a, 0x040207fe, 0x59c40005, 0x82000500, | ||
7077 | 0xc0000000, 0x04000006, 0x59c400a3, 0x84000540, | ||
7078 | 0x480388a3, 0x4a038805, 0xc0000000, 0x0201f800, | ||
7079 | 0x0010101d, 0x4a03a005, 0x30000000, 0x59d00006, | ||
7080 | 0x4a03a005, 0x30000000, 0x59900006, 0x82000500, | ||
7081 | 0xffff0000, 0x48032006, 0x59d00005, 0x8c000504, | ||
7082 | 0x040207fe, 0x42000800, 0x00007600, 0x83180540, | ||
7083 | 0x60000000, 0x480008a1, 0x811800dc, 0x59c80840, | ||
7084 | 0x80040540, 0x48039040, 0x82000540, 0x00003000, | ||
7085 | 0x48039040, 0x59c80040, 0x82000500, 0x00003000, | ||
7086 | 0x040207fd, 0x0201f800, 0x00101068, 0x83180400, | ||
7087 | 0x0010709f, 0x50000000, 0x48038804, 0x80000580, | ||
7088 | 0x4df00000, 0x0201f800, 0x00106062, 0x5c03e000, | ||
7089 | 0x5c001000, 0x5c000800, 0x480b8808, 0x48079040, | ||
7090 | 0x1c01f000, 0x4803c856, 0x59c80840, 0x82040540, | ||
7091 | 0x00000010, 0x48039040, 0x59c41008, 0x82080500, | ||
7092 | 0xffffff7f, 0x48038808, 0x4c040000, 0x4c080000, | ||
7093 | 0x59c40004, 0x82000500, 0x00000003, 0x04020010, | ||
7094 | 0x59c40004, 0x82000500, 0x0000000c, 0x04000005, | ||
7095 | 0x4a038804, 0x0000000c, 0x8c000504, 0x0401f025, | ||
7096 | 0x59c80040, 0x8400056e, 0x48039040, 0x59c80040, | ||
7097 | 0x8c00052e, 0x040207fe, 0x0401f01e, 0x4a038803, | ||
7098 | 0x00000008, 0x59c40003, 0x82000500, 0x00000003, | ||
7099 | 0x040007fd, 0x8c000502, 0x04020006, 0x59c40004, | ||
7100 | 0x4a038804, 0x0000000c, 0x8c000504, 0x0401f011, | ||
7101 | 0x59c80040, 0x8400056a, 0x48039040, 0x59c80040, | ||
7102 | 0x8c00052a, 0x040207fe, 0x59c40005, 0x82000500, | ||
7103 | 0xc0000000, 0x04000007, 0x59c400a3, 0x84000540, | ||
7104 | 0x480388a3, 0x4a038805, 0xc0000000, 0x80000580, | ||
7105 | 0x497b2807, 0x5c001000, 0x5c000800, 0x480b8808, | ||
7106 | 0x48079040, 0x1c01f000, 0x4933c857, 0x4d900000, | ||
7107 | 0x4dd00000, 0x4da40000, 0x4d140000, 0x0401fdee, | ||
7108 | 0x4df00000, 0x0401fa6f, 0x59900004, 0x800001c0, | ||
7109 | 0x04000011, 0x81300580, 0x0402000f, 0x59300004, | ||
7110 | 0x84000520, 0x48026004, 0x0401ff51, 0x04020009, | ||
7111 | 0x5c03e000, 0x04000dd6, 0x80000580, 0x5c022800, | ||
7112 | 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, | ||
7113 | 0x0401fd0e, 0x42027000, 0x00000049, 0x59300004, | ||
7114 | 0x84000520, 0x48026004, 0x8c00050c, 0x02020800, | ||
7115 | 0x000207a1, 0x5c03e000, 0x04000dc5, 0x82000540, | ||
7116 | 0x00000001, 0x5c022800, 0x5c034800, 0x5c03a000, | ||
7117 | 0x5c032000, 0x1c01f000, 0x4933c857, 0x0401fdc6, | ||
7118 | 0x4df00000, 0x598c000d, 0x80026540, 0x04000012, | ||
7119 | 0x59300004, 0x84000520, 0x48026004, 0x0401ff8a, | ||
7120 | 0x04000017, 0x0401fd26, 0x42027000, 0x00000013, | ||
7121 | 0x59300004, 0x8c00050c, 0x02020800, 0x000207a1, | ||
7122 | 0x5c03e000, 0x04000daa, 0x82000540, 0x00000001, | ||
7123 | 0x1c01f000, 0x836c1580, 0x00000001, 0x040007f9, | ||
7124 | 0x836c1580, 0x00000004, 0x040007f6, 0x42001000, | ||
7125 | 0x00104148, 0x0201f800, 0x00105f90, 0x5c03e000, | ||
7126 | 0x04000d9b, 0x80000580, 0x1c01f000, 0x4d300000, | ||
7127 | 0x4d180000, 0x4d3c0000, 0x0401fd9f, 0x4df00000, | ||
7128 | 0x4a0378e4, 0x0000000f, 0x0401f9ff, 0x417a3000, | ||
7129 | 0x59926004, 0x813261c0, 0x04000010, 0x417a7800, | ||
7130 | 0x0201f800, 0x001048d9, 0x0400000a, 0x59300c06, | ||
7131 | 0x82040580, 0x00000003, 0x04000004, 0x82040580, | ||
7132 | 0x00000006, 0x04020003, 0x42027800, 0x00000002, | ||
7133 | 0x0201f800, 0x00108be3, 0x811a3000, 0x83180480, | ||
7134 | 0x00000005, 0x040017eb, 0x42000800, 0x00000040, | ||
7135 | 0x0201f800, 0x00101345, 0x4a0378e4, 0x0000000a, | ||
7136 | 0x5c03e000, 0x04000d72, 0x5c027800, 0x5c023000, | ||
7137 | 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, | ||
7138 | 0x0401fd75, 0x4df00000, 0x59c80840, 0x82040540, | ||
7139 | 0x00000010, 0x48039040, 0x59c41008, 0x82080500, | ||
7140 | 0xffffff7f, 0x48038808, 0x4c040000, 0x4c080000, | ||
7141 | 0x42001000, 0x00000003, 0x0401f9c2, 0x598e600d, | ||
7142 | 0x813261c0, 0x04020f9d, 0x040009c7, 0x497b2807, | ||
7143 | 0x0401f80a, 0x5c001000, 0x5c000800, 0x480b8808, | ||
7144 | 0x84040d74, 0x48079040, 0x5c03e000, 0x04000d50, | ||
7145 | 0x5c026000, 0x1c01f000, 0x4d380000, 0x4d180000, | ||
7146 | 0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000, | ||
7147 | 0x4d140000, 0x59c41004, 0x480bc857, 0x82080500, | ||
7148 | 0x00003ff0, 0x04000025, 0x417a3000, 0x4c080000, | ||
7149 | 0x0201f800, 0x00106062, 0x5c001000, 0x82080500, | ||
7150 | 0x00000210, 0x04020004, 0x811a3000, 0x80081102, | ||
7151 | 0x0401f7f7, 0x0401f9c3, 0x59926004, 0x4933c857, | ||
7152 | 0x813261c0, 0x04020005, 0x59c400a3, 0x8c00051a, | ||
7153 | 0x02000800, 0x001005d8, 0x0401fea5, 0x04000009, | ||
7154 | 0x0401fc6a, 0x42027000, 0x00000049, 0x59300004, | ||
7155 | 0x8c00050c, 0x02020800, 0x000207a1, 0x0401f007, | ||
7156 | 0x42027000, 0x0000004a, 0x4a026203, 0x00000003, | ||
7157 | 0x0201f800, 0x000207a1, 0x5c022800, 0x5c034800, | ||
7158 | 0x5c03a000, 0x5c032000, 0x5c026000, 0x5c023000, | ||
7159 | 0x5c027000, 0x1c01f000, 0x4d300000, 0x4d180000, | ||
7160 | 0x4d900000, 0x0401fd1c, 0x42001000, 0x00000000, | ||
7161 | 0x598c0000, 0x82000580, 0x00000005, 0x04000971, | ||
7162 | 0x417a3000, 0x811b20c8, 0x83932400, 0x0000bf32, | ||
7163 | 0x59900001, 0x82000580, 0x00000001, 0x0402000d, | ||
7164 | 0x42000800, 0x000007d0, 0x59926004, 0x59300011, | ||
7165 | 0x82000500, 0xfff00000, 0x80000540, 0x04000003, | ||
7166 | 0x42000800, 0x00001b58, 0x0201f800, 0x00106054, | ||
7167 | 0x811a3000, 0x83180480, 0x00000005, 0x040017ea, | ||
7168 | 0x59c81040, 0x84081534, 0x480b9040, 0x0401fcf0, | ||
7169 | 0x5c032000, 0x5c023000, 0x5c026000, 0x1c01f000, | ||
7170 | 0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000, | ||
7171 | 0x4d140000, 0x4d380000, 0x0401fcef, 0x4df00000, | ||
7172 | 0x59300004, 0x8c00053e, 0x04020007, 0x8c000520, | ||
7173 | 0x04000025, 0x0201f800, 0x00106b6c, 0x04000022, | ||
7174 | 0x0401f02a, 0x598c000d, 0x81300580, 0x04000011, | ||
7175 | 0x0201f800, 0x00108cd6, 0x04020024, 0x0401f918, | ||
7176 | 0x04000022, 0x48038804, 0x0401f95e, 0x0201f800, | ||
7177 | 0x0010107a, 0x0401fc0d, 0x42027000, 0x00000049, | ||
7178 | 0x59300004, 0x8c00050c, 0x0402000d, 0x0401f00e, | ||
7179 | 0x59c40004, 0x8c000504, 0x04000014, 0x4a038804, | ||
7180 | 0x00000004, 0x0401fc36, 0x42027000, 0x00000013, | ||
7181 | 0x59300004, 0x8c00050c, 0x04000003, 0x0201f800, | ||
7182 | 0x000207a1, 0x5c03e000, 0x04000cb9, 0x5c027000, | ||
7183 | 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, | ||
7184 | 0x80000580, 0x1c01f000, 0x5c03e000, 0x04000cb0, | ||
7185 | 0x5c027000, 0x5c022800, 0x5c034800, 0x5c03a000, | ||
7186 | 0x5c032000, 0x82000540, 0x00000001, 0x1c01f000, | ||
7187 | 0x497b2807, 0x0401fcb0, 0x59c400af, 0x800001c0, | ||
7188 | 0x04020004, 0x0401fca2, 0x0201f000, 0x001014fb, | ||
7189 | 0x598c000f, 0x82001480, 0x00000002, 0x04021007, | ||
7190 | 0x80000000, 0x4803180f, 0x80000580, 0x0201f800, | ||
7191 | 0x0010604d, 0x0400000e, 0x0401fed8, 0x0402000c, | ||
7192 | 0x0401fdd4, 0x0400000a, 0x0201f800, 0x0010a9c7, | ||
7193 | 0x0401f916, 0x4d380000, 0x42027000, 0x00000014, | ||
7194 | 0x0201f800, 0x000207a1, 0x5c027000, 0x0401fc88, | ||
7195 | 0x0201f000, 0x001014fb, 0x4d900000, 0x4dd00000, | ||
7196 | 0x4da40000, 0x4d140000, 0x4d300000, 0x0201f800, | ||
7197 | 0x00106062, 0x0401fc88, 0x59c400af, 0x800001c0, | ||
7198 | 0x04000027, 0x0401f907, 0x59926004, 0x4933c857, | ||
7199 | 0x59300004, 0x8c000516, 0x0400000b, 0x0401fe8b, | ||
7200 | 0x0402001f, 0x0201f800, 0x00106b8a, 0x0401fc70, | ||
7201 | 0x42000800, 0x80000804, 0x0201f800, 0x00106721, | ||
7202 | 0x0401f017, 0x42001800, 0x00007530, 0x0401f8c1, | ||
7203 | 0x04020004, 0x0201f800, 0x00106052, 0x0401f010, | ||
7204 | 0x0401fe7a, 0x0402000e, 0x0201f800, 0x0010a9c7, | ||
7205 | 0x59300004, 0x8c00050c, 0x04020003, 0x4a026203, | ||
7206 | 0x00000003, 0x4d380000, 0x42027000, 0x0000004a, | ||
7207 | 0x0201f800, 0x000207a1, 0x5c027000, 0x0401fc54, | ||
7208 | 0x5c026000, 0x5c022800, 0x5c034800, 0x5c03a000, | ||
7209 | 0x5c032000, 0x0201f000, 0x001014fb, 0x4d900000, | ||
7210 | 0x4dd00000, 0x4da40000, 0x4d140000, 0x4d300000, | ||
7211 | 0x4d2c0000, 0x0401fc50, 0x0401f8d2, 0x59926004, | ||
7212 | 0x4933c857, 0x0401f880, 0x04000016, 0x0201f800, | ||
7213 | 0x00106062, 0x813261c0, 0x04000034, 0x59325808, | ||
7214 | 0x812e59c0, 0x02000800, 0x001005d8, 0x0201f800, | ||
7215 | 0x0010513b, 0x0402001d, 0x592c0208, 0x84000550, | ||
7216 | 0x48025a08, 0x0201f800, 0x00105258, 0x04020027, | ||
7217 | 0x592c0208, 0x84000510, 0x48025a08, 0x0401f023, | ||
7218 | 0x0201f800, 0x00106052, 0x0401f020, 0x0201f800, | ||
7219 | 0x0010a9c7, 0x0401fd9e, 0x592c0208, 0x84000550, | ||
7220 | 0x48025a08, 0x4d380000, 0x42027000, 0x0000004a, | ||
7221 | 0x4a026203, 0x00000003, 0x0201f800, 0x000207a1, | ||
7222 | 0x5c027000, 0x0401f011, 0x59900006, 0x82000500, | ||
7223 | 0xffff0000, 0x040207ee, 0x59c408af, 0x82040480, | ||
7224 | 0x000003e8, 0x040217ea, 0x59900006, 0x82000400, | ||
7225 | 0x00010000, 0x48032006, 0x0201f800, 0x00106052, | ||
7226 | 0x0201f800, 0x0010411d, 0x5c025800, 0x5c026000, | ||
7227 | 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, | ||
7228 | 0x0401f403, 0x4d300000, 0x4d2c0000, 0x0401fc0a, | ||
7229 | 0x598e600d, 0x4933c857, 0x59c41004, 0x8c081500, | ||
7230 | 0x04000007, 0x0201f800, 0x0010513b, 0x04020007, | ||
7231 | 0x0201f800, 0x00105258, 0x0402002f, 0x0201f800, | ||
7232 | 0x0010604d, 0x0401f02c, 0x598c000f, 0x80000540, | ||
7233 | 0x04020011, 0x59c408af, 0x82040480, 0x000003e8, | ||
7234 | 0x0402100d, 0x598c080f, 0x80040800, 0x4807180f, | ||
7235 | 0x0201f800, 0x0010604d, 0x42000000, 0x0010b852, | ||
7236 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x0010411d, | ||
7237 | 0x0401f019, 0x0401fdb4, 0x813261c0, 0x04020003, | ||
7238 | 0x0401f849, 0x0401f014, 0x0201f800, 0x0010a9c7, | ||
7239 | 0x59300406, 0x82000580, 0x00000003, 0x04020007, | ||
7240 | 0x59325808, 0x812e59c0, 0x04000004, 0x592c0208, | ||
7241 | 0x84000550, 0x48025a08, 0x0401f854, 0x4d380000, | ||
7242 | 0x42027000, 0x00000014, 0x0201f800, 0x000207a1, | ||
7243 | 0x5c027000, 0x5c025800, 0x5c026000, 0x0201f000, | ||
7244 | 0x00106c4b, 0x59c40804, 0x83180400, 0x00107095, | ||
7245 | 0x50000000, 0x80040500, 0x1c01f000, 0x59c40804, | ||
7246 | 0x83180400, 0x0010709a, 0x50000000, 0x80040500, | ||
7247 | 0x1c01f000, 0x00000210, 0x00000420, 0x00000840, | ||
7248 | 0x00001080, 0x00002100, 0x00004000, 0x00008000, | ||
7249 | 0x00010000, 0x00020000, 0x00040000, 0x00080000, | ||
7250 | 0x00100000, 0x00200000, 0x00400000, 0x00800000, | ||
7251 | 0x59900806, 0x80040120, 0x800c0480, 0x04021004, | ||
7252 | 0x82000540, 0x00000001, 0x0401f005, 0x82040c00, | ||
7253 | 0x00010000, 0x48072006, 0x80000580, 0x1c01f000, | ||
7254 | 0x480bc857, 0x0201f800, 0x00106c55, 0x4df00000, | ||
7255 | 0x480b1800, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
7256 | 0x1c01f000, 0x4803c856, 0x0201f800, 0x00106c55, | ||
7257 | 0x4df00000, 0x497b180d, 0x497b1803, 0x497b180e, | ||
7258 | 0x497b180f, 0x497b1810, 0x598c0000, 0x82000580, | ||
7259 | 0x00000003, 0x04000009, 0x836c0580, 0x00000002, | ||
7260 | 0x04020004, 0x4a031800, 0x00000005, 0x0401f003, | ||
7261 | 0x4a031800, 0x00000000, 0x5c03e000, 0x02000800, | ||
7262 | 0x00106c4b, 0x1c01f000, 0x59300004, 0x8c00050c, | ||
7263 | 0x04020003, 0x4a026203, 0x00000001, 0x1c01f000, | ||
7264 | 0x83180480, 0x00000005, 0x02021800, 0x001005d8, | ||
7265 | 0x491bc857, 0x811b20c8, 0x83932400, 0x0000bf32, | ||
7266 | 0x811ba0ca, 0x83d3a400, 0x00007600, 0x83180400, | ||
7267 | 0x001070ea, 0x50034800, 0x811a28c2, 0x83162c00, | ||
7268 | 0x00006100, 0x1c01f000, 0x0010b75b, 0x0010b772, | ||
7269 | 0x0010b789, 0x0010b7a0, 0x0010b7b7, 0x4933c857, | ||
7270 | 0x59300406, 0x82000c80, 0x00000012, 0x04021016, | ||
7271 | 0x4803c857, 0x04011000, 0x0c01f001, 0x00107109, | ||
7272 | 0x00107198, 0x001074d1, 0x00107556, 0x00107198, | ||
7273 | 0x001074d1, 0x00107556, 0x00107109, 0x00107198, | ||
7274 | 0x00107109, 0x00107109, 0x00107109, 0x00107109, | ||
7275 | 0x00107109, 0x00107109, 0x00107109, 0x0010710f, | ||
7276 | 0x0010710f, 0x0201f800, 0x00106c55, 0x0201f800, | ||
7277 | 0x00106bbf, 0x0201f000, 0x00106c4b, 0x42001000, | ||
7278 | 0x0010b7f6, 0x50081000, 0x4930100c, 0x58080002, | ||
7279 | 0x82000580, 0x00000100, 0x04020032, 0x59325808, | ||
7280 | 0x812e59c0, 0x02000800, 0x001005d8, 0x59326809, | ||
7281 | 0x813669c0, 0x04000019, 0x592c040b, 0x82000500, | ||
7282 | 0x0000e000, 0x04000003, 0x0401fba8, 0x0401f002, | ||
7283 | 0x0401fb98, 0x42001000, 0x0010b7f6, 0x50081000, | ||
7284 | 0x4930100b, 0x492c100a, 0x82d00400, 0x00000006, | ||
7285 | 0x48001003, 0x592c000d, 0x80000104, 0x48001004, | ||
7286 | 0x592c000e, 0x48001007, 0x592c000f, 0x48001008, | ||
7287 | 0x0201f000, 0x00100858, 0x42026800, 0x0010be0d, | ||
7288 | 0x592c080a, 0x48066802, 0x82040500, 0x00ffff00, | ||
7289 | 0x04000007, 0x497a6a12, 0x59a81010, 0x82081500, | ||
7290 | 0x00ffff00, 0x80080580, 0x040207dc, 0x82040d00, | ||
7291 | 0x000000ff, 0x800408d0, 0x48066a12, 0x0401f7d7, | ||
7292 | 0x1c01f000, 0x4d2c0000, 0x4d300000, 0x4c580000, | ||
7293 | 0x4c540000, 0x4c500000, 0x5832580a, 0x812e59c0, | ||
7294 | 0x02000800, 0x001005d8, 0x58300002, 0x4a006002, | ||
7295 | 0x00000100, 0x82000580, 0x00000100, 0x0402001c, | ||
7296 | 0x5830000b, 0x5832600c, 0x81300580, 0x04020010, | ||
7297 | 0x0401f828, 0x04020010, 0x592c080d, 0x80040904, | ||
7298 | 0x4004b000, 0x4200a000, 0x0010b54b, 0x4050a800, | ||
7299 | 0x0201f800, 0x0010ab28, 0x42001000, 0x0000dc00, | ||
7300 | 0x0201f800, 0x001078bc, 0x0401f003, 0x0401f819, | ||
7301 | 0x04000fa3, 0x5c00a000, 0x5c00a800, 0x5c00b000, | ||
7302 | 0x5c026000, 0x5c025800, 0x1c01f000, 0x5830000b, | ||
7303 | 0x5832600c, 0x81300580, 0x040207f5, 0x0401f80d, | ||
7304 | 0x040207f5, 0x0201f800, 0x001068d3, 0x02020800, | ||
7305 | 0x001005d8, 0x4a025a06, 0x00000002, 0x0201f800, | ||
7306 | 0x000202da, 0x0201f800, 0x00107911, 0x0401f7ea, | ||
7307 | 0x0201f800, 0x00106c55, 0x4df00000, 0x598c000d, | ||
7308 | 0x81300580, 0x04020009, 0x598c0005, 0x81300580, | ||
7309 | 0x04020006, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
7310 | 0x80000580, 0x1c01f000, 0x5c03e000, 0x02000800, | ||
7311 | 0x00106c4b, 0x82000540, 0x00000001, 0x1c01f000, | ||
7312 | 0x59300403, 0x82000c80, 0x00000056, 0x02021800, | ||
7313 | 0x001005d8, 0x4803c857, 0x0c01f001, 0x00107302, | ||
7314 | 0x0010731d, 0x0010732e, 0x00107431, 0x001073f1, | ||
7315 | 0x001073f5, 0x00107406, 0x0010741a, 0x0010740f, | ||
7316 | 0x0010741a, 0x00107455, 0x0010741a, 0x00107497, | ||
7317 | 0x0010741a, 0x001074a5, 0x0010741a, 0x0010740f, | ||
7318 | 0x0010741a, 0x001074a9, 0x001071f5, 0x001071f5, | ||
7319 | 0x001071f5, 0x001071f5, 0x001071f5, 0x001071f5, | ||
7320 | 0x001071f5, 0x001071f5, 0x001071f5, 0x001071f5, | ||
7321 | 0x001071f5, 0x00107574, 0x00107593, 0x0010759d, | ||
7322 | 0x001071f5, 0x001075b3, 0x00107406, 0x001071f5, | ||
7323 | 0x00107406, 0x0010741a, 0x001071f5, 0x0010732e, | ||
7324 | 0x00107431, 0x001071f5, 0x00107603, 0x0010741a, | ||
7325 | 0x001071f5, 0x00107613, 0x0010741a, 0x001071f5, | ||
7326 | 0x0010740f, 0x001072f3, 0x001071f7, 0x001071f5, | ||
7327 | 0x0010762a, 0x0010765d, 0x001076d7, 0x001071f5, | ||
7328 | 0x001076e7, 0x00107404, 0x001076da, 0x001071f5, | ||
7329 | 0x001075bf, 0x00107700, 0x001071f5, 0x00107735, | ||
7330 | 0x00107788, 0x001071f5, 0x0010720c, 0x00107265, | ||
7331 | 0x00107272, 0x001071f5, 0x00107406, 0x001071f5, | ||
7332 | 0x001072b9, 0x001072c4, 0x001071f5, 0x001071f5, | ||
7333 | 0x00107220, 0x00107245, 0x001077c7, 0x00107808, | ||
7334 | 0x0010782e, 0x001071f5, 0x001071f5, 0x001071f5, | ||
7335 | 0x001077fc, 0x0201f800, 0x001005d8, 0x0401fac5, | ||
7336 | 0x59325808, 0x592c0009, 0x4801a006, 0x592c000a, | ||
7337 | 0x4801a007, 0x592c000b, 0x4801a008, 0x592c000c, | ||
7338 | 0x4801a009, 0x592c000d, 0x4801a00a, 0x4979a00b, | ||
7339 | 0x592c0809, 0x82040d00, 0x00000fff, 0x80040904, | ||
7340 | 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc, | ||
7341 | 0x4a026202, 0x0000ffff, 0x0401faae, 0x4d2c0000, | ||
7342 | 0x4a01a006, 0x05000000, 0x59325808, 0x592c0009, | ||
7343 | 0x4801a007, 0x592c000a, 0x4801a008, 0x592c000b, | ||
7344 | 0x4801a009, 0x42000800, 0x00000004, 0x42001000, | ||
7345 | 0x0000dc00, 0x5c025800, 0x0201f000, 0x001078bc, | ||
7346 | 0x4c580000, 0x4c500000, 0x4c540000, 0x4d2c0000, | ||
7347 | 0x0401fa98, 0x59325808, 0x5930040b, 0x800000c2, | ||
7348 | 0x4200a800, 0x0010b54b, 0x592cb205, 0x832ca400, | ||
7349 | 0x00000006, 0x0201f800, 0x0010ab17, 0x40580000, | ||
7350 | 0x8054ac00, 0x592c0001, 0x80000540, 0x04000003, | ||
7351 | 0x40025800, 0x0401f7f5, 0x4200a000, 0x0010b54b, | ||
7352 | 0x4050a800, 0x5930b40b, 0x0201f800, 0x0010ab28, | ||
7353 | 0x59300c0b, 0x42001000, 0x0000dc00, 0x5c025800, | ||
7354 | 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x0201f000, | ||
7355 | 0x001078bc, 0x4c580000, 0x4c500000, 0x4c540000, | ||
7356 | 0x4d2c0000, 0x42034800, 0x0010b544, 0x0401fa7f, | ||
7357 | 0x59325808, 0x4a025805, 0x02000000, 0x592c0802, | ||
7358 | 0x82d0ac00, 0x00000006, 0x592cb011, 0x832ca400, | ||
7359 | 0x00000005, 0x0201f800, 0x0010ab17, 0x40580000, | ||
7360 | 0x8054ac00, 0x592e5801, 0x41780000, 0x812e5d40, | ||
7361 | 0x040207f6, 0x42001000, 0x0000dc00, 0x5c025800, | ||
7362 | 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x0201f000, | ||
7363 | 0x001078bc, 0x0401fa57, 0x4a01a006, 0x78000000, | ||
7364 | 0x5930001c, 0x840001c0, 0x4801a407, 0x4979a207, | ||
7365 | 0x42000800, 0x00000002, 0x42001000, 0x0000dc00, | ||
7366 | 0x0201f000, 0x001078bc, 0x4c580000, 0x4c540000, | ||
7367 | 0x4c500000, 0x0401fa55, 0x4a01a006, 0x02000000, | ||
7368 | 0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009, | ||
7369 | 0x59a80000, 0x4801a00a, 0x59a80001, 0x4801a00b, | ||
7370 | 0x5930001c, 0x82000d80, 0x0000e000, 0x04000016, | ||
7371 | 0x82000d80, 0x0000df00, 0x04000006, 0x4a01a407, | ||
7372 | 0x00000010, 0x42000800, 0x00000006, 0x0401f027, | ||
7373 | 0x4a03c840, 0x0010b4eb, 0x4a03c842, 0x0000000d, | ||
7374 | 0x42001800, 0x0010b4eb, 0x0201f800, 0x001007af, | ||
7375 | 0x42000000, 0x0000df00, 0x4200a000, 0x0010b4eb, | ||
7376 | 0x0401f00d, 0x4a03c840, 0x0010b4f8, 0x4a03c842, | ||
7377 | 0x0000000d, 0x42001800, 0x0010b4f8, 0x0201f800, | ||
7378 | 0x001007af, 0x42000000, 0x0000e000, 0x4200a000, | ||
7379 | 0x0010b4f8, 0x82000540, 0x00000010, 0x4801a407, | ||
7380 | 0x4a01a207, 0x00000034, 0x4200b000, 0x0000000d, | ||
7381 | 0x82d0ac00, 0x0000000c, 0x0201f800, 0x0010ab17, | ||
7382 | 0x42000800, 0x00000013, 0x42001000, 0x0000dc00, | ||
7383 | 0x5c00a000, 0x5c00a800, 0x5c00b000, 0x0201f000, | ||
7384 | 0x001078bc, 0x0401fa03, 0x4a01a006, 0x63000028, | ||
7385 | 0x5930001c, 0x4801a007, 0x42000800, 0x00000002, | ||
7386 | 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc, | ||
7387 | 0x0401fa06, 0x41780000, 0x41780800, 0x42002000, | ||
7388 | 0x00080000, 0x0c01f81b, 0x80000000, 0x80040800, | ||
7389 | 0x42001000, 0x0000000c, 0x59841802, 0x8c0c1d00, | ||
7390 | 0x04020008, 0x42002000, 0x00050000, 0x0c01f811, | ||
7391 | 0x80000000, 0x80040800, 0x82081400, 0x00000004, | ||
7392 | 0x82080540, 0x02000000, 0x4801a006, 0x800408e0, | ||
7393 | 0x5930001c, 0x80040540, 0x4801a007, 0x80080904, | ||
7394 | 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc, | ||
7395 | 0x001072e9, 0x001072eb, 0x001072ed, 0x001072ef, | ||
7396 | 0x001072f1, 0x4811a008, 0x1c01f000, 0x4811a009, | ||
7397 | 0x1c01f000, 0x4811a00a, 0x1c01f000, 0x4811a00b, | ||
7398 | 0x1c01f000, 0x4811a00c, 0x1c01f000, 0x4a026009, | ||
7399 | 0x0010be0d, 0x59a80010, 0x82000500, 0x000000ff, | ||
7400 | 0x800000d0, 0x42026800, 0x0010be0d, 0x48026a12, | ||
7401 | 0x0401fa3b, 0x41780800, 0x42001000, 0x00005c00, | ||
7402 | 0x0201f000, 0x001078bc, 0x0401f9ba, 0x4a01a006, | ||
7403 | 0x52000000, 0x4979a007, 0x599c0017, 0x8c000500, | ||
7404 | 0x04000005, 0x599c0402, 0x0201f800, 0x001015da, | ||
7405 | 0x4805a007, 0x59a80002, 0x4801a008, 0x59a80003, | ||
7406 | 0x4801a009, 0x59a80000, 0x4801a00a, 0x59a80001, | ||
7407 | 0x4801a00b, 0x59a80010, 0x4801a00c, 0x42000800, | ||
7408 | 0x00000007, 0x42001000, 0x0000dc00, 0x0201f000, | ||
7409 | 0x001078bc, 0x4a026202, 0x0000ffff, 0x0401f99d, | ||
7410 | 0x4a01a006, 0x05000000, 0x59a80010, 0x4801a007, | ||
7411 | 0x59a80002, 0x59a80803, 0x4801a008, 0x4805a009, | ||
7412 | 0x42000800, 0x00000004, 0x42001000, 0x0000dc00, | ||
7413 | 0x0201f000, 0x001078bc, 0x4a026202, 0x0000ffff, | ||
7414 | 0x0401f98c, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
7415 | 0x001048f6, 0x5c027800, 0x4a01a006, 0x03000000, | ||
7416 | 0x59340403, 0x82000580, 0x000007fe, 0x0402006e, | ||
7417 | 0x4a01a006, 0x04000000, 0x81a40800, 0x4a000800, | ||
7418 | 0x22fffffe, 0x5934000a, 0x84000500, 0x4802680a, | ||
7419 | 0x59c41002, 0x8408150c, 0x480b8802, 0x59a80026, | ||
7420 | 0x8c000508, 0x04000010, 0x59a8002a, 0x4801a007, | ||
7421 | 0x59a8002b, 0x82000500, 0xffff2000, 0x599c0818, | ||
7422 | 0x8c040d16, 0x04000002, 0x8400056a, 0x4801a008, | ||
7423 | 0x4a01a009, 0x00002710, 0x59a8002d, 0x4801a00a, | ||
7424 | 0x0401f039, 0x59a8002a, 0x4801a007, 0x0201f800, | ||
7425 | 0x0010513b, 0x04020009, 0x497b8880, 0x82000500, | ||
7426 | 0x0000ffff, 0x4c000000, 0x0201f800, 0x00101606, | ||
7427 | 0x5c000000, 0x48038880, 0x59a8002b, 0x0201f800, | ||
7428 | 0x0010513b, 0x04020004, 0x82000500, 0x37ffffff, | ||
7429 | 0x0401f003, 0x82000500, 0x3fffffff, 0x599c0818, | ||
7430 | 0x8c040d16, 0x04000002, 0x8400056a, 0x59a80805, | ||
7431 | 0x8c040d10, 0x04000019, 0x59300c03, 0x82041580, | ||
7432 | 0x00000051, 0x04000015, 0x82041580, 0x00000031, | ||
7433 | 0x04000012, 0x4c580000, 0x4c500000, 0x4c540000, | ||
7434 | 0x4200b000, 0x00000004, 0x4200a000, 0x0010b8fa, | ||
7435 | 0x82d0ac00, 0x0000001f, 0x4c000000, 0x0201f800, | ||
7436 | 0x0010ab17, 0x5c000000, 0x5c00a800, 0x5c00a000, | ||
7437 | 0x5c00b000, 0x8400057a, 0x4801a008, 0x4979a009, | ||
7438 | 0x4979a00a, 0x59a80002, 0x59a80803, 0x4801a00b, | ||
7439 | 0x4805a00c, 0x59a80000, 0x59a80801, 0x4801a00d, | ||
7440 | 0x4805a00e, 0x4979a00f, 0x4979a010, 0x4979a011, | ||
7441 | 0x4979a012, 0x4979a013, 0x4979a014, 0x4979a015, | ||
7442 | 0x4979a016, 0x59a8002e, 0x84000576, 0x4801a017, | ||
7443 | 0x59a8002f, 0x4801a018, 0x4979a019, 0x4979a01a, | ||
7444 | 0x0401f043, 0x59a80026, 0x8c000508, 0x0400000d, | ||
7445 | 0x59a8002a, 0x82000500, 0x0000ffff, 0x59c40880, | ||
7446 | 0x80040d80, 0x04000007, 0x497b8880, 0x4c000000, | ||
7447 | 0x0201f800, 0x00101606, 0x5c000000, 0x48038880, | ||
7448 | 0x59a8002a, 0x4801a007, 0x4c640000, 0x4d2c0000, | ||
7449 | 0x59a8c82b, 0x0201f800, 0x00109037, 0x0400000d, | ||
7450 | 0x0201f800, 0x00109597, 0x0402000a, 0x592c0207, | ||
7451 | 0x8c00050e, 0x04000007, 0x8264cd00, 0x0000ffff, | ||
7452 | 0x592c0009, 0x82000500, 0xffff0000, 0x8064cd40, | ||
7453 | 0x4865a008, 0x5c025800, 0x5c00c800, 0x59a8002c, | ||
7454 | 0x4801a009, 0x59a8002d, 0x4801a00a, 0x59a80002, | ||
7455 | 0x59a80803, 0x4801a00b, 0x4805a00c, 0x59a80000, | ||
7456 | 0x59a80801, 0x4801a00d, 0x4805a00e, 0x4979a00f, | ||
7457 | 0x4979a010, 0x4979a011, 0x4979a012, 0x4979a013, | ||
7458 | 0x4979a014, 0x4979a015, 0x4979a016, 0x59a8002e, | ||
7459 | 0x4801a017, 0x59a8002f, 0x4801a018, 0x59a80030, | ||
7460 | 0x4801a019, 0x59a80031, 0x4801a01a, 0x42000800, | ||
7461 | 0x0000001d, 0x42001000, 0x0000dc00, 0x0201f000, | ||
7462 | 0x001078bc, 0x0401f8cb, 0x4a01a006, 0x50000000, | ||
7463 | 0x0401f7b5, 0x0401f8c7, 0x4a01a406, 0x21000010, | ||
7464 | 0x4a01a206, 0x00000014, 0x4979a007, 0x4979a008, | ||
7465 | 0x4979a009, 0x4979a00a, 0x42000800, 0x00000005, | ||
7466 | 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc, | ||
7467 | 0x0401f8bf, 0x0401f002, 0x0401f8c4, 0x4a01a006, | ||
7468 | 0x02000000, 0x42000800, 0x00000001, 0x42001000, | ||
7469 | 0x0000dc00, 0x0201f000, 0x001078bc, 0x0401f8bb, | ||
7470 | 0x4a01a006, 0x02000000, 0x59300403, 0x82000580, | ||
7471 | 0x00000031, 0x04020794, 0x81a40800, 0x4a000801, | ||
7472 | 0x00fffffe, 0x0401f72b, 0x0401f8b0, 0x4a01a006, | ||
7473 | 0x01000000, 0x5930041a, 0x80000540, 0x04000003, | ||
7474 | 0x4801a407, 0x0401f003, 0x4a01a407, 0x00000003, | ||
7475 | 0x5930021a, 0x80000540, 0x04000003, 0x4801a207, | ||
7476 | 0x0401f003, 0x4a01a207, 0x00002a00, 0x42000800, | ||
7477 | 0x00000002, 0x42001000, 0x0000dc00, 0x0201f000, | ||
7478 | 0x001078bc, 0x4a026202, 0x0000ffff, 0x0401f889, | ||
7479 | 0x4a01a406, 0x00002010, 0x4a01a206, 0x00000014, | ||
7480 | 0x4a01a407, 0x00000800, 0x4a01a207, 0x00002000, | ||
7481 | 0x80000580, 0x599c0817, 0x8c040d0a, 0x04020003, | ||
7482 | 0x82000540, 0x00000020, 0x8c040d08, 0x04000003, | ||
7483 | 0x82000540, 0x00000010, 0x82000540, 0x00000002, | ||
7484 | 0x5934080a, 0x8c040d14, 0x04000005, 0x82040d00, | ||
7485 | 0x00000380, 0x80040540, 0x0401f006, 0x599c0818, | ||
7486 | 0x8c040d18, 0x04000003, 0x82000540, 0x00000380, | ||
7487 | 0x0401f03c, 0x0401f875, 0x4a01a406, 0x00000210, | ||
7488 | 0x4a01a206, 0x00000014, 0x4a01a407, 0x00000800, | ||
7489 | 0x5934000a, 0x8c000516, 0x04000014, 0x59340c05, | ||
7490 | 0x82040500, 0x00000030, 0x04000013, 0x59340a05, | ||
7491 | 0x82040500, 0x0000c000, 0x04020009, 0x8c040d1a, | ||
7492 | 0x04000004, 0x4a01a207, 0x00002100, 0x0401f00c, | ||
7493 | 0x4a01a207, 0x00000100, 0x0401f009, 0x4a01a207, | ||
7494 | 0x00000400, 0x0401f006, 0x4a01a207, 0x00000700, | ||
7495 | 0x0401f003, 0x4a01a207, 0x00000800, 0x80000580, | ||
7496 | 0x599c0817, 0x8c040d0a, 0x04020003, 0x82000540, | ||
7497 | 0x00000020, 0x8c040d08, 0x04000003, 0x82000540, | ||
7498 | 0x00000010, 0x82000540, 0x00000002, 0x59340a00, | ||
7499 | 0x8c040d0e, 0x0400000b, 0x84000550, 0x599c1017, | ||
7500 | 0x8c08150a, 0x04020004, 0x8c040d0a, 0x04000002, | ||
7501 | 0x8400054e, 0x8c040d1c, 0x04000002, 0x84000552, | ||
7502 | 0x4801a20a, 0x42000800, 0x00000005, 0x42001000, | ||
7503 | 0x0000dc00, 0x0201f000, 0x001078bc, 0x0401f833, | ||
7504 | 0x4a01a006, 0x02100014, 0x4a01a007, 0x01000000, | ||
7505 | 0x4979a008, 0x4979a009, 0x4979a00a, 0x42000800, | ||
7506 | 0x00000005, 0x42001000, 0x0000dc00, 0x0201f000, | ||
7507 | 0x001078bc, 0x0401f825, 0x4a01a006, 0x02000000, | ||
7508 | 0x0401f65d, 0x4933c857, 0x0401f820, 0x4a01a006, | ||
7509 | 0x01000000, 0x4a01a407, 0x0000000b, 0x42000800, | ||
7510 | 0x00000002, 0x42001000, 0x0000dc00, 0x0201f000, | ||
7511 | 0x001078bc, 0x42005000, 0x32000000, 0x42006000, | ||
7512 | 0x08290000, 0x41786800, 0x41787800, 0x0401f3df, | ||
7513 | 0x42005000, 0x22000000, 0x42006000, 0x01290000, | ||
7514 | 0x41786800, 0x41787800, 0x0401f3d8, 0x42005000, | ||
7515 | 0x33000000, 0x42006000, 0x08980000, 0x41786800, | ||
7516 | 0x41787800, 0x0401f3d1, 0x42005000, 0x23000000, | ||
7517 | 0x42006000, 0x01980000, 0x41786800, 0x41787800, | ||
7518 | 0x0401f3ca, 0x59300403, 0x82000c80, 0x00000085, | ||
7519 | 0x02001800, 0x001005d8, 0x82000c80, 0x00000093, | ||
7520 | 0x02021800, 0x001005d8, 0x82000480, 0x00000085, | ||
7521 | 0x0c01f001, 0x001074eb, 0x001074ed, 0x001074fb, | ||
7522 | 0x001074eb, 0x001074eb, 0x001074eb, 0x001074eb, | ||
7523 | 0x001074eb, 0x001074eb, 0x001074eb, 0x001074eb, | ||
7524 | 0x001074eb, 0x001074eb, 0x00107506, 0x0201f800, | ||
7525 | 0x001005d8, 0x4933c857, 0x0401f850, 0x59300402, | ||
7526 | 0x4801a407, 0x5930001c, 0x4801a207, 0x4979a408, | ||
7527 | 0x4a01a208, 0x0000ffff, 0x42000800, 0x00000003, | ||
7528 | 0x42001000, 0x0000dc00, 0x0401f3c2, 0x4933c857, | ||
7529 | 0x0401f84e, 0x4a01a406, 0x00000003, 0x4a01a206, | ||
7530 | 0x00000300, 0x42000800, 0x00000001, 0x42001000, | ||
7531 | 0x0000dc00, 0x0401f3b7, 0x4d2c0000, 0x59325808, | ||
7532 | 0x4933c857, 0x492fc857, 0x812e59c0, 0x02000800, | ||
7533 | 0x001005d8, 0x59340a12, 0x82040d00, 0x0000ff00, | ||
7534 | 0x592c000a, 0x82000500, 0x000000ff, 0x900001c0, | ||
7535 | 0x80040540, 0x82000540, 0x00000011, 0x44034800, | ||
7536 | 0x81a5a000, 0x42001000, 0x00000009, 0x42000800, | ||
7537 | 0x00000003, 0x592c0009, 0x82000500, 0xff000000, | ||
7538 | 0x82001d80, 0x84000000, 0x04000009, 0x82001d80, | ||
7539 | 0x85000000, 0x02020800, 0x001005d8, 0x42001000, | ||
7540 | 0x00000007, 0x42000800, 0x00000001, 0x832c1c00, | ||
7541 | 0x00000009, 0x500c0000, 0x4401a000, 0x800c1800, | ||
7542 | 0x80d1a000, 0x80081040, 0x040207fb, 0x42001000, | ||
7543 | 0x0000dc00, 0x5c025800, 0x0401f386, 0x42005000, | ||
7544 | 0x81000000, 0x42006000, 0x00090000, 0x41786800, | ||
7545 | 0x41787800, 0x0401f35d, 0x42005000, 0x84000000, | ||
7546 | 0x42006000, 0x00990000, 0x59300406, 0x82000580, | ||
7547 | 0x00000005, 0x04000002, 0x8430652e, 0x41786800, | ||
7548 | 0x41787800, 0x0401f351, 0x42005000, 0x85000000, | ||
7549 | 0x42006000, 0x00990000, 0x59300406, 0x82000580, | ||
7550 | 0x00000005, 0x04000002, 0x8430652e, 0x41786800, | ||
7551 | 0x41787800, 0x0401f345, 0x59300403, 0x82000c80, | ||
7552 | 0x00000053, 0x02021800, 0x001005d8, 0x82000480, | ||
7553 | 0x0000004b, 0x02001800, 0x001005d8, 0x59326809, | ||
7554 | 0x59368c03, 0x4803c857, 0x0c01f001, 0x001075da, | ||
7555 | 0x001075e2, 0x001075ea, 0x001075f2, 0x0010756b, | ||
7556 | 0x0010756b, 0x0010756b, 0x001075d2, 0x0201f800, | ||
7557 | 0x001005d8, 0x42005000, 0x06000000, 0x42006000, | ||
7558 | 0x08290000, 0x41786800, 0x41787800, 0x0401f327, | ||
7559 | 0x4933c857, 0x0401ff47, 0x4a01a006, 0x12000000, | ||
7560 | 0x59300406, 0x82000580, 0x00000004, 0x04020003, | ||
7561 | 0x59340002, 0x0401f002, 0x59a80010, 0x82000500, | ||
7562 | 0x00ffffff, 0x4801a007, 0x59300419, 0x4801a408, | ||
7563 | 0x59300219, 0x4801a208, 0x4979a009, 0x4979a00a, | ||
7564 | 0x4979a00b, 0x4979a00c, 0x4979a00d, 0x4979a00e, | ||
7565 | 0x4979a00f, 0x4979a010, 0x42000800, 0x0000000b, | ||
7566 | 0x42001000, 0x0000dc00, 0x0401f32a, 0x0401ff29, | ||
7567 | 0x4a01a006, 0x0f000000, 0x5930001c, 0x4801a007, | ||
7568 | 0x42000800, 0x00000002, 0x42001000, 0x0000dc00, | ||
7569 | 0x0401f320, 0x0401ff2d, 0x4a01a006, 0x02000000, | ||
7570 | 0x59c40085, 0x48031004, 0x59880000, 0x4801a007, | ||
7571 | 0x59880001, 0x4801a008, 0x59880002, 0x4801a009, | ||
7572 | 0x59880003, 0x4801a00a, 0x59880004, 0x4801a00b, | ||
7573 | 0x59880005, 0x4801a00c, 0x42000800, 0x00000007, | ||
7574 | 0x42001000, 0x0000dc00, 0x0401f30a, 0x4a026202, | ||
7575 | 0x0000ffff, 0x0401ff07, 0x4a01a006, 0x62000000, | ||
7576 | 0x5930001c, 0x4801a007, 0x42000800, 0x00000002, | ||
7577 | 0x42001000, 0x0000dc00, 0x0401f2fe, 0x0401fefd, | ||
7578 | 0x59300808, 0x4c500000, 0x4c540000, 0x4c580000, | ||
7579 | 0x8204a400, 0x0000000a, 0x5930b01c, 0x82d0ac00, | ||
7580 | 0x00000006, 0x0201f800, 0x0010ab17, 0x5930081c, | ||
7581 | 0x42001000, 0x0000dc00, 0x5c00b000, 0x5c00a800, | ||
7582 | 0x5c00a000, 0x0401f2eb, 0x0401ff9b, 0x59300017, | ||
7583 | 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008, | ||
7584 | 0x00001000, 0x0401f020, 0x0401ff93, 0x59300017, | ||
7585 | 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008, | ||
7586 | 0x00004000, 0x0401f018, 0x0401ff8b, 0x59300017, | ||
7587 | 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008, | ||
7588 | 0x00002000, 0x0401f010, 0x0401ff83, 0x59300017, | ||
7589 | 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008, | ||
7590 | 0x00000400, 0x0401f008, 0x0401ff7b, 0x59300017, | ||
7591 | 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008, | ||
7592 | 0x00000200, 0x4979a009, 0x4979a00a, 0x4979a00b, | ||
7593 | 0x4979a00c, 0x4979a00d, 0x42000800, 0x00000008, | ||
7594 | 0x42001000, 0x0000dc00, 0x0401f2ba, 0x0401fec7, | ||
7595 | 0x4a01a006, 0x02000014, 0x4979a407, 0x4979a207, | ||
7596 | 0x59a8003a, 0x4801a008, 0x59a8003b, 0x4801a009, | ||
7597 | 0x4a01a00a, 0x00047878, 0x42000800, 0x00000005, | ||
7598 | 0x42001000, 0x0000dc00, 0x0401f2aa, 0x0401feb7, | ||
7599 | 0x4a01a006, 0x02140018, 0x4a01a407, 0x00000800, | ||
7600 | 0x5930001c, 0x82000d00, 0xff000000, 0x900409c0, | ||
7601 | 0x4805a207, 0x82000500, 0x00ffffff, 0x4801a00a, | ||
7602 | 0x4979a408, 0x4979a208, 0x4979a409, 0x4979a209, | ||
7603 | 0x4979a00b, 0x42000800, 0x00000006, 0x42001000, | ||
7604 | 0x0000dc00, 0x0401f293, 0x4803c856, 0x4d380000, | ||
7605 | 0x4d1c0000, 0x42027000, 0x00000035, 0x0201f800, | ||
7606 | 0x001093ba, 0x0402001e, 0x0401fe8a, 0x4a01a006, | ||
7607 | 0x13000000, 0x5932381e, 0x591c0019, 0x4801a005, | ||
7608 | 0x591c0406, 0x82000580, 0x00000003, 0x04000007, | ||
7609 | 0x59300809, 0x58040002, 0x82000500, 0x00ffffff, | ||
7610 | 0x4801a007, 0x0401f003, 0x59a80010, 0x4801a007, | ||
7611 | 0x59300419, 0x4801a408, 0x59300219, 0x4801a208, | ||
7612 | 0x42000800, 0x00000003, 0x42001000, 0x0000dc00, | ||
7613 | 0x5c023800, 0x5c027000, 0x0401f26e, 0x0201f800, | ||
7614 | 0x00106c55, 0x598c000d, 0x81300580, 0x02020800, | ||
7615 | 0x001005d8, 0x0201f800, 0x00106bbf, 0x0201f800, | ||
7616 | 0x0002077d, 0x5c023800, 0x5c027000, 0x0201f000, | ||
7617 | 0x00106c4b, 0x4803c856, 0x4d2c0000, 0x4d1c0000, | ||
7618 | 0x5932381e, 0x811e39c0, 0x02000800, 0x001005d8, | ||
7619 | 0x591c0c06, 0x82040580, 0x00000006, 0x0400000d, | ||
7620 | 0x82040580, 0x00000003, 0x04000036, 0x4a026403, | ||
7621 | 0x00000037, 0x4a02641a, 0x00000003, 0x4a02621a, | ||
7622 | 0x00001700, 0x5c023800, 0x5c025800, 0x0401f064, | ||
7623 | 0x0401f84b, 0x42001000, 0x40000000, 0x591c0203, | ||
7624 | 0x591c0804, 0x8c040d3e, 0x04020023, 0x82000c80, | ||
7625 | 0x0000000e, 0x0c001003, 0x0201f800, 0x001005d8, | ||
7626 | 0x00107691, 0x0010769d, 0x00107693, 0x0010769d, | ||
7627 | 0x00107699, 0x00107691, 0x00107691, 0x0010769d, | ||
7628 | 0x0010769d, 0x00107691, 0x00107691, 0x00107691, | ||
7629 | 0x00107691, 0x00107691, 0x0010769d, 0x00107691, | ||
7630 | 0x0010769d, 0x0201f800, 0x001005d8, 0x591c0414, | ||
7631 | 0x4803c857, 0x8c000518, 0x04000003, 0x8c000512, | ||
7632 | 0x04000003, 0x80001580, 0x0401f003, 0x42001000, | ||
7633 | 0x20000000, 0x591c0015, 0x4801a00a, 0x0401f018, | ||
7634 | 0x0401f81f, 0x591e5808, 0x812e59c0, 0x02000800, | ||
7635 | 0x001005d8, 0x592c100f, 0x591c0011, 0x80080480, | ||
7636 | 0x4801a00a, 0x591c0203, 0x591c0804, 0x8c040d3e, | ||
7637 | 0x04020007, 0x82000d80, 0x00000002, 0x04000007, | ||
7638 | 0x82000d80, 0x00000004, 0x04000004, 0x42001000, | ||
7639 | 0x40000000, 0x0401f002, 0x80001580, 0x4809a00b, | ||
7640 | 0x42000800, 0x00000006, 0x42001000, 0x0000dc00, | ||
7641 | 0x5c023800, 0x5c025800, 0x0401f1fe, 0x4803c856, | ||
7642 | 0x0401fe0a, 0x4a01a006, 0x02000000, 0x59300c19, | ||
7643 | 0x4805a407, 0x59300a19, 0x4805a207, 0x59a81010, | ||
7644 | 0x59300809, 0x58041802, 0x820c1d00, 0x00ffffff, | ||
7645 | 0x5930081e, 0x58040406, 0x82000580, 0x00000003, | ||
7646 | 0x04020004, 0x4809a008, 0x480da009, 0x0401f003, | ||
7647 | 0x480da008, 0x4809a009, 0x1c01f000, 0x4803c856, | ||
7648 | 0x0401fdf2, 0x0401f003, 0x4803c856, 0x0401fde8, | ||
7649 | 0x4a01a006, 0x01000000, 0x5930041a, 0x4801a407, | ||
7650 | 0x5930021a, 0x4801a207, 0x42000800, 0x00000002, | ||
7651 | 0x42001000, 0x0000dc00, 0x0401f1d6, 0x4803c856, | ||
7652 | 0x4d1c0000, 0x0401fdcc, 0x4a01a006, 0x14000000, | ||
7653 | 0x5932381e, 0x591c0019, 0x4801a005, 0x59300419, | ||
7654 | 0x4801a407, 0x59300219, 0x4801a207, 0x59300015, | ||
7655 | 0x4801a008, 0x59300216, 0x82000500, 0x000000ff, | ||
7656 | 0x840001c0, 0x4801a409, 0x42000800, 0x00000004, | ||
7657 | 0x42001000, 0x0000dc00, 0x5c023800, 0x0401f1bd, | ||
7658 | 0x4803c856, 0x0401f80b, 0x5930041a, 0x900001c0, | ||
7659 | 0x4801a005, 0x0401f9ec, 0x41780800, 0x42001000, | ||
7660 | 0x00005c00, 0x0401f9b3, 0x0201f000, 0x0010604d, | ||
7661 | 0x4803c856, 0x59300817, 0x82041c00, 0x00000005, | ||
7662 | 0x46034800, 0x00000021, 0x58040404, 0x82000500, | ||
7663 | 0x0000f000, 0x82000580, 0x00003000, 0x04000003, | ||
7664 | 0x46034800, 0x00000041, 0x81a5a000, 0x580c0001, | ||
7665 | 0x82000d00, 0x00ffffff, 0x82040d40, 0xc2000000, | ||
7666 | 0x4805a000, 0x580c0800, 0x82041500, 0x00ffffff, | ||
7667 | 0x82000500, 0xff000000, 0x80080540, 0x4801a001, | ||
7668 | 0x580c0002, 0x82000580, 0x00c00000, 0x82000500, | ||
7669 | 0x00fd0300, 0x4801a002, 0x580c0003, 0x4801a003, | ||
7670 | 0x580c0404, 0x4801a404, 0x580c0204, 0x4801a204, | ||
7671 | 0x1c01f000, 0x4803c856, 0x59a80026, 0x82000500, | ||
7672 | 0x00000028, 0x04020009, 0x59a80026, 0x82000500, | ||
7673 | 0x00000028, 0x04000003, 0x497a6a12, 0x0401f003, | ||
7674 | 0x4a026a12, 0x0000ff00, 0x42005000, 0x22000000, | ||
7675 | 0x42006000, 0x01380000, 0x41786800, 0x41787800, | ||
7676 | 0x0401f952, 0x59301008, 0x4a01a006, 0x54000000, | ||
7677 | 0x59a80010, 0x82000500, 0x00ffffff, 0x58080c0a, | ||
7678 | 0x800408f0, 0x80040540, 0x4801a007, 0x5808000a, | ||
7679 | 0x82000500, 0xff000000, 0x4801a008, 0x59a80002, | ||
7680 | 0x4801a009, 0x59a80003, 0x4801a00a, 0x59a80000, | ||
7681 | 0x4801a00b, 0x59a80001, 0x4801a00c, 0x5808000c, | ||
7682 | 0x9c0001c0, 0x4801a00d, 0x5808000d, 0x9c0001c0, | ||
7683 | 0x4801a00e, 0x5808000e, 0x9c0001c0, 0x4801a00f, | ||
7684 | 0x5808000f, 0x9c0001c0, 0x4801a010, 0x58080010, | ||
7685 | 0x9c0001c0, 0x4801a011, 0x58080011, 0x9c0001c0, | ||
7686 | 0x4801a012, 0x58080012, 0x9c0001c0, 0x4801a013, | ||
7687 | 0x58080013, 0x9c0001c0, 0x4801a014, 0x58080010, | ||
7688 | 0x9c0001c0, 0x4801a015, 0x58080011, 0x9c0001c0, | ||
7689 | 0x4801a016, 0x58080012, 0x9c0001c0, 0x4801a017, | ||
7690 | 0x58080013, 0x9c0001c0, 0x4801a018, 0x42000800, | ||
7691 | 0x00000013, 0x42001000, 0x0000dc00, 0x0401f135, | ||
7692 | 0x4803c856, 0x42005000, 0x22000000, 0x42006000, | ||
7693 | 0x01290000, 0x41786800, 0x41787800, 0x0401f90b, | ||
7694 | 0x59301008, 0x4a01a006, 0x55000000, 0x5808000b, | ||
7695 | 0x82000500, 0x00ffffff, 0x58080c0a, 0x800408f0, | ||
7696 | 0x80040540, 0x4801a007, 0x5808080a, 0x82040d00, | ||
7697 | 0xff000000, 0x59a80010, 0x82000500, 0x00ffffff, | ||
7698 | 0x80040540, 0x4801a008, 0x5808000c, 0x9c0001c0, | ||
7699 | 0x4801a009, 0x5808000d, 0x9c0001c0, 0x4801a00a, | ||
7700 | 0x5808000e, 0x9c0001c0, 0x4801a00b, 0x5808000f, | ||
7701 | 0x9c0001c0, 0x4801a00c, 0x59a80002, 0x4801a00d, | ||
7702 | 0x59a80003, 0x4801a00e, 0x59a80000, 0x4801a00f, | ||
7703 | 0x59a80001, 0x4801a010, 0x58080010, 0x4801a011, | ||
7704 | 0x58080011, 0x4801a012, 0x58080012, 0x4801a013, | ||
7705 | 0x58080013, 0x4801a014, 0x4979a015, 0x4979a016, | ||
7706 | 0x4979a017, 0x4979a018, 0x42000800, 0x00000013, | ||
7707 | 0x42001000, 0x0000dc00, 0x0401f0f6, 0x0401fd03, | ||
7708 | 0x5930001c, 0x800001c0, 0x04000008, 0x4a01a006, | ||
7709 | 0x01000000, 0x4a01a407, 0x00000003, 0x42000800, | ||
7710 | 0x00000002, 0x0401f028, 0x4a01a006, 0x02000000, | ||
7711 | 0x41780800, 0x836c0580, 0x00000004, 0x04020003, | ||
7712 | 0x84040d42, 0x0401f00d, 0x0201f800, 0x0010513b, | ||
7713 | 0x04020003, 0x84040d4a, 0x0401f002, 0x84040d48, | ||
7714 | 0x59a80026, 0x8c000506, 0x04020003, 0x8c00050a, | ||
7715 | 0x04000002, 0x84040d46, 0x4805a207, 0x59c40085, | ||
7716 | 0x48031004, 0x4c580000, 0x4c500000, 0x4c540000, | ||
7717 | 0x4200b000, 0x00000006, 0x8388a400, 0x00000000, | ||
7718 | 0x82d0ac00, 0x00000008, 0x0201f800, 0x0010ab17, | ||
7719 | 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x42000800, | ||
7720 | 0x00000008, 0x42001000, 0x0000dc00, 0x0401f0c1, | ||
7721 | 0x0401fcc0, 0x4a01a006, 0x56000000, 0x59340006, | ||
7722 | 0x4801a007, 0x59340007, 0x4801a008, 0x42000800, | ||
7723 | 0x00000003, 0x42001000, 0x0000dc00, 0x0401f0b5, | ||
7724 | 0x4803c856, 0x0401fcc1, 0x5930081c, 0x800409c0, | ||
7725 | 0x0400000e, 0x82040580, 0x0000ffff, 0x04000004, | ||
7726 | 0x82040480, 0x00000007, 0x04021008, 0x4a01a006, | ||
7727 | 0x01000000, 0x4a01a407, 0x00000003, 0x42000800, | ||
7728 | 0x00000002, 0x0401f012, 0x4a01a006, 0x0200001c, | ||
7729 | 0x4a01a007, 0x00000001, 0x42001000, 0x0010b4f0, | ||
7730 | 0x50080000, 0x9c0001c0, 0x4801a009, 0x59a80010, | ||
7731 | 0x4801a00a, 0x59a80002, 0x59a80803, 0x4801a00b, | ||
7732 | 0x4805a00c, 0x42000800, 0x00000007, 0x42001000, | ||
7733 | 0x0000dc00, 0x0401f08f, 0x4d2c0000, 0x0401fc8d, | ||
7734 | 0x59325808, 0x592c0008, 0x82000500, 0x00ffffff, | ||
7735 | 0x4801a001, 0x4a01a006, 0x51000000, 0x5c025800, | ||
7736 | 0x0201f000, 0x00107344, 0x4803c856, 0x59a80810, | ||
7737 | 0x82040d00, 0x000000ff, 0x59325808, 0x59326809, | ||
7738 | 0x59a83026, 0x8c18350a, 0x04020008, 0x8c00050e, | ||
7739 | 0x04020006, 0x80001d80, 0x59a82010, 0x82102500, | ||
7740 | 0x000000ff, 0x0401f001, 0x59300406, 0x4803c857, | ||
7741 | 0x82000d80, 0x00000009, 0x04000006, 0x82000d80, | ||
7742 | 0x0000000a, 0x0400002e, 0x0201f800, 0x001005d8, | ||
7743 | 0x59300015, 0x8c00051e, 0x04020020, 0x42005000, | ||
7744 | 0x04000000, 0x42006000, 0x05000000, 0x592c040a, | ||
7745 | 0x82000500, 0x00000030, 0x800000e0, 0x80306540, | ||
7746 | 0x5934000a, 0x8c000508, 0x04000002, 0x84306546, | ||
7747 | 0x41786800, 0x41787800, 0x0401f831, 0x59300c14, | ||
7748 | 0x80040000, 0x48026414, 0x40040000, 0x800000d0, | ||
7749 | 0x82000540, 0x00000020, 0x4801a403, 0x83180d40, | ||
7750 | 0x00000038, 0x42001000, 0x0000c920, 0x0401f860, | ||
7751 | 0x0201f000, 0x00106052, 0x59a80026, 0x82000500, | ||
7752 | 0x00000028, 0x04000003, 0x497a6a12, 0x0401f7dc, | ||
7753 | 0x4a026a12, 0x0000ff00, 0x0401f7d9, 0x42005000, | ||
7754 | 0x02000000, 0x42006000, 0x20290000, 0x41786800, | ||
7755 | 0x41787800, 0x0401f812, 0x83180d40, 0x00000038, | ||
7756 | 0x42001000, 0x0000c9a0, 0x0401f849, 0x42000800, | ||
7757 | 0x000007d0, 0x59300011, 0x82000500, 0xfff00000, | ||
7758 | 0x80000540, 0x04000003, 0x42000800, 0x00001b58, | ||
7759 | 0x41781000, 0x0201f000, 0x00106054, 0x4201a000, | ||
7760 | 0x00000000, 0x0401f003, 0x4201a000, 0x00000011, | ||
7761 | 0x59340a12, 0x82040d00, 0x0000ff00, 0x59a80010, | ||
7762 | 0x82000500, 0x000000ff, 0x900001c0, 0x80040540, | ||
7763 | 0x80d00540, 0x44034800, 0x81a5a000, 0x59340002, | ||
7764 | 0x82000500, 0x00ffffff, 0x80280540, 0x4801a000, | ||
7765 | 0x59a80010, 0x4801a001, 0x4831a002, 0x82340540, | ||
7766 | 0x00000000, 0x4801a003, 0x59300402, 0x4801a404, | ||
7767 | 0x59300a02, 0x4805a204, 0x8c30652e, 0x04000003, | ||
7768 | 0x4805a404, 0x4801a204, 0x483da005, 0x1c01f000, | ||
7769 | 0x4803c856, 0x4c040000, 0x0401f822, 0x5c000800, | ||
7770 | 0x40040000, 0x80081540, 0x800000c4, 0x82000540, | ||
7771 | 0x00002000, 0x4803910a, 0x59b400f6, 0x82000500, | ||
7772 | 0x00000018, 0x040207fd, 0x4a0368f0, 0x0010b544, | ||
7773 | 0x4a0368f1, 0x0010b54b, 0x480b68f3, 0x4a0378e4, | ||
7774 | 0x00008000, 0x0201f000, 0x0010604d, 0x4807c857, | ||
7775 | 0x480a2800, 0x4c040000, 0x0401f80a, 0x5c000800, | ||
7776 | 0x59b400f6, 0x8c00050a, 0x040207fe, 0x49a768f2, | ||
7777 | 0x480768f4, 0x4a0378e4, 0x00008000, 0x1c01f000, | ||
7778 | 0x4a0378e4, 0x0000c000, 0x59bc00e4, 0x8c000520, | ||
7779 | 0x0400000c, 0x4a0378e4, 0x00008000, 0x42007000, | ||
7780 | 0x000003e8, 0x59bc00e4, 0x8c000520, 0x040007f5, | ||
7781 | 0x80387040, 0x02000800, 0x001005d8, 0x0401f7fa, | ||
7782 | 0x1c01f000, 0x82000500, 0xffff0000, 0x82000580, | ||
7783 | 0x01050000, 0x0402000d, 0x599c0818, 0x8c040d10, | ||
7784 | 0x0400000a, 0x59a80807, 0x8c040d0a, 0x04000007, | ||
7785 | 0x42001000, 0x0000804f, 0x41781800, 0x41782000, | ||
7786 | 0x0201f800, 0x00103a3e, 0x1c01f000, 0x41781000, | ||
7787 | 0x42026000, 0x0010d1c0, 0x59a8180e, 0x480a6402, | ||
7788 | 0x4a026202, 0x0000ffff, 0x80081000, 0x800c1840, | ||
7789 | 0x04000004, 0x83326400, 0x00000024, 0x0401f7f8, | ||
7790 | 0x1c01f000, 0x4933c857, 0x59300203, 0x82000580, | ||
7791 | 0x00000000, 0x0400002c, 0x59300406, 0x4803c857, | ||
7792 | 0x82000d80, 0x00000004, 0x04000011, 0x82000d80, | ||
7793 | 0x00000001, 0x0400000e, 0x82000d80, 0x00000003, | ||
7794 | 0x04000006, 0x82000d80, 0x00000006, 0x04020011, | ||
7795 | 0x0201f800, 0x0010a5df, 0x5930001c, 0x800001c0, | ||
7796 | 0x02020800, 0x0010984e, 0x0401f00a, 0x5930081e, | ||
7797 | 0x4807c857, 0x800409c0, 0x04000006, 0x5804001c, | ||
7798 | 0x4803c857, 0x81300580, 0x04020002, 0x4978081c, | ||
7799 | 0x497a6008, 0x4a026004, 0x00004000, 0x59a80037, | ||
7800 | 0x82000c80, 0x00000051, 0x04001002, 0x80000102, | ||
7801 | 0x48026206, 0x497a6205, 0x497a6009, 0x4a026406, | ||
7802 | 0x00000007, 0x1c01f000, 0x8166c9c0, 0x0400001c, | ||
7803 | 0x41626000, 0x41580000, 0x59300a03, 0x82040d80, | ||
7804 | 0x00000000, 0x04000008, 0x83326400, 0x00000024, | ||
7805 | 0x81300c80, 0x040017f9, 0x42026000, 0x0010d1c0, | ||
7806 | 0x0401f7f6, 0x4933c857, 0x8166c840, 0x83300c00, | ||
7807 | 0x00000024, 0x80040480, 0x04021006, 0x4006c000, | ||
7808 | 0x4a026203, 0x00000008, 0x813261c0, 0x1c01f000, | ||
7809 | 0x4202c000, 0x0010d1c0, 0x0401f7fa, 0x42000000, | ||
7810 | 0x0010b854, 0x0201f800, 0x0010aa47, 0x4933c856, | ||
7811 | 0x417a6000, 0x0401f7f5, 0x4933c857, 0x83380580, | ||
7812 | 0x00000013, 0x0402000b, 0x59300004, 0x8c00053e, | ||
7813 | 0x04000007, 0x0201f800, 0x00106c55, 0x0201f800, | ||
7814 | 0x00106bbf, 0x0201f800, 0x00106c4b, 0x1c01f000, | ||
7815 | 0x4933c857, 0x59880052, 0x80000000, 0x48031052, | ||
7816 | 0x1c01f000, 0x4933c857, 0x59300203, 0x82003480, | ||
7817 | 0x0000000e, 0x02021800, 0x001005d8, 0x4d2c0000, | ||
7818 | 0x0c01f803, 0x5c025800, 0x1c01f000, 0x00107991, | ||
7819 | 0x00107efd, 0x0010804a, 0x00107991, 0x001080b0, | ||
7820 | 0x00107af5, 0x00107991, 0x00107991, 0x00107e93, | ||
7821 | 0x00107991, 0x00107991, 0x00107991, 0x00107991, | ||
7822 | 0x00107991, 0x0201f800, 0x001005d8, 0x4933c857, | ||
7823 | 0x59300203, 0x82003480, 0x0000000e, 0x02021800, | ||
7824 | 0x001005d8, 0x0c01f001, 0x001079a8, 0x00108a3d, | ||
7825 | 0x001079a8, 0x001079a8, 0x001079a8, 0x001079a8, | ||
7826 | 0x001079a8, 0x001079a8, 0x001089e5, 0x00108a58, | ||
7827 | 0x00108ac6, 0x00108a58, 0x00108ac6, 0x001079a8, | ||
7828 | 0x0201f800, 0x001005d8, 0x0201f800, 0x001005d8, | ||
7829 | 0x4933c857, 0x4d2c0000, 0x59325808, 0x59300203, | ||
7830 | 0x82003480, 0x0000000e, 0x02021800, 0x001005d8, | ||
7831 | 0x0c01f803, 0x5c025800, 0x1c01f000, 0x001079c5, | ||
7832 | 0x001079c5, 0x001079c5, 0x001079e1, 0x00107a2d, | ||
7833 | 0x001079c5, 0x001079c5, 0x001079c5, 0x001079c7, | ||
7834 | 0x001079c5, 0x001079c5, 0x001079c5, 0x001079c5, | ||
7835 | 0x001079c5, 0x0201f800, 0x001005d8, 0x4933c857, | ||
7836 | 0x83380580, 0x00000040, 0x02020800, 0x001005d8, | ||
7837 | 0x4a026007, 0x00082000, 0x4a026203, 0x00000003, | ||
7838 | 0x493a6403, 0x4a025c08, 0x00000001, 0x592c000d, | ||
7839 | 0x48026011, 0x497a6013, 0x592c0208, 0x800000c2, | ||
7840 | 0x800010c4, 0x80081400, 0x480a6206, 0x0201f800, | ||
7841 | 0x00100f4e, 0x42000800, 0x80000060, 0x0201f000, | ||
7842 | 0x00106721, 0x4933c857, 0x83380480, 0x00000050, | ||
7843 | 0x02021800, 0x001005d8, 0x83380480, 0x00000049, | ||
7844 | 0x02001800, 0x001005d8, 0x0c01f001, 0x001079f4, | ||
7845 | 0x001079ff, 0x001079f2, 0x001079f2, 0x001079f2, | ||
7846 | 0x001079f2, 0x00107a0a, 0x0201f800, 0x001005d8, | ||
7847 | 0x4a026203, 0x00000004, 0x4a025c08, 0x00000002, | ||
7848 | 0x592c0207, 0x48025c09, 0x592c0209, 0x48025a07, | ||
7849 | 0x592c000c, 0x4802580d, 0x1c01f000, 0x0201f800, | ||
7850 | 0x00106b8a, 0x0201f800, 0x00109037, 0x04000005, | ||
7851 | 0x4a025a06, 0x00000006, 0x0201f800, 0x000202da, | ||
7852 | 0x0201f000, 0x0002077d, 0x0201f800, 0x00106b8a, | ||
7853 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c, | ||
7854 | 0x5c027800, 0x42003000, 0x00000014, 0x41782800, | ||
7855 | 0x42002000, 0x00000002, 0x4d400000, 0x4d440000, | ||
7856 | 0x59368c03, 0x42028000, 0x00000029, 0x0201f800, | ||
7857 | 0x0010985e, 0x5c028800, 0x5c028000, 0x42000000, | ||
7858 | 0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800, | ||
7859 | 0x00109037, 0x02000000, 0x0002077d, 0x4a025a06, | ||
7860 | 0x00000029, 0x0201f800, 0x000202da, 0x0201f000, | ||
7861 | 0x0002077d, 0x4933c857, 0x83380580, 0x00000048, | ||
7862 | 0x04000005, 0x83380580, 0x00000053, 0x02020800, | ||
7863 | 0x001005d8, 0x592c0206, 0x82000580, 0x00000007, | ||
7864 | 0x04000009, 0x59300011, 0x80000540, 0x04000006, | ||
7865 | 0x592c080c, 0x80040480, 0x4802580c, 0x4a025a06, | ||
7866 | 0x00000015, 0x592c0206, 0x80000540, 0x04020003, | ||
7867 | 0x4a025a06, 0x00000000, 0x0201f800, 0x000202da, | ||
7868 | 0x0201f000, 0x0002077d, 0x4933c857, 0x4d2c0000, | ||
7869 | 0x4c500000, 0x4c540000, 0x4c580000, 0x0201f800, | ||
7870 | 0x001007e4, 0x02000800, 0x001005d8, 0x497a5a06, | ||
7871 | 0x59c80017, 0x82000500, 0x0000f000, 0x48025c07, | ||
7872 | 0x59a80816, 0x82040c00, 0x00000018, 0x48065a07, | ||
7873 | 0x412c7800, 0x4d2c0000, 0x41cca000, 0x42002800, | ||
7874 | 0x00000001, 0x42001000, 0x0000002c, 0x82040480, | ||
7875 | 0x0000002d, 0x04021006, 0x832cac00, 0x00000009, | ||
7876 | 0x0201f800, 0x00108b96, 0x0401f02e, 0x40043000, | ||
7877 | 0x42000800, 0x0000002c, 0x832cac00, 0x00000009, | ||
7878 | 0x0201f800, 0x00108b96, 0x82183480, 0x0000002c, | ||
7879 | 0x0201f800, 0x001007e4, 0x0400001a, 0x80142800, | ||
7880 | 0x4a025804, 0x00000110, 0x492c7801, 0x82180c80, | ||
7881 | 0x0000003d, 0x04021007, 0x40180800, 0x832cac00, | ||
7882 | 0x00000005, 0x0201f800, 0x00108b96, 0x0401f015, | ||
7883 | 0x82081400, 0x0000003c, 0x82183480, 0x0000003c, | ||
7884 | 0x42000800, 0x0000003c, 0x412c7800, 0x832cac00, | ||
7885 | 0x00000005, 0x0201f800, 0x00108b96, 0x0401f7e5, | ||
7886 | 0x5c025800, 0x592c0206, 0x8400055e, 0x48025a06, | ||
7887 | 0x592c0407, 0x80080540, 0x48025c07, 0x0401f002, | ||
7888 | 0x5c025800, 0x813669c0, 0x04000003, 0x59343403, | ||
7889 | 0x0401f003, 0x42003000, 0x0000ffff, 0x49325808, | ||
7890 | 0x481a5c06, 0x82100580, 0x00000054, 0x04020002, | ||
7891 | 0x491e5813, 0x841401c0, 0x80100540, 0x48025804, | ||
7892 | 0x592c0001, 0x497a5801, 0x4c000000, 0x0201f800, | ||
7893 | 0x000202da, 0x5c025800, 0x812e59c0, 0x040207f9, | ||
7894 | 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, | ||
7895 | 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4d2c0000, | ||
7896 | 0x4c500000, 0x4c540000, 0x4c580000, 0x412cb800, | ||
7897 | 0x592c040b, 0x8c000516, 0x04000003, 0x41cca000, | ||
7898 | 0x0401f003, 0x83cca400, 0x00000006, 0x4008b000, | ||
7899 | 0x41781000, 0x82580480, 0x00000012, 0x04001004, | ||
7900 | 0x4200b000, 0x00000012, 0x40001000, 0x4c080000, | ||
7901 | 0x4d2c0000, 0x0201f800, 0x001007e4, 0x04000023, | ||
7902 | 0x5c001800, 0x492c1801, 0x485a5800, 0x832cac00, | ||
7903 | 0x00000002, 0x0201f800, 0x0010ab28, 0x585c040b, | ||
7904 | 0x8c000500, 0x0400000e, 0x832c1400, 0x00000002, | ||
7905 | 0x8c000516, 0x04000003, 0x82081400, 0x00000006, | ||
7906 | 0x46001000, 0x00000001, 0x80081000, 0x46001000, | ||
7907 | 0x00000900, 0x84000500, 0x4800bc0b, 0x5c001000, | ||
7908 | 0x800811c0, 0x040207da, 0x82000540, 0x00000001, | ||
7909 | 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, | ||
7910 | 0x5c00b800, 0x1c01f000, 0x5c025800, 0x5c001000, | ||
7911 | 0x0401f7f8, 0x4933c857, 0x83380d80, 0x00000015, | ||
7912 | 0x04020003, 0x0201f000, 0x0002077d, 0x83380d80, | ||
7913 | 0x00000016, 0x02020800, 0x001005d8, 0x0201f000, | ||
7914 | 0x0002077d, 0x4933c857, 0x4d2c0000, 0x4c500000, | ||
7915 | 0x4c540000, 0x4c580000, 0x59325808, 0x83cca400, | ||
7916 | 0x00000006, 0x59cc1806, 0x820c0580, 0x01000000, | ||
7917 | 0x04020004, 0x4200b000, 0x00000002, 0x0401f00f, | ||
7918 | 0x4200b000, 0x00000008, 0x832cac00, 0x00000005, | ||
7919 | 0x0201f800, 0x0010ab17, 0x8c0c1d00, 0x0400000b, | ||
7920 | 0x4200b000, 0x00000008, 0x592e5801, 0x812e59c0, | ||
7921 | 0x02000800, 0x001005d8, 0x832cac00, 0x00000005, | ||
7922 | 0x0201f800, 0x0010ab17, 0x0401f816, 0x5c00b000, | ||
7923 | 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, | ||
7924 | 0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000, | ||
7925 | 0x83cca400, 0x00000006, 0x5930a808, 0x8254ac00, | ||
7926 | 0x00000005, 0x4200b000, 0x00000007, 0x0201f800, | ||
7927 | 0x0010ab17, 0x5c00b000, 0x5c00a800, 0x5c00a000, | ||
7928 | 0x4933c857, 0x0201f800, 0x00109037, 0x02000000, | ||
7929 | 0x0002077d, 0x4d2c0000, 0x0201f800, 0x00109597, | ||
7930 | 0x0402000b, 0x41780800, 0x4d400000, 0x42028000, | ||
7931 | 0x00000000, 0x0201f800, 0x0010943b, 0x5c028000, | ||
7932 | 0x5c025800, 0x0201f000, 0x0002077d, 0x5931d821, | ||
7933 | 0x58ef400b, 0x58ee580d, 0x4a025a04, 0x00000103, | ||
7934 | 0x58ec0009, 0x0801f800, 0x5c025800, 0x0201f000, | ||
7935 | 0x0002077d, 0x4933c857, 0x59cc1806, 0x820c0580, | ||
7936 | 0x02000000, 0x04020014, 0x4a026802, 0x00fffffd, | ||
7937 | 0x5934000a, 0x84000504, 0x4802680a, 0x59300808, | ||
7938 | 0x800409c0, 0x02000000, 0x0002077d, 0x4a000a04, | ||
7939 | 0x00000103, 0x480c0805, 0x5931d821, 0x58ef400b, | ||
7940 | 0x58ee580d, 0x58ec0009, 0x0801f800, 0x0201f000, | ||
7941 | 0x0002077d, 0x42000000, 0x0010b86c, 0x0201f800, | ||
7942 | 0x0010aa47, 0x4c0c0000, 0x0401f804, 0x5c001800, | ||
7943 | 0x040207eb, 0x1c01f000, 0x4933c857, 0x4d2c0000, | ||
7944 | 0x59325808, 0x812e59c0, 0x04020009, 0x497a6206, | ||
7945 | 0x497a6205, 0x4d380000, 0x42027000, 0x00000022, | ||
7946 | 0x0401fb77, 0x5c027000, 0x80000580, 0x5c025800, | ||
7947 | 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c500000, | ||
7948 | 0x4c540000, 0x4c580000, 0x59325808, 0x592e5801, | ||
7949 | 0x832cac00, 0x00000005, 0x83cca400, 0x00000006, | ||
7950 | 0x59c80817, 0x82040d00, 0x000003ff, 0x82041480, | ||
7951 | 0x0000000f, 0x0400101b, 0x4200b000, 0x0000000f, | ||
7952 | 0x0201f800, 0x0010ab17, 0x592e5801, 0x832cac00, | ||
7953 | 0x00000005, 0x82080c80, 0x0000000f, 0x0400100d, | ||
7954 | 0x4200b000, 0x0000000f, 0x0201f800, 0x0010ab17, | ||
7955 | 0x592e5801, 0x832cac00, 0x00000005, 0x82041480, | ||
7956 | 0x0000000f, 0x04001007, 0x42001000, 0x0000000f, | ||
7957 | 0x4008b000, 0x0201f800, 0x0010ab17, 0x0401f004, | ||
7958 | 0x4004b000, 0x0201f800, 0x0010ab17, 0x5931d821, | ||
7959 | 0x58ef400b, 0x58ee580d, 0x4a025a04, 0x00000103, | ||
7960 | 0x592e5801, 0x58ec0009, 0x0801f800, 0x0201f800, | ||
7961 | 0x0002077d, 0x5c00b000, 0x5c00a800, 0x5c00a000, | ||
7962 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, | ||
7963 | 0x4c500000, 0x4c540000, 0x4c580000, 0x59cc0006, | ||
7964 | 0x82000d80, 0x01000000, 0x0400002c, 0x59cc0007, | ||
7965 | 0x9000b1c0, 0x8258b500, 0x000000ff, 0x8058b104, | ||
7966 | 0x8258b400, 0x00000002, 0x82580c80, 0x00000007, | ||
7967 | 0x04001003, 0x4200b000, 0x00000006, 0x83cca400, | ||
7968 | 0x00000006, 0x59301008, 0x800811c0, 0x02000800, | ||
7969 | 0x001005d8, 0x8208ac00, 0x00000005, 0x0201f800, | ||
7970 | 0x0010ab17, 0x82000d00, 0xff000000, 0x800409c0, | ||
7971 | 0x04000019, 0x8200b500, 0x000000ff, 0x8058b104, | ||
7972 | 0x82580c80, 0x0000000e, 0x04001003, 0x4200b000, | ||
7973 | 0x0000000d, 0x58081001, 0x800811c0, 0x02000800, | ||
7974 | 0x001005d8, 0x8208ac00, 0x00000005, 0x0201f800, | ||
7975 | 0x0010ab17, 0x0401f008, 0x59301008, 0x800811c0, | ||
7976 | 0x02000800, 0x001005d8, 0x48001005, 0x59cc0007, | ||
7977 | 0x48001006, 0x0401ff3b, 0x5c00b000, 0x5c00a800, | ||
7978 | 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857, | ||
7979 | 0x42000800, 0x00000000, 0x59cc0006, 0x82000580, | ||
7980 | 0x02000000, 0x04000003, 0x42000800, 0x00000001, | ||
7981 | 0x4d2c0000, 0x59325808, 0x812e59c0, 0x02000800, | ||
7982 | 0x001005d8, 0x48065a06, 0x0201f800, 0x000202da, | ||
7983 | 0x5c025800, 0x0201f000, 0x0002077d, 0x4933c857, | ||
7984 | 0x4d2c0000, 0x4c500000, 0x4c540000, 0x4c580000, | ||
7985 | 0x4200b000, 0x00000002, 0x59cc0806, 0x82040580, | ||
7986 | 0x01000000, 0x04000004, 0x8204b500, 0x0000ffff, | ||
7987 | 0x8058b104, 0x83cca400, 0x00000006, 0x59300008, | ||
7988 | 0x8200ac00, 0x00000005, 0x0201f800, 0x0010ab17, | ||
7989 | 0x0401ff0c, 0x5c00b000, 0x5c00a800, 0x5c00a000, | ||
7990 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x4803c857, | ||
7991 | 0x4807c857, 0x480bc857, 0x480fc857, 0x4813c857, | ||
7992 | 0x481bc857, 0x492fc857, 0x4d2c0000, 0x4c000000, | ||
7993 | 0x0201f800, 0x001007d3, 0x5c000000, 0x0400000f, | ||
7994 | 0x48025803, 0x5c000000, 0x4802580a, 0x4c000000, | ||
7995 | 0x481a5801, 0x48125809, 0x48065804, 0x480a5807, | ||
7996 | 0x480e5808, 0x412c1000, 0x0201f800, 0x00100858, | ||
7997 | 0x82000540, 0x00000001, 0x5c025800, 0x1c01f000, | ||
7998 | 0x4933c857, 0x4d1c0000, 0x59cc0001, 0x82000500, | ||
7999 | 0x00ffffff, 0x59341002, 0x82081500, 0x00ffffff, | ||
8000 | 0x80080580, 0x0402001f, 0x497a6205, 0x4d380000, | ||
8001 | 0x42027000, 0x00000035, 0x0201f800, 0x001093ba, | ||
8002 | 0x5c027000, 0x04020012, 0x591c001c, 0x800001c0, | ||
8003 | 0x0400000f, 0x497a381c, 0x591c0414, 0x8c000502, | ||
8004 | 0x02000800, 0x001005d8, 0x84000502, 0x48023c14, | ||
8005 | 0x591c1406, 0x82080580, 0x00000003, 0x04000006, | ||
8006 | 0x82080580, 0x00000006, 0x04000005, 0x0401fc9e, | ||
8007 | 0x0401f004, 0x0401f805, 0x0401f002, 0x0401f8c0, | ||
8008 | 0x5c023800, 0x1c01f000, 0x4d2c0000, 0x591e5808, | ||
8009 | 0x4933c857, 0x491fc857, 0x493bc857, 0x492fc857, | ||
8010 | 0x83380580, 0x00000015, 0x040000b3, 0x83380580, | ||
8011 | 0x00000016, 0x040200ae, 0x4d300000, 0x411e6000, | ||
8012 | 0x59cc0207, 0x4803c857, 0x82000d00, 0x0000ff00, | ||
8013 | 0x82040580, 0x00001700, 0x04000004, 0x82040580, | ||
8014 | 0x00000300, 0x0402005b, 0x591c0203, 0x4803c857, | ||
8015 | 0x82000580, 0x0000000d, 0x0400003f, 0x812e59c0, | ||
8016 | 0x0400009a, 0x591c0202, 0x4803c857, 0x82000580, | ||
8017 | 0x0000ffff, 0x0402007e, 0x592c020a, 0x4803c857, | ||
8018 | 0x82000500, 0x00000003, 0x82000580, 0x00000002, | ||
8019 | 0x04020007, 0x592c080f, 0x591c0011, 0x4803c857, | ||
8020 | 0x4807c857, 0x80040580, 0x04020071, 0x591c0414, | ||
8021 | 0x4803c857, 0x8c000500, 0x0402006d, 0x41780800, | ||
8022 | 0x591c1206, 0x42000000, 0x0000000a, 0x0201f800, | ||
8023 | 0x001066a0, 0x592c0406, 0x4803c857, 0x800001c0, | ||
8024 | 0x0400000c, 0x80080c80, 0x04001004, 0x02020800, | ||
8025 | 0x001005d8, 0x80001040, 0x480a5c06, 0x800811c0, | ||
8026 | 0x04020004, 0x0201f800, 0x00108d88, 0x0401f06b, | ||
8027 | 0x0201f800, 0x0010912a, 0x591c0817, 0x591c0018, | ||
8028 | 0x48065808, 0x48025809, 0x59300007, 0x8c000500, | ||
8029 | 0x02020800, 0x00100e99, 0x497a3808, 0x0201f800, | ||
8030 | 0x000201ba, 0x0402004a, 0x411e6000, 0x0401fc3e, | ||
8031 | 0x0401f05a, 0x0401fc6d, 0x04000013, 0x49366009, | ||
8032 | 0x4a026406, 0x00000003, 0x492e6008, 0x591c0817, | ||
8033 | 0x591c1018, 0x48066017, 0x480a6018, 0x4d380000, | ||
8034 | 0x591e7403, 0x4d300000, 0x411e6000, 0x0401fc2e, | ||
8035 | 0x5c026000, 0x0201f800, 0x000207a1, 0x5c027000, | ||
8036 | 0x0401f046, 0x59a80039, 0x48023a05, 0x0401f043, | ||
8037 | 0x59cc0407, 0x82000580, 0x0000000b, 0x04020025, | ||
8038 | 0x59340a00, 0x84040d0e, 0x48066a00, 0x592c0a04, | ||
8039 | 0x82040d00, 0x000000ff, 0x82040d80, 0x00000014, | ||
8040 | 0x04000003, 0x4a02621d, 0x00000003, 0x59300007, | ||
8041 | 0x8c000500, 0x02020800, 0x00100e99, 0x4d400000, | ||
8042 | 0x42028000, 0x00000003, 0x592c0a08, 0x0201f800, | ||
8043 | 0x00104e70, 0x0201f800, 0x000202da, 0x5c028000, | ||
8044 | 0x497a6008, 0x4a026403, 0x00000085, 0x4a026203, | ||
8045 | 0x00000009, 0x4a026406, 0x00000002, 0x42000800, | ||
8046 | 0x8000404b, 0x0201f800, 0x00020721, 0x0401f01b, | ||
8047 | 0x59cc0207, 0x82000580, 0x00002a00, 0x04020004, | ||
8048 | 0x59a80039, 0x48023a05, 0x0401f014, 0x812e59c0, | ||
8049 | 0x02000800, 0x001005d8, 0x4a025a04, 0x00000103, | ||
8050 | 0x591c0007, 0x8c000500, 0x02020800, 0x00100e99, | ||
8051 | 0x591c0402, 0x48025c06, 0x4a025a06, 0x00000003, | ||
8052 | 0x0201f800, 0x000202c1, 0x0201f800, 0x00107911, | ||
8053 | 0x0201f800, 0x001049b2, 0x5c026000, 0x0201f800, | ||
8054 | 0x0002077d, 0x0401f002, 0x5c026000, 0x5c025800, | ||
8055 | 0x1c01f000, 0x0401f819, 0x0401f7fd, 0x4933c857, | ||
8056 | 0x83380580, 0x00000015, 0x04020004, 0x59a80039, | ||
8057 | 0x48023a05, 0x0401f00d, 0x83380580, 0x00000016, | ||
8058 | 0x0402000d, 0x4d300000, 0x411e6000, 0x0201f800, | ||
8059 | 0x0010a5df, 0x0201f800, 0x000206fd, 0x0201f800, | ||
8060 | 0x0002077d, 0x5c026000, 0x497a381c, 0x0201f800, | ||
8061 | 0x0002077d, 0x1c01f000, 0x591c0414, 0x84000540, | ||
8062 | 0x48023c14, 0x59cc100b, 0x4933c857, 0x491fc857, | ||
8063 | 0x492fc857, 0x4803c857, 0x480bc857, 0x8c08153c, | ||
8064 | 0x04000006, 0x59a80039, 0x48023a05, 0x497a381c, | ||
8065 | 0x0201f000, 0x0002077d, 0x4d300000, 0x411e6000, | ||
8066 | 0x0201f800, 0x00108bd7, 0x5c026000, 0x591c0406, | ||
8067 | 0x82000580, 0x00000000, 0x02000000, 0x0002077d, | ||
8068 | 0x591c0403, 0x82000580, 0x00000050, 0x0402000d, | ||
8069 | 0x4d300000, 0x411e6000, 0x4a026203, 0x00000001, | ||
8070 | 0x42000800, 0x80000043, 0x0201f800, 0x00020721, | ||
8071 | 0x5c026000, 0x497a381c, 0x0201f000, 0x0002077d, | ||
8072 | 0x591c0203, 0x82000580, 0x0000000d, 0x04000014, | ||
8073 | 0x812e59c0, 0x02000800, 0x001005d8, 0x591c0203, | ||
8074 | 0x82000580, 0x00000004, 0x04020011, 0x592c020a, | ||
8075 | 0x8c000502, 0x0400000e, 0x4a023812, 0x0fffffff, | ||
8076 | 0x592c0208, 0x8400051e, 0x48025a08, 0x42000000, | ||
8077 | 0x00000001, 0x48023a14, 0x0401f021, 0x42000000, | ||
8078 | 0x00000007, 0x48023a14, 0x0401f01d, 0x592c020a, | ||
8079 | 0x4803c857, 0x8c000500, 0x0402000b, 0x8c000502, | ||
8080 | 0x040007f7, 0x591c0414, 0x8c00051c, 0x040207eb, | ||
8081 | 0x591c0011, 0x4803c857, 0x800001c0, 0x040007f0, | ||
8082 | 0x0401f7e6, 0x8c08153a, 0x040207ed, 0x59cc000a, | ||
8083 | 0x592c180f, 0x4803c857, 0x480fc857, 0x800c0580, | ||
8084 | 0x040007e7, 0x59cc000a, 0x4803c857, 0x48023816, | ||
8085 | 0x42000000, 0x00000005, 0x48023a14, 0x0201f000, | ||
8086 | 0x00109259, 0x4933c857, 0x4d1c0000, 0x59cc0001, | ||
8087 | 0x59341002, 0x80080580, 0x82000500, 0x00ffffff, | ||
8088 | 0x04020041, 0x59301419, 0x0201f800, 0x00109410, | ||
8089 | 0x02000800, 0x001005d8, 0x591c1406, 0x82080580, | ||
8090 | 0x00000007, 0x04000038, 0x82080580, 0x00000002, | ||
8091 | 0x04000035, 0x82080580, 0x00000000, 0x04000032, | ||
8092 | 0x591c0202, 0x82000d80, 0x0000ffff, 0x04000004, | ||
8093 | 0x59301a19, 0x800c0580, 0x0402002b, 0x83380580, | ||
8094 | 0x00000015, 0x04000026, 0x4d300000, 0x4d2c0000, | ||
8095 | 0x411e6000, 0x59325808, 0x0201f800, 0x00109037, | ||
8096 | 0x02000800, 0x001005d8, 0x592c0204, 0x82000500, | ||
8097 | 0x000000ff, 0x82000580, 0x00000014, 0x04000003, | ||
8098 | 0x4a02621d, 0x00000003, 0x42028000, 0x00000003, | ||
8099 | 0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800, | ||
8100 | 0x000202da, 0x5c025800, 0x497a6008, 0x4a026403, | ||
8101 | 0x00000085, 0x4a026203, 0x00000009, 0x4a026406, | ||
8102 | 0x00000002, 0x42000800, 0x8000404b, 0x0201f800, | ||
8103 | 0x00020721, 0x5c026000, 0x0401f003, 0x59a80039, | ||
8104 | 0x48023a05, 0x497a381c, 0x0201f800, 0x0002077d, | ||
8105 | 0x5c023800, 0x1c01f000, 0x4933c857, 0x4c580000, | ||
8106 | 0x4d2c0000, 0x59325808, 0x83383580, 0x00000015, | ||
8107 | 0x04000010, 0x59342200, 0x84102502, 0x48126a00, | ||
8108 | 0x0201f800, 0x00109037, 0x04000066, 0x0201f800, | ||
8109 | 0x00109597, 0x04020005, 0x4200b000, 0x00000002, | ||
8110 | 0x0201f800, 0x0010957d, 0x0401fa0a, 0x0401f079, | ||
8111 | 0x83cc1400, 0x00000008, 0x4200b000, 0x00000002, | ||
8112 | 0x83341c00, 0x00000006, 0x0201f800, 0x0010855a, | ||
8113 | 0x04020015, 0x83cc1400, 0x0000000a, 0x4200b000, | ||
8114 | 0x00000002, 0x83341c00, 0x00000008, 0x0201f800, | ||
8115 | 0x0010855a, 0x0402000c, 0x0201f800, 0x00102074, | ||
8116 | 0x59342200, 0x59cc1007, 0x800811c0, 0x04000003, | ||
8117 | 0x480a6801, 0x84102542, 0x8410251a, 0x48126a00, | ||
8118 | 0x0401f05f, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
8119 | 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864, | ||
8120 | 0x0201f800, 0x0010aa47, 0x59340200, 0x84000558, | ||
8121 | 0x48026a00, 0x4d300000, 0x0201f800, 0x0002075a, | ||
8122 | 0x02000800, 0x001005d8, 0x49366009, 0x497a6008, | ||
8123 | 0x4a026406, 0x00000001, 0x4a026403, 0x00000001, | ||
8124 | 0x42003000, 0x00000003, 0x0201f800, 0x0010a942, | ||
8125 | 0x0201f800, 0x00103b25, 0x04000011, 0x41782800, | ||
8126 | 0x42003000, 0x00000001, 0x4d400000, 0x42028000, | ||
8127 | 0x00000029, 0x0201f800, 0x0010a43e, 0x5c028000, | ||
8128 | 0x4a026406, 0x00000004, 0x4a026203, 0x00000007, | ||
8129 | 0x4a026420, 0x00000001, 0x0401f009, 0x4a026203, | ||
8130 | 0x00000001, 0x42000800, 0x0000000b, 0x0201f800, | ||
8131 | 0x00104571, 0x0201f800, 0x0010672b, 0x5c026000, | ||
8132 | 0x0201f800, 0x00109037, 0x04000022, 0x0201f800, | ||
8133 | 0x00109597, 0x04020022, 0x0401f9ae, 0x0401f01d, | ||
8134 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c, | ||
8135 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
8136 | 0x59340200, 0x84000558, 0x48026a00, 0x42003000, | ||
8137 | 0x00000003, 0x41782800, 0x42002000, 0x00000005, | ||
8138 | 0x4d400000, 0x4d440000, 0x59368c03, 0x42028000, | ||
8139 | 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800, | ||
8140 | 0x5c028000, 0x5c027800, 0x0201f800, 0x00102074, | ||
8141 | 0x0201f800, 0x0002077d, 0x0401f002, 0x0401fca9, | ||
8142 | 0x5c025800, 0x5c00b000, 0x1c01f000, 0x4933c857, | ||
8143 | 0x41380000, 0x83383480, 0x00000056, 0x02021800, | ||
8144 | 0x001005d8, 0x0c01f001, 0x00107ef7, 0x00107ef2, | ||
8145 | 0x00107ef7, 0x00107ef7, 0x00107ef7, 0x00107ef7, | ||
8146 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8147 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8148 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8149 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8150 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8151 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8152 | 0x00107ef0, 0x00107ef7, 0x00107ef0, 0x00107ef7, | ||
8153 | 0x00107ef7, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8154 | 0x00107ef0, 0x00107ef0, 0x00107ef7, 0x00107ef0, | ||
8155 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8156 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8157 | 0x00107ef7, 0x00107ef7, 0x00107ef0, 0x00107ef0, | ||
8158 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0, | ||
8159 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7, | ||
8160 | 0x00107ef0, 0x00107ef0, 0x00107ef7, 0x00107ef7, | ||
8161 | 0x00107ef0, 0x00107ef7, 0x00107ef7, 0x00107ef0, | ||
8162 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7, | ||
8163 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7, | ||
8164 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7, | ||
8165 | 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7, | ||
8166 | 0x0201f800, 0x001005d8, 0x4a026203, 0x00000001, | ||
8167 | 0x493a6403, 0x0201f000, 0x0010672b, 0x4933c857, | ||
8168 | 0x4a026203, 0x00000001, 0x493a6403, 0x0201f000, | ||
8169 | 0x0010672b, 0x4933c857, 0x59300403, 0x82003480, | ||
8170 | 0x00000056, 0x02021800, 0x001005d8, 0x83383580, | ||
8171 | 0x00000013, 0x04000093, 0x83383580, 0x00000027, | ||
8172 | 0x0402004b, 0x0201f800, 0x00106bbf, 0x0201f800, | ||
8173 | 0x00109134, 0x0400000b, 0x0201f800, 0x0010914e, | ||
8174 | 0x04000041, 0x59300403, 0x82000d80, 0x00000022, | ||
8175 | 0x04020038, 0x0401fc61, 0x0400003a, 0x0401f03a, | ||
8176 | 0x0201f800, 0x00102074, 0x42000800, 0x00000007, | ||
8177 | 0x0201f800, 0x00104571, 0x0401f8fe, 0x4d440000, | ||
8178 | 0x59368c03, 0x83440580, 0x000007fe, 0x04020008, | ||
8179 | 0x59a81026, 0x84081540, 0x0201f800, 0x0010513b, | ||
8180 | 0x04020002, 0x8408154a, 0x480b5026, 0x42028000, | ||
8181 | 0x00000029, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
8182 | 0x0010203c, 0x5c027800, 0x836c0580, 0x00000003, | ||
8183 | 0x0400000c, 0x59326809, 0x59340008, 0x800001c0, | ||
8184 | 0x04020008, 0x59368c03, 0x4933c857, 0x4937c857, | ||
8185 | 0x4947c857, 0x0201f800, 0x001045fb, 0x0401f00c, | ||
8186 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
8187 | 0x42003000, 0x00000015, 0x41782800, 0x42002000, | ||
8188 | 0x00000003, 0x0201f800, 0x0010985e, 0x5c028800, | ||
8189 | 0x0201f800, 0x00109326, 0x0201f000, 0x0002077d, | ||
8190 | 0x1c01f000, 0x0401f8cb, 0x0401f7fa, 0x83380580, | ||
8191 | 0x00000014, 0x0400000b, 0x0201f800, 0x00106f60, | ||
8192 | 0x02020000, 0x00107974, 0x59300203, 0x82000580, | ||
8193 | 0x00000002, 0x040000ed, 0x0201f800, 0x001005d8, | ||
8194 | 0x0201f800, 0x00106bbf, 0x4d3c0000, 0x417a7800, | ||
8195 | 0x0201f800, 0x0010203c, 0x5c027800, 0x42003000, | ||
8196 | 0x00000016, 0x41782800, 0x4d400000, 0x4d440000, | ||
8197 | 0x59368c03, 0x42002000, 0x00000009, 0x42028000, | ||
8198 | 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800, | ||
8199 | 0x5c028000, 0x42000000, 0x0010b864, 0x0201f800, | ||
8200 | 0x0010aa47, 0x0201f800, 0x00109134, 0x0402000c, | ||
8201 | 0x0201f800, 0x00102074, 0x0401f89e, 0x59340c03, | ||
8202 | 0x82040580, 0x000007fe, 0x040207ca, 0x59a80826, | ||
8203 | 0x84040d40, 0x48075026, 0x0401f7c6, 0x0201f800, | ||
8204 | 0x0010914e, 0x04020003, 0x0401f892, 0x0401f7c1, | ||
8205 | 0x59300403, 0x82000d80, 0x00000032, 0x04020004, | ||
8206 | 0x0201f800, 0x0010230c, 0x0401f7ba, 0x59300403, | ||
8207 | 0x82000d80, 0x00000022, 0x04000886, 0x0401f7b5, | ||
8208 | 0x4803c857, 0x0c01f001, 0x00108016, 0x00108016, | ||
8209 | 0x00108016, 0x00108016, 0x00108016, 0x00108016, | ||
8210 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8211 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8212 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8213 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8214 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8215 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8216 | 0x00107ff9, 0x00108016, 0x00107ff0, 0x00108016, | ||
8217 | 0x00108016, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8218 | 0x00107ff0, 0x00107ff0, 0x00108016, 0x00108016, | ||
8219 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8220 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0, | ||
8221 | 0x00108007, 0x00108016, 0x00107ff0, 0x00108000, | ||
8222 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108000, | ||
8223 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016, | ||
8224 | 0x00108003, 0x00107ff0, 0x00107ff2, 0x00108016, | ||
8225 | 0x00107ff0, 0x00108016, 0x00108016, 0x00107ff0, | ||
8226 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016, | ||
8227 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016, | ||
8228 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016, | ||
8229 | 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016, | ||
8230 | 0x0201f800, 0x001005d8, 0x4d2c0000, 0x59325808, | ||
8231 | 0x0201f800, 0x000202da, 0x5c025800, 0x0201f000, | ||
8232 | 0x0002077d, 0x4a026203, 0x00000005, 0x59a80039, | ||
8233 | 0x48026205, 0x59a80037, 0x48026206, 0x1c01f000, | ||
8234 | 0x5930081e, 0x49780a05, 0x0401f014, 0x0201f800, | ||
8235 | 0x00109326, 0x0201f000, 0x0002077d, 0x0201f800, | ||
8236 | 0x0010230c, 0x0201f800, 0x00106c55, 0x04000005, | ||
8237 | 0x0201f800, 0x00106bbf, 0x0201f000, 0x0002077d, | ||
8238 | 0x0201f800, 0x00106bbf, 0x0201f800, 0x0002077d, | ||
8239 | 0x0201f000, 0x00106c4b, 0x4933c857, 0x4a026203, | ||
8240 | 0x00000002, 0x59a80037, 0x48026206, 0x1c01f000, | ||
8241 | 0x4933c857, 0x0201f800, 0x00109037, 0x0400002a, | ||
8242 | 0x4d2c0000, 0x0201f800, 0x00109597, 0x0402000a, | ||
8243 | 0x4d400000, 0x42028000, 0x00000031, 0x42000800, | ||
8244 | 0x00000004, 0x0201f800, 0x0010943b, 0x5c028000, | ||
8245 | 0x0401f01c, 0x59300c06, 0x82040580, 0x00000010, | ||
8246 | 0x04000004, 0x82040580, 0x00000011, 0x0402000a, | ||
8247 | 0x4a025a06, 0x00000031, 0x4a02580d, 0x00000004, | ||
8248 | 0x4a02580e, 0x000000ff, 0x0201f800, 0x000202da, | ||
8249 | 0x0401f00c, 0x592c0404, 0x8c00051e, 0x04000009, | ||
8250 | 0x4a025a04, 0x00000103, 0x4a025805, 0x01000000, | ||
8251 | 0x5931d821, 0x58ef400b, 0x58ec0009, 0x0801f800, | ||
8252 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x59340400, | ||
8253 | 0x82000500, 0x000000ff, 0x82003480, 0x0000000c, | ||
8254 | 0x02021800, 0x001005d8, 0x59303403, 0x82180d80, | ||
8255 | 0x0000004d, 0x02000000, 0x0010938b, 0x82180d80, | ||
8256 | 0x00000033, 0x02000000, 0x00109349, 0x82180d80, | ||
8257 | 0x00000028, 0x02000000, 0x0010918f, 0x82180d80, | ||
8258 | 0x00000029, 0x02000000, 0x001091a3, 0x82180d80, | ||
8259 | 0x0000001f, 0x02000000, 0x00107b28, 0x82180d80, | ||
8260 | 0x00000055, 0x02000000, 0x00107b01, 0x82180d80, | ||
8261 | 0x00000000, 0x04000591, 0x82180d80, 0x00000022, | ||
8262 | 0x02000000, 0x00107b55, 0x82180d80, 0x00000035, | ||
8263 | 0x02000000, 0x00107c50, 0x82180d80, 0x00000039, | ||
8264 | 0x04000539, 0x82180d80, 0x0000003d, 0x02000000, | ||
8265 | 0x00107b85, 0x82180d80, 0x00000044, 0x02000000, | ||
8266 | 0x00107bc2, 0x82180d80, 0x00000049, 0x02000000, | ||
8267 | 0x00107c17, 0x82180d80, 0x00000041, 0x02000000, | ||
8268 | 0x00107c03, 0x82180d80, 0x00000043, 0x02000000, | ||
8269 | 0x001094dc, 0x82180d80, 0x00000051, 0x02000000, | ||
8270 | 0x00109542, 0x82180d80, 0x00000004, 0x04020003, | ||
8271 | 0x42000000, 0x00000001, 0x83380d80, 0x00000015, | ||
8272 | 0x04000006, 0x83380d80, 0x00000016, 0x02020000, | ||
8273 | 0x00107974, 0x0401f20f, 0x4d2c0000, 0x4d3c0000, | ||
8274 | 0x0c01f804, 0x5c027800, 0x5c025800, 0x1c01f000, | ||
8275 | 0x001080b8, 0x001080bc, 0x001080b8, 0x00108131, | ||
8276 | 0x001080b8, 0x00108226, 0x001082bf, 0x001080b8, | ||
8277 | 0x001080b8, 0x00108288, 0x001080b8, 0x0010829a, | ||
8278 | 0x4933c857, 0x497a6007, 0x59300808, 0x58040000, | ||
8279 | 0x4a000a04, 0x00000103, 0x0201f000, 0x0002077d, | ||
8280 | 0x4933c857, 0x40000000, 0x40000000, 0x1c01f000, | ||
8281 | 0x4933c857, 0x59a80016, 0x82000580, 0x00000074, | ||
8282 | 0x0402005c, 0x0201f800, 0x0010a2c8, 0x04020016, | ||
8283 | 0x0401f85c, 0x0201f800, 0x00109037, 0x0400000c, | ||
8284 | 0x0201f800, 0x00109597, 0x04020009, 0x41780800, | ||
8285 | 0x4d400000, 0x42028000, 0x00000000, 0x0201f800, | ||
8286 | 0x0010943b, 0x5c028000, 0x0401f003, 0x0201f800, | ||
8287 | 0x00102074, 0x0201f800, 0x001048c1, 0x0201f000, | ||
8288 | 0x0002077d, 0x0201f800, 0x00109037, 0x04000007, | ||
8289 | 0x0201f800, 0x00109597, 0x04020004, 0x0401ff3d, | ||
8290 | 0x0201f000, 0x0002077d, 0x417a7800, 0x0201f800, | ||
8291 | 0x0010203c, 0x42000000, 0x0010b864, 0x0201f800, | ||
8292 | 0x0010aa47, 0x59340200, 0x84000558, 0x48026a00, | ||
8293 | 0x42003000, 0x00000003, 0x0201f800, 0x0010a942, | ||
8294 | 0x4d300000, 0x0201f800, 0x0002075a, 0x02000800, | ||
8295 | 0x001005d8, 0x49366009, 0x497a6008, 0x4a026406, | ||
8296 | 0x00000001, 0x4a026403, 0x00000001, 0x0201f800, | ||
8297 | 0x00103b25, 0x04000011, 0x4a026406, 0x00000004, | ||
8298 | 0x4a026203, 0x00000007, 0x4a026420, 0x00000001, | ||
8299 | 0x42003000, 0x00000001, 0x4d400000, 0x42028000, | ||
8300 | 0x00000029, 0x41782800, 0x0201f800, 0x0010a43e, | ||
8301 | 0x5c028000, 0x0401f009, 0x42000800, 0x0000000b, | ||
8302 | 0x0201f800, 0x00104571, 0x4a026203, 0x00000001, | ||
8303 | 0x0201f800, 0x0010672b, 0x5c026000, 0x0401ff05, | ||
8304 | 0x0201f800, 0x00102074, 0x0201f000, 0x0002077d, | ||
8305 | 0x0401ff00, 0x42000000, 0x00000001, 0x0401f0c7, | ||
8306 | 0x4933c857, 0x59340200, 0x8c000500, 0x0400000d, | ||
8307 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x00104567, | ||
8308 | 0x5c027800, 0x0201f800, 0x00103b25, 0x04000005, | ||
8309 | 0x42000800, 0x00000006, 0x0201f800, 0x00104571, | ||
8310 | 0x1c01f000, 0x4933c857, 0x59a80816, 0x82040580, | ||
8311 | 0x00000074, 0x0400000e, 0x4807c857, 0x82040580, | ||
8312 | 0x00000100, 0x040200a0, 0x59cc0408, 0x4803c857, | ||
8313 | 0x8c000500, 0x0400009c, 0x59341403, 0x82080580, | ||
8314 | 0x000007fe, 0x04000006, 0x0401f097, 0x59341403, | ||
8315 | 0x82080580, 0x000007fe, 0x04020003, 0x0401fa9c, | ||
8316 | 0x0401f04c, 0x0201f800, 0x0010462a, 0x59341403, | ||
8317 | 0x82080580, 0x000007fc, 0x0402001f, 0x4a026802, | ||
8318 | 0x00fffffc, 0x0201f800, 0x00109037, 0x04000012, | ||
8319 | 0x0201f800, 0x00109597, 0x0402000f, 0x0401f8a9, | ||
8320 | 0x41780800, 0x4d400000, 0x42028000, 0x00000000, | ||
8321 | 0x0201f800, 0x0010943b, 0x5c028000, 0x42000800, | ||
8322 | 0x00000004, 0x0201f800, 0x00104571, 0x0201f000, | ||
8323 | 0x0002077d, 0x42000800, 0x00000004, 0x0201f800, | ||
8324 | 0x00104571, 0x0201f800, 0x00102074, 0x0201f000, | ||
8325 | 0x0002077d, 0x59a80005, 0x8c000514, 0x04000011, | ||
8326 | 0x0201f800, 0x0010513b, 0x42001000, 0x00000010, | ||
8327 | 0x04020009, 0x59340002, 0x82000500, 0x00ff0000, | ||
8328 | 0x82000580, 0x00ff0000, 0x04000006, 0x42001000, | ||
8329 | 0x00000008, 0x0201f800, 0x00104c6d, 0x0402005a, | ||
8330 | 0x0201f800, 0x00109037, 0x0400005b, 0x0201f800, | ||
8331 | 0x00109597, 0x04020005, 0x592c0404, 0x8c00051c, | ||
8332 | 0x040207c9, 0x0401f877, 0x42000800, 0x00000005, | ||
8333 | 0x0201f800, 0x00104571, 0x4a026203, 0x00000001, | ||
8334 | 0x4a026403, 0x00000003, 0x0201f000, 0x0010672b, | ||
8335 | 0x59cc0408, 0x8c000518, 0x04000010, 0x0201f800, | ||
8336 | 0x001092e5, 0x0201f800, 0x0010513b, 0x04000004, | ||
8337 | 0x59cc0408, 0x8c000516, 0x040207b3, 0x59a80026, | ||
8338 | 0x8400054a, 0x48035026, 0x59a80010, 0x84000570, | ||
8339 | 0x48038832, 0x0401f7ac, 0x42001000, 0x000000ef, | ||
8340 | 0x480b5010, 0x497b8830, 0x84081570, 0x480b8832, | ||
8341 | 0x59c40802, 0x84040d4c, 0x48078802, 0x0201f800, | ||
8342 | 0x0010930f, 0x59a80026, 0x84000548, 0x48035026, | ||
8343 | 0x0201f800, 0x0010a3da, 0x0402079b, 0x59a80026, | ||
8344 | 0x8400054c, 0x48035026, 0x42000800, 0x00000006, | ||
8345 | 0x0201f800, 0x00104571, 0x417a7800, 0x0201f800, | ||
8346 | 0x00104567, 0x42000000, 0x000000e8, 0x0201f800, | ||
8347 | 0x00105c9a, 0x02000800, 0x001045a6, 0x02020800, | ||
8348 | 0x001005d8, 0x49366009, 0x59340200, 0x8400051a, | ||
8349 | 0x48026a00, 0x42000800, 0x00000003, 0x0201f800, | ||
8350 | 0x00104571, 0x4a026406, 0x00000001, 0x4a026203, | ||
8351 | 0x00000001, 0x4a026403, 0x00000002, 0x0201f000, | ||
8352 | 0x0010672b, 0x0401fe43, 0x42000000, 0x00000001, | ||
8353 | 0x0401f00a, 0x599c0017, 0x8c00050a, 0x040007ab, | ||
8354 | 0x42000800, 0x00000004, 0x0201f800, 0x00104571, | ||
8355 | 0x0201f000, 0x0002077d, 0x4933c857, 0x80003540, | ||
8356 | 0x04000005, 0x42000800, 0x00000007, 0x0201f800, | ||
8357 | 0x00104571, 0x801831c0, 0x0402000e, 0x59302008, | ||
8358 | 0x801021c0, 0x04000004, 0x58100404, 0x8c00051e, | ||
8359 | 0x04020008, 0x59341c03, 0x42002000, 0x00000004, | ||
8360 | 0x42003000, 0x00000012, 0x0201f800, 0x00103aae, | ||
8361 | 0x0201f800, 0x00102074, 0x0201f000, 0x0002077d, | ||
8362 | 0x4c5c0000, 0x4d2c0000, 0x59325808, 0x0201f800, | ||
8363 | 0x00105755, 0x5c025800, 0x59cc0008, 0x48002805, | ||
8364 | 0x59cc0009, 0x48002806, 0x49782807, 0x49782808, | ||
8365 | 0x49782809, 0x4978280a, 0x59cc0013, 0x8c00053e, | ||
8366 | 0x04000009, 0x59cc0414, 0x900001c0, 0x59ccbc15, | ||
8367 | 0x805c0540, 0x48002807, 0x59cc0416, 0x900001c0, | ||
8368 | 0x48002808, 0x59cc0017, 0x8c00053e, 0x04000009, | ||
8369 | 0x59cc0418, 0x900001c0, 0x59ccbc19, 0x805c0540, | ||
8370 | 0x48002809, 0x59cc041a, 0x900001c0, 0x4800280a, | ||
8371 | 0x5c00b800, 0x1c01f000, 0x4933c857, 0x59a80016, | ||
8372 | 0x82000580, 0x00000014, 0x04020048, 0x59a80005, | ||
8373 | 0x8c000514, 0x04000015, 0x0201f800, 0x0010513b, | ||
8374 | 0x42001000, 0x00000010, 0x04020009, 0x59340002, | ||
8375 | 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, | ||
8376 | 0x0400000a, 0x42001000, 0x00000008, 0x0201f800, | ||
8377 | 0x00104c6d, 0x04000005, 0x59a80005, 0x84000556, | ||
8378 | 0x48035005, 0x0401f031, 0x836c0580, 0x00000003, | ||
8379 | 0x0402000b, 0x59300008, 0x80000540, 0x04020008, | ||
8380 | 0x59341c03, 0x42002000, 0x00000006, 0x42003000, | ||
8381 | 0x00000013, 0x0201f800, 0x00103aae, 0x0201f800, | ||
8382 | 0x0010468d, 0x0401fecf, 0x0401fa1d, 0x0402001f, | ||
8383 | 0x59340404, 0x80000540, 0x0400001c, 0x42000800, | ||
8384 | 0x00000006, 0x0201f800, 0x00104571, 0x0201f800, | ||
8385 | 0x00109037, 0x04000011, 0x0201f800, 0x00109597, | ||
8386 | 0x0402000a, 0x41780800, 0x4d400000, 0x42028000, | ||
8387 | 0x00000000, 0x0201f800, 0x0010943b, 0x5c028000, | ||
8388 | 0x0201f000, 0x0002077d, 0x4a025a04, 0x00000103, | ||
8389 | 0x4a025805, 0x02000000, 0x0201f800, 0x00102074, | ||
8390 | 0x0201f000, 0x0002077d, 0x0201f800, 0x00104c19, | ||
8391 | 0x0201f800, 0x00109037, 0x04000007, 0x0201f800, | ||
8392 | 0x00109597, 0x04020004, 0x0401fda2, 0x0201f000, | ||
8393 | 0x0002077d, 0x0401fd9f, 0x80000580, 0x59a80005, | ||
8394 | 0x8c000516, 0x04000005, 0x84000516, 0x48035005, | ||
8395 | 0x82000540, 0x00000001, 0x0401ff60, 0x1c01f000, | ||
8396 | 0x4933c857, 0x59a80016, 0x82000580, 0x00000014, | ||
8397 | 0x0402000b, 0x42000800, 0x0000000b, 0x0201f800, | ||
8398 | 0x00104571, 0x4a026203, 0x00000001, 0x4a026403, | ||
8399 | 0x00000001, 0x0201f000, 0x0010672b, 0x42000000, | ||
8400 | 0x00000001, 0x0401f74d, 0x4933c857, 0x40003000, | ||
8401 | 0x59a80016, 0x82000580, 0x00000004, 0x0402000a, | ||
8402 | 0x82183580, 0x0000000b, 0x04020005, 0x42000800, | ||
8403 | 0x00000007, 0x0201f800, 0x00104571, 0x0201f000, | ||
8404 | 0x0002077d, 0x42000000, 0x00000001, 0x0401f73b, | ||
8405 | 0x4803c857, 0x4d2c0000, 0x4d3c0000, 0x0c01f804, | ||
8406 | 0x5c027800, 0x5c025800, 0x1c01f000, 0x001080b8, | ||
8407 | 0x001082ce, 0x001080b8, 0x00108323, 0x001080b8, | ||
8408 | 0x00108391, 0x001082bf, 0x001080b8, 0x001080b8, | ||
8409 | 0x001083b1, 0x001080b8, 0x001083c1, 0x4933c857, | ||
8410 | 0x4d1c0000, 0x59301403, 0x82080580, 0x00000003, | ||
8411 | 0x04000008, 0x82081580, 0x0000001e, 0x04020003, | ||
8412 | 0x0201f800, 0x0002077d, 0x5c023800, 0x1c01f000, | ||
8413 | 0x0401ff5a, 0x0401f7fd, 0x4933c857, 0x0201f800, | ||
8414 | 0x00109037, 0x0400000b, 0x0201f800, 0x00109597, | ||
8415 | 0x04020008, 0x4200b000, 0x00000002, 0x0201f800, | ||
8416 | 0x0010957d, 0x0401fd43, 0x0201f000, 0x0002077d, | ||
8417 | 0x0401f8f5, 0x04020030, 0x417a7800, 0x0201f800, | ||
8418 | 0x00104567, 0x417a7800, 0x0201f800, 0x0010203c, | ||
8419 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
8420 | 0x59340200, 0x84000558, 0x48026a00, 0x4a026403, | ||
8421 | 0x00000002, 0x42003000, 0x00000003, 0x0201f800, | ||
8422 | 0x0010a942, 0x0201f800, 0x00103b25, 0x04000011, | ||
8423 | 0x4d400000, 0x41782800, 0x42003000, 0x00000005, | ||
8424 | 0x42028000, 0x00000029, 0x0201f800, 0x0010a43e, | ||
8425 | 0x5c028000, 0x4a026203, 0x00000007, 0x4a026406, | ||
8426 | 0x00000004, 0x4a026420, 0x00000001, 0x1c01f000, | ||
8427 | 0x42000800, 0x00000003, 0x0201f800, 0x00104571, | ||
8428 | 0x4a026203, 0x00000001, 0x0201f800, 0x0010672b, | ||
8429 | 0x0401f7f7, 0x59cc0407, 0x82000580, 0x00000009, | ||
8430 | 0x0402000a, 0x59340412, 0x82000500, 0x000000ff, | ||
8431 | 0x0400000c, 0x80000040, 0x48026c12, 0x4a026206, | ||
8432 | 0x0000000a, 0x0401f7ea, 0x59cc0207, 0x82000500, | ||
8433 | 0x0000ff00, 0x82000580, 0x00001900, 0x040007c2, | ||
8434 | 0x0401fcfc, 0x80000580, 0x0401f6c4, 0x4933c857, | ||
8435 | 0x59a80032, 0x80000540, 0x04000015, 0x59340403, | ||
8436 | 0x82000580, 0x000007fe, 0x04020011, 0x59a80010, | ||
8437 | 0x80000000, 0x48035010, 0x417a7800, 0x0201f800, | ||
8438 | 0x00104567, 0x42000800, 0x00000003, 0x0201f800, | ||
8439 | 0x00104571, 0x4a026203, 0x00000001, 0x4a026403, | ||
8440 | 0x00000002, 0x0201f000, 0x0010672b, 0x0201f800, | ||
8441 | 0x00109037, 0x04000011, 0x0201f800, 0x00109597, | ||
8442 | 0x0402000e, 0x4c580000, 0x4200b000, 0x00000002, | ||
8443 | 0x0201f800, 0x0010957d, 0x5c00b000, 0x0401fcd5, | ||
8444 | 0x42000800, 0x00000007, 0x0201f800, 0x00104571, | ||
8445 | 0x0201f000, 0x0002077d, 0x0401fcce, 0x59cc3407, | ||
8446 | 0x82183500, 0x000000ff, 0x82180580, 0x00000005, | ||
8447 | 0x0400001c, 0x82180580, 0x0000000b, 0x04000016, | ||
8448 | 0x59cc0207, 0x82000500, 0x0000ff00, 0x04020004, | ||
8449 | 0x82180580, 0x00000009, 0x04000012, 0x82000580, | ||
8450 | 0x00001900, 0x0402000c, 0x82180580, 0x00000009, | ||
8451 | 0x0400000c, 0x42000800, 0x00000004, 0x0201f800, | ||
8452 | 0x00104571, 0x0201f800, 0x00102074, 0x0201f000, | ||
8453 | 0x0002077d, 0x42000000, 0x00000001, 0x0401f677, | ||
8454 | 0x0201f800, 0x00109037, 0x59325808, 0x04000008, | ||
8455 | 0x592c0204, 0x82000580, 0x00000139, 0x040007f6, | ||
8456 | 0x592c0404, 0x8c00051e, 0x040207f3, 0x59340403, | ||
8457 | 0x82000580, 0x000007fe, 0x04020007, 0x59a80026, | ||
8458 | 0x84000540, 0x48035026, 0x0201f800, 0x00104229, | ||
8459 | 0x0401f7e9, 0x417a7800, 0x0201f800, 0x0010203c, | ||
8460 | 0x42003000, 0x00000005, 0x0201f800, 0x0010a942, | ||
8461 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
8462 | 0x0401f7dd, 0x4933c857, 0x0401f84d, 0x0402000b, | ||
8463 | 0x42000800, 0x00000005, 0x0201f800, 0x00104571, | ||
8464 | 0x4a026203, 0x00000001, 0x4a026403, 0x00000003, | ||
8465 | 0x0201f000, 0x0010672b, 0x42000800, 0x00000004, | ||
8466 | 0x0201f800, 0x00104571, 0x0201f800, 0x00109597, | ||
8467 | 0x0402000a, 0x4c580000, 0x4200b000, 0x00000002, | ||
8468 | 0x0201f800, 0x0010957d, 0x5c00b000, 0x0401fc71, | ||
8469 | 0x0201f000, 0x0002077d, 0x0401fc6e, 0x80000580, | ||
8470 | 0x0401f636, 0x4933c857, 0x0401f82d, 0x0402000b, | ||
8471 | 0x42000800, 0x00000009, 0x0201f800, 0x00104571, | ||
8472 | 0x4a026203, 0x00000001, 0x4a026403, 0x00000005, | ||
8473 | 0x0201f000, 0x0010672b, 0x42000000, 0x00000001, | ||
8474 | 0x0401f626, 0x4933c857, 0x0401f81d, 0x0402000b, | ||
8475 | 0x42000800, 0x0000000b, 0x0201f800, 0x00104571, | ||
8476 | 0x4a026203, 0x00000001, 0x4a026403, 0x00000001, | ||
8477 | 0x0201f000, 0x0010672b, 0x42000000, 0x00000001, | ||
8478 | 0x0401f616, 0x4933c857, 0x59cc0407, 0x82000580, | ||
8479 | 0x00000003, 0x04020009, 0x59cc0207, 0x82000500, | ||
8480 | 0x0000ff00, 0x82000d80, 0x00002a00, 0x04000003, | ||
8481 | 0x82000d80, 0x00001e00, 0x1c01f000, 0x4933c857, | ||
8482 | 0x82000540, 0x00000001, 0x1c01f000, 0x4933c857, | ||
8483 | 0x4d400000, 0x4c580000, 0x59a80026, 0x82000540, | ||
8484 | 0x00000003, 0x48035026, 0x0401f85c, 0x04000038, | ||
8485 | 0x4d340000, 0x4d440000, 0x59a80026, 0x84000552, | ||
8486 | 0x48035026, 0x0201f800, 0x00103b25, 0x0400000c, | ||
8487 | 0x42028000, 0x0000002a, 0x42028800, 0x0000ffff, | ||
8488 | 0x42003000, 0x00000002, 0x0201f800, 0x0010a446, | ||
8489 | 0x59a80805, 0x84040d44, 0x48075005, 0x42028000, | ||
8490 | 0x0000002a, 0x4d3c0000, 0x42027800, 0x00000204, | ||
8491 | 0x0201f800, 0x00101fe5, 0x5c027800, 0x42000000, | ||
8492 | 0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800, | ||
8493 | 0x00101e45, 0x4200b000, 0x00000010, 0x42028800, | ||
8494 | 0x000007f0, 0x4d2c0000, 0x83440580, 0x000007fe, | ||
8495 | 0x04000003, 0x0201f800, 0x001045fb, 0x81468800, | ||
8496 | 0x8058b040, 0x040207f9, 0x5c025800, 0x59cc0408, | ||
8497 | 0x8c00051e, 0x04000004, 0x59a80026, 0x84000512, | ||
8498 | 0x48035026, 0x5c028800, 0x5c026800, 0x0201f800, | ||
8499 | 0x0010462a, 0x4a026802, 0x00fffffe, 0x59a80826, | ||
8500 | 0x84040d50, 0x59cc0013, 0x8c00053e, 0x04000003, | ||
8501 | 0x8c000536, 0x04000004, 0x59cc0017, 0x8c000536, | ||
8502 | 0x04020002, 0x84040d10, 0x48075026, 0x59cc0800, | ||
8503 | 0x82040d00, 0x00ffffff, 0x48075010, 0x80040110, | ||
8504 | 0x4803501d, 0x48038881, 0x0201f800, 0x0010513b, | ||
8505 | 0x04000007, 0x59cc0009, 0x48035035, 0x59cc000a, | ||
8506 | 0x48035036, 0x0201f800, 0x001092e5, 0x5c00b000, | ||
8507 | 0x5c028000, 0x1c01f000, 0x4933c857, 0x4c580000, | ||
8508 | 0x59a80010, 0x82000500, 0x00ffff00, 0x04000022, | ||
8509 | 0x59cc1000, 0x82081500, 0x00ffff00, 0x80080580, | ||
8510 | 0x04000004, 0x42000000, 0x0010b83b, 0x0401f016, | ||
8511 | 0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002, | ||
8512 | 0x83341c00, 0x00000006, 0x0401f900, 0x04000004, | ||
8513 | 0x42000000, 0x0010b83c, 0x0401f00b, 0x83cc1400, | ||
8514 | 0x0000000d, 0x4200b000, 0x00000002, 0x83341c00, | ||
8515 | 0x00000008, 0x0401f8f5, 0x04000007, 0x42000000, | ||
8516 | 0x0010b83d, 0x0201f800, 0x0010aa47, 0x82000540, | ||
8517 | 0x00000001, 0x5c00b000, 0x1c01f000, 0x4933c857, | ||
8518 | 0x59cc0206, 0x82000580, 0x00000014, 0x04020016, | ||
8519 | 0x59cc0407, 0x82000580, 0x00000800, 0x04020012, | ||
8520 | 0x59cc0207, 0x8c00051a, 0x0400000d, 0x82000500, | ||
8521 | 0x00000f00, 0x82000580, 0x00000100, 0x04020008, | ||
8522 | 0x59cc020a, 0x8c000508, 0x04020003, 0x8c00050a, | ||
8523 | 0x04000003, 0x80000580, 0x1c01f000, 0x82000540, | ||
8524 | 0x00000001, 0x1c01f000, 0x4933c857, 0x4943c857, | ||
8525 | 0x493fc857, 0x4c5c0000, 0x4d300000, 0x4d340000, | ||
8526 | 0x4d2c0000, 0x4d380000, 0x4130b800, 0x42026000, | ||
8527 | 0x0010d1c0, 0x59a8000e, 0x81640480, 0x040210bd, | ||
8528 | 0x8d3e7d12, 0x04000004, 0x405c0000, 0x81300580, | ||
8529 | 0x040000b3, 0x59300406, 0x82000c80, 0x00000012, | ||
8530 | 0x04021015, 0x59326809, 0x0c01f001, 0x0010854f, | ||
8531 | 0x001084bc, 0x001084d3, 0x001084de, 0x001084b7, | ||
8532 | 0x001084ce, 0x00108507, 0x0010854f, 0x001084b5, | ||
8533 | 0x0010851b, 0x0010852a, 0x001084b5, 0x001084b5, | ||
8534 | 0x001084b5, 0x001084b5, 0x0010854f, 0x00108540, | ||
8535 | 0x00108538, 0x0201f800, 0x001005d8, 0x8d3e7d18, | ||
8536 | 0x04000004, 0x59300420, 0x8c000500, 0x04020094, | ||
8537 | 0x59300403, 0x82000580, 0x00000043, 0x04000090, | ||
8538 | 0x0201f800, 0x00109134, 0x02000800, 0x00102074, | ||
8539 | 0x0201f800, 0x0010914e, 0x02000800, 0x0010801c, | ||
8540 | 0x8d3e7d06, 0x04000084, 0x0201f800, 0x001092d7, | ||
8541 | 0x04000083, 0x0401f080, 0x8d3e7d16, 0x04000004, | ||
8542 | 0x59300420, 0x8c000500, 0x0402007d, 0x59325808, | ||
8543 | 0x0201f800, 0x00109037, 0x04000077, 0x49425a06, | ||
8544 | 0x497a5c09, 0x0201f800, 0x000202da, 0x0201f800, | ||
8545 | 0x0010912a, 0x0401f070, 0x813669c0, 0x02000800, | ||
8546 | 0x001005d8, 0x8d3e7d06, 0x04000004, 0x59340200, | ||
8547 | 0x8c00050e, 0x0402006a, 0x59300004, 0x8400055c, | ||
8548 | 0x48026004, 0x59300203, 0x82000580, 0x00000004, | ||
8549 | 0x02000800, 0x00100e99, 0x59325808, 0x0201f800, | ||
8550 | 0x00109037, 0x0400005c, 0x4a025a04, 0x00000103, | ||
8551 | 0x59300402, 0x48025c06, 0x592c0408, 0x8c000512, | ||
8552 | 0x04000006, 0x4d2c0000, 0x592e5809, 0x0201f800, | ||
8553 | 0x001007fd, 0x5c025800, 0x49425a06, 0x497a5c09, | ||
8554 | 0x0201f800, 0x0010959c, 0x0201f800, 0x000202da, | ||
8555 | 0x0201f800, 0x0010912a, 0x0401f047, 0x8c000518, | ||
8556 | 0x04000047, 0x59300203, 0x82000580, 0x00000004, | ||
8557 | 0x02000800, 0x00100e99, 0x59325808, 0x0201f800, | ||
8558 | 0x00109037, 0x0400003c, 0x49425a06, 0x497a5c09, | ||
8559 | 0x0201f800, 0x0010a693, 0x0201f800, 0x0010959c, | ||
8560 | 0x0201f800, 0x000202da, 0x0401f033, 0x0201f800, | ||
8561 | 0x001062d5, 0x04000032, 0x59300203, 0x82000580, | ||
8562 | 0x00000004, 0x04020004, 0x0201f800, 0x00100e99, | ||
8563 | 0x0401f02b, 0x42027000, 0x00000047, 0x0201f800, | ||
8564 | 0x000207a1, 0x0401f026, 0x59300203, 0x82000580, | ||
8565 | 0x00000004, 0x02000800, 0x00100e99, 0x59325808, | ||
8566 | 0x0201f800, 0x00109037, 0x0400001b, 0x49425a06, | ||
8567 | 0x497a5c09, 0x0201f800, 0x000202da, 0x0401f016, | ||
8568 | 0x833c0500, 0x00001800, 0x04000015, 0x8d3e7d16, | ||
8569 | 0x04020013, 0x59325817, 0x0201f800, 0x001007fd, | ||
8570 | 0x59300203, 0x82000580, 0x00000004, 0x02000800, | ||
8571 | 0x00100e99, 0x59325808, 0x0201f800, 0x00109037, | ||
8572 | 0x04000005, 0x49425a06, 0x497a5c09, 0x0201f800, | ||
8573 | 0x000202da, 0x0201f800, 0x00107911, 0x83326400, | ||
8574 | 0x00000024, 0x41580000, 0x81300480, 0x04001742, | ||
8575 | 0x5c027000, 0x5c025800, 0x5c026800, 0x5c026000, | ||
8576 | 0x5c00b800, 0x1c01f000, 0x5c000000, 0x4c000000, | ||
8577 | 0x4803c857, 0x480bc857, 0x480fc857, 0x485bc857, | ||
8578 | 0x50080800, 0x500c0000, 0x80042580, 0x04020007, | ||
8579 | 0x80081000, 0x800c1800, 0x8058b040, 0x040207f9, | ||
8580 | 0x80000580, 0x1c01f000, 0x4803c857, 0x4807c857, | ||
8581 | 0x480bc857, 0x480fc857, 0x80040480, 0x04001006, | ||
8582 | 0x42000000, 0x00000001, 0x82040d40, 0x00000001, | ||
8583 | 0x1c01f000, 0x41780000, 0x0401f7fc, 0x83380480, | ||
8584 | 0x00000053, 0x02021800, 0x001005d8, 0x83380480, | ||
8585 | 0x0000004b, 0x02001800, 0x001005d8, 0x0c01f001, | ||
8586 | 0x0010858a, 0x0010858a, 0x0010858a, 0x0010858a, | ||
8587 | 0x00108588, 0x00108588, 0x00108588, 0x0010858a, | ||
8588 | 0x0201f800, 0x001005d8, 0x493bc857, 0x4a026203, | ||
8589 | 0x0000000d, 0x493a6403, 0x42000800, 0x80000000, | ||
8590 | 0x0201f000, 0x00020721, 0x83380580, 0x00000013, | ||
8591 | 0x04020008, 0x59300403, 0x82000580, 0x00000050, | ||
8592 | 0x02020800, 0x001005d8, 0x0201f000, 0x0002077d, | ||
8593 | 0x4933c857, 0x83380580, 0x00000027, 0x04020030, | ||
8594 | 0x4933c857, 0x0201f800, 0x00106bbf, 0x4d3c0000, | ||
8595 | 0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800, | ||
8596 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
8597 | 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037, | ||
8598 | 0x492fc857, 0x0400000d, 0x4a025a04, 0x00000103, | ||
8599 | 0x59300c02, 0x48065c06, 0x4a025a06, 0x00000029, | ||
8600 | 0x497a5c09, 0x592c0c08, 0x84040d50, 0x48065c08, | ||
8601 | 0x0201f800, 0x000202da, 0x5c025800, 0x42003000, | ||
8602 | 0x00000015, 0x41782800, 0x42002000, 0x00000003, | ||
8603 | 0x4d400000, 0x4d440000, 0x59368c03, 0x42028000, | ||
8604 | 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800, | ||
8605 | 0x5c028000, 0x0201f000, 0x0002077d, 0x83380580, | ||
8606 | 0x00000014, 0x0402000c, 0x59300403, 0x82000c80, | ||
8607 | 0x00000053, 0x02021800, 0x001005d8, 0x82000480, | ||
8608 | 0x00000040, 0x02001800, 0x001005d8, 0x4803c857, | ||
8609 | 0x0c01f00e, 0x83380580, 0x00000053, 0x0400000a, | ||
8610 | 0x83380580, 0x00000048, 0x02020800, 0x001005d8, | ||
8611 | 0x59300403, 0x82000580, 0x00000050, 0x02020800, | ||
8612 | 0x001005d8, 0x1c01f000, 0x001085ff, 0x001085fd, | ||
8613 | 0x001085fd, 0x001085fd, 0x001085fd, 0x001085fd, | ||
8614 | 0x001085fd, 0x001085fd, 0x001085fd, 0x001085fd, | ||
8615 | 0x001085fd, 0x00108616, 0x00108616, 0x00108616, | ||
8616 | 0x00108616, 0x001085fd, 0x00108616, 0x001085fd, | ||
8617 | 0x00108616, 0x0201f800, 0x001005d8, 0x4933c857, | ||
8618 | 0x0201f800, 0x00106bbf, 0x0201f800, 0x00109037, | ||
8619 | 0x02000000, 0x0002077d, 0x4d2c0000, 0x59325808, | ||
8620 | 0x4a025a04, 0x00000103, 0x59300402, 0x48025c06, | ||
8621 | 0x4a025a06, 0x00000006, 0x497a5c09, 0x0201f800, | ||
8622 | 0x000202da, 0x5c025800, 0x0201f800, 0x0010912a, | ||
8623 | 0x0201f000, 0x0002077d, 0x4933c857, 0x0201f800, | ||
8624 | 0x00106bbf, 0x0201f000, 0x0002077d, 0x0201f800, | ||
8625 | 0x001005d8, 0x5930001c, 0x800001c0, 0x02020800, | ||
8626 | 0x0010984e, 0x59300004, 0x8c00053e, 0x04020029, | ||
8627 | 0x59325808, 0x592c0c08, 0x59cc2a08, 0x82141d00, | ||
8628 | 0x00000c00, 0x04000002, 0x59cc1809, 0x84040d58, | ||
8629 | 0x48065c08, 0x82143500, 0x00000fff, 0x04020027, | ||
8630 | 0x59340200, 0x8c00050e, 0x04020080, 0x0201f800, | ||
8631 | 0x0002082b, 0x04020006, 0x4a025a06, 0x00000000, | ||
8632 | 0x59300811, 0x800409c0, 0x0402094b, 0x4a025a04, | ||
8633 | 0x00000103, 0x48065807, 0x480e580a, 0x48165c09, | ||
8634 | 0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1, | ||
8635 | 0x0201f800, 0x001049b2, 0x59cc0208, 0x8c000518, | ||
8636 | 0x02020000, 0x001091d1, 0x0201f000, 0x0002077d, | ||
8637 | 0x0201f800, 0x00106f60, 0x040007d6, 0x4d3c0000, | ||
8638 | 0x42027800, 0x00000002, 0x0201f800, 0x00108be3, | ||
8639 | 0x5c027800, 0x0401f7cf, 0x4817c857, 0x480fc857, | ||
8640 | 0x82180500, 0x000000ff, 0x0400000e, 0x592c0204, | ||
8641 | 0x82000500, 0x000000ff, 0x82000580, 0x00000048, | ||
8642 | 0x04020008, 0x592c0407, 0x800001c0, 0x04000005, | ||
8643 | 0x0201f800, 0x0010973f, 0x0201f000, 0x00109787, | ||
8644 | 0x82180d00, 0x00000c00, 0x04000004, 0x59340200, | ||
8645 | 0x8c00050e, 0x04020032, 0x4a025a06, 0x00000000, | ||
8646 | 0x41782000, 0x8c183510, 0x04000007, 0x59cc000c, | ||
8647 | 0x82000500, 0x000000ff, 0x04000002, 0x4803c857, | ||
8648 | 0x59cc200b, 0x4812580c, 0x41780000, 0x8c183512, | ||
8649 | 0x04000002, 0x59cc000a, 0x4802580b, 0x80100c00, | ||
8650 | 0x040007b8, 0x82041480, 0x0000001d, 0x04001006, | ||
8651 | 0x592c0404, 0x8c00051e, 0x0400000e, 0x42000800, | ||
8652 | 0x0000001c, 0x4c500000, 0x4c540000, 0x83cca400, | ||
8653 | 0x0000000c, 0x832cac00, 0x0000000d, 0x0201f800, | ||
8654 | 0x00108b9f, 0x5c00a800, 0x5c00a000, 0x0401f7a5, | ||
8655 | 0x59300011, 0x59301402, 0x480a5c06, 0x48025807, | ||
8656 | 0x480e580a, 0x48165c09, 0x0201f800, 0x00108b48, | ||
8657 | 0x0201f800, 0x00108b84, 0x0401f7a6, 0x592c020a, | ||
8658 | 0x8c000502, 0x040007cd, 0x592c0208, 0x8c00050e, | ||
8659 | 0x040207ca, 0x59300011, 0x800c0d80, 0x040007c7, | ||
8660 | 0x4803c857, 0x480fc857, 0x8c183514, 0x02000000, | ||
8661 | 0x0010920f, 0x80000540, 0x040007c0, 0x4807c856, | ||
8662 | 0x0201f000, 0x0010920f, 0x592c020a, 0x8c000502, | ||
8663 | 0x04000782, 0x59300011, 0x800001c0, 0x0400077f, | ||
8664 | 0x592c0208, 0x8c00050e, 0x0402077c, 0x0201f000, | ||
8665 | 0x0010920f, 0x59cc2006, 0x59cc2807, 0x0401f035, | ||
8666 | 0x0401f034, 0x1c01f000, 0x4933c857, 0x5930001c, | ||
8667 | 0x800001c0, 0x02020800, 0x0010984e, 0x59325808, | ||
8668 | 0x592c0c08, 0x41782800, 0x41781800, 0x84040d58, | ||
8669 | 0x48065c08, 0x41783000, 0x59340200, 0x8c00050e, | ||
8670 | 0x04020018, 0x0201f800, 0x0002082b, 0x04020007, | ||
8671 | 0x4a025a06, 0x00000000, 0x59300811, 0x4807c857, | ||
8672 | 0x800409c0, 0x040208ac, 0x4a025a04, 0x00000103, | ||
8673 | 0x48065807, 0x480e580a, 0x48165c09, 0x4933c857, | ||
8674 | 0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1, | ||
8675 | 0x0201f800, 0x001049b2, 0x0201f000, 0x0002077d, | ||
8676 | 0x592c020a, 0x8c000502, 0x040007ea, 0x59300011, | ||
8677 | 0x4803c857, 0x800001c0, 0x040007e6, 0x592c0208, | ||
8678 | 0x8c00050e, 0x040207e3, 0x0201f000, 0x0010920f, | ||
8679 | 0x5930001c, 0x800001c0, 0x4c100000, 0x4c140000, | ||
8680 | 0x02020800, 0x0010984e, 0x5c002800, 0x5c002000, | ||
8681 | 0x4a026203, 0x00000002, 0x4a026403, 0x00000043, | ||
8682 | 0x59325808, 0x592c020a, 0x8c000502, 0x04020018, | ||
8683 | 0x40100000, 0x592c080f, 0x80040c80, 0x40140000, | ||
8684 | 0x80040480, 0x04001014, 0x48126013, 0x48166011, | ||
8685 | 0x59300004, 0x8c00053e, 0x04020008, 0x497a6205, | ||
8686 | 0x0201f800, 0x00100f93, 0x04020009, 0x59300804, | ||
8687 | 0x0201f000, 0x00106721, 0x0201f800, 0x00106f60, | ||
8688 | 0x040007f7, 0x0201f000, 0x00107974, 0x4933c857, | ||
8689 | 0x1c01f000, 0x4807c857, 0x40042800, 0x0401f7eb, | ||
8690 | 0x83380480, 0x00000058, 0x04021005, 0x83380480, | ||
8691 | 0x00000040, 0x04001002, 0x0c01f002, 0x1c01f000, | ||
8692 | 0x00108740, 0x00108740, 0x00108740, 0x00108740, | ||
8693 | 0x00108740, 0x00108740, 0x00108740, 0x00108740, | ||
8694 | 0x00108740, 0x00108740, 0x00108742, 0x00108740, | ||
8695 | 0x00108740, 0x00108740, 0x00108740, 0x0010874f, | ||
8696 | 0x00108740, 0x00108740, 0x00108740, 0x00108740, | ||
8697 | 0x0010877d, 0x00108740, 0x00108740, 0x00108740, | ||
8698 | 0x0201f800, 0x001005d8, 0x4933c857, 0x0201f800, | ||
8699 | 0x00106dc3, 0x4a026203, 0x00000002, 0x59a80039, | ||
8700 | 0x48026205, 0x59300011, 0x59300815, 0x80040c80, | ||
8701 | 0x48066015, 0x0201f000, 0x00106b8a, 0x4933c857, | ||
8702 | 0x0201f800, 0x00106b8a, 0x4d3c0000, 0x417a7800, | ||
8703 | 0x0201f800, 0x0010203c, 0x5c027800, 0x42000000, | ||
8704 | 0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800, | ||
8705 | 0x00109037, 0x04000010, 0x4d2c0000, 0x59325808, | ||
8706 | 0x4a025a04, 0x00000103, 0x59300402, 0x48025c06, | ||
8707 | 0x4a025a06, 0x00000029, 0x497a5c09, 0x592c0c08, | ||
8708 | 0x84040d50, 0x48065c08, 0x0201f800, 0x000202da, | ||
8709 | 0x5c025800, 0x42003000, 0x00000014, 0x41782800, | ||
8710 | 0x4d400000, 0x4d440000, 0x59368c03, 0x42002000, | ||
8711 | 0x00000002, 0x42028000, 0x00000029, 0x0201f800, | ||
8712 | 0x0010985e, 0x5c028800, 0x5c028000, 0x0201f000, | ||
8713 | 0x0002077d, 0x4933c857, 0x59300808, 0x49780c09, | ||
8714 | 0x4978080a, 0x58041408, 0x84081558, 0x48080c08, | ||
8715 | 0x1c01f000, 0x4807c857, 0x8c040d3e, 0x04020023, | ||
8716 | 0x497a5a06, 0x5930001f, 0x80000540, 0x04000017, | ||
8717 | 0x497a5a06, 0x4c040000, 0x4c080000, 0x4c0c0000, | ||
8718 | 0x4c100000, 0x4c140000, 0x58f41003, 0x40040000, | ||
8719 | 0x80081480, 0x5930001f, 0x4809e803, 0x0201f800, | ||
8720 | 0x00100d56, 0x5c002800, 0x5c002000, 0x5c001800, | ||
8721 | 0x5c001000, 0x5c000800, 0x592c0206, 0x80000540, | ||
8722 | 0x04020009, 0x0401f005, 0x592c0408, 0x8c00051c, | ||
8723 | 0x04000002, 0x592c0803, 0x4807c857, 0x4a025a06, | ||
8724 | 0x00000015, 0x1c01f000, 0x5930001f, 0x80000540, | ||
8725 | 0x04000009, 0x4a025a06, 0x00000011, 0x5930001f, | ||
8726 | 0x4c040000, 0x0201f800, 0x00100d56, 0x5c000800, | ||
8727 | 0x0401f7f5, 0x4807c856, 0x4a025a06, 0x00000007, | ||
8728 | 0x1c01f000, 0x83380480, 0x00000058, 0x04021007, | ||
8729 | 0x83380480, 0x00000040, 0x04001004, 0x4d2c0000, | ||
8730 | 0x0c01f803, 0x5c025800, 0x1c01f000, 0x001087db, | ||
8731 | 0x001087db, 0x001087db, 0x001087db, 0x001087db, | ||
8732 | 0x001087dd, 0x001087db, 0x001087db, 0x00108860, | ||
8733 | 0x001087db, 0x001087db, 0x001087db, 0x001087db, | ||
8734 | 0x001087db, 0x001087db, 0x001087db, 0x001087db, | ||
8735 | 0x001087db, 0x001087db, 0x00108910, 0x00108939, | ||
8736 | 0x00108918, 0x001087db, 0x00108945, 0x0201f800, | ||
8737 | 0x001005d8, 0x5930001c, 0x800001c0, 0x02020800, | ||
8738 | 0x0010984e, 0x59300007, 0x8c00050e, 0x0400007c, | ||
8739 | 0x8c000500, 0x0400006e, 0x8c00051c, 0x04000009, | ||
8740 | 0x84000500, 0x48026007, 0x59325808, 0x592c3c08, | ||
8741 | 0x841c3d58, 0x481e5c08, 0x0201f000, 0x000207dd, | ||
8742 | 0x59325808, 0x592c3c08, 0x841c3d58, 0x59300007, | ||
8743 | 0x8c00051c, 0x040207f3, 0x481e5c08, 0x42000000, | ||
8744 | 0x00000005, 0x40000000, 0x80000040, 0x040207fe, | ||
8745 | 0x59300007, 0x8c00051c, 0x040207ea, 0x59cc0a08, | ||
8746 | 0x592c0204, 0x82000500, 0x000000ff, 0x82000580, | ||
8747 | 0x00000048, 0x0402000c, 0x497a580b, 0x82040500, | ||
8748 | 0x000000ff, 0x04000008, 0x592c0407, 0x800001c0, | ||
8749 | 0x04000005, 0x0201f800, 0x0010973f, 0x0201f000, | ||
8750 | 0x00100e56, 0x48065c09, 0x41782000, 0x82040500, | ||
8751 | 0x00000c00, 0x04000002, 0x59cc2009, 0x82043500, | ||
8752 | 0x00000fff, 0x04020027, 0x481e5c08, 0x4a025a06, | ||
8753 | 0x00000000, 0x801831c0, 0x02000000, 0x00100e56, | ||
8754 | 0x41782000, 0x8c183510, 0x04000002, 0x59cc200b, | ||
8755 | 0x4812580c, 0x41780000, 0x8c183512, 0x04000002, | ||
8756 | 0x59cc000a, 0x4802580b, 0x80100c00, 0x02001800, | ||
8757 | 0x001005d8, 0x02000000, 0x00100e56, 0x82041480, | ||
8758 | 0x0000001d, 0x0402100c, 0x4c500000, 0x4c540000, | ||
8759 | 0x83cca400, 0x0000000c, 0x832cac00, 0x0000000d, | ||
8760 | 0x0401fb67, 0x5c00a800, 0x5c00a000, 0x0201f000, | ||
8761 | 0x00100e56, 0x0401fb0b, 0x0201f000, 0x00100e56, | ||
8762 | 0x412c7800, 0x0201f800, 0x001007e4, 0x02000800, | ||
8763 | 0x001005d8, 0x492c7809, 0x841c3d52, 0x481c7c08, | ||
8764 | 0x4a025a04, 0x00000103, 0x4812580a, 0x48065c09, | ||
8765 | 0x583c0404, 0x583c1005, 0x583c2208, 0x48025c04, | ||
8766 | 0x480a5805, 0x48125a08, 0x0401f7c8, 0x8c000524, | ||
8767 | 0x04000794, 0x59325808, 0x4c000000, 0x592c0408, | ||
8768 | 0x8c00051c, 0x5c000000, 0x04020003, 0x4a026011, | ||
8769 | 0xffffffff, 0x84000524, 0x0401f78a, 0x1c01f000, | ||
8770 | 0x59a80039, 0x48026205, 0x59325808, 0x4a026203, | ||
8771 | 0x00000002, 0x592c2408, 0x59300807, 0x4933c857, | ||
8772 | 0x4807c857, 0x592c0204, 0x82000500, 0x000000ff, | ||
8773 | 0x82000580, 0x00000048, 0x04020004, 0x8c102500, | ||
8774 | 0x02020000, 0x00109787, 0x4a025a06, 0x00000000, | ||
8775 | 0x8c040d1e, 0x04000027, 0x41780800, 0x497a5c09, | ||
8776 | 0x592c1c09, 0x59300011, 0x59341200, 0x497a6205, | ||
8777 | 0x8c08150e, 0x0402006e, 0x4807c857, 0x4806580a, | ||
8778 | 0x80000d40, 0x04020f04, 0x59300402, 0x48025c06, | ||
8779 | 0x48065807, 0x4a025a04, 0x00000103, 0x4c040000, | ||
8780 | 0x4c0c0000, 0x4c100000, 0x0201f800, 0x0010959c, | ||
8781 | 0x5c002000, 0x5c001800, 0x5c000800, 0x8c102512, | ||
8782 | 0x0402001a, 0x4c0c0000, 0x0201f800, 0x000202c1, | ||
8783 | 0x0201f800, 0x001049b2, 0x5c001800, 0x8c0c1d18, | ||
8784 | 0x02000000, 0x0002077d, 0x0201f000, 0x001091d1, | ||
8785 | 0x4813c857, 0x8c102518, 0x0400004b, 0x41780800, | ||
8786 | 0x592c1c09, 0x820c0580, 0x00001000, 0x040007d6, | ||
8787 | 0x8c102512, 0x040007d4, 0x592c7809, 0x583c080a, | ||
8788 | 0x583c1c09, 0x0401f7d0, 0x4807c857, 0x592c7809, | ||
8789 | 0x59300402, 0x592c1404, 0x8c08151e, 0x0402000d, | ||
8790 | 0x592c1206, 0x48007c06, 0x48047807, 0x48087a06, | ||
8791 | 0x84102512, 0x48107c08, 0x4c0c0000, 0x0201f800, | ||
8792 | 0x001007fd, 0x403e5800, 0x0401faca, 0x0401f7d9, | ||
8793 | 0x48025c06, 0x48065807, 0x583c080c, 0x583c000b, | ||
8794 | 0x80040c00, 0x82041480, 0x0000001d, 0x04001006, | ||
8795 | 0x583c1001, 0x480a5801, 0x49787801, 0x42000800, | ||
8796 | 0x0000001c, 0x82040c00, 0x00000014, 0x4c0c0000, | ||
8797 | 0x4c500000, 0x4c540000, 0x823ca400, 0x00000008, | ||
8798 | 0x832cac00, 0x00000008, 0x4c100000, 0x4c3c0000, | ||
8799 | 0x0401facb, 0x5c007800, 0x5c002000, 0x5c00a800, | ||
8800 | 0x5c00a000, 0x84102512, 0x48125c08, 0x403e5800, | ||
8801 | 0x0201f800, 0x001007fd, 0x42034000, 0x0010b4a4, | ||
8802 | 0x59a1d81e, 0x80edd9c0, 0x02000800, 0x001005d8, | ||
8803 | 0x48efc857, 0x58ec0009, 0x4803c857, 0x0801f800, | ||
8804 | 0x0401f7ac, 0x4933c857, 0x1c01f000, 0x59301414, | ||
8805 | 0x480bc857, 0x8c08151c, 0x0402000e, 0x80000540, | ||
8806 | 0x4803c857, 0x0400078d, 0x80042c80, 0x0402178b, | ||
8807 | 0x8c081514, 0x04020005, 0x592c080f, 0x4807c857, | ||
8808 | 0x80040480, 0x48026016, 0x8408155c, 0x480a6414, | ||
8809 | 0x59301007, 0x8408151e, 0x480a6007, 0x4a025c09, | ||
8810 | 0x00000001, 0x0201f800, 0x0010959c, 0x497a5c09, | ||
8811 | 0x8c102512, 0x04000006, 0x4d2c0000, 0x403e5800, | ||
8812 | 0x0201f800, 0x001007fd, 0x5c025800, 0x82102500, | ||
8813 | 0xffffedff, 0x48125c08, 0x0201f000, 0x0010920f, | ||
8814 | 0x59325808, 0x592c0408, 0x8c000518, 0x04000004, | ||
8815 | 0x412df800, 0x0201f000, 0x00100e6f, 0x1c01f000, | ||
8816 | 0x4933c857, 0x59325808, 0x497a5c09, 0x4a025a06, | ||
8817 | 0x00000000, 0x4a025a04, 0x00000103, 0x59300811, | ||
8818 | 0x4807c857, 0x800409c0, 0x0402000a, 0x48065807, | ||
8819 | 0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1, | ||
8820 | 0x0201f800, 0x001049b2, 0x0201f000, 0x0002077d, | ||
8821 | 0x59340200, 0x8c00050e, 0x04020005, 0x59300811, | ||
8822 | 0x0401fe55, 0x48065807, 0x0401f7f2, 0x592c0208, | ||
8823 | 0x8c00050e, 0x040207fa, 0x4933c857, 0x0201f000, | ||
8824 | 0x0010920f, 0x4933c857, 0x59325808, 0x812e59c0, | ||
8825 | 0x02000800, 0x001005d8, 0x592c020a, 0x8c000502, | ||
8826 | 0x02000800, 0x001005d8, 0x4a026206, 0x00000002, | ||
8827 | 0x1c01f000, 0x5930001c, 0x800001c0, 0x02020800, | ||
8828 | 0x0010984e, 0x59300007, 0x4933c857, 0x4803c857, | ||
8829 | 0x8c00050e, 0x04000037, 0x8c000500, 0x04000029, | ||
8830 | 0x8c00051c, 0x0400000a, 0x84000500, 0x48026007, | ||
8831 | 0x59325808, 0x592c3c08, 0x481fc857, 0x841c3d58, | ||
8832 | 0x481e5c08, 0x0201f000, 0x000207dd, 0x59325808, | ||
8833 | 0x592c3c08, 0x841c3d58, 0x59300007, 0x8c00051c, | ||
8834 | 0x040207f2, 0x481e5c08, 0x42000000, 0x00000005, | ||
8835 | 0x40000000, 0x80000040, 0x040207fe, 0x59300007, | ||
8836 | 0x8c00051c, 0x040207e9, 0x592c0204, 0x82000500, | ||
8837 | 0x000000ff, 0x82000580, 0x00000048, 0x04020003, | ||
8838 | 0x497a580b, 0x0401f002, 0x497a5c09, 0x481e5c08, | ||
8839 | 0x4a025a06, 0x00000000, 0x0201f000, 0x00100e56, | ||
8840 | 0x8c000524, 0x040007d9, 0x59325808, 0x4c000000, | ||
8841 | 0x592c0408, 0x8c00051c, 0x5c000000, 0x04020003, | ||
8842 | 0x4a026011, 0xffffffff, 0x84000524, 0x0401f7cf, | ||
8843 | 0x1c01f000, 0x4933c857, 0x41780800, 0x83380480, | ||
8844 | 0x00000058, 0x0402100b, 0x83380480, 0x00000040, | ||
8845 | 0x04001008, 0x4d2c0000, 0x59325808, 0x812e59c0, | ||
8846 | 0x0c020806, 0x5c025800, 0x0201f000, 0x0002077d, | ||
8847 | 0x493bc857, 0x1c01f000, 0x001089ae, 0x001089ae, | ||
8848 | 0x001089ae, 0x001089ae, 0x001089ae, 0x001089b0, | ||
8849 | 0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae, | ||
8850 | 0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae, | ||
8851 | 0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae, | ||
8852 | 0x001089ae, 0x001089ae, 0x001089b5, 0x001089ae, | ||
8853 | 0x001089ae, 0x001089ae, 0x0201f800, 0x001005d8, | ||
8854 | 0x59cc0a08, 0x497a5807, 0x4807c857, 0x82040d00, | ||
8855 | 0x00000fff, 0x59300402, 0x48025c06, 0x4a025a04, | ||
8856 | 0x00000103, 0x48065c09, 0x4a025a06, 0x00000000, | ||
8857 | 0x800409c0, 0x02000000, 0x000202c1, 0x59cc0009, | ||
8858 | 0x4802580a, 0x82042500, 0x00000100, 0x04000002, | ||
8859 | 0x59cc200b, 0x4812580c, 0x82040500, 0x00000200, | ||
8860 | 0x04000002, 0x59cc000a, 0x4802580b, 0x80100c00, | ||
8861 | 0x02001800, 0x001005d8, 0x02000000, 0x000202da, | ||
8862 | 0x82041480, 0x0000001d, 0x04001006, 0x592c0404, | ||
8863 | 0x8c00051e, 0x0400000e, 0x42000800, 0x0000001c, | ||
8864 | 0x4c500000, 0x4c540000, 0x83cca400, 0x0000000c, | ||
8865 | 0x832cac00, 0x0000000d, 0x0401f9c1, 0x5c00a800, | ||
8866 | 0x5c00a000, 0x0201f000, 0x000202da, 0x0401f965, | ||
8867 | 0x0401f1a0, 0x83380480, 0x00000093, 0x02021800, | ||
8868 | 0x001005d8, 0x83380480, 0x00000085, 0x02001800, | ||
8869 | 0x001005d8, 0x0c01f001, 0x001089fd, 0x001089fb, | ||
8870 | 0x001089fb, 0x00108a04, 0x001089fb, 0x001089fb, | ||
8871 | 0x001089fb, 0x001089fb, 0x001089fb, 0x001089fb, | ||
8872 | 0x001089fb, 0x001089fb, 0x001089fb, 0x0201f800, | ||
8873 | 0x001005d8, 0x4a026203, 0x00000001, 0x493a6403, | ||
8874 | 0x42000800, 0x80000040, 0x0201f000, 0x00020721, | ||
8875 | 0x4933c857, 0x59cc1204, 0x480a601c, 0x59cc1404, | ||
8876 | 0x0201f800, 0x00109410, 0x0400001b, 0x591c0203, | ||
8877 | 0x82000580, 0x00000000, 0x04000017, 0x591c0009, | ||
8878 | 0x81340580, 0x04020014, 0x4d300000, 0x4d1c0000, | ||
8879 | 0x411e6000, 0x0401f9c2, 0x5c023800, 0x5c026000, | ||
8880 | 0x0400000b, 0x59cc0005, 0x8c000500, 0x04020003, | ||
8881 | 0x0401f98c, 0x0401f003, 0x4a023a03, 0x00000002, | ||
8882 | 0x4a026403, 0x00000086, 0x0401f005, 0x0401f9a6, | ||
8883 | 0x040007f5, 0x4a026403, 0x00000087, 0x4a026203, | ||
8884 | 0x00000001, 0x42000800, 0x80000040, 0x0201f800, | ||
8885 | 0x00020721, 0x59340200, 0x8c00050e, 0x0400000d, | ||
8886 | 0x59cc1404, 0x0201f800, 0x00109410, 0x04000009, | ||
8887 | 0x591c0414, 0x8c00051a, 0x04000006, 0x4d300000, | ||
8888 | 0x411e6000, 0x0201f800, 0x0010921e, 0x5c026000, | ||
8889 | 0x1c01f000, 0x83380580, 0x00000013, 0x0402000a, | ||
8890 | 0x59300403, 0x82000d80, 0x00000086, 0x04000012, | ||
8891 | 0x82000d80, 0x00000087, 0x02020800, 0x001005d8, | ||
8892 | 0x0401f00d, 0x83380580, 0x00000027, 0x04000005, | ||
8893 | 0x83380580, 0x00000014, 0x02020800, 0x001005d8, | ||
8894 | 0x493bc857, 0x0201f800, 0x00106bbf, 0x0201f000, | ||
8895 | 0x00107911, 0x4933c857, 0x0201f000, 0x00107911, | ||
8896 | 0x83380580, 0x00000013, 0x04020005, 0x59300403, | ||
8897 | 0x82000480, 0x00000085, 0x0c01f04d, 0x83380580, | ||
8898 | 0x00000027, 0x04020041, 0x4933c857, 0x0201f800, | ||
8899 | 0x00106bbf, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
8900 | 0x0010203c, 0x5c027800, 0x42003000, 0x00000015, | ||
8901 | 0x41782800, 0x42002000, 0x00000003, 0x42028000, | ||
8902 | 0x00000029, 0x4d400000, 0x4d440000, 0x59368c03, | ||
8903 | 0x0201f800, 0x0010985e, 0x5c028800, 0x5c028000, | ||
8904 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
8905 | 0x0201f800, 0x00109037, 0x0400000c, 0x4d2c0000, | ||
8906 | 0x59325808, 0x4a025a04, 0x00000103, 0x59300402, | ||
8907 | 0x48025c06, 0x497a5c09, 0x49425a06, 0x0201f800, | ||
8908 | 0x000202da, 0x5c025800, 0x0201f800, 0x0010912a, | ||
8909 | 0x0201f000, 0x0002077d, 0x83380580, 0x00000089, | ||
8910 | 0x04000005, 0x83380580, 0x0000008a, 0x02020000, | ||
8911 | 0x00107974, 0x0201f800, 0x00106f60, 0x02020000, | ||
8912 | 0x00107974, 0x59300a03, 0x82040580, 0x0000000a, | ||
8913 | 0x0400002a, 0x82040580, 0x0000000c, 0x04000027, | ||
8914 | 0x0201f800, 0x001005d8, 0x83380580, 0x00000014, | ||
8915 | 0x040207ea, 0x4933c857, 0x0201f800, 0x00106bbf, | ||
8916 | 0x42028000, 0x00000006, 0x0401f7d2, 0x00108aba, | ||
8917 | 0x00108ab8, 0x00108ab8, 0x00108ab8, 0x00108ab8, | ||
8918 | 0x00108ab8, 0x00108ac0, 0x00108ab8, 0x00108ab8, | ||
8919 | 0x00108ab8, 0x00108ab8, 0x00108ab8, 0x00108ab8, | ||
8920 | 0x0201f800, 0x001005d8, 0x4933c857, 0x59a80037, | ||
8921 | 0x48026206, 0x4a026203, 0x0000000a, 0x1c01f000, | ||
8922 | 0x4933c857, 0x59a80037, 0x48026206, 0x4a026203, | ||
8923 | 0x0000000c, 0x1c01f000, 0x83380580, 0x00000089, | ||
8924 | 0x04000008, 0x83380580, 0x0000008a, 0x04000032, | ||
8925 | 0x4933c857, 0x493bc857, 0x0201f000, 0x00107974, | ||
8926 | 0x4933c857, 0x59325808, 0x59300a1d, 0x82040580, | ||
8927 | 0x00000003, 0x04020004, 0x0201f800, 0x001049b2, | ||
8928 | 0x0401f00c, 0x5930021d, 0x82000580, 0x00000001, | ||
8929 | 0x04020008, 0x59300c16, 0x82040580, 0x00000039, | ||
8930 | 0x0400002c, 0x82040580, 0x00000035, 0x04000029, | ||
8931 | 0x4c340000, 0x41306800, 0x0201f800, 0x0002075a, | ||
8932 | 0x04000010, 0x4a026203, 0x00000001, 0x4a026403, | ||
8933 | 0x0000001e, 0x59cc0c07, 0x48066419, 0x59cc0a07, | ||
8934 | 0x48066219, 0x49366009, 0x4a026406, 0x00000001, | ||
8935 | 0x42000800, 0x80000040, 0x0201f800, 0x00020721, | ||
8936 | 0x40366000, 0x0201f800, 0x0002077d, 0x5c006800, | ||
8937 | 0x1c01f000, 0x4933c857, 0x5930021d, 0x82000580, | ||
8938 | 0x00000001, 0x04020040, 0x59300c16, 0x82040580, | ||
8939 | 0x00000035, 0x04000007, 0x82040580, 0x0000001e, | ||
8940 | 0x04000004, 0x82040580, 0x00000039, 0x04020036, | ||
8941 | 0x4933c857, 0x4c500000, 0x4d1c0000, 0x4130a000, | ||
8942 | 0x40067000, 0x0201f800, 0x001093ba, 0x04020029, | ||
8943 | 0x0201f800, 0x0002075a, 0x04000026, 0x491fc857, | ||
8944 | 0x4933c857, 0x83380580, 0x00000035, 0x04000004, | ||
8945 | 0x83380580, 0x00000039, 0x04020002, 0x4932381c, | ||
8946 | 0x493a6403, 0x4a026203, 0x00000001, 0x4a026406, | ||
8947 | 0x00000001, 0x58500809, 0x4807c857, 0x48066009, | ||
8948 | 0x58500c15, 0x4807c857, 0x48066415, 0x58500a15, | ||
8949 | 0x4807c857, 0x48066215, 0x58500a16, 0x4807c857, | ||
8950 | 0x48066216, 0x58500c19, 0x4807c857, 0x48066419, | ||
8951 | 0x58500a19, 0x4807c857, 0x48066219, 0x491e601e, | ||
8952 | 0x42000800, 0x80000040, 0x0201f800, 0x00020721, | ||
8953 | 0x40526000, 0x5c023800, 0x5c00a000, 0x0201f000, | ||
8954 | 0x0002077d, 0x5930021d, 0x82000580, 0x00000003, | ||
8955 | 0x02000800, 0x001049b2, 0x0201f000, 0x0002077d, | ||
8956 | 0x4803c856, 0x4c500000, 0x4c540000, 0x412c7800, | ||
8957 | 0x4c3c0000, 0x42002800, 0x00000001, 0x82040480, | ||
8958 | 0x00000101, 0x04001003, 0x42000800, 0x00000100, | ||
8959 | 0x40043000, 0x42000800, 0x0000001c, 0x83cca400, | ||
8960 | 0x0000000c, 0x832cac00, 0x0000000d, 0x0401f844, | ||
8961 | 0x82183480, 0x0000001c, 0x592e5801, 0x812e59c0, | ||
8962 | 0x02020800, 0x001007fd, 0x0201f800, 0x001007e4, | ||
8963 | 0x04000017, 0x80142800, 0x4a025a04, 0x00000110, | ||
8964 | 0x497a5c04, 0x492c7801, 0x82180c80, 0x0000003d, | ||
8965 | 0x04021006, 0x40180800, 0x832cac00, 0x00000005, | ||
8966 | 0x0401f82f, 0x0401f00a, 0x82183480, 0x0000003c, | ||
8967 | 0x42000800, 0x0000003c, 0x412c7800, 0x832cac00, | ||
8968 | 0x00000005, 0x0401f826, 0x0401f7e8, 0x5c007800, | ||
8969 | 0x841429c0, 0x82142d40, 0x00000003, 0x48147a04, | ||
8970 | 0x403e5800, 0x5c00a800, 0x5c00a000, 0x1c01f000, | ||
8971 | 0x492fc857, 0x812e59c0, 0x0400000f, 0x4d2c0000, | ||
8972 | 0x4c3c0000, 0x592c7801, 0x803c79c0, 0x04000006, | ||
8973 | 0x497a5801, 0x0201f800, 0x000202da, 0x403e5800, | ||
8974 | 0x0401f7f9, 0x5c007800, 0x0201f800, 0x000202da, | ||
8975 | 0x5c025800, 0x1c01f000, 0x4803c856, 0x4c580000, | ||
8976 | 0x82040c00, 0x00000003, 0x8004b104, 0x0201f800, | ||
8977 | 0x0010ab17, 0x5c00b000, 0x1c01f000, 0x4803c856, | ||
8978 | 0x4c580000, 0x82040c00, 0x00000003, 0x8004b104, | ||
8979 | 0x0201f800, 0x0010ab17, 0x5c00b000, 0x1c01f000, | ||
8980 | 0x591c0c06, 0x82040580, 0x00000003, 0x04000004, | ||
8981 | 0x82040580, 0x00000002, 0x0402001a, 0x4d300000, | ||
8982 | 0x4d2c0000, 0x411e6000, 0x59325808, 0x0201f800, | ||
8983 | 0x00109037, 0x0400000f, 0x4d400000, 0x42028000, | ||
8984 | 0x00000013, 0x592c0a08, 0x84040d54, 0x0201f800, | ||
8985 | 0x00104e70, 0x5c028000, 0x0201f800, 0x0010959c, | ||
8986 | 0x0201f800, 0x000202da, 0x0201f800, 0x0010912a, | ||
8987 | 0x0201f800, 0x00107911, 0x5c025800, 0x5c026000, | ||
8988 | 0x1c01f000, 0x59cc0005, 0x8c000500, 0x0402000b, | ||
8989 | 0x591c0406, 0x82000580, 0x00000002, 0x04020007, | ||
8990 | 0x591c0c03, 0x82040580, 0x00000085, 0x04000003, | ||
8991 | 0x82040580, 0x0000008b, 0x1c01f000, 0x4933c857, | ||
8992 | 0x4d3c0000, 0x42027800, 0x00000002, 0x59300406, | ||
8993 | 0x82000c80, 0x00000012, 0x02021800, 0x001005d8, | ||
8994 | 0x0c01f80a, 0x5c027800, 0x1c01f000, 0x4933c857, | ||
8995 | 0x59300406, 0x82000c80, 0x00000012, 0x02021800, | ||
8996 | 0x001005d8, 0x0c01f001, 0x00108c01, 0x00108bfe, | ||
8997 | 0x00108bfe, 0x00108c29, 0x00108bfc, 0x00108bfe, | ||
8998 | 0x00108c1a, 0x00108bfe, 0x00108bfc, 0x001065f4, | ||
8999 | 0x00108bfe, 0x00108bfe, 0x00108bfe, 0x00108bfc, | ||
9000 | 0x00108bfc, 0x00108bfc, 0x00108cf9, 0x00108bfe, | ||
9001 | 0x0201f800, 0x001005d8, 0x4803c856, 0x80000580, | ||
9002 | 0x1c01f000, 0x4803c856, 0x8d3e7d02, 0x04020016, | ||
9003 | 0x0201f800, 0x00109037, 0x0400000f, 0x59325808, | ||
9004 | 0x41780800, 0x4d400000, 0x42028000, 0x00000005, | ||
9005 | 0x0201f800, 0x00104e70, 0x5c028000, 0x0201f800, | ||
9006 | 0x0010959c, 0x0201f800, 0x001091cc, 0x0201f800, | ||
9007 | 0x000202da, 0x0201f800, 0x00107911, 0x82000540, | ||
9008 | 0x00000001, 0x1c01f000, 0x4933c857, 0x0201f800, | ||
9009 | 0x001048d9, 0x0402000c, 0x4d400000, 0x42028000, | ||
9010 | 0x00000010, 0x0201f800, 0x0010a1d1, 0x4a026406, | ||
9011 | 0x00000006, 0x4a026203, 0x00000007, 0x5c028000, | ||
9012 | 0x1c01f000, 0x4933c857, 0x0201f800, 0x00106c55, | ||
9013 | 0x4df00000, 0x0401f8b8, 0x82000c80, 0x0000000e, | ||
9014 | 0x02021800, 0x001005d8, 0x0c01f001, 0x00108c43, | ||
9015 | 0x00108cb0, 0x00108c5a, 0x00108cc3, 0x00108cab, | ||
9016 | 0x00108c41, 0x00108c43, 0x00108c43, 0x00108c47, | ||
9017 | 0x00108c43, 0x00108c43, 0x00108c43, 0x00108c43, | ||
9018 | 0x00108c5a, 0x0201f800, 0x001005d8, 0x5c03e000, | ||
9019 | 0x02000800, 0x00106c4b, 0x0401f7b8, 0x5c03e000, | ||
9020 | 0x02000800, 0x00106c4b, 0x59300406, 0x82000580, | ||
9021 | 0x00000003, 0x040207b4, 0x59300203, 0x82000580, | ||
9022 | 0x0000000d, 0x040007b0, 0x8d3e7d02, 0x040207ae, | ||
9023 | 0x4d340000, 0x59326809, 0x0201f800, 0x001049b2, | ||
9024 | 0x5c026800, 0x0401f7a8, 0x59300004, 0x8400055c, | ||
9025 | 0x48026004, 0x0201f800, 0x00106c4b, 0x59300406, | ||
9026 | 0x82000580, 0x00000006, 0x04000043, 0x8d3e7d02, | ||
9027 | 0x04020041, 0x497a621d, 0x59300203, 0x82000580, | ||
9028 | 0x0000000d, 0x04000003, 0x4a02621d, 0x00000003, | ||
9029 | 0x0401fbcb, 0x04000024, 0x4d2c0000, 0x4d400000, | ||
9030 | 0x59325808, 0x0201f800, 0x001091cc, 0x592c0408, | ||
9031 | 0x8c000512, 0x04000009, 0x4d2c0000, 0x84000512, | ||
9032 | 0x48025c08, 0x592c0809, 0x40065800, 0x0201f800, | ||
9033 | 0x001007fd, 0x5c025800, 0x4d400000, 0x42028000, | ||
9034 | 0x00000005, 0x592c0a08, 0x8c040d0e, 0x04000004, | ||
9035 | 0x42028000, 0x00000002, 0x0401f001, 0x0201f800, | ||
9036 | 0x00104e70, 0x5c028000, 0x0201f800, 0x0010959c, | ||
9037 | 0x0201f800, 0x000202da, 0x497a6008, 0x5c028000, | ||
9038 | 0x5c025800, 0x8d3e7d00, 0x04000009, 0x4d340000, | ||
9039 | 0x59326809, 0x0201f800, 0x001049b2, 0x5c026800, | ||
9040 | 0x0201f800, 0x00107911, 0x0401f00b, 0x4a026403, | ||
9041 | 0x00000085, 0x4a026203, 0x00000009, 0x4a026406, | ||
9042 | 0x00000002, 0x42000800, 0x8000404b, 0x0201f800, | ||
9043 | 0x00020721, 0x5c03e000, 0x02020800, 0x00106c55, | ||
9044 | 0x82000540, 0x00000001, 0x1c01f000, 0x0201f800, | ||
9045 | 0x00106c4b, 0x0201f800, 0x00100e99, 0x0401f7ab, | ||
9046 | 0x598c000d, 0x81300580, 0x04020004, 0x0201f800, | ||
9047 | 0x00106e8e, 0x0402001b, 0x0201f800, 0x001068d3, | ||
9048 | 0x04020006, 0x59300c03, 0x82040580, 0x00000040, | ||
9049 | 0x0400078b, 0x0401f79d, 0x0201f800, 0x00106b6c, | ||
9050 | 0x04000010, 0x0201f800, 0x001005d8, 0x0401f813, | ||
9051 | 0x04020004, 0x0201f800, 0x00106e62, 0x04020009, | ||
9052 | 0x0201f800, 0x001067ae, 0x040207f4, 0x59300c03, | ||
9053 | 0x82040580, 0x00000040, 0x04000779, 0x0401f78b, | ||
9054 | 0x59300203, 0x82000c80, 0x0000000e, 0x02021800, | ||
9055 | 0x001005d8, 0x0c01f75e, 0x417a3000, 0x42032000, | ||
9056 | 0x0000bf32, 0x59900004, 0x81300580, 0x04000009, | ||
9057 | 0x83932400, 0x00000010, 0x811a3000, 0x83180480, | ||
9058 | 0x00000005, 0x040017f8, 0x82000540, 0x00000001, | ||
9059 | 0x1c01f000, 0x59300004, 0x8c00053e, 0x04000010, | ||
9060 | 0x8c00050c, 0x0402000e, 0x8c000516, 0x04020006, | ||
9061 | 0x82000d00, 0x0000001f, 0x82040580, 0x00000005, | ||
9062 | 0x04020004, 0x42000000, 0x00000003, 0x0401f005, | ||
9063 | 0x42000000, 0x00000001, 0x0401f002, 0x59300203, | ||
9064 | 0x1c01f000, 0x4933c857, 0x0201f800, 0x00106c55, | ||
9065 | 0x4df00000, 0x59300203, 0x82000c80, 0x0000000e, | ||
9066 | 0x02021800, 0x001005d8, 0x0c01f001, 0x00108d13, | ||
9067 | 0x00108d30, 0x00108d17, 0x00108d11, 0x00108d11, | ||
9068 | 0x00108d11, 0x00108d11, 0x00108d11, 0x00108d11, | ||
9069 | 0x00108d11, 0x00108d11, 0x00108d11, 0x00108d11, | ||
9070 | 0x00108d11, 0x0201f800, 0x001005d8, 0x5c03e000, | ||
9071 | 0x02000800, 0x00106c4b, 0x0401f6e8, 0x5c03e000, | ||
9072 | 0x02000800, 0x00106c4b, 0x4d2c0000, 0x59325808, | ||
9073 | 0x59300403, 0x82000580, 0x00000052, 0x02000800, | ||
9074 | 0x00101231, 0x0401fb16, 0x02000800, 0x001005d8, | ||
9075 | 0x4a025a06, 0x00000005, 0x0201f800, 0x000202da, | ||
9076 | 0x0201f800, 0x00104c19, 0x0201f800, 0x00107911, | ||
9077 | 0x5c025800, 0x82000540, 0x00000001, 0x1c01f000, | ||
9078 | 0x598c000d, 0x81300580, 0x0402001a, 0x59300004, | ||
9079 | 0x8c000520, 0x04000004, 0x84000520, 0x48026004, | ||
9080 | 0x0401f01a, 0x42001000, 0x0010b7f6, 0x50081000, | ||
9081 | 0x58080002, 0x82000580, 0x00000100, 0x0400000a, | ||
9082 | 0x5808000c, 0x81300580, 0x02020800, 0x001005d8, | ||
9083 | 0x0201f800, 0x001068d3, 0x02020800, 0x001005d8, | ||
9084 | 0x0401f7cf, 0x0201f800, 0x00106e8e, 0x0402000c, | ||
9085 | 0x59300004, 0x8c000520, 0x04000004, 0x84000520, | ||
9086 | 0x48026004, 0x0401f7c6, 0x0201f800, 0x001068d3, | ||
9087 | 0x040007c3, 0x0201f800, 0x001005d8, 0x59300203, | ||
9088 | 0x82000c80, 0x0000000e, 0x02021800, 0x001005d8, | ||
9089 | 0x0c01f7a7, 0x59300406, 0x4933c857, 0x4803c857, | ||
9090 | 0x82000c80, 0x00000012, 0x02021800, 0x001005d8, | ||
9091 | 0x0c01f001, 0x00108d7c, 0x00108e41, 0x00108f79, | ||
9092 | 0x00108d88, 0x00107911, 0x00108d7c, 0x0010a1c0, | ||
9093 | 0x0002077d, 0x00108e41, 0x001065ce, 0x00108fda, | ||
9094 | 0x00108d77, 0x00108d77, 0x00108d77, 0x00108d77, | ||
9095 | 0x00108d77, 0x001096eb, 0x001096eb, 0x0201f800, | ||
9096 | 0x001005d8, 0x0401fbd5, 0x02000000, 0x0010801c, | ||
9097 | 0x1c01f000, 0x0201f800, 0x00106c55, 0x0201f800, | ||
9098 | 0x00106bbf, 0x0201f800, 0x00106c4b, 0x0201f000, | ||
9099 | 0x0002077d, 0x4a026206, 0x00000001, 0x1c01f000, | ||
9100 | 0x42000000, 0x0010b872, 0x0201f800, 0x0010aa47, | ||
9101 | 0x4d2c0000, 0x4d400000, 0x417a5800, 0x0401faa8, | ||
9102 | 0x04000007, 0x59325808, 0x592c0208, 0x8400054c, | ||
9103 | 0x48025a08, 0x42028000, 0x00000006, 0x0201f800, | ||
9104 | 0x00106c55, 0x0401ff4c, 0x4803c857, 0x82000c80, | ||
9105 | 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f806, | ||
9106 | 0x0201f800, 0x00106c4b, 0x5c028000, 0x5c025800, | ||
9107 | 0x1c01f000, 0x00108e40, 0x00108db5, 0x00108dc3, | ||
9108 | 0x00108de5, 0x00108e11, 0x00108db3, 0x00108d7c, | ||
9109 | 0x00108d7c, 0x00108d7c, 0x00108db3, 0x00108db3, | ||
9110 | 0x00108db3, 0x00108db3, 0x00108dc3, 0x0201f800, | ||
9111 | 0x001005d8, 0x598c000d, 0x81300580, 0x04020004, | ||
9112 | 0x0201f800, 0x00106e8e, 0x04020038, 0x0201f800, | ||
9113 | 0x001068d3, 0x0400003b, 0x0201f800, 0x00106b6c, | ||
9114 | 0x04000032, 0x0201f800, 0x001005d8, 0x497a621d, | ||
9115 | 0x812e59c0, 0x02000800, 0x001005d8, 0x592c0204, | ||
9116 | 0x82000500, 0x000000ff, 0x82000580, 0x00000014, | ||
9117 | 0x04000003, 0x4a02621d, 0x00000003, 0x592c0a08, | ||
9118 | 0x0201f800, 0x00104e70, 0x0201f800, 0x0010959c, | ||
9119 | 0x0201f800, 0x000202da, 0x497a6008, 0x4a026403, | ||
9120 | 0x00000085, 0x4a026203, 0x00000009, 0x4a026406, | ||
9121 | 0x00000002, 0x4a026004, 0x8000404b, 0x0201f800, | ||
9122 | 0x00106c4b, 0x42000800, 0x8000404b, 0x0201f000, | ||
9123 | 0x00020721, 0x0401fef1, 0x04020004, 0x0201f800, | ||
9124 | 0x00106e62, 0x04020009, 0x0201f800, 0x001067ae, | ||
9125 | 0x040207d2, 0x59300c03, 0x82040580, 0x00000040, | ||
9126 | 0x04000008, 0x0401f7d2, 0x59300203, 0x82000c80, | ||
9127 | 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f7ae, | ||
9128 | 0x0201f800, 0x00106c4b, 0x812e59c0, 0x04000013, | ||
9129 | 0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800, | ||
9130 | 0x0010959c, 0x0201f800, 0x000202da, 0x59300203, | ||
9131 | 0x82000580, 0x0000000d, 0x04000008, 0x0201f800, | ||
9132 | 0x00106c4b, 0x4d340000, 0x59326809, 0x0201f800, | ||
9133 | 0x001049b2, 0x5c026800, 0x0201f800, 0x00107911, | ||
9134 | 0x0401f030, 0x812e59c0, 0x02000800, 0x001005d8, | ||
9135 | 0x0201f800, 0x0010940a, 0x04020004, 0x0201f800, | ||
9136 | 0x00100e99, 0x0401f7aa, 0x0201f800, 0x00106c4b, | ||
9137 | 0x592c0208, 0x8400050c, 0x48025a08, 0x592c0406, | ||
9138 | 0x800000c2, 0x800008c4, 0x80040c00, 0x48066206, | ||
9139 | 0x42000000, 0x10000000, 0x41300800, 0x0201f800, | ||
9140 | 0x00100b94, 0x0400000d, 0x592c0208, 0x8c00051c, | ||
9141 | 0x04020006, 0x8400055c, 0x48025a08, 0x4a026206, | ||
9142 | 0x00000002, 0x0401f00f, 0x4d300000, 0x0201f800, | ||
9143 | 0x001012e5, 0x5c026000, 0x59300203, 0x82000580, | ||
9144 | 0x00000004, 0x04020007, 0x4d380000, 0x42027000, | ||
9145 | 0x00000048, 0x0201f800, 0x000207a1, 0x5c027000, | ||
9146 | 0x1c01f000, 0x42000000, 0x0010b86e, 0x0201f800, | ||
9147 | 0x0010aa47, 0x59300203, 0x82000c80, 0x0000000e, | ||
9148 | 0x02021800, 0x001005d8, 0x4803c857, 0x0c01f001, | ||
9149 | 0x00108e5a, 0x00108d85, 0x00108e5c, 0x00108e5a, | ||
9150 | 0x00108e5c, 0x00108e5c, 0x00108d7d, 0x00108e5a, | ||
9151 | 0x00108d79, 0x00108e5a, 0x00108e5a, 0x00108e5a, | ||
9152 | 0x00108e5a, 0x00108e5a, 0x0201f800, 0x001005d8, | ||
9153 | 0x4d340000, 0x4d2c0000, 0x59326809, 0x59340400, | ||
9154 | 0x82000500, 0x000000ff, 0x82000c80, 0x0000000c, | ||
9155 | 0x02021800, 0x001005d8, 0x59303403, 0x82180d80, | ||
9156 | 0x00000004, 0x04020004, 0x42000000, 0x00000001, | ||
9157 | 0x0401f006, 0x82180d80, 0x00000000, 0x04020003, | ||
9158 | 0x42000000, 0x00000001, 0x4803c857, 0x0c01f804, | ||
9159 | 0x5c025800, 0x5c026800, 0x1c01f000, 0x00108e83, | ||
9160 | 0x00108f22, 0x00108e85, 0x00108eba, 0x00108e85, | ||
9161 | 0x00108f3f, 0x00108e85, 0x00108e8f, 0x00108e83, | ||
9162 | 0x00108f3f, 0x00108e83, 0x00108e9e, 0x0201f800, | ||
9163 | 0x001005d8, 0x59300403, 0x82000d80, 0x00000016, | ||
9164 | 0x0400002e, 0x82000d80, 0x00000004, 0x0400002b, | ||
9165 | 0x82000d80, 0x00000002, 0x04000028, 0x0401fabf, | ||
9166 | 0x04000079, 0x59300403, 0x82000d80, 0x00000022, | ||
9167 | 0x040000ae, 0x82000d80, 0x00000039, 0x040000b3, | ||
9168 | 0x82000d80, 0x00000035, 0x040000b0, 0x82000d80, | ||
9169 | 0x0000001e, 0x0400001b, 0x0401f999, 0x04000007, | ||
9170 | 0x0201f800, 0x00109597, 0x04020004, 0x0201f800, | ||
9171 | 0x00104a14, 0x0401f011, 0x59300403, 0x82000d80, | ||
9172 | 0x00000001, 0x04020004, 0x0201f800, 0x001049e7, | ||
9173 | 0x0400000a, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
9174 | 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864, | ||
9175 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x0010801c, | ||
9176 | 0x0201f000, 0x00107911, 0x0401f97d, 0x04000004, | ||
9177 | 0x0201f800, 0x00109597, 0x040000a9, 0x59300c03, | ||
9178 | 0x82040580, 0x00000016, 0x04000056, 0x82040580, | ||
9179 | 0x00000002, 0x04020034, 0x59a80026, 0x8c000502, | ||
9180 | 0x04020013, 0x0201f800, 0x0010513b, 0x04020010, | ||
9181 | 0x0201f800, 0x00105151, 0x04020006, 0x42000000, | ||
9182 | 0x00000001, 0x0201f800, 0x00105113, 0x0401f094, | ||
9183 | 0x4a035033, 0x00000001, 0x4202d800, 0x00000001, | ||
9184 | 0x0201f800, 0x001050a2, 0x0401f08d, 0x59340403, | ||
9185 | 0x82000580, 0x000007fc, 0x04000008, 0x59a80026, | ||
9186 | 0x8c00050a, 0x04020084, 0x59340212, 0x82000500, | ||
9187 | 0x0000ff00, 0x04000082, 0x59340412, 0x82000500, | ||
9188 | 0x000000ff, 0x04000010, 0x80000040, 0x48026c12, | ||
9189 | 0x497a6008, 0x4a026406, 0x00000007, 0x4a026206, | ||
9190 | 0x00000398, 0x497a6205, 0x0201f800, 0x0002075a, | ||
9191 | 0x04000005, 0x49366009, 0x4a026406, 0x00000001, | ||
9192 | 0x0401f020, 0x59300403, 0x82000d80, 0x00000002, | ||
9193 | 0x0402000d, 0x59340403, 0x82000580, 0x000007fe, | ||
9194 | 0x04020009, 0x59a80026, 0x84000540, 0x48035026, | ||
9195 | 0x0201f800, 0x00104237, 0x0201f800, 0x0010801c, | ||
9196 | 0x0401f00c, 0x0201f800, 0x0010801c, 0x4d3c0000, | ||
9197 | 0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800, | ||
9198 | 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47, | ||
9199 | 0x0201f800, 0x00102074, 0x0201f000, 0x00107911, | ||
9200 | 0x42000800, 0x00000003, 0x0201f800, 0x00104571, | ||
9201 | 0x4a026203, 0x00000001, 0x4a026403, 0x00000002, | ||
9202 | 0x0201f000, 0x0010672b, 0x0401f915, 0x04020793, | ||
9203 | 0x0201f800, 0x00102074, 0x4d3c0000, 0x417a7800, | ||
9204 | 0x0201f800, 0x0010203c, 0x5c027800, 0x42000000, | ||
9205 | 0x0010b864, 0x0201f800, 0x0010aa47, 0x42003000, | ||
9206 | 0x00000018, 0x41782800, 0x42002000, 0x00000000, | ||
9207 | 0x4d400000, 0x4d440000, 0x59368c03, 0x42028000, | ||
9208 | 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800, | ||
9209 | 0x5c028000, 0x0201f000, 0x00107911, 0x0201f800, | ||
9210 | 0x00104a14, 0x0401f7c8, 0x42000000, 0x0010b86d, | ||
9211 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x00107b76, | ||
9212 | 0x040207c1, 0x1c01f000, 0x4d380000, 0x59327403, | ||
9213 | 0x0201f800, 0x001093ba, 0x5c027000, 0x02020000, | ||
9214 | 0x0002077d, 0x836c0580, 0x00000003, 0x04000004, | ||
9215 | 0x4a026206, 0x00000002, 0x1c01f000, 0x59300403, | ||
9216 | 0x48026416, 0x4a02621d, 0x00000001, 0x4a026403, | ||
9217 | 0x00000085, 0x4a026203, 0x00000009, 0x4a026406, | ||
9218 | 0x00000002, 0x42000800, 0x8000004b, 0x0201f000, | ||
9219 | 0x00020721, 0x0201f800, 0x00102074, 0x0201f800, | ||
9220 | 0x0010801c, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
9221 | 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864, | ||
9222 | 0x0201f800, 0x0010aa47, 0x497a6008, 0x4a026406, | ||
9223 | 0x00000007, 0x4a026206, 0x00000398, 0x497a6205, | ||
9224 | 0x1c01f000, 0x42000000, 0x0010b870, 0x0201f800, | ||
9225 | 0x0010aa47, 0x4d340000, 0x59326809, 0x59300203, | ||
9226 | 0x82000c80, 0x0000000e, 0x02021800, 0x001005d8, | ||
9227 | 0x4803c857, 0x0c01f803, 0x5c026800, 0x1c01f000, | ||
9228 | 0x00108f96, 0x00108d85, 0x00108f96, 0x00108f96, | ||
9229 | 0x00108f96, 0x00108f96, 0x00108f96, 0x00108f96, | ||
9230 | 0x00108f96, 0x00108d85, 0x00108f98, 0x00108d85, | ||
9231 | 0x00108fa0, 0x00108f96, 0x0201f800, 0x001005d8, | ||
9232 | 0x4a026403, 0x0000008b, 0x4a026203, 0x0000000b, | ||
9233 | 0x42000800, 0x8000404b, 0x0201f000, 0x00020721, | ||
9234 | 0x59300a1d, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
9235 | 0x0010203c, 0x5c027800, 0x42003000, 0x00000011, | ||
9236 | 0x0201f800, 0x0010a942, 0x42000000, 0x0010b864, | ||
9237 | 0x0201f800, 0x0010aa47, 0x41306800, 0x0201f800, | ||
9238 | 0x0002075a, 0x04000008, 0x49366009, 0x4d300000, | ||
9239 | 0x40366000, 0x0201f800, 0x00107911, 0x5c026000, | ||
9240 | 0x0401f002, 0x40366000, 0x497a6008, 0x4a026406, | ||
9241 | 0x00000001, 0x4a026403, 0x00000001, 0x0201f800, | ||
9242 | 0x00103b25, 0x04000011, 0x4a026406, 0x00000004, | ||
9243 | 0x4a026203, 0x00000007, 0x4a026420, 0x00000001, | ||
9244 | 0x42003000, 0x00000004, 0x4d400000, 0x42028000, | ||
9245 | 0x00000029, 0x41782800, 0x0201f800, 0x0010a43e, | ||
9246 | 0x5c028000, 0x1c01f000, 0x42000800, 0x0000000b, | ||
9247 | 0x0201f800, 0x00104571, 0x4a026203, 0x00000001, | ||
9248 | 0x0201f000, 0x0010672b, 0x42000000, 0x0010b876, | ||
9249 | 0x0201f800, 0x0010aa47, 0x59300203, 0x82000c80, | ||
9250 | 0x0000000e, 0x02021800, 0x001005d8, 0x4803c857, | ||
9251 | 0x0c01f001, 0x0010900b, 0x00108ff3, 0x00108ff7, | ||
9252 | 0x0010900c, 0x00108ff5, 0x00108ff3, 0x00108ff3, | ||
9253 | 0x00108ff3, 0x00108ff3, 0x00108ff3, 0x00108ff3, | ||
9254 | 0x00108ff3, 0x00108ff3, 0x00108ff3, 0x0201f800, | ||
9255 | 0x001005d8, 0x0201f800, 0x00100e99, 0x4d2c0000, | ||
9256 | 0x59325808, 0x4a025a06, 0x00000006, 0x0201f800, | ||
9257 | 0x000202da, 0x5c025800, 0x497a6008, 0x4a02621d, | ||
9258 | 0x0000000a, 0x4a026403, 0x00000085, 0x4a026203, | ||
9259 | 0x00000009, 0x4a026406, 0x00000002, 0x42000800, | ||
9260 | 0x8000404b, 0x0201f000, 0x00020721, 0x1c01f000, | ||
9261 | 0x0201f800, 0x00106c55, 0x4df00000, 0x0401fcc7, | ||
9262 | 0x04020004, 0x0201f800, 0x00106e62, 0x0402000c, | ||
9263 | 0x0201f800, 0x001067ae, 0x04020005, 0x5c03e000, | ||
9264 | 0x0201f800, 0x00106c4b, 0x0401f7dd, 0x0201f800, | ||
9265 | 0x00106b6c, 0x02020800, 0x001005d8, 0x5c03e000, | ||
9266 | 0x0201f800, 0x00106c4b, 0x59300203, 0x82000d80, | ||
9267 | 0x00000003, 0x02000800, 0x001005d8, 0x82000c80, | ||
9268 | 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f7ba, | ||
9269 | 0x4803c856, 0x59a8000e, 0x59a80867, 0x80040400, | ||
9270 | 0x80080480, 0x04021004, 0x82000540, 0x00000001, | ||
9271 | 0x1c01f000, 0x80000580, 0x1c01f000, 0x4803c856, | ||
9272 | 0x4c080000, 0x59301008, 0x82081500, 0xfff00000, | ||
9273 | 0x5c001000, 0x1c01f000, 0x4803c856, 0x4d300000, | ||
9274 | 0x0201f800, 0x0002075a, 0x0400000a, 0x0401f82f, | ||
9275 | 0x4d380000, 0x42027000, 0x0000004b, 0x0201f800, | ||
9276 | 0x000207a1, 0x5c027000, 0x82000540, 0x00000001, | ||
9277 | 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, | ||
9278 | 0x0201f800, 0x00107942, 0x0400001b, 0x0401f81f, | ||
9279 | 0x4d300000, 0x0201f800, 0x00106c55, 0x4d3c0000, | ||
9280 | 0x417a7800, 0x0201f800, 0x00106ab4, 0x0201f800, | ||
9281 | 0x001067fd, 0x5c027800, 0x0201f800, 0x0010a2ff, | ||
9282 | 0x0201f800, 0x00106c4b, 0x5c026000, 0x8d3e7d3e, | ||
9283 | 0x0402000b, 0x4d380000, 0x42027000, 0x0000004c, | ||
9284 | 0x0201f800, 0x000207a1, 0x5c027000, 0x82000540, | ||
9285 | 0x00000001, 0x5c026000, 0x1c01f000, 0x0201f800, | ||
9286 | 0x0002077d, 0x0401f7fa, 0x592c0407, 0x494a6017, | ||
9287 | 0x494e6018, 0x49366009, 0x492e6008, 0x4a026406, | ||
9288 | 0x00000003, 0x800000c2, 0x800008c4, 0x80040400, | ||
9289 | 0x48026206, 0x1c01f000, 0x493bc857, 0x4d300000, | ||
9290 | 0x0201f800, 0x0002075a, 0x0400000d, 0x0401ffef, | ||
9291 | 0x4d400000, 0x42028000, 0x00000005, 0x0401f80d, | ||
9292 | 0x5c028000, 0x8d3e7d3e, 0x04020007, 0x0201f800, | ||
9293 | 0x000207a1, 0x82000540, 0x00000001, 0x5c026000, | ||
9294 | 0x1c01f000, 0x0201f800, 0x0002077d, 0x0401f7fa, | ||
9295 | 0x4803c856, 0x0201f800, 0x00106c55, 0x4d3c0000, | ||
9296 | 0x4d440000, 0x59368c03, 0x42027800, 0x00000001, | ||
9297 | 0x0201f800, 0x001069b6, 0x0201f800, 0x0010692e, | ||
9298 | 0x0201f800, 0x001067fd, 0x0201f800, 0x0010a2ff, | ||
9299 | 0x5c028800, 0x5c027800, 0x0201f000, 0x00106c4b, | ||
9300 | 0x4803c856, 0x4d300000, 0x0201f800, 0x0002075a, | ||
9301 | 0x0400000f, 0x481a601c, 0x48ee6021, 0x49366009, | ||
9302 | 0x4a026406, 0x00000001, 0x492e6008, 0x4d380000, | ||
9303 | 0x42027000, 0x0000001f, 0x0201f800, 0x000207a1, | ||
9304 | 0x5c027000, 0x82000540, 0x00000001, 0x5c026000, | ||
9305 | 0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800, | ||
9306 | 0x0002075a, 0x0400000e, 0x48ee6021, 0x49366009, | ||
9307 | 0x4a026406, 0x00000001, 0x492e6008, 0x4d380000, | ||
9308 | 0x42027000, 0x00000055, 0x0201f800, 0x000207a1, | ||
9309 | 0x5c027000, 0x82000540, 0x00000001, 0x5c026000, | ||
9310 | 0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800, | ||
9311 | 0x0002075a, 0x0400000f, 0x481a601c, 0x48ee6021, | ||
9312 | 0x49366009, 0x4a026406, 0x00000001, 0x492e6008, | ||
9313 | 0x4d380000, 0x42027000, 0x0000003d, 0x0201f800, | ||
9314 | 0x000207a1, 0x5c027000, 0x82000540, 0x00000001, | ||
9315 | 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, | ||
9316 | 0x0201f800, 0x00107942, 0x04000014, 0x49366009, | ||
9317 | 0x492fc857, 0x4933c857, 0x592c0404, 0x8c00051e, | ||
9318 | 0x04000003, 0x48efc857, 0x48ee6021, 0x4a026406, | ||
9319 | 0x00000001, 0x492e6008, 0x4d380000, 0x42027000, | ||
9320 | 0x00000000, 0x0201f800, 0x000207a1, 0x5c027000, | ||
9321 | 0x82000540, 0x00000001, 0x5c026000, 0x1c01f000, | ||
9322 | 0x4803c856, 0x4d300000, 0x0201f800, 0x0002075a, | ||
9323 | 0x0400000f, 0x48ee6021, 0x481a601c, 0x49366009, | ||
9324 | 0x4a026406, 0x00000001, 0x492e6008, 0x4d380000, | ||
9325 | 0x42027000, 0x00000044, 0x0201f800, 0x000207a1, | ||
9326 | 0x5c027000, 0x82000540, 0x00000001, 0x5c026000, | ||
9327 | 0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800, | ||
9328 | 0x0002075a, 0x0400000f, 0x481a601c, 0x48ee6021, | ||
9329 | 0x49366009, 0x4a026406, 0x00000001, 0x492e6008, | ||
9330 | 0x4d380000, 0x42027000, 0x00000049, 0x0201f800, | ||
9331 | 0x000207a1, 0x5c027000, 0x82000540, 0x00000001, | ||
9332 | 0x5c026000, 0x1c01f000, 0x59300009, 0x80001540, | ||
9333 | 0x02000800, 0x001005d8, 0x5808040b, 0x4803c856, | ||
9334 | 0x80000040, 0x04001002, 0x4800140b, 0x1c01f000, | ||
9335 | 0x4803c856, 0x59300403, 0x82000d80, 0x00000002, | ||
9336 | 0x04000015, 0x82000d80, 0x00000003, 0x04000012, | ||
9337 | 0x82000d80, 0x00000004, 0x0400000f, 0x82000d80, | ||
9338 | 0x00000008, 0x0400000c, 0x82000d80, 0x0000000a, | ||
9339 | 0x04000009, 0x599c0819, 0x8c040d0e, 0x04000004, | ||
9340 | 0x82000d80, 0x00000000, 0x04000003, 0x82000540, | ||
9341 | 0x00000001, 0x1c01f000, 0x4803c856, 0x4c000000, | ||
9342 | 0x4d2c0000, 0x59300406, 0x82000580, 0x00000004, | ||
9343 | 0x0400001d, 0x59300008, 0x80025d40, 0x800001c0, | ||
9344 | 0x04000019, 0x0201f800, 0x00109597, 0x04000014, | ||
9345 | 0x59300406, 0x82004580, 0x00000010, 0x04000010, | ||
9346 | 0x82004580, 0x00000011, 0x0400000d, 0x82004580, | ||
9347 | 0x00000003, 0x0400000c, 0x82004580, 0x00000002, | ||
9348 | 0x04000009, 0x82004580, 0x0000000a, 0x04000006, | ||
9349 | 0x592c0404, 0x8c00051e, 0x04000003, 0x80000580, | ||
9350 | 0x0401f003, 0x82000540, 0x00000001, 0x5c025800, | ||
9351 | 0x5c000000, 0x1c01f000, 0x4803c856, 0x4d300000, | ||
9352 | 0x0201f800, 0x00107942, 0x04000013, 0x49366009, | ||
9353 | 0x48ee6021, 0x4a026406, 0x00000001, 0x492e6008, | ||
9354 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c, | ||
9355 | 0x5c027800, 0x4d380000, 0x42027000, 0x00000028, | ||
9356 | 0x0201f800, 0x000207a1, 0x5c027000, 0x82000540, | ||
9357 | 0x00000001, 0x5c026000, 0x1c01f000, 0x4803c856, | ||
9358 | 0x83380580, 0x00000015, 0x0402000d, 0x59a80016, | ||
9359 | 0x82000580, 0x00000074, 0x04020009, 0x0201f800, | ||
9360 | 0x0010462a, 0x4a026203, 0x00000001, 0x4a026403, | ||
9361 | 0x00000029, 0x0201f000, 0x0010672b, 0x0201f800, | ||
9362 | 0x0010801c, 0x0201f000, 0x0002077d, 0x4803c856, | ||
9363 | 0x83380580, 0x00000016, 0x04020007, 0x42000800, | ||
9364 | 0x00000004, 0x0201f800, 0x00104571, 0x0201f000, | ||
9365 | 0x00107b38, 0x83380580, 0x00000015, 0x04020013, | ||
9366 | 0x59a80016, 0x82000580, 0x00000014, 0x0402000f, | ||
9367 | 0x0201f800, 0x0010468d, 0x0201f800, 0x0010846f, | ||
9368 | 0x0402000a, 0x59340404, 0x80000540, 0x04000007, | ||
9369 | 0x42000800, 0x00000006, 0x0201f800, 0x00104571, | ||
9370 | 0x0201f000, 0x00107b38, 0x0201f800, 0x0010801c, | ||
9371 | 0x0201f000, 0x0002077d, 0x4803c856, 0x592c0206, | ||
9372 | 0x82000580, 0x00000005, 0x04000002, 0x1c01f000, | ||
9373 | 0x4803c856, 0x592c0208, 0x8400054a, 0x48025a08, | ||
9374 | 0x1c01f000, 0x497a6205, 0x497a6008, 0x4a026203, | ||
9375 | 0x00000001, 0x4a026403, 0x00000050, 0x42000800, | ||
9376 | 0x80000043, 0x0201f000, 0x00020721, 0x4933c857, | ||
9377 | 0x4d340000, 0x59326809, 0x59340200, 0x8c00050e, | ||
9378 | 0x04000006, 0x59300406, 0x82000c80, 0x00000012, | ||
9379 | 0x04021004, 0x0c01f806, 0x5c026800, 0x1c01f000, | ||
9380 | 0x0201f800, 0x00108d7c, 0x0401f7fc, 0x00108d7c, | ||
9381 | 0x001091fd, 0x00109201, 0x00109204, 0x0010a49b, | ||
9382 | 0x0010a4b8, 0x0010a4bc, 0x00108d7c, 0x00108d7c, | ||
9383 | 0x00108d7c, 0x00108d7c, 0x00108d7c, 0x00108d7c, | ||
9384 | 0x00108d7c, 0x00108d7c, 0x00108d7c, 0x00108d7c, | ||
9385 | 0x00108d7c, 0x4803c856, 0x40000000, 0x40000000, | ||
9386 | 0x1c01f000, 0x40000000, 0x40000000, 0x1c01f000, | ||
9387 | 0x5930001c, 0x4803c857, 0x59300414, 0x4933c857, | ||
9388 | 0x4803c857, 0x8c000502, 0x04000005, 0x84000502, | ||
9389 | 0x84000540, 0x48026414, 0x1c01f000, 0x42000000, | ||
9390 | 0xd0000000, 0x41300800, 0x0201f800, 0x00100b94, | ||
9391 | 0x0401f80a, 0x04020008, 0x59a80037, 0x82000400, | ||
9392 | 0x0000000a, 0x48026205, 0x59300414, 0x84000542, | ||
9393 | 0x48026414, 0x1c01f000, 0x4933c857, 0x4d340000, | ||
9394 | 0x59326809, 0x59340200, 0x8c00050e, 0x02000800, | ||
9395 | 0x001005d8, 0x5930001c, 0x80000540, 0x0402002f, | ||
9396 | 0x59a80021, 0x80000540, 0x0402002a, 0x4d1c0000, | ||
9397 | 0x41323800, 0x0201f800, 0x0002075a, 0x04000023, | ||
9398 | 0x4932381c, 0x591c0414, 0x84000542, 0x48023c14, | ||
9399 | 0x49366009, 0x591c0406, 0x82000580, 0x00000003, | ||
9400 | 0x04000006, 0x591c0202, 0x48026419, 0x591c0402, | ||
9401 | 0x48026219, 0x0401f005, 0x591c0202, 0x48026219, | ||
9402 | 0x591c0402, 0x48026419, 0x491e601e, 0x4a026406, | ||
9403 | 0x00000001, 0x4a026403, 0x00000035, 0x4a026203, | ||
9404 | 0x00000001, 0x42000800, 0x80000040, 0x0201f800, | ||
9405 | 0x00020721, 0x411e6000, 0x5c023800, 0x80000580, | ||
9406 | 0x5c026800, 0x1c01f000, 0x411e6000, 0x5c023800, | ||
9407 | 0x59a80039, 0x48026205, 0x82000540, 0x00000001, | ||
9408 | 0x0401f7f8, 0x4933c857, 0x4d2c0000, 0x4932381c, | ||
9409 | 0x4a026202, 0x0000ffff, 0x591e5808, 0x591c0007, | ||
9410 | 0x8c00051e, 0x04000005, 0x8400051e, 0x48023807, | ||
9411 | 0x497a5c09, 0x0401f014, 0x592c0408, 0x8c000518, | ||
9412 | 0x04000011, 0x84000518, 0x48025c08, 0x4a025c09, | ||
9413 | 0x00000001, 0x0401fb2f, 0x497a5c09, 0x592c0408, | ||
9414 | 0x8c000512, 0x04000008, 0x4d2c0000, 0x84000512, | ||
9415 | 0x48025c08, 0x592e5809, 0x0201f800, 0x001007fd, | ||
9416 | 0x5c025800, 0x59a80039, 0x48026205, 0x591c0214, | ||
9417 | 0x48026216, 0x82000d80, 0x00000001, 0x04000008, | ||
9418 | 0x4a023a03, 0x00000002, 0x82000580, 0x00000005, | ||
9419 | 0x04000008, 0x497a6015, 0x0401f01e, 0x591c0007, | ||
9420 | 0x84000540, 0x48023807, 0x4a023a03, 0x00000004, | ||
9421 | 0x591c0414, 0x4803c857, 0x8400051c, 0x84000554, | ||
9422 | 0x48023c14, 0x592c000f, 0x40001000, 0x591c0816, | ||
9423 | 0x80040480, 0x040217f0, 0x591c0016, 0x82000500, | ||
9424 | 0xfffffffc, 0x48026015, 0x48023816, 0x591c0a14, | ||
9425 | 0x4807c857, 0x82040d80, 0x00000005, 0x04020005, | ||
9426 | 0x480bc857, 0x4803c857, 0x4a023812, 0xffffffff, | ||
9427 | 0x591c0402, 0x48026419, 0x591c0202, 0x48026219, | ||
9428 | 0x591e6809, 0x49366009, 0x4a026406, 0x00000001, | ||
9429 | 0x4a026403, 0x00000039, 0x4a026203, 0x00000001, | ||
9430 | 0x42000800, 0x80000040, 0x0201f800, 0x00020721, | ||
9431 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x59300414, | ||
9432 | 0x8c000514, 0x04000015, 0x8c00051c, 0x04020012, | ||
9433 | 0x59300016, 0x80100480, 0x04001006, 0x04000005, | ||
9434 | 0x59300414, 0x84000514, 0x8400055c, 0x0401f009, | ||
9435 | 0x48126016, 0x48126012, 0x40100000, 0x592c180f, | ||
9436 | 0x800c0480, 0x48026011, 0x59300414, 0x84000514, | ||
9437 | 0x48026414, 0x1c01f000, 0x4933c857, 0x8c00051c, | ||
9438 | 0x04020006, 0x59300012, 0x48026016, 0x59300414, | ||
9439 | 0x8400055c, 0x48026414, 0x1c01f000, 0x59300c03, | ||
9440 | 0x4933c857, 0x4807c857, 0x82040480, 0x00000034, | ||
9441 | 0x04001006, 0x82040480, 0x0000003c, 0x04021003, | ||
9442 | 0x80000580, 0x1c01f000, 0x82000540, 0x00000001, | ||
9443 | 0x0401f7fd, 0x41780800, 0x59a81035, 0x42000000, | ||
9444 | 0x00000032, 0x0201f800, 0x001066a0, 0x800811c0, | ||
9445 | 0x04020003, 0x42001000, 0x00000014, 0x480b5037, | ||
9446 | 0x59a81036, 0x480b502d, 0x41780800, 0x42000000, | ||
9447 | 0x00000064, 0x0201f800, 0x001066a0, 0x800811c0, | ||
9448 | 0x04020003, 0x42001000, 0x00000014, 0x480b5038, | ||
9449 | 0x82081400, 0x0000000a, 0x480b5039, 0x42000800, | ||
9450 | 0x00000001, 0x0201f800, 0x00106c78, 0x42000000, | ||
9451 | 0x30000000, 0x40080800, 0x0201f800, 0x00100b68, | ||
9452 | 0x42000800, 0x00000003, 0x59a81010, 0x0201f800, | ||
9453 | 0x00106c78, 0x0201f000, 0x00104906, 0x4a035037, | ||
9454 | 0x00000028, 0x4a035038, 0x00000014, 0x4a03502d, | ||
9455 | 0x000007d0, 0x42001000, 0x0000001e, 0x480b5039, | ||
9456 | 0x42000800, 0x00000001, 0x0201f800, 0x00106c78, | ||
9457 | 0x42000000, 0x30000000, 0x40080800, 0x0201f800, | ||
9458 | 0x00100b68, 0x42000800, 0x00000003, 0x59a81010, | ||
9459 | 0x0201f000, 0x00106c78, 0x4933c857, 0x4d2c0000, | ||
9460 | 0x59300403, 0x82000580, 0x0000003e, 0x04020005, | ||
9461 | 0x59325817, 0x812e59c0, 0x02020800, 0x001007f4, | ||
9462 | 0x5c025800, 0x1c01f000, 0x4937c857, 0x4d300000, | ||
9463 | 0x0201f800, 0x0002075a, 0x04000011, 0x49366009, | ||
9464 | 0x4a026406, 0x00000001, 0x492e6008, 0x42000800, | ||
9465 | 0x00000009, 0x0201f800, 0x00104571, 0x4d380000, | ||
9466 | 0x42027000, 0x00000033, 0x0201f800, 0x000207a1, | ||
9467 | 0x5c027000, 0x82000540, 0x00000001, 0x5c026000, | ||
9468 | 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c580000, | ||
9469 | 0x4d3c0000, 0x59325808, 0x83380580, 0x00000015, | ||
9470 | 0x04020022, 0x59a8b016, 0x82580c80, 0x00000019, | ||
9471 | 0x04001003, 0x4200b000, 0x00000018, 0x8058b104, | ||
9472 | 0x0401fa07, 0x80000580, 0x0401fa17, 0x832cac00, | ||
9473 | 0x00000009, 0x83cca400, 0x00000006, 0x0201f800, | ||
9474 | 0x0010ab17, 0x42027800, 0x00000001, 0x592c100a, | ||
9475 | 0x8c081518, 0x04020006, 0x59a80010, 0x592c100d, | ||
9476 | 0x80080580, 0x04020006, 0x417a7800, 0x59301009, | ||
9477 | 0x58081403, 0x0201f800, 0x001020a1, 0x0201f800, | ||
9478 | 0x00107b38, 0x0401f008, 0x4200b000, 0x00000002, | ||
9479 | 0x0401fa09, 0x0201f800, 0x0010801c, 0x0201f800, | ||
9480 | 0x0002077d, 0x5c027800, 0x5c00b000, 0x5c025800, | ||
9481 | 0x1c01f000, 0x4933c856, 0x49366009, 0x4a026406, | ||
9482 | 0x00000001, 0x492e6008, 0x4d380000, 0x42027000, | ||
9483 | 0x0000004d, 0x0201f800, 0x000207a1, 0x5c027000, | ||
9484 | 0x82000540, 0x00000001, 0x1c01f000, 0x4803c856, | ||
9485 | 0x4d2c0000, 0x83380580, 0x00000015, 0x04020027, | ||
9486 | 0x59a80816, 0x59325808, 0x5930040b, 0x800000c4, | ||
9487 | 0x80040580, 0x04020021, 0x4c500000, 0x4c540000, | ||
9488 | 0x4c580000, 0x83cca400, 0x00000006, 0x4050a800, | ||
9489 | 0x5930b40b, 0x0201f800, 0x0010ab28, 0x83cca400, | ||
9490 | 0x00000006, 0x592cb205, 0x832cac00, 0x00000006, | ||
9491 | 0x0201f800, 0x0010ab17, 0x592e5801, 0x812e59c0, | ||
9492 | 0x040207f9, 0x5931d821, 0x58ef400b, 0x58ee580d, | ||
9493 | 0x4a025a04, 0x00000103, 0x58ec0009, 0x0801f800, | ||
9494 | 0x59300402, 0x5c00b000, 0x5c00a800, 0x5c00a000, | ||
9495 | 0x5c025800, 0x1c01f000, 0x0201f800, 0x0010801c, | ||
9496 | 0x5c025800, 0x1c01f000, 0x4933c857, 0x83380580, | ||
9497 | 0x00000035, 0x04000005, 0x59301419, 0x0401f851, | ||
9498 | 0x04000027, 0x0401f006, 0x4d300000, 0x5932601e, | ||
9499 | 0x0401f856, 0x5c026000, 0x04000020, 0x591c0c06, | ||
9500 | 0x82040580, 0x00000003, 0x04000004, 0x82040580, | ||
9501 | 0x00000006, 0x0402001c, 0x591c0c02, 0x59300419, | ||
9502 | 0x80040580, 0x04000009, 0x59300219, 0x80040580, | ||
9503 | 0x04020015, 0x591c0a02, 0x59300419, 0x80040580, | ||
9504 | 0x04020011, 0x0401f009, 0x59300a19, 0x82040580, | ||
9505 | 0x0000ffff, 0x04000005, 0x591c0202, 0x59300a19, | ||
9506 | 0x80040580, 0x04020008, 0x591c0009, 0x59300809, | ||
9507 | 0x80040580, 0x1c01f000, 0x417a3800, 0x82000540, | ||
9508 | 0x00000001, 0x1c01f000, 0x4803c856, 0x59b800e4, | ||
9509 | 0x8c000538, 0x02020800, 0x001005d8, 0x42000800, | ||
9510 | 0x0000012c, 0x4a0370e4, 0x20000000, 0x59b800e4, | ||
9511 | 0x80040840, 0x02000800, 0x001005d8, 0x8c00053c, | ||
9512 | 0x040207f9, 0x4a0370e4, 0x30000000, 0x40000000, | ||
9513 | 0x40000000, 0x40000000, 0x59b800e4, 0x8c00053c, | ||
9514 | 0x040207f1, 0x1c01f000, 0x4803c856, 0x4a0370e4, | ||
9515 | 0x20000000, 0x40000000, 0x59b800e4, 0x8c000538, | ||
9516 | 0x040207fb, 0x1c01f000, 0x59300807, 0x8c040d1e, | ||
9517 | 0x592c0c08, 0x04020002, 0x8c040d18, 0x1c01f000, | ||
9518 | 0x0401fc1c, 0x04000008, 0x42000800, 0x00000024, | ||
9519 | 0x0201f800, 0x00106681, 0x82063c00, 0x0010d1c0, | ||
9520 | 0x491fc857, 0x1c01f000, 0x83300480, 0x0010d1c0, | ||
9521 | 0x0400100a, 0x59a8000b, 0x81300480, 0x04021007, | ||
9522 | 0x59301402, 0x0401ffef, 0x04000007, 0x411c0000, | ||
9523 | 0x81300580, 0x04000003, 0x81780500, 0x0401f002, | ||
9524 | 0x81300540, 0x1c01f000, 0x4947c857, 0x4d300000, | ||
9525 | 0x0201f800, 0x00020245, 0x0402000a, 0x42026000, | ||
9526 | 0x0010bde9, 0x49366009, 0x492e6008, 0x0201f800, | ||
9527 | 0x0010203c, 0x80000580, 0x5c026000, 0x1c01f000, | ||
9528 | 0x82000540, 0x00000001, 0x0401f7fc, 0x4933c857, | ||
9529 | 0x0201f800, 0x00109037, 0x02000800, 0x001005d8, | ||
9530 | 0x4d2c0000, 0x4d340000, 0x4d440000, 0x4c580000, | ||
9531 | 0x59325808, 0x59326809, 0x49425a06, 0x0201f800, | ||
9532 | 0x00105755, 0x592e8c06, 0x592c4207, 0x82200500, | ||
9533 | 0x0000000f, 0x0c01f806, 0x5c00b000, 0x5c028800, | ||
9534 | 0x5c026800, 0x5c025800, 0x1c01f000, 0x00109466, | ||
9535 | 0x00109488, 0x0010948f, 0x00109493, 0x0010949c, | ||
9536 | 0x00109463, 0x00109463, 0x00109463, 0x001094a0, | ||
9537 | 0x001094ac, 0x001094ac, 0x00109463, 0x00109463, | ||
9538 | 0x00109463, 0x00109463, 0x00109463, 0x4803c857, | ||
9539 | 0x0201f800, 0x001005d8, 0x814281c0, 0x04020012, | ||
9540 | 0x41785800, 0x592c0404, 0x8c00051c, 0x04020002, | ||
9541 | 0x59345c05, 0x442c2800, 0x59340008, 0x48002802, | ||
9542 | 0x59340009, 0x48002801, 0x59340006, 0x48002804, | ||
9543 | 0x59340007, 0x48002803, 0x4200b000, 0x0000000b, | ||
9544 | 0x0401f037, 0x592c0207, 0x8c00051e, 0x4200b000, | ||
9545 | 0x00000002, 0x04020032, 0x8204b540, 0x00000000, | ||
9546 | 0x0400002f, 0x44042800, 0x59326809, 0x59340400, | ||
9547 | 0x48002801, 0x4200b000, 0x00000002, 0x0401f028, | ||
9548 | 0x814281c0, 0x04020030, 0x59345c05, 0x442c2800, | ||
9549 | 0x4200b000, 0x00000001, 0x0401f021, 0x8340b540, | ||
9550 | 0x00000000, 0x0400001e, 0x0401f027, 0x814281c0, | ||
9551 | 0x04020025, 0x59340200, 0x44002800, 0x59340001, | ||
9552 | 0x48002801, 0x4200b000, 0x00000002, 0x0401f014, | ||
9553 | 0x8340b540, 0x00000000, 0x0402001b, 0x0401f010, | ||
9554 | 0x8340b540, 0x00000000, 0x0400000d, 0x0201f800, | ||
9555 | 0x00104a1f, 0x04000014, 0x8c20450e, 0x04000002, | ||
9556 | 0x497a6009, 0x4178b000, 0x497a5a06, 0x0401f004, | ||
9557 | 0x8340b540, 0x00000000, 0x0402000b, 0x592c0404, | ||
9558 | 0x8400051c, 0x48025c04, 0x592c0207, 0x8400051e, | ||
9559 | 0x48025a07, 0x0401f8aa, 0x497a6008, 0x0201f000, | ||
9560 | 0x000202da, 0x592c0207, 0x8c00051e, 0x4200b000, | ||
9561 | 0x00000002, 0x040207f2, 0x8204b540, 0x00000000, | ||
9562 | 0x040007ef, 0x44042800, 0x4200b000, 0x00000001, | ||
9563 | 0x0401f7eb, 0x4937c857, 0x4d300000, 0x0201f800, | ||
9564 | 0x0002075a, 0x04000011, 0x49366009, 0x4a026406, | ||
9565 | 0x00000001, 0x492e6008, 0x42000800, 0x0000000b, | ||
9566 | 0x0201f800, 0x00104571, 0x4d380000, 0x42027000, | ||
9567 | 0x00000043, 0x0201f800, 0x000207a1, 0x5c027000, | ||
9568 | 0x82000540, 0x00000001, 0x5c026000, 0x1c01f000, | ||
9569 | 0x4937c857, 0x4d2c0000, 0x59325808, 0x83380580, | ||
9570 | 0x00000015, 0x04020025, 0x59a80016, 0x82000580, | ||
9571 | 0x00000004, 0x04020021, 0x59a80010, 0x592c1009, | ||
9572 | 0x80080580, 0x04020010, 0x4d440000, 0x592e8c06, | ||
9573 | 0x592c0207, 0x4803c856, 0x82000500, 0x00000080, | ||
9574 | 0x84000548, 0x4d3c0000, 0x42027800, 0x00001000, | ||
9575 | 0x0201f800, 0x001049bb, 0x5c027800, 0x5c028800, | ||
9576 | 0x0401f004, 0x4803c856, 0x0201f800, 0x00104a1f, | ||
9577 | 0x0201f800, 0x00109037, 0x04000017, 0x4d400000, | ||
9578 | 0x42028000, 0x00000000, 0x41780800, 0x0401ff38, | ||
9579 | 0x5c028000, 0x0401f00e, 0x0201f800, 0x00104a1f, | ||
9580 | 0x040207f4, 0x0201f800, 0x00109037, 0x0400000a, | ||
9581 | 0x4c580000, 0x4200b000, 0x00000002, 0x0401f86e, | ||
9582 | 0x5c00b000, 0x0201f800, 0x0010801c, 0x0201f800, | ||
9583 | 0x0002077d, 0x5c025800, 0x1c01f000, 0x4937c857, | ||
9584 | 0x4d300000, 0x0201f800, 0x0002075a, 0x04000012, | ||
9585 | 0x49366009, 0x4a026406, 0x00000001, 0x4d3c0000, | ||
9586 | 0x4d380000, 0x417a7800, 0x0201f800, 0x00104567, | ||
9587 | 0x492e6008, 0x42027000, 0x00000004, 0x0201f800, | ||
9588 | 0x000207a1, 0x5c027000, 0x5c027800, 0x82000540, | ||
9589 | 0x00000001, 0x5c026000, 0x1c01f000, 0x4937c857, | ||
9590 | 0x4d300000, 0x0201f800, 0x00107942, 0x0400000d, | ||
9591 | 0x49366009, 0x4a026406, 0x00000001, 0x492e6008, | ||
9592 | 0x4d380000, 0x42027000, 0x00000051, 0x0201f800, | ||
9593 | 0x000207a1, 0x5c027000, 0x82000540, 0x00000001, | ||
9594 | 0x5c026000, 0x1c01f000, 0x4933c857, 0x4c580000, | ||
9595 | 0x59325808, 0x83383580, 0x00000015, 0x04020011, | ||
9596 | 0x592c0008, 0x82000500, 0x00ffffff, 0x0402000a, | ||
9597 | 0x0201f800, 0x00105755, 0x59cc0000, 0x82000500, | ||
9598 | 0x00ffffff, 0x44002800, 0x4200b000, 0x00000001, | ||
9599 | 0x0401f80b, 0x0201f800, 0x00107b38, 0x0401f006, | ||
9600 | 0x4200b000, 0x00000002, 0x0401f823, 0x0201f800, | ||
9601 | 0x0010801c, 0x5c00b000, 0x1c01f000, 0x492fc857, | ||
9602 | 0x4c580000, 0x4c000000, 0x8058b1c0, 0x0400000b, | ||
9603 | 0x82580500, 0xfffffff0, 0x02020800, 0x001005d8, | ||
9604 | 0x8058b0d0, 0x592c0408, 0x82000500, 0xfffff0ff, | ||
9605 | 0x80580540, 0x48025c08, 0x5c000000, 0x5c00b000, | ||
9606 | 0x1c01f000, 0x492fc857, 0x4c000000, 0x4c040000, | ||
9607 | 0x800000d8, 0x592c0c08, 0x82040d00, 0xffff0fff, | ||
9608 | 0x80040540, 0x48025c08, 0x5c000800, 0x5c000000, | ||
9609 | 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325808, | ||
9610 | 0x592c0207, 0x8400055e, 0x48025a07, 0x4c500000, | ||
9611 | 0x4c540000, 0x4c580000, 0x0401ffd9, 0x0201f800, | ||
9612 | 0x00105755, 0x46002800, 0x00000018, 0x80142800, | ||
9613 | 0x8058b040, 0x83cca400, 0x00000007, 0x4014a800, | ||
9614 | 0x0201f800, 0x0010ab17, 0x5c00b000, 0x5c00a800, | ||
9615 | 0x5c00a000, 0x5c025800, 0x1c01f000, 0x59325808, | ||
9616 | 0x592c0204, 0x82000580, 0x00000152, 0x1c01f000, | ||
9617 | 0x5930001f, 0x80000540, 0x02020800, 0x00100d56, | ||
9618 | 0x1c01f000, 0x4d2c0000, 0x59325808, 0x59300203, | ||
9619 | 0x4933c857, 0x492fc857, 0x493bc857, 0x4803c857, | ||
9620 | 0x82003480, 0x0000000e, 0x02021800, 0x001005d8, | ||
9621 | 0x0c01f803, 0x5c025800, 0x1c01f000, 0x001095bd, | ||
9622 | 0x001095c8, 0x00109603, 0x001095bd, 0x001095bd, | ||
9623 | 0x001095bd, 0x001095bd, 0x001095bd, 0x001095bf, | ||
9624 | 0x001095bd, 0x001095bd, 0x001095bd, 0x001095bd, | ||
9625 | 0x001095bd, 0x0201f800, 0x001005d8, 0x83383480, | ||
9626 | 0x00000056, 0x02021800, 0x001005d8, 0x493a6403, | ||
9627 | 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b, | ||
9628 | 0x83380580, 0x00000013, 0x0402000f, 0x592c000c, | ||
9629 | 0x800001c0, 0x04000006, 0x4a026203, 0x00000002, | ||
9630 | 0x59a80037, 0x48026206, 0x1c01f000, 0x4a025a06, | ||
9631 | 0x00000000, 0x0201f800, 0x000202da, 0x0201f000, | ||
9632 | 0x0002077d, 0x83380580, 0x00000027, 0x0400001a, | ||
9633 | 0x83380580, 0x00000014, 0x04000012, 0x83380580, | ||
9634 | 0x00000015, 0x04000005, 0x83380580, 0x00000016, | ||
9635 | 0x02020800, 0x001005d8, 0x0201f800, 0x00106f60, | ||
9636 | 0x02020000, 0x00107974, 0x59300203, 0x82000580, | ||
9637 | 0x00000002, 0x02020800, 0x001005d8, 0x0401f014, | ||
9638 | 0x0201f800, 0x00106bbf, 0x4a02580e, 0x00000011, | ||
9639 | 0x0401f005, 0x0201f800, 0x00106bbf, 0x4a02580e, | ||
9640 | 0x00000010, 0x4a025a06, 0x00000031, 0x4a02580d, | ||
9641 | 0x00000004, 0x0201f800, 0x000202da, 0x0201f800, | ||
9642 | 0x00104c19, 0x0201f000, 0x00107911, 0x59341400, | ||
9643 | 0x82081d00, 0x000000ff, 0x59300c03, 0x480bc857, | ||
9644 | 0x4807c857, 0x82040580, 0x00000053, 0x0400002e, | ||
9645 | 0x82040580, 0x00000002, 0x04000016, 0x82040580, | ||
9646 | 0x00000001, 0x04000017, 0x82040580, 0x00000003, | ||
9647 | 0x0400001c, 0x82040580, 0x00000005, 0x0400001d, | ||
9648 | 0x82040580, 0x00000033, 0x0400001a, 0x82040580, | ||
9649 | 0x00000000, 0x0400001b, 0x82040580, 0x00000004, | ||
9650 | 0x02020800, 0x001005d8, 0x0401f8a1, 0x0401f016, | ||
9651 | 0x820c0580, 0x00000003, 0x0400084c, 0x0401f012, | ||
9652 | 0x820c0580, 0x0000000b, 0x0402000f, 0x42000800, | ||
9653 | 0x00000007, 0x0201f800, 0x00104571, 0x0401f00a, | ||
9654 | 0x820c0580, 0x00000005, 0x04000864, 0x0401f006, | ||
9655 | 0x820c0580, 0x00000009, 0x04000889, 0x0401f002, | ||
9656 | 0x0401f893, 0x4a026403, 0x00000052, 0x59a81016, | ||
9657 | 0x592c040b, 0x8c000500, 0x04000003, 0x42001000, | ||
9658 | 0x00000008, 0x592c040b, 0x8c000516, 0x04000003, | ||
9659 | 0x82081400, 0x00000018, 0x592c000c, 0x497a580d, | ||
9660 | 0x497a580e, 0x80080c80, 0x04000009, 0x04001005, | ||
9661 | 0x4a025a06, 0x00000007, 0x40001000, 0x0401f006, | ||
9662 | 0x4a025a06, 0x00000015, 0x0401f003, 0x4a025a06, | ||
9663 | 0x00000000, 0x480a580c, 0x82081400, 0x00000003, | ||
9664 | 0x80081104, 0x0201f800, 0x00107ab5, 0x04000010, | ||
9665 | 0x592c1001, 0x480a600b, 0x58080800, 0x82080400, | ||
9666 | 0x00000002, 0x592c1011, 0x592c1812, 0x42003000, | ||
9667 | 0x00000000, 0x42002000, 0x00101200, 0x0201f800, | ||
9668 | 0x00107c32, 0x04000002, 0x1c01f000, 0x4a025a06, | ||
9669 | 0x0000002c, 0x497a580c, 0x0201f800, 0x000202da, | ||
9670 | 0x0201f000, 0x0002077d, 0x83380580, 0x00000015, | ||
9671 | 0x0402000a, 0x59a80005, 0x8c000514, 0x0402000b, | ||
9672 | 0x0201f800, 0x0010462a, 0x42000800, 0x00000004, | ||
9673 | 0x0201f000, 0x00104571, 0x42000800, 0x00000007, | ||
9674 | 0x0201f000, 0x00104571, 0x0201f800, 0x0010513b, | ||
9675 | 0x42001000, 0x00000010, 0x04020009, 0x59340002, | ||
9676 | 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, | ||
9677 | 0x040007ec, 0x42001000, 0x00000008, 0x0201f800, | ||
9678 | 0x00104c6d, 0x040007e7, 0x592c040b, 0x84000540, | ||
9679 | 0x48025c0b, 0x0401f7e9, 0x83380580, 0x00000015, | ||
9680 | 0x0402000f, 0x59a80005, 0x8c000514, 0x04020010, | ||
9681 | 0x0201f800, 0x0010468d, 0x4d3c0000, 0x417a7800, | ||
9682 | 0x0201f800, 0x00104567, 0x5c027800, 0x42000800, | ||
9683 | 0x00000006, 0x0201f000, 0x00104571, 0x42000800, | ||
9684 | 0x00000004, 0x0201f000, 0x00104571, 0x0201f800, | ||
9685 | 0x0010513b, 0x42001000, 0x00000010, 0x04020009, | ||
9686 | 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, | ||
9687 | 0x00ff0000, 0x040007e7, 0x42001000, 0x00000008, | ||
9688 | 0x0201f800, 0x00104c6d, 0x040007e2, 0x592c040b, | ||
9689 | 0x84000540, 0x48025c0b, 0x0401f7e9, 0x42000800, | ||
9690 | 0x00000004, 0x0201f000, 0x00104571, 0x83380580, | ||
9691 | 0x00000015, 0x04020005, 0x0201f800, 0x0010a2c8, | ||
9692 | 0x02000800, 0x001048c1, 0x1c01f000, 0x83380580, | ||
9693 | 0x00000015, 0x0402001d, 0x4c580000, 0x83cc1400, | ||
9694 | 0x00000008, 0x4200b000, 0x00000002, 0x83341c00, | ||
9695 | 0x00000006, 0x0201f800, 0x0010855a, 0x04020012, | ||
9696 | 0x83cc1400, 0x0000000a, 0x4200b000, 0x00000002, | ||
9697 | 0x83341c00, 0x00000008, 0x0201f800, 0x0010855a, | ||
9698 | 0x04020009, 0x59342200, 0x59cc1007, 0x800811c0, | ||
9699 | 0x04000003, 0x480a6801, 0x84102542, 0x8410251a, | ||
9700 | 0x48126a00, 0x5c00b000, 0x1c01f000, 0x42000000, | ||
9701 | 0x0010b87b, 0x0201f800, 0x0010aa47, 0x0201f800, | ||
9702 | 0x00106c55, 0x59300203, 0x4933c857, 0x4803c857, | ||
9703 | 0x82000c80, 0x0000000e, 0x02021800, 0x001005d8, | ||
9704 | 0x0c01f803, 0x0201f000, 0x00106c4b, 0x0010970b, | ||
9705 | 0x0010971a, 0x0010970c, 0x00109709, 0x00109709, | ||
9706 | 0x00109709, 0x00109709, 0x00109709, 0x00109709, | ||
9707 | 0x00109709, 0x00109709, 0x00109709, 0x00109709, | ||
9708 | 0x00109709, 0x0201f800, 0x001005d8, 0x1c01f000, | ||
9709 | 0x59300403, 0x82000580, 0x00000052, 0x02000000, | ||
9710 | 0x00108d85, 0x0201f800, 0x00104c19, 0x59325808, | ||
9711 | 0x4a025a06, 0x00000006, 0x0201f800, 0x000202da, | ||
9712 | 0x0201f000, 0x00107911, 0x59301804, 0x840c0520, | ||
9713 | 0x48026004, 0x598c000d, 0x81300580, 0x04020010, | ||
9714 | 0x8c0c1d20, 0x04020010, 0x42001000, 0x0010b7f6, | ||
9715 | 0x50081000, 0x58080002, 0x82000580, 0x00000100, | ||
9716 | 0x0400000e, 0x5808000c, 0x81300580, 0x02020800, | ||
9717 | 0x001005d8, 0x4978100c, 0x0401f003, 0x8c0c1d20, | ||
9718 | 0x040207dc, 0x0201f800, 0x001068d3, 0x040007d9, | ||
9719 | 0x0201f800, 0x001005d8, 0x0201f800, 0x00106e8e, | ||
9720 | 0x040007f9, 0x59300203, 0x82000c80, 0x0000000e, | ||
9721 | 0x02021800, 0x001005d8, 0x0c01f7bd, 0x4933c857, | ||
9722 | 0x4c500000, 0x4c540000, 0x4c580000, 0x592c0c07, | ||
9723 | 0x4806580a, 0x59cc0809, 0x48065807, 0x59cc0a08, | ||
9724 | 0x4806580b, 0x59c80817, 0x82040500, 0x000003ff, | ||
9725 | 0x800010c4, 0x8c040d14, 0x04000005, 0x59cc0002, | ||
9726 | 0x82000500, 0x00000003, 0x80081480, 0x82080480, | ||
9727 | 0x000000f1, 0x02021800, 0x001005d8, 0x480a621a, | ||
9728 | 0x412c0800, 0x0201f800, 0x001007d3, 0x02000800, | ||
9729 | 0x001005d8, 0x492c0809, 0x58040408, 0x84000552, | ||
9730 | 0x84000540, 0x48000c08, 0x82081400, 0x00000003, | ||
9731 | 0x80081104, 0x83cca400, 0x00000006, 0x832cac00, | ||
9732 | 0x00000004, 0x42000800, 0x00000010, 0x82080480, | ||
9733 | 0x00000010, 0x04021003, 0x40080800, 0x80000580, | ||
9734 | 0x4004b000, 0x4c000000, 0x0201f800, 0x0010ab28, | ||
9735 | 0x5c000000, 0x800001c0, 0x0400000d, 0x412c1000, | ||
9736 | 0x4c000000, 0x0201f800, 0x001007d3, 0x02000800, | ||
9737 | 0x001005d8, 0x492c1001, 0x832cac00, 0x00000004, | ||
9738 | 0x5c000000, 0x40001000, 0x0401f7e9, 0x5c00b000, | ||
9739 | 0x5c00a800, 0x5c00a000, 0x1c01f000, 0x4933c857, | ||
9740 | 0x4d2c0000, 0x4c380000, 0x59325808, 0x5930021a, | ||
9741 | 0x48025a08, 0x59301011, 0x800811c0, 0x04020008, | ||
9742 | 0x4a025a06, 0x00000000, 0x592c000b, 0x82000500, | ||
9743 | 0x00000c00, 0x0400000b, 0x0401f00b, 0x8c08153e, | ||
9744 | 0x04000006, 0x4a025a06, 0x00000007, 0x80081080, | ||
9745 | 0x80081000, 0x0401f003, 0x4a025a06, 0x00000015, | ||
9746 | 0x480a5807, 0x42000000, 0x0010bed9, 0x50007000, | ||
9747 | 0x5838000b, 0x80000540, 0x04020008, 0x4930700c, | ||
9748 | 0x4930700b, 0x58380002, 0x82000580, 0x00000000, | ||
9749 | 0x04020809, 0x0401f005, 0x82001400, 0x00000000, | ||
9750 | 0x45301000, 0x4930700b, 0x5c007000, 0x5c025800, | ||
9751 | 0x1c01f000, 0x4933c857, 0x592c0009, 0x40001000, | ||
9752 | 0x4800700a, 0x82080400, 0x00000004, 0x48007003, | ||
9753 | 0x592c000d, 0x592c100e, 0x48007007, 0x48087008, | ||
9754 | 0x592c000a, 0x592c1208, 0x80080c80, 0x04001002, | ||
9755 | 0x40001000, 0x82081400, 0x00000003, 0x80081104, | ||
9756 | 0x82080480, 0x00000010, 0x04021003, 0x80000580, | ||
9757 | 0x0401f003, 0x42001000, 0x00000010, 0x4800700d, | ||
9758 | 0x48087004, 0x800810c4, 0x48087005, 0x40381000, | ||
9759 | 0x0201f800, 0x00100858, 0x1c01f000, 0x4d2c0000, | ||
9760 | 0x0201f800, 0x001007d3, 0x02000800, 0x001005d8, | ||
9761 | 0x42000800, 0x0010bed9, 0x452c0800, 0x497a580b, | ||
9762 | 0x497a580c, 0x497a580d, 0x4a025809, 0x001097ea, | ||
9763 | 0x4a025802, 0x00000100, 0x4a025801, 0x00000000, | ||
9764 | 0x5c025800, 0x1c01f000, 0x4833c857, 0x4d300000, | ||
9765 | 0x4d2c0000, 0x4c5c0000, 0x4030b800, 0x585c000a, | ||
9766 | 0x80025d40, 0x04020004, 0x585c000c, 0x4c000000, | ||
9767 | 0x0401f044, 0x585c0002, 0x82000580, 0x00000100, | ||
9768 | 0x04020022, 0x592c0801, 0x4c040000, 0x0201f800, | ||
9769 | 0x001007f4, 0x5c000800, 0x800409c0, 0x0400001c, | ||
9770 | 0x4804b80a, 0x585c100d, 0x800811c0, 0x04020005, | ||
9771 | 0x40065800, 0x0201f800, 0x001007fd, 0x0401f014, | ||
9772 | 0x82080480, 0x00000010, 0x04021003, 0x80000580, | ||
9773 | 0x0401f003, 0x42001000, 0x00000010, 0x4800b80d, | ||
9774 | 0x4808b804, 0x800810c4, 0x4808b805, 0x82040400, | ||
9775 | 0x00000004, 0x4800b803, 0x405c1000, 0x0201f800, | ||
9776 | 0x00100858, 0x0401f025, 0x0401f828, 0x585c000c, | ||
9777 | 0x80026540, 0x59300000, 0x80000d40, 0x04020002, | ||
9778 | 0x4800b80b, 0x4800b80c, 0x497a6000, 0x4c000000, | ||
9779 | 0x4978b80a, 0x59325808, 0x4a025a04, 0x00000103, | ||
9780 | 0x59300402, 0x48025c06, 0x592c100b, 0x4c080000, | ||
9781 | 0x0201f800, 0x000202c1, 0x0201f800, 0x0010912a, | ||
9782 | 0x5c001000, 0x8c081518, 0x04000004, 0x0201f800, | ||
9783 | 0x001091d1, 0x0401f003, 0x0201f800, 0x0002077d, | ||
9784 | 0x405c7000, 0x5c000000, 0x80026540, 0x04000003, | ||
9785 | 0x59325808, 0x0401ff78, 0x5c00b800, 0x5c025800, | ||
9786 | 0x5c026000, 0x1c01f000, 0x483bc857, 0x5838000a, | ||
9787 | 0x40025800, 0x0201f800, 0x001007fd, 0x5838000c, | ||
9788 | 0x80026540, 0x59300008, 0x80025d40, 0x4a025a06, | ||
9789 | 0x00000002, 0x1c01f000, 0x4803c857, 0x4d1c0000, | ||
9790 | 0x497a601c, 0x41323800, 0x40026000, 0x4d3c0000, | ||
9791 | 0x42027800, 0x00000005, 0x0401f83c, 0x5c027800, | ||
9792 | 0x411e6000, 0x59300414, 0x84000502, 0x48026414, | ||
9793 | 0x5c023800, 0x1c01f000, 0x481bc857, 0x4933c857, | ||
9794 | 0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000, | ||
9795 | 0x0201f800, 0x0010a942, 0x0201f800, 0x00103b25, | ||
9796 | 0x04000008, 0x40602800, 0x405c3000, 0x0201f800, | ||
9797 | 0x0010a446, 0x82000540, 0x00000001, 0x0401f002, | ||
9798 | 0x80000580, 0x5c00c000, 0x5c00b800, 0x1c01f000, | ||
9799 | 0x4803c856, 0x4d300000, 0x42026000, 0x0010d1c0, | ||
9800 | 0x59a8000e, 0x81640580, 0x04000016, 0x59300c06, | ||
9801 | 0x82040580, 0x00000001, 0x04000009, 0x82040580, | ||
9802 | 0x00000004, 0x04000006, 0x82040580, 0x00000010, | ||
9803 | 0x02000800, 0x00108cf9, 0x0401f005, 0x4807c857, | ||
9804 | 0x0201f800, 0x001092d7, 0x04020808, 0x83326400, | ||
9805 | 0x00000024, 0x41580000, 0x81300480, 0x040017e9, | ||
9806 | 0x5c026000, 0x1c01f000, 0x4933c857, 0x59300403, | ||
9807 | 0x4803c857, 0x0201f800, 0x00106c55, 0x4df00000, | ||
9808 | 0x59300406, 0x4803c857, 0x82000d80, 0x00000002, | ||
9809 | 0x04000018, 0x82000d80, 0x00000001, 0x04000009, | ||
9810 | 0x82000d80, 0x00000004, 0x04000006, 0x4933c856, | ||
9811 | 0x5c03e000, 0x02000800, 0x00106c4b, 0x0401f03c, | ||
9812 | 0x59300203, 0x82000d80, 0x00000001, 0x04000018, | ||
9813 | 0x82000d80, 0x00000002, 0x04000026, 0x82000d80, | ||
9814 | 0x00000005, 0x04000023, 0x0201f800, 0x001005d8, | ||
9815 | 0x59300203, 0x82000d80, 0x00000009, 0x0400000c, | ||
9816 | 0x82000d80, 0x0000000b, 0x04000009, 0x82000d80, | ||
9817 | 0x0000000a, 0x04000017, 0x82000d80, 0x0000000c, | ||
9818 | 0x04000014, 0x0201f800, 0x001005d8, 0x598c000d, | ||
9819 | 0x81300580, 0x04020004, 0x0201f800, 0x00106e8e, | ||
9820 | 0x0402000c, 0x59300004, 0x4803c857, 0x8c000520, | ||
9821 | 0x04000004, 0x84000520, 0x48026004, 0x0401f005, | ||
9822 | 0x0201f800, 0x001068d3, 0x02020800, 0x001005d8, | ||
9823 | 0x5c03e000, 0x02000800, 0x00106c4b, 0x59300406, | ||
9824 | 0x82000d80, 0x00000002, 0x04000009, 0x0201f800, | ||
9825 | 0x00104c19, 0x0201f800, 0x0010914e, 0x02000800, | ||
9826 | 0x0010801c, 0x8d3e7d00, 0x04000003, 0x0201f000, | ||
9827 | 0x00107911, 0x4a02621d, 0x00000001, 0x4a026403, | ||
9828 | 0x00000085, 0x4a026203, 0x00000009, 0x4a026406, | ||
9829 | 0x00000002, 0x42000800, 0x8000004b, 0x0201f000, | ||
9830 | 0x00020721, 0x4933c857, 0x59368c03, 0x4c180000, | ||
9831 | 0x59300203, 0x82003480, 0x0000000e, 0x02021800, | ||
9832 | 0x001005d8, 0x0c01f803, 0x5c003000, 0x1c01f000, | ||
9833 | 0x0010990a, 0x00109dcf, 0x00109edb, 0x0010990a, | ||
9834 | 0x0010990a, 0x0010990a, 0x0010990a, 0x0010990a, | ||
9835 | 0x0010992d, 0x0010990a, 0x0010990a, 0x0010990a, | ||
9836 | 0x0010990a, 0x0010990a, 0x0201f800, 0x001005d8, | ||
9837 | 0x4933c857, 0x42028800, 0x0000ffff, 0x813669c0, | ||
9838 | 0x04000002, 0x59368c03, 0x4c180000, 0x59300203, | ||
9839 | 0x82003480, 0x0000000e, 0x02021800, 0x001005d8, | ||
9840 | 0x0c01f803, 0x5c003000, 0x1c01f000, 0x00109929, | ||
9841 | 0x0010a180, 0x00109929, 0x00109929, 0x00109929, | ||
9842 | 0x00109929, 0x00109929, 0x0010a952, 0x0010a0ed, | ||
9843 | 0x0010a52c, 0x0010a562, 0x0010a52c, 0x0010a562, | ||
9844 | 0x00109929, 0x0201f800, 0x001005d8, 0x0201f800, | ||
9845 | 0x001005d8, 0x83383480, 0x00000051, 0x02021800, | ||
9846 | 0x001005d8, 0x41380000, 0x493bc857, 0x4d1c0000, | ||
9847 | 0x4d400000, 0x0c01f804, 0x5c028000, 0x5c023800, | ||
9848 | 0x1c01f000, 0x0010998a, 0x00109b69, 0x0010998a, | ||
9849 | 0x0010998a, 0x0010998a, 0x00109b74, 0x0010998a, | ||
9850 | 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a, | ||
9851 | 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a, | ||
9852 | 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a, | ||
9853 | 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a, | ||
9854 | 0x001099ac, 0x001099f5, 0x00109a0c, 0x00109a62, | ||
9855 | 0x00109ac6, 0x00109b04, 0x00109b34, 0x0010998a, | ||
9856 | 0x0010998a, 0x00109b7c, 0x0010998a, 0x0010998a, | ||
9857 | 0x00109b8a, 0x00109b93, 0x0010998a, 0x0010998a, | ||
9858 | 0x0010998a, 0x0010998a, 0x0010998a, 0x00109c15, | ||
9859 | 0x0010998a, 0x0010998a, 0x00109a9a, 0x0010998a, | ||
9860 | 0x0010998a, 0x00109bec, 0x0010998a, 0x0010998a, | ||
9861 | 0x0010998a, 0x00109c23, 0x0010998a, 0x0010998a, | ||
9862 | 0x0010998a, 0x00109c6c, 0x0010998a, 0x0010998a, | ||
9863 | 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a, | ||
9864 | 0x00109cb9, 0x0010998a, 0x00109ce5, 0x00109cf0, | ||
9865 | 0x0010998a, 0x0010998a, 0x0010998c, 0x00109cfb, | ||
9866 | 0x0010998a, 0x0010998a, 0x0010998a, 0x0010999b, | ||
9867 | 0x0010998a, 0x0010998a, 0x0010998a, 0x00109d02, | ||
9868 | 0x00109d0a, 0x00109d28, 0x0201f800, 0x001005d8, | ||
9869 | 0x4933c857, 0x0201f800, 0x0010a592, 0x040203a4, | ||
9870 | 0x0201f800, 0x0010210a, 0x040203a1, 0x59cc0407, | ||
9871 | 0x4802601c, 0x4a026403, 0x00000045, 0x4a026203, | ||
9872 | 0x00000001, 0x0201f000, 0x0010672b, 0x4933c857, | ||
9873 | 0x0201f800, 0x0010a592, 0x04020395, 0x0201f800, | ||
9874 | 0x0010210a, 0x04020392, 0x0401fbce, 0x040201a0, | ||
9875 | 0x59cc0007, 0x4802601c, 0x4a026403, 0x0000004a, | ||
9876 | 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b, | ||
9877 | 0x4933c857, 0x0201f800, 0x0010210a, 0x04020009, | ||
9878 | 0x0201f800, 0x001048ec, 0x04020006, 0x82000500, | ||
9879 | 0x00000009, 0x82000580, 0x00000008, 0x04020008, | ||
9880 | 0x4a026403, 0x00000009, 0x4a02641a, 0x00000009, | ||
9881 | 0x4a02621a, 0x00000000, 0x0401f1b2, 0x0201f800, | ||
9882 | 0x001048c1, 0x0201f800, 0x00104a09, 0x04000021, | ||
9883 | 0x0201f800, 0x001049ed, 0x0400001e, 0x0201f800, | ||
9884 | 0x0010a252, 0x04020025, 0x42028000, 0x00000029, | ||
9885 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c, | ||
9886 | 0x5c027800, 0x0201f800, 0x0010462a, 0x836c0580, | ||
9887 | 0x00000002, 0x04020004, 0x59a8001b, 0x80000000, | ||
9888 | 0x4803501b, 0x4a026403, 0x00000008, 0x42003000, | ||
9889 | 0x00000003, 0x0201f800, 0x00103b25, 0x04000191, | ||
9890 | 0x4a026203, 0x00000007, 0x41782800, 0x0401f180, | ||
9891 | 0x0201f800, 0x0010a3da, 0x040207e1, 0x4a026403, | ||
9892 | 0x00000009, 0x4a02641a, 0x0000000e, 0x4a02621a, | ||
9893 | 0x00001900, 0x0401f183, 0x4a026403, 0x00000009, | ||
9894 | 0x4a02641a, 0x00000003, 0x4a02621a, 0x00000f00, | ||
9895 | 0x0401f17c, 0x4933c857, 0x0201f800, 0x0010210a, | ||
9896 | 0x0402033b, 0x0201f800, 0x001048ec, 0x04020338, | ||
9897 | 0x493a6403, 0x0201f800, 0x0010a22d, 0x04020006, | ||
9898 | 0x42003000, 0x00000005, 0x4a026403, 0x00000006, | ||
9899 | 0x0401f7d9, 0x4a026403, 0x00000007, 0x4a02641a, | ||
9900 | 0x00000009, 0x4a02621a, 0x00000000, 0x0401f165, | ||
9901 | 0x4933c857, 0x0201f800, 0x001048ec, 0x04020324, | ||
9902 | 0x0201f800, 0x0010a592, 0x02000800, 0x0010210a, | ||
9903 | 0x0402031f, 0x0201f800, 0x00104a09, 0x04020005, | ||
9904 | 0x42027800, 0x00000001, 0x0201f800, 0x00104567, | ||
9905 | 0x0201f800, 0x001049fc, 0x0402002b, 0x59cc0206, | ||
9906 | 0x82003500, 0x00000003, 0x0402002e, 0x82003480, | ||
9907 | 0x00000014, 0x0400102b, 0x5934300a, 0x84183516, | ||
9908 | 0x82000580, 0x00000014, 0x04020002, 0x84183556, | ||
9909 | 0x481a680a, 0x59cc0406, 0x82000500, 0x00000003, | ||
9910 | 0x04020020, 0x0201f800, 0x0010a29f, 0x04020028, | ||
9911 | 0x0201f800, 0x001049e7, 0x0402000c, 0x417a7800, | ||
9912 | 0x0201f800, 0x001020a1, 0x42003000, 0x00000006, | ||
9913 | 0x0201f800, 0x0010a93a, 0x42000000, 0x0010b865, | ||
9914 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x0010468d, | ||
9915 | 0x4a026403, 0x0000000a, 0x42003000, 0x00000020, | ||
9916 | 0x0401f795, 0x4a026403, 0x0000000b, 0x4a02641a, | ||
9917 | 0x00000009, 0x4a02621a, 0x00001e00, 0x0401f121, | ||
9918 | 0x42000000, 0x0010b860, 0x0201f800, 0x0010aa47, | ||
9919 | 0x4a026403, 0x0000000b, 0x4a02641a, 0x00000007, | ||
9920 | 0x4a02621a, 0x00000000, 0x0401f116, 0x4a026403, | ||
9921 | 0x0000000b, 0x4a02641a, 0x00000003, 0x4a02621a, | ||
9922 | 0x00000000, 0x0401f10f, 0x4933c857, 0x0201f800, | ||
9923 | 0x001048ec, 0x040202ce, 0x0201f800, 0x0010a592, | ||
9924 | 0x040202cb, 0x0201f800, 0x0010210a, 0x040202c8, | ||
9925 | 0x59cc0206, 0x82003500, 0x00000003, 0x0402001d, | ||
9926 | 0x82003480, 0x00000014, 0x0400101a, 0x59cc0406, | ||
9927 | 0x82000500, 0x00000003, 0x04020016, 0x59340400, | ||
9928 | 0x82000580, 0x00000707, 0x04000019, 0x417a7800, | ||
9929 | 0x0201f800, 0x001020a1, 0x42003000, 0x0000000a, | ||
9930 | 0x0201f800, 0x0010a93a, 0x42000000, 0x0010b862, | ||
9931 | 0x0201f800, 0x0010aa47, 0x4a026403, 0x0000000c, | ||
9932 | 0x41782800, 0x42003000, 0x00000021, 0x0401f752, | ||
9933 | 0x4a026403, 0x0000000d, 0x4a02641a, 0x00000007, | ||
9934 | 0x4a02621a, 0x00000000, 0x0401f0de, 0x4a026403, | ||
9935 | 0x0000000d, 0x4a02641a, 0x00000009, 0x4a02621a, | ||
9936 | 0x00001e00, 0x0401f0d7, 0x4933c857, 0x0201f800, | ||
9937 | 0x001048ec, 0x04020296, 0x0201f800, 0x0010a592, | ||
9938 | 0x04020293, 0x0201f800, 0x0010210a, 0x04020290, | ||
9939 | 0x0401facc, 0x0402001a, 0x493a6403, 0x4c5c0000, | ||
9940 | 0x0401fad2, 0x0402000e, 0x4a026403, 0x0000002e, | ||
9941 | 0x405c2800, 0x42003000, 0x00000024, 0x0201f800, | ||
9942 | 0x00103b25, 0x0400000c, 0x4a026203, 0x00000007, | ||
9943 | 0x405c2800, 0x5c00b800, 0x0401f0ad, 0x4a026403, | ||
9944 | 0x0000000d, 0x4a02641a, 0x00000007, 0x4a02621a, | ||
9945 | 0x00000000, 0x5c00b800, 0x0401f0b2, 0x4a026403, | ||
9946 | 0x0000000d, 0x4a02641a, 0x00000009, 0x4a02621a, | ||
9947 | 0x00001e00, 0x0401f0ab, 0x4933c857, 0x0201f800, | ||
9948 | 0x001048ec, 0x040206ef, 0x59a80026, 0x82000500, | ||
9949 | 0x00000009, 0x82000580, 0x00000008, 0x040006e9, | ||
9950 | 0x0201f800, 0x001049fc, 0x0402002d, 0x0201f800, | ||
9951 | 0x0010a2a7, 0x04020007, 0x4a026403, 0x0000000e, | ||
9952 | 0x41782800, 0x42003000, 0x00000052, 0x0401f702, | ||
9953 | 0x4933c857, 0x42003000, 0x00000003, 0x0201f800, | ||
9954 | 0x0010a942, 0x4d3c0000, 0x417a7800, 0x0201f800, | ||
9955 | 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864, | ||
9956 | 0x0201f800, 0x0010aa47, 0x59340200, 0x84000558, | ||
9957 | 0x48026a00, 0x42000800, 0x0000000b, 0x0201f800, | ||
9958 | 0x00104571, 0x0201f800, 0x00103b25, 0x04000076, | ||
9959 | 0x42003000, 0x00000007, 0x0401f062, 0x4933c857, | ||
9960 | 0x4a026403, 0x0000000f, 0x4a02641a, 0x00000003, | ||
9961 | 0x4a02621a, 0x00001e00, 0x0401f072, 0x59340400, | ||
9962 | 0x82000580, 0x00000703, 0x040007f5, 0x0401f040, | ||
9963 | 0x4933c857, 0x0201f800, 0x001048ec, 0x0402022c, | ||
9964 | 0x59a80026, 0x82000500, 0x00000009, 0x82000580, | ||
9965 | 0x00000008, 0x04000226, 0x0201f800, 0x001049f3, | ||
9966 | 0x0402002f, 0x0201f800, 0x0010a2c8, 0x02000800, | ||
9967 | 0x0010a252, 0x04020007, 0x4a026403, 0x00000010, | ||
9968 | 0x41782800, 0x42003000, 0x00000050, 0x0401f6c2, | ||
9969 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c, | ||
9970 | 0x5c027800, 0x42003000, 0x00000003, 0x0201f800, | ||
9971 | 0x0010a942, 0x42000000, 0x0010b864, 0x0201f800, | ||
9972 | 0x0010aa47, 0x59340200, 0x84000558, 0x48026a00, | ||
9973 | 0x0401f7c5, 0x4a026403, 0x00000011, 0x4a02641a, | ||
9974 | 0x00000003, 0x4a02621a, 0x00001e00, 0x0401f03d, | ||
9975 | 0x4933c857, 0x0201f800, 0x0010210a, 0x02000800, | ||
9976 | 0x0010a592, 0x040201fa, 0x0401fa36, 0x04020008, | ||
9977 | 0x4a026403, 0x00000012, 0x0401f032, 0x59340400, | ||
9978 | 0x82000580, 0x00000703, 0x040007eb, 0x4d3c0000, | ||
9979 | 0x417a7800, 0x42028000, 0x00000029, 0x0201f800, | ||
9980 | 0x0010203c, 0x5c027800, 0x42003000, 0x00000017, | ||
9981 | 0x0201f800, 0x0010a942, 0x42000000, 0x0010b864, | ||
9982 | 0x0201f800, 0x0010aa47, 0x0201f800, 0x00103b25, | ||
9983 | 0x04000015, 0x42003000, 0x00000006, 0x41782800, | ||
9984 | 0x42028000, 0x00000029, 0x4933c857, 0x4a026403, | ||
9985 | 0x00000001, 0x4a026203, 0x00000007, 0x0201f800, | ||
9986 | 0x0010a974, 0x0201f000, 0x0010a43e, 0x42028000, | ||
9987 | 0x00000046, 0x0201f800, 0x0010a974, 0x0201f000, | ||
9988 | 0x0010a43e, 0x4933c857, 0x4a026403, 0x00000001, | ||
9989 | 0x42000800, 0x0000000b, 0x0201f800, 0x00104571, | ||
9990 | 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b, | ||
9991 | 0x4933c857, 0x42000800, 0x00000009, 0x0201f800, | ||
9992 | 0x00104571, 0x4a026403, 0x00000005, 0x0401f7f5, | ||
9993 | 0x0201f800, 0x0010a592, 0x040201b5, 0x0201f800, | ||
9994 | 0x0010210a, 0x040201b2, 0x0401f9ee, 0x040207c0, | ||
9995 | 0x4a026403, 0x00000020, 0x4a026203, 0x00000001, | ||
9996 | 0x0201f000, 0x0010672b, 0x0201f800, 0x0010210a, | ||
9997 | 0x040201a7, 0x4a026403, 0x00000023, 0x4a026203, | ||
9998 | 0x00000001, 0x0201f000, 0x0010672b, 0x0201f800, | ||
9999 | 0x0010a592, 0x02000800, 0x0010210a, 0x0402019c, | ||
10000 | 0x0401f9d8, 0x040207aa, 0x40300800, 0x59a81010, | ||
10001 | 0x59cc0007, 0x82000500, 0x00ffffff, 0x80080580, | ||
10002 | 0x04000019, 0x59cc1408, 0x0201f800, 0x0010902c, | ||
10003 | 0x0400002d, 0x59cc0c08, 0x4d300000, 0x0201f800, | ||
10004 | 0x00105dd7, 0x41323800, 0x5c026000, 0x04000026, | ||
10005 | 0x591c0202, 0x82000580, 0x0000ffff, 0x04000005, | ||
10006 | 0x59cc1208, 0x591c0202, 0x80080580, 0x0402001e, | ||
10007 | 0x591c0406, 0x82000580, 0x00000007, 0x0402001a, | ||
10008 | 0x0401f02c, 0x59cc1208, 0x82080580, 0x0000ffff, | ||
10009 | 0x0400000c, 0x0201f800, 0x00109410, 0x04000012, | ||
10010 | 0x59cc1408, 0x591c0202, 0x80080580, 0x0402000e, | ||
10011 | 0x591c0009, 0x81340580, 0x04000016, 0x0401f00a, | ||
10012 | 0x59cc1408, 0x417a7800, 0x0201f800, 0x0010a405, | ||
10013 | 0x04020010, 0x59cc1208, 0x82080580, 0x0000ffff, | ||
10014 | 0x04000019, 0x4a026403, 0x00000026, 0x4a02621a, | ||
10015 | 0x00001700, 0x59cc1204, 0x82081580, 0x0000ffff, | ||
10016 | 0x04020798, 0x4a026403, 0x00000025, 0x0401f795, | ||
10017 | 0x591c0406, 0x82000580, 0x00000007, 0x040207f2, | ||
10018 | 0x591c0403, 0x82000580, 0x00000024, 0x04020006, | ||
10019 | 0x4d300000, 0x411e6000, 0x0201f800, 0x0002077d, | ||
10020 | 0x5c026000, 0x4a026403, 0x00000025, 0x0401f785, | ||
10021 | 0x4933c857, 0x4d3c0000, 0x42027800, 0x00000001, | ||
10022 | 0x0201f800, 0x00104567, 0x5c027800, 0x4c580000, | ||
10023 | 0x4200b000, 0x00000002, 0x83a81c00, 0x00000002, | ||
10024 | 0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a, | ||
10025 | 0x5c00b000, 0x04000004, 0x4a026403, 0x00000031, | ||
10026 | 0x0401f770, 0x0201f800, 0x00107911, 0x0201f800, | ||
10027 | 0x0010513b, 0x0402000f, 0x0201f800, 0x00105149, | ||
10028 | 0x04020008, 0x4a035033, 0x00000001, 0x4202d800, | ||
10029 | 0x00000001, 0x0201f800, 0x001050a2, 0x0401f005, | ||
10030 | 0x42000000, 0x00000001, 0x0201f800, 0x00105113, | ||
10031 | 0x1c01f000, 0x0201f800, 0x0010210a, 0x0402011c, | ||
10032 | 0x0401f958, 0x0402072a, 0x493a6403, 0x0401f996, | ||
10033 | 0x04020004, 0x4a026403, 0x0000002b, 0x0401f751, | ||
10034 | 0x4a026403, 0x0000002c, 0x0401f74e, 0x4933c857, | ||
10035 | 0x0201f800, 0x0010210a, 0x0402010d, 0x0201f800, | ||
10036 | 0x001049e7, 0x04020740, 0x0201f800, 0x001048d9, | ||
10037 | 0x0400003c, 0x59cc0408, 0x48026419, 0x59cc0208, | ||
10038 | 0x48026219, 0x59cc0807, 0x59340002, 0x82000500, | ||
10039 | 0x00ffffff, 0x80040580, 0x04000012, 0x59a80010, | ||
10040 | 0x80040580, 0x04020021, 0x59cc1408, 0x0201f800, | ||
10041 | 0x00109410, 0x04000023, 0x0201f800, 0x0010a4ca, | ||
10042 | 0x04000020, 0x0201f800, 0x0010a921, 0x0400001d, | ||
10043 | 0x491e601e, 0x4a026403, 0x00000036, 0x0401f0e6, | ||
10044 | 0x59cc1208, 0x82080580, 0x0000ffff, 0x04000009, | ||
10045 | 0x0201f800, 0x00109410, 0x04000012, 0x591c0202, | ||
10046 | 0x59cc0c08, 0x80040580, 0x0402000e, 0x0401f7eb, | ||
10047 | 0x59cc1408, 0x41327800, 0x0201f800, 0x0010a405, | ||
10048 | 0x04000008, 0x0401f7e5, 0x4803c856, 0x4a02641a, | ||
10049 | 0x00000009, 0x4a02621a, 0x00001500, 0x0401f006, | ||
10050 | 0x4803c856, 0x4a02641a, 0x00000003, 0x4a02621a, | ||
10051 | 0x00001700, 0x4a026403, 0x00000037, 0x0401f0c6, | ||
10052 | 0x4803c856, 0x4a026403, 0x00000012, 0x0401f0c2, | ||
10053 | 0x4933c857, 0x0201f800, 0x0010210a, 0x040200c4, | ||
10054 | 0x0201f800, 0x001049e7, 0x040206f7, 0x0201f800, | ||
10055 | 0x001048d9, 0x0400003e, 0x59cc0407, 0x48026419, | ||
10056 | 0x59cc1207, 0x480a6219, 0x82080580, 0x0000ffff, | ||
10057 | 0x04000005, 0x0201f800, 0x00109410, 0x0400002c, | ||
10058 | 0x0401f006, 0x59cc1407, 0x41327800, 0x0201f800, | ||
10059 | 0x0010a405, 0x04000026, 0x59cc0c07, 0x591c0202, | ||
10060 | 0x80040580, 0x04020022, 0x4d300000, 0x411e6000, | ||
10061 | 0x0201f800, 0x00108bd7, 0x5c026000, 0x59cc0c09, | ||
10062 | 0x82040d00, 0x0000ff00, 0x840409c0, 0x0201f800, | ||
10063 | 0x0010a921, 0x04000016, 0x82040580, 0x00000001, | ||
10064 | 0x0400000a, 0x82040580, 0x00000005, 0x04000004, | ||
10065 | 0x82040580, 0x00000007, 0x04020007, 0x591c0008, | ||
10066 | 0x80000540, 0x04000004, 0x59cc2808, 0x0201f000, | ||
10067 | 0x0010a4de, 0x4803c856, 0x4a02641a, 0x00000009, | ||
10068 | 0x4a02621a, 0x00002a00, 0x0401f006, 0x4803c856, | ||
10069 | 0x4a02641a, 0x00000003, 0x4a02621a, 0x00000300, | ||
10070 | 0x4a026403, 0x0000003b, 0x0401f07b, 0x4803c856, | ||
10071 | 0x4a02641a, 0x0000000b, 0x4a02621a, 0x00000000, | ||
10072 | 0x0401f7f8, 0x4c080000, 0x0201f800, 0x001048ec, | ||
10073 | 0x04000026, 0x0201f800, 0x001048c1, 0x0201f800, | ||
10074 | 0x0010a601, 0x0402001e, 0x59a80026, 0x82000540, | ||
10075 | 0x00000003, 0x48035026, 0x59a8001d, 0x800000d0, | ||
10076 | 0x59a80810, 0x82040d00, 0x000000ff, 0x80041540, | ||
10077 | 0x480b5010, 0x42000800, 0x00000003, 0x0201f800, | ||
10078 | 0x00106c78, 0x497b5028, 0x0201f800, 0x00103b25, | ||
10079 | 0x04000003, 0x4a032804, 0x000007d0, 0x8c00050a, | ||
10080 | 0x0402000a, 0x0201f800, 0x0002077d, 0x0201f800, | ||
10081 | 0x00101e45, 0x5c001000, 0x1c01f000, 0x0201f800, | ||
10082 | 0x0010a623, 0x0401f7fc, 0x5c001000, 0x0201f000, | ||
10083 | 0x0002077d, 0x0201f800, 0x0010210a, 0x0402004c, | ||
10084 | 0x0201f800, 0x0010a628, 0x4a026403, 0x00000047, | ||
10085 | 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b, | ||
10086 | 0x0201f800, 0x0010210a, 0x04020041, 0x0201f800, | ||
10087 | 0x0010a628, 0x4a026403, 0x00000047, 0x4a026203, | ||
10088 | 0x00000001, 0x0201f000, 0x0010672b, 0x0201f800, | ||
10089 | 0x0010210a, 0x04020036, 0x0201f800, 0x0010a628, | ||
10090 | 0x0201f000, 0x0002077d, 0x0401f834, 0x04000030, | ||
10091 | 0x4a026403, 0x0000004e, 0x4a026203, 0x00000001, | ||
10092 | 0x0201f000, 0x0010672b, 0x4a026403, 0x0000004f, | ||
10093 | 0x497a601c, 0x59cc0a06, 0x82040d00, 0x000000ff, | ||
10094 | 0x800409c0, 0x0400065f, 0x82040580, 0x00000001, | ||
10095 | 0x04020005, 0x59cc0808, 0x59a80005, 0x80040580, | ||
10096 | 0x04000658, 0x82040580, 0x00000002, 0x0402000a, | ||
10097 | 0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002, | ||
10098 | 0x83341c00, 0x00000006, 0x0201f800, 0x0010855a, | ||
10099 | 0x0400064c, 0x4a02601c, 0x00000001, 0x0401f649, | ||
10100 | 0x4a026403, 0x00000050, 0x59cc0207, 0x4802601c, | ||
10101 | 0x0401f644, 0x4a026203, 0x00000001, 0x42000800, | ||
10102 | 0x80000040, 0x0201f000, 0x00020721, 0x4803c857, | ||
10103 | 0x0201f000, 0x0002077d, 0x4d2c0000, 0x4c500000, | ||
10104 | 0x4c580000, 0x4c540000, 0x59a80016, 0x82000c80, | ||
10105 | 0x00000829, 0x04021029, 0x0201f800, 0x001007d3, | ||
10106 | 0x04000026, 0x492e6008, 0x59a80016, 0x80000104, | ||
10107 | 0x48025802, 0x83cca400, 0x00000006, 0x82000c80, | ||
10108 | 0x0000000b, 0x04001013, 0x4a025811, 0x0000000b, | ||
10109 | 0x4200b000, 0x0000000b, 0x832c0400, 0x00000005, | ||
10110 | 0x4000a800, 0x0201f800, 0x0010ab17, 0x412c7000, | ||
10111 | 0x0201f800, 0x001007d3, 0x04000010, 0x492c7001, | ||
10112 | 0x40040000, 0x800409c0, 0x04000009, 0x0401f7ec, | ||
10113 | 0x48025811, 0x4000b000, 0x832c0400, 0x00000005, | ||
10114 | 0x4000a800, 0x0201f800, 0x0010ab17, 0x82000540, | ||
10115 | 0x00000001, 0x0401f006, 0x497b5016, 0x59325808, | ||
10116 | 0x0201f800, 0x001007fd, 0x80000580, 0x5c00a800, | ||
10117 | 0x5c00b000, 0x5c00a000, 0x5c025800, 0x1c01f000, | ||
10118 | 0x4d340000, 0x59326809, 0x59343400, 0x4933c857, | ||
10119 | 0x4937c857, 0x481bc857, 0x0201f800, 0x001049f3, | ||
10120 | 0x5c026800, 0x1c01f000, 0x4933c857, 0x4c5c0000, | ||
10121 | 0x4d3c0000, 0x0401f840, 0x0402002c, 0x59cc0207, | ||
10122 | 0x82000d00, 0x0000ff00, 0x900411c0, 0x59cc000a, | ||
10123 | 0x82000500, 0x00ffffff, 0x80081540, 0x480a601c, | ||
10124 | 0x8c040d18, 0x0400000e, 0x42003000, 0x00000008, | ||
10125 | 0x0201f800, 0x0010a932, 0x42000000, 0x0010b863, | ||
10126 | 0x0201f800, 0x0010aa47, 0x4200b800, 0x00000002, | ||
10127 | 0x42027800, 0x00000001, 0x0401f011, 0x4178b800, | ||
10128 | 0x8c040d1a, 0x04000011, 0x59cc000a, 0x0201f800, | ||
10129 | 0x00105c9a, 0x0402000d, 0x42003000, 0x00000009, | ||
10130 | 0x0201f800, 0x0010a93a, 0x42000000, 0x0010b863, | ||
10131 | 0x0201f800, 0x0010aa47, 0x417a7800, 0x0201f800, | ||
10132 | 0x001020a1, 0x0401f004, 0x82000540, 0x00000001, | ||
10133 | 0x0401f002, 0x80000580, 0x5c027800, 0x5c00b800, | ||
10134 | 0x1c01f000, 0x4933c857, 0x59cc0206, 0x82000480, | ||
10135 | 0x00000010, 0x04021006, 0x4a02621a, 0x00000000, | ||
10136 | 0x82000540, 0x00000001, 0x0401f002, 0x80000580, | ||
10137 | 0x1c01f000, 0x4933c857, 0x4a02621a, 0x00000000, | ||
10138 | 0x59cc0407, 0x82000500, 0x0000ff00, 0x82000580, | ||
10139 | 0x00000800, 0x04020009, 0x59cc0006, 0x82000500, | ||
10140 | 0x00ff0000, 0x82000d80, 0x00140000, 0x04000003, | ||
10141 | 0x82000d80, 0x00100000, 0x1c01f000, 0x4933c857, | ||
10142 | 0x59300403, 0x82003480, 0x00000051, 0x02021800, | ||
10143 | 0x001005d8, 0x83383580, 0x00000013, 0x04020003, | ||
10144 | 0x4803c857, 0x0c01f012, 0x83383580, 0x00000027, | ||
10145 | 0x04000005, 0x83383580, 0x00000014, 0x02020800, | ||
10146 | 0x001005d8, 0x0201f800, 0x001048c1, 0x42000800, | ||
10147 | 0x00000007, 0x0201f800, 0x00104571, 0x0201f800, | ||
10148 | 0x00106bbf, 0x0201f000, 0x00107911, 0x00109e3c, | ||
10149 | 0x00109e45, 0x00109e3c, 0x00109e3c, 0x00109e3c, | ||
10150 | 0x00109e45, 0x00109e50, 0x00109ecd, 0x00109e95, | ||
10151 | 0x00109ecd, 0x00109ead, 0x00109ecd, 0x00109ebe, | ||
10152 | 0x00109ecd, 0x00109ec6, 0x00109ecd, 0x00109ec6, | ||
10153 | 0x00109ecd, 0x00109ecd, 0x00109e3c, 0x00109e3c, | ||
10154 | 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c, | ||
10155 | 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c, | ||
10156 | 0x00109e3c, 0x00109e45, 0x00109e3c, 0x00109ecd, | ||
10157 | 0x00109e3c, 0x00109e3c, 0x00109ecd, 0x00109e3c, | ||
10158 | 0x00109eca, 0x00109ecd, 0x00109e3c, 0x00109e3c, | ||
10159 | 0x00109e3c, 0x00109e3c, 0x00109ecd, 0x00109ecd, | ||
10160 | 0x00109e3c, 0x00109ec3, 0x00109ecd, 0x00109e3c, | ||
10161 | 0x00109e4a, 0x00109e3c, 0x00109e3c, 0x00109e3c, | ||
10162 | 0x00109e3c, 0x00109ec9, 0x00109ecd, 0x00109e3c, | ||
10163 | 0x00109e3c, 0x00109ecd, 0x00109ecd, 0x00109e3c, | ||
10164 | 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c, | ||
10165 | 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c, | ||
10166 | 0x00109e3e, 0x00109e3c, 0x00109e3e, 0x00109e3c, | ||
10167 | 0x00109e3c, 0x00109e3e, 0x00109e3c, 0x00109e3c, | ||
10168 | 0x00109e3c, 0x00109e3e, 0x00109e3e, 0x00109e3e, | ||
10169 | 0x0201f800, 0x001005d8, 0x4d2c0000, 0x59325808, | ||
10170 | 0x0201f800, 0x001007fd, 0x5c025800, 0x0201f000, | ||
10171 | 0x0002077d, 0x59a80037, 0x48026206, 0x4a026203, | ||
10172 | 0x00000002, 0x1c01f000, 0x4d3c0000, 0x417a7800, | ||
10173 | 0x0201f800, 0x00104567, 0x5c027800, 0x0401f07e, | ||
10174 | 0x42000800, 0x00000007, 0x0201f800, 0x00104571, | ||
10175 | 0x59a80026, 0x8c000508, 0x04000012, 0x59326809, | ||
10176 | 0x4c580000, 0x4200b000, 0x00000002, 0x83a81c00, | ||
10177 | 0x00000002, 0x83341400, 0x00000006, 0x0201f800, | ||
10178 | 0x0010855a, 0x80000540, 0x5c00b000, 0x0402006a, | ||
10179 | 0x59340200, 0x8400051a, 0x48026a00, 0x0401f01b, | ||
10180 | 0x599c0017, 0x8c00050a, 0x04020063, 0x4d3c0000, | ||
10181 | 0x417a7800, 0x0201f800, 0x00104567, 0x5c027800, | ||
10182 | 0x42000800, 0x00000007, 0x0201f800, 0x00104571, | ||
10183 | 0x59340212, 0x82000500, 0x0000ff00, 0x04000056, | ||
10184 | 0x599c0019, 0x8c00050e, 0x04020053, 0x416c0000, | ||
10185 | 0x82000580, 0x00000002, 0x04020004, 0x59a8001b, | ||
10186 | 0x80000000, 0x4803501b, 0x42000800, 0x00000003, | ||
10187 | 0x0201f800, 0x00104571, 0x4a026406, 0x00000001, | ||
10188 | 0x4a026203, 0x00000001, 0x4a026403, 0x00000002, | ||
10189 | 0x0201f800, 0x0010672b, 0x4ce80000, 0x4201d000, | ||
10190 | 0x00000001, 0x0201f800, 0x00105fae, 0x5c01d000, | ||
10191 | 0x1c01f000, 0x0201f800, 0x001049f3, 0x04000036, | ||
10192 | 0x0201f800, 0x0010645e, 0x42000800, 0x00000004, | ||
10193 | 0x0201f800, 0x00104571, 0x0201f800, 0x0010a96a, | ||
10194 | 0x0402002d, 0x42000800, 0x00000005, 0x0201f800, | ||
10195 | 0x00104571, 0x4a026406, 0x00000001, 0x4a026203, | ||
10196 | 0x00000001, 0x4a026403, 0x00000003, 0x0201f000, | ||
10197 | 0x0010672b, 0x42000800, 0x00000006, 0x0401f820, | ||
10198 | 0x59303009, 0x599c0017, 0x8c00050a, 0x0402001a, | ||
10199 | 0x59a80026, 0x8c000508, 0x04000017, 0x0201f800, | ||
10200 | 0x001049e7, 0x04000014, 0x59a8001b, 0x80000000, | ||
10201 | 0x4803501b, 0x0401f7c5, 0x42000800, 0x00000004, | ||
10202 | 0x0201f800, 0x00104571, 0x0401f792, 0x42000800, | ||
10203 | 0x00000004, 0x0401f006, 0x0201f800, 0x001048c1, | ||
10204 | 0x0401f005, 0x0401f004, 0x0401f003, 0x0201f800, | ||
10205 | 0x00104571, 0x0201f000, 0x0002077d, 0x4933c857, | ||
10206 | 0x4807c857, 0x0201f800, 0x00104571, 0x4d3c0000, | ||
10207 | 0x417a7800, 0x0201f800, 0x00104567, 0x5c027800, | ||
10208 | 0x0201f800, 0x00102074, 0x1c01f000, 0x4933c857, | ||
10209 | 0x59340400, 0x80000110, 0x82003480, 0x0000000c, | ||
10210 | 0x02021800, 0x001005d8, 0x83383580, 0x00000015, | ||
10211 | 0x04020002, 0x0c01f006, 0x83383580, 0x00000016, | ||
10212 | 0x02020800, 0x001005d8, 0x0c01f00d, 0x001080b8, | ||
10213 | 0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8, | ||
10214 | 0x001080b8, 0x00109f30, 0x00109f03, 0x001080b8, | ||
10215 | 0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8, | ||
10216 | 0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8, | ||
10217 | 0x001080b8, 0x00109f30, 0x00109f37, 0x001080b8, | ||
10218 | 0x001080b8, 0x001080b8, 0x001080b8, 0x4933c857, | ||
10219 | 0x599c0017, 0x8c00050a, 0x0402001b, 0x813669c0, | ||
10220 | 0x04000019, 0x59340212, 0x82000500, 0x0000ff00, | ||
10221 | 0x04000015, 0x599c0019, 0x8c00050e, 0x04020012, | ||
10222 | 0x4d3c0000, 0x417a7800, 0x0201f800, 0x00104567, | ||
10223 | 0x5c027800, 0x42000800, 0x00000003, 0x0201f800, | ||
10224 | 0x00104571, 0x4a026406, 0x00000001, 0x4a026203, | ||
10225 | 0x00000001, 0x4a026403, 0x00000002, 0x0201f000, | ||
10226 | 0x0010672b, 0x59cc0001, 0x0201f800, 0x00105c9a, | ||
10227 | 0x0402000b, 0x0201f800, 0x00020245, 0x02020000, | ||
10228 | 0x0002077d, 0x59345002, 0x0201f800, 0x001042b4, | ||
10229 | 0x482a6802, 0x0201f000, 0x0002077d, 0x1c01f000, | ||
10230 | 0x4933c857, 0x59303403, 0x82183580, 0x0000001e, | ||
10231 | 0x02000000, 0x0002077d, 0x1c01f000, 0x4933c857, | ||
10232 | 0x0201f800, 0x001083df, 0x02020000, 0x0002077d, | ||
10233 | 0x4a026203, 0x00000001, 0x4a026403, 0x00000001, | ||
10234 | 0x0201f000, 0x0010672b, 0x493bc857, 0x83380580, | ||
10235 | 0x00000051, 0x0402000b, 0x0201f800, 0x00106f60, | ||
10236 | 0x02020000, 0x00107974, 0x59300203, 0x82000580, | ||
10237 | 0x00000002, 0x0400006d, 0x0201f800, 0x001005d8, | ||
10238 | 0x83380580, 0x00000027, 0x04000014, 0x83380580, | ||
10239 | 0x00000048, 0x04000006, 0x83380580, 0x00000014, | ||
10240 | 0x0400000e, 0x02020800, 0x001005d8, 0x0201f800, | ||
10241 | 0x00106f60, 0x02020000, 0x00107974, 0x59300203, | ||
10242 | 0x82000580, 0x00000004, 0x02000000, 0x0002086e, | ||
10243 | 0x0201f800, 0x001005d8, 0x59300403, 0x82000c80, | ||
10244 | 0x00000044, 0x02021800, 0x001005d8, 0x82000480, | ||
10245 | 0x00000040, 0x02001800, 0x001005d8, 0x40027000, | ||
10246 | 0x4803c857, 0x0c01f001, 0x00109f76, 0x00109f78, | ||
10247 | 0x00109f78, 0x00109f93, 0x0201f800, 0x001005d8, | ||
10248 | 0x0201f800, 0x00106bbf, 0x59325808, 0x812e59c0, | ||
10249 | 0x04000016, 0x832c0500, 0x00ff0000, 0x04000013, | ||
10250 | 0x4a026203, 0x00000002, 0x59326809, 0x59340200, | ||
10251 | 0x8c00050e, 0x0402000d, 0x42028000, 0x00000004, | ||
10252 | 0x0201f800, 0x0010a3ef, 0x497a6008, 0x59300206, | ||
10253 | 0x80000540, 0x04020003, 0x59a80038, 0x48026206, | ||
10254 | 0x4a026203, 0x00000007, 0x1c01f000, 0x0201f800, | ||
10255 | 0x00106bbf, 0x0201f800, 0x00109037, 0x02000000, | ||
10256 | 0x00107911, 0x59325808, 0x0201f800, 0x001007f4, | ||
10257 | 0x0201f000, 0x00107911, 0x0201f800, 0x001005d8, | ||
10258 | 0x59325808, 0x592c040a, 0x8c000502, 0x04000007, | ||
10259 | 0x4a026203, 0x00000007, 0x42027000, 0x00000043, | ||
10260 | 0x0201f000, 0x000207a1, 0x4a026203, 0x00000004, | ||
10261 | 0x1c01f000, 0x0201f800, 0x0010a597, 0x02000000, | ||
10262 | 0x0002086c, 0x1c01f000, 0x4a026203, 0x00000001, | ||
10263 | 0x4a026403, 0x00000041, 0x42027800, 0x80002042, | ||
10264 | 0x0201f000, 0x00020721, 0x83380580, 0x00000051, | ||
10265 | 0x04000006, 0x83380580, 0x00000041, 0x02020800, | ||
10266 | 0x001005d8, 0x1c01f000, 0x0201f800, 0x000206fd, | ||
10267 | 0x0201f800, 0x0010a5df, 0x0201f000, 0x0002077d, | ||
10268 | 0x83380480, 0x00000050, 0x02021800, 0x001005d8, | ||
10269 | 0x83380480, 0x00000049, 0x02001800, 0x001005d8, | ||
10270 | 0x0c01f001, 0x00109fda, 0x00109ffb, 0x00109fd8, | ||
10271 | 0x00109fd8, 0x00109fd8, 0x00109fd8, 0x00109ffb, | ||
10272 | 0x0201f800, 0x001005d8, 0x59325808, 0x592c040a, | ||
10273 | 0x8c00051e, 0x0400000d, 0x82000d00, 0x000000c0, | ||
10274 | 0x82040d80, 0x00000080, 0x0400000d, 0x59300804, | ||
10275 | 0x8c040d18, 0x0402000a, 0x42027000, 0x00000041, | ||
10276 | 0x0201f000, 0x0002088d, 0x4a026203, 0x00000007, | ||
10277 | 0x497a6206, 0x0201f000, 0x000206fd, 0x59325808, | ||
10278 | 0x592c0c0a, 0x8c040d1a, 0x04020005, 0x0201f800, | ||
10279 | 0x000206fd, 0x0201f000, 0x0002077d, 0x0201f800, | ||
10280 | 0x0010a597, 0x040007fa, 0x1c01f000, 0x0201f800, | ||
10281 | 0x00106b8a, 0x59325808, 0x59326809, 0x59340200, | ||
10282 | 0x8c00050e, 0x0400000e, 0x592c040a, 0x82000500, | ||
10283 | 0x000000c0, 0x82000580, 0x00000080, 0x04000005, | ||
10284 | 0x592c000f, 0x59301815, 0x800c1c80, 0x480e6015, | ||
10285 | 0x4a026203, 0x00000002, 0x0401f00d, 0x42028000, | ||
10286 | 0x00000004, 0x0401fbde, 0x59300206, 0x80000540, | ||
10287 | 0x04020004, 0x59a80038, 0x800000c2, 0x48026206, | ||
10288 | 0x497a6008, 0x4a026203, 0x00000007, 0x1c01f000, | ||
10289 | 0x4a026203, 0x00000007, 0x497a6206, 0x0201f000, | ||
10290 | 0x000206fd, 0x4a026203, 0x00000007, 0x497a6206, | ||
10291 | 0x0201f000, 0x000206f8, 0x59300414, 0x8c00051c, | ||
10292 | 0x02020000, 0x0002087e, 0x59325808, 0x592c200f, | ||
10293 | 0x40080000, 0x80102480, 0x59300015, 0x80102400, | ||
10294 | 0x48126015, 0x0201f000, 0x0002087e, 0x8c040d0e, | ||
10295 | 0x0402000a, 0x4a026203, 0x00000006, 0x0401f823, | ||
10296 | 0x5930001f, 0x80000540, 0x02020800, 0x00100d7c, | ||
10297 | 0x0201f000, 0x000206f8, 0x4a026203, 0x00000002, | ||
10298 | 0x1c01f000, 0x42000800, 0x00000001, 0x0201f800, | ||
10299 | 0x00100d7c, 0x82040580, 0x00000001, 0x02000000, | ||
10300 | 0x00020885, 0x0401f7d8, 0x59300414, 0x8c00051c, | ||
10301 | 0x04000006, 0x0201f800, 0x00100b63, 0x02000000, | ||
10302 | 0x00020877, 0x1c01f000, 0x59300011, 0x80000540, | ||
10303 | 0x04020005, 0x0201f800, 0x00100b63, 0x02000000, | ||
10304 | 0x00020877, 0x1c01f000, 0x492fc857, 0x480bc857, | ||
10305 | 0x8c08153e, 0x04000006, 0x80081080, 0x80081000, | ||
10306 | 0x42000800, 0x00000009, 0x0401f003, 0x42000800, | ||
10307 | 0x00000015, 0x480a580b, 0x1c01f000, 0x83380580, | ||
10308 | 0x00000013, 0x04000005, 0x83380580, 0x00000014, | ||
10309 | 0x02020800, 0x001005d8, 0x59300414, 0x8c000516, | ||
10310 | 0x02000800, 0x001005d8, 0x1c01f000, 0x0201f800, | ||
10311 | 0x001005d8, 0x59300008, 0x80000540, 0x02020800, | ||
10312 | 0x001005d8, 0x1c01f000, 0x59300414, 0x8c000516, | ||
10313 | 0x02000800, 0x001005d8, 0x1c01f000, 0x4a026203, | ||
10314 | 0x00000004, 0x493a6403, 0x42000800, 0x80002001, | ||
10315 | 0x0201f000, 0x00020721, 0x4a026203, 0x00000003, | ||
10316 | 0x493a6403, 0x0201f800, 0x000200c9, 0x59325808, | ||
10317 | 0x592c040a, 0x8c00051e, 0x04000012, 0x82000500, | ||
10318 | 0x000000c0, 0x82000580, 0x00000080, 0x04000011, | ||
10319 | 0x59300414, 0x8c000512, 0x0402000a, 0x8c000510, | ||
10320 | 0x04020008, 0x592c040c, 0x80000540, 0x04020005, | ||
10321 | 0x82080d40, 0x80003065, 0x0201f000, 0x00106721, | ||
10322 | 0x82080d40, 0x80002065, 0x0201f000, 0x00106721, | ||
10323 | 0x82080d40, 0x80002042, 0x0201f000, 0x00106721, | ||
10324 | 0x4933c857, 0x493bc857, 0x83380480, 0x00000044, | ||
10325 | 0x02021800, 0x001005d8, 0x83380480, 0x00000041, | ||
10326 | 0x02001800, 0x001005d8, 0x0c01f001, 0x0010a0b6, | ||
10327 | 0x0010a0c6, 0x0010a0db, 0x59325808, 0x592c040a, | ||
10328 | 0x8c00051e, 0x0400001d, 0x82001d00, 0x000000c0, | ||
10329 | 0x820c1d80, 0x000000c0, 0x04000018, 0x4a026203, | ||
10330 | 0x00000001, 0x493a6403, 0x42000800, 0x80002042, | ||
10331 | 0x0201f000, 0x00020721, 0x59325808, 0x592c040a, | ||
10332 | 0x8c00051e, 0x0400000d, 0x82001d00, 0x000000c0, | ||
10333 | 0x820c1d80, 0x000000c0, 0x04000008, 0x4a026203, | ||
10334 | 0x00000001, 0x493a6403, 0x42000800, 0x80002001, | ||
10335 | 0x0201f000, 0x00020721, 0x497a6008, 0x497a6206, | ||
10336 | 0x42028000, 0x00000004, 0x0401f315, 0x59325808, | ||
10337 | 0x592c040a, 0x8c00051e, 0x040007f8, 0x82001d00, | ||
10338 | 0x000000c0, 0x820c1d80, 0x000000c0, 0x040007f3, | ||
10339 | 0x4a026203, 0x00000003, 0x493a6403, 0x0201f800, | ||
10340 | 0x000200c9, 0x82080d40, 0x80002065, 0x0201f000, | ||
10341 | 0x00106721, 0x4933c857, 0x493bc857, 0x83380580, | ||
10342 | 0x00000085, 0x04000006, 0x83380580, 0x00000088, | ||
10343 | 0x0400000a, 0x0201f800, 0x001005d8, 0x4a026203, | ||
10344 | 0x00000009, 0x493a6403, 0x42000800, 0x8000004b, | ||
10345 | 0x0201f000, 0x00020721, 0x4d1c0000, 0x813669c0, | ||
10346 | 0x04000004, 0x0201f800, 0x0010a592, 0x04020044, | ||
10347 | 0x59cc1404, 0x0401f846, 0x04000018, 0x591c0406, | ||
10348 | 0x82000500, 0x0000001f, 0x82002580, 0x00000006, | ||
10349 | 0x04000007, 0x82002580, 0x00000004, 0x0400002e, | ||
10350 | 0x82002580, 0x00000011, 0x0402000c, 0x497a3a05, | ||
10351 | 0x42002000, 0x00000054, 0x0201f800, 0x00107a4a, | ||
10352 | 0x4a026203, 0x00000007, 0x493a6403, 0x0201f800, | ||
10353 | 0x0010a974, 0x0401f02c, 0x0201f800, 0x00103b25, | ||
10354 | 0x04000004, 0x42023800, 0xffffffff, 0x0401f7f1, | ||
10355 | 0x813669c0, 0x04020009, 0x59cc0001, 0x0201f800, | ||
10356 | 0x00105c9a, 0x0402001e, 0x0201f800, 0x001045a6, | ||
10357 | 0x0402001b, 0x49366009, 0x4a026403, 0x00000087, | ||
10358 | 0x59cc1204, 0x82081580, 0x0000ffff, 0x04020003, | ||
10359 | 0x4a026403, 0x00000086, 0x4a026203, 0x00000001, | ||
10360 | 0x42000800, 0x80000040, 0x0201f800, 0x00020721, | ||
10361 | 0x0401f00d, 0x591c0203, 0x82000580, 0x00000007, | ||
10362 | 0x040207de, 0x4d300000, 0x411e6000, 0x0201f800, | ||
10363 | 0x00107911, 0x5c026000, 0x0401f7d8, 0x0201f800, | ||
10364 | 0x00107911, 0x5c023800, 0x1c01f000, 0x4933c857, | ||
10365 | 0x480bc857, 0x42002800, 0x0010d1c0, 0x41300000, | ||
10366 | 0x80140580, 0x04000017, 0x58140203, 0x82000580, | ||
10367 | 0x00000000, 0x04000013, 0x58140202, 0x80080580, | ||
10368 | 0x04020010, 0x58141c06, 0x820c0580, 0x00000005, | ||
10369 | 0x0400000c, 0x820c0580, 0x00000009, 0x0400001d, | ||
10370 | 0x59302009, 0x58140009, 0x800001c0, 0x0400000b, | ||
10371 | 0x801021c0, 0x04000003, 0x80100580, 0x04000010, | ||
10372 | 0x82142c00, 0x00000024, 0x41540000, 0x80140480, | ||
10373 | 0x0402100e, 0x0401f7e2, 0x5814001e, 0x801021c0, | ||
10374 | 0x04000005, 0x58102002, 0x82102500, 0x00ffffff, | ||
10375 | 0x0401f7f2, 0x5810201e, 0x0401f7f0, 0x40163800, | ||
10376 | 0x81300540, 0x0401f002, 0x80000580, 0x1c01f000, | ||
10377 | 0x58141807, 0x8c0c1d10, 0x040207ea, 0x0401f7e1, | ||
10378 | 0x4933c857, 0x493bc857, 0x83380580, 0x00000013, | ||
10379 | 0x0402000e, 0x59300403, 0x82000c80, 0x00000085, | ||
10380 | 0x02001800, 0x001005d8, 0x82000c80, 0x00000093, | ||
10381 | 0x02021800, 0x001005d8, 0x82000480, 0x00000085, | ||
10382 | 0x4803c857, 0x0c01f018, 0x83380580, 0x00000027, | ||
10383 | 0x04000005, 0x83380580, 0x00000014, 0x02020000, | ||
10384 | 0x00107974, 0x0201f800, 0x00106bbf, 0x59325808, | ||
10385 | 0x812e59c0, 0x02000000, 0x00107911, 0x4a025a06, | ||
10386 | 0x00000031, 0x4a025811, 0x00000004, 0x4a025812, | ||
10387 | 0x000000ff, 0x0201f800, 0x000202da, 0x0201f000, | ||
10388 | 0x00107911, 0x0010a1b7, 0x0010a1be, 0x0010a1be, | ||
10389 | 0x0010a1b7, 0x0010a1b7, 0x0010a1b7, 0x0010a1b7, | ||
10390 | 0x0010a1b7, 0x0010a1b7, 0x0010a1b7, 0x0010a1b7, | ||
10391 | 0x0010a1b7, 0x0010a1b7, 0x0010a1b9, 0x0201f800, | ||
10392 | 0x001005d8, 0x59325808, 0x4a025a06, 0x00000000, | ||
10393 | 0x0201f800, 0x000202da, 0x0201f000, 0x00107911, | ||
10394 | 0x4933c857, 0x42000000, 0x0010b873, 0x0201f800, | ||
10395 | 0x0010aa47, 0x0201f800, 0x0010a5df, 0x497a6205, | ||
10396 | 0x42028000, 0x0000000b, 0x0401f807, 0x4a026406, | ||
10397 | 0x00000006, 0x4a026203, 0x00000007, 0x497a6206, | ||
10398 | 0x1c01f000, 0x4933c857, 0x4943c857, 0x59300406, | ||
10399 | 0x82000580, 0x00000007, 0x04020002, 0x1c01f000, | ||
10400 | 0x0201f800, 0x00106c55, 0x4df00000, 0x0201f800, | ||
10401 | 0x00108ce5, 0x82000c80, 0x0000000e, 0x02021800, | ||
10402 | 0x001005d8, 0x0c01f001, 0x0010a205, 0x0010a209, | ||
10403 | 0x0010a1f0, 0x0010a217, 0x0010a22a, 0x0010a1f0, | ||
10404 | 0x0010a1f0, 0x0010a1f0, 0x0010a1f0, 0x0010a1f0, | ||
10405 | 0x0010a1f0, 0x0010a1f0, 0x0010a1f0, 0x0010a1f0, | ||
10406 | 0x4d400000, 0x5930001f, 0x80000540, 0x04000005, | ||
10407 | 0x41400800, 0x0201f800, 0x00100d7c, 0x40068000, | ||
10408 | 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037, | ||
10409 | 0x040209f3, 0x4c5c0000, 0x5930b809, 0x0201f800, | ||
10410 | 0x00107911, 0x485e6009, 0x5c00b800, 0x5c025800, | ||
10411 | 0x5c028000, 0x5c03e000, 0x02000000, 0x00106c4b, | ||
10412 | 0x1c01f000, 0x598c000d, 0x81300580, 0x04020004, | ||
10413 | 0x0201f800, 0x00106e8e, 0x04020016, 0x0201f800, | ||
10414 | 0x001068d3, 0x040007df, 0x0201f800, 0x00106b6c, | ||
10415 | 0x04000010, 0x0201f800, 0x001005d8, 0x0201f800, | ||
10416 | 0x00108cd6, 0x04020004, 0x0201f800, 0x00106e62, | ||
10417 | 0x04020008, 0x0201f800, 0x001067ae, 0x040007d1, | ||
10418 | 0x0201f800, 0x00106b6c, 0x02020800, 0x001005d8, | ||
10419 | 0x59300203, 0x82000c80, 0x0000000e, 0x02021800, | ||
10420 | 0x001005d8, 0x0c01f7b9, 0x0201f800, 0x00100e99, | ||
10421 | 0x0401f7c4, 0x4933c857, 0x4d440000, 0x4d340000, | ||
10422 | 0x59cc0007, 0x0201f800, 0x00105c9a, 0x02000800, | ||
10423 | 0x00020245, 0x0402001a, 0x59300009, 0x4c000000, | ||
10424 | 0x49366009, 0x42003000, 0x0000000b, 0x0201f800, | ||
10425 | 0x0010a942, 0x42000000, 0x0010b861, 0x0201f800, | ||
10426 | 0x0010aa47, 0x4d3c0000, 0x4d400000, 0x42028000, | ||
10427 | 0x00000029, 0x417a7800, 0x0201f800, 0x0010203c, | ||
10428 | 0x5c028000, 0x5c027800, 0x5c000000, 0x48026009, | ||
10429 | 0x59cc0007, 0x48026802, 0x80000580, 0x5c026800, | ||
10430 | 0x5c028800, 0x1c01f000, 0x4933c857, 0x4c040000, | ||
10431 | 0x59a80016, 0x82000580, 0x00000074, 0x04020040, | ||
10432 | 0x59cc0a08, 0x82040480, 0x00000100, 0x04001033, | ||
10433 | 0x59cc0c08, 0x82040500, 0x00008000, 0x04000035, | ||
10434 | 0x59a80032, 0x80000540, 0x04020009, 0x59301009, | ||
10435 | 0x58080212, 0x82000500, 0x0000ff00, 0x04000004, | ||
10436 | 0x82040500, 0x00000800, 0x0400002a, 0x59cc0c09, | ||
10437 | 0x80040840, 0x04001024, 0x59a80826, 0x8c040d06, | ||
10438 | 0x04000004, 0x59cc0c0f, 0x8c040d1e, 0x04020012, | ||
10439 | 0x59cc0a17, 0x800409c0, 0x04020012, 0x59cc0a18, | ||
10440 | 0x82040480, 0x00000100, 0x04001014, 0x59cc0c18, | ||
10441 | 0x800409c0, 0x0402000e, 0x59cc0c19, 0x80040840, | ||
10442 | 0x04001011, 0x59cc0c1a, 0x80040840, 0x04001011, | ||
10443 | 0x0401f018, 0x4a02621a, 0x00000100, 0x0401f012, | ||
10444 | 0x4a02621a, 0x00000300, 0x0401f00f, 0x4a02621a, | ||
10445 | 0x00000500, 0x0401f00c, 0x4a02621a, 0x00000700, | ||
10446 | 0x0401f009, 0x4a02621a, 0x00000900, 0x0401f006, | ||
10447 | 0x4a02621a, 0x00000f00, 0x0401f003, 0x4a02621a, | ||
10448 | 0x00002d00, 0x82000540, 0x00000001, 0x0401f002, | ||
10449 | 0x80000580, 0x5c000800, 0x1c01f000, 0x59cc0407, | ||
10450 | 0x4803c857, 0x82000580, 0x00000800, 0x04000003, | ||
10451 | 0x4a02621a, 0x00000000, 0x1c01f000, 0x4933c857, | ||
10452 | 0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c580000, | ||
10453 | 0x59cc000c, 0x0201f800, 0x00105c9a, 0x02000800, | ||
10454 | 0x00020245, 0x04020012, 0x83cc1400, 0x00000008, | ||
10455 | 0x4200b000, 0x00000002, 0x83341c00, 0x00000006, | ||
10456 | 0x0201f800, 0x0010855a, 0x04020009, 0x83cc1400, | ||
10457 | 0x0000000a, 0x4200b000, 0x00000002, 0x83341c00, | ||
10458 | 0x00000008, 0x0201f800, 0x0010855a, 0x5c00b000, | ||
10459 | 0x5c001800, 0x5c001000, 0x5c000800, 0x1c01f000, | ||
10460 | 0x4933c857, 0x4c000000, 0x4c040000, 0x4c080000, | ||
10461 | 0x4c0c0000, 0x4c580000, 0x59cc0001, 0x0201f800, | ||
10462 | 0x00105c9a, 0x02000800, 0x00020245, 0x04020014, | ||
10463 | 0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002, | ||
10464 | 0x83341c00, 0x00000006, 0x0201f800, 0x0010855a, | ||
10465 | 0x0402000c, 0x83cc1400, 0x0000000d, 0x4200b000, | ||
10466 | 0x00000002, 0x83341c00, 0x00000008, 0x0201f800, | ||
10467 | 0x0010855a, 0x04000014, 0x4933c856, 0x4933c856, | ||
10468 | 0x4933c857, 0x59340009, 0x4803c857, 0x5934000e, | ||
10469 | 0x4803c857, 0x59340008, 0x4803c857, 0x5934000d, | ||
10470 | 0x4803c857, 0x59340007, 0x4803c857, 0x5934000c, | ||
10471 | 0x4803c857, 0x59340006, 0x4803c857, 0x5934000b, | ||
10472 | 0x4803c857, 0x5c00b000, 0x5c001800, 0x5c001000, | ||
10473 | 0x5c000800, 0x5c000000, 0x1c01f000, 0x4933c857, | ||
10474 | 0x4947c857, 0x4943c857, 0x4c600000, 0x0201f800, | ||
10475 | 0x00106c55, 0x4df00000, 0x4d2c0000, 0x4d300000, | ||
10476 | 0x4d340000, 0x4130c000, 0x42026000, 0x0010d1c0, | ||
10477 | 0x59a8000e, 0x8060c1c0, 0x04000005, 0x82601580, | ||
10478 | 0x0010bde9, 0x04000002, 0x80000040, 0x81640480, | ||
10479 | 0x040210be, 0x40600000, 0x81300580, 0x040000b6, | ||
10480 | 0x0401f97a, 0x040200b4, 0x59326809, 0x59300406, | ||
10481 | 0x82000c80, 0x00000012, 0x02021800, 0x001005d8, | ||
10482 | 0x0c01f001, 0x0010a3cd, 0x0010a338, 0x0010a351, | ||
10483 | 0x0010a35c, 0x0010a335, 0x0010a34c, 0x0010a387, | ||
10484 | 0x0010a3cd, 0x0010a333, 0x0010a39a, 0x0010a3ae, | ||
10485 | 0x0010a333, 0x0010a333, 0x0010a333, 0x0010a333, | ||
10486 | 0x0010a3cd, 0x0010a3c4, 0x0010a3bc, 0x0201f800, | ||
10487 | 0x001005d8, 0x59300420, 0x8c000500, 0x04020096, | ||
10488 | 0x59300403, 0x82000580, 0x00000043, 0x04000092, | ||
10489 | 0x0201f800, 0x00109134, 0x04000007, 0x0201f800, | ||
10490 | 0x0010914e, 0x0402008a, 0x0201f800, 0x0010801c, | ||
10491 | 0x0401f087, 0x0201f800, 0x00102074, 0x0201f800, | ||
10492 | 0x0010914e, 0x02000800, 0x0010801c, 0x0401f080, | ||
10493 | 0x8d3e7d18, 0x04000004, 0x59300420, 0x8c000500, | ||
10494 | 0x0402007d, 0x59325808, 0x0201f800, 0x00109037, | ||
10495 | 0x04000077, 0x49425a06, 0x497a5c09, 0x0201f800, | ||
10496 | 0x000202da, 0x0201f800, 0x0010912a, 0x0401f070, | ||
10497 | 0x8d3e7d00, 0x04000007, 0x59300017, 0x81480580, | ||
10498 | 0x0402006d, 0x59300018, 0x814c0580, 0x0402006a, | ||
10499 | 0x59300203, 0x82000580, 0x00000004, 0x02000800, | ||
10500 | 0x00100e99, 0x59325808, 0x0201f800, 0x00109037, | ||
10501 | 0x0400005f, 0x4a025a04, 0x00000103, 0x59300004, | ||
10502 | 0x8400055c, 0x48026004, 0x592c0408, 0x8c000512, | ||
10503 | 0x04000007, 0x4d2c0000, 0x592c0009, 0x40025800, | ||
10504 | 0x0201f800, 0x001007fd, 0x5c025800, 0x49425a06, | ||
10505 | 0x497a5c09, 0x0401fb16, 0x0201f800, 0x0010959c, | ||
10506 | 0x0201f800, 0x001091c6, 0x0201f800, 0x000202da, | ||
10507 | 0x0201f800, 0x0010912a, 0x0401f045, 0x8d3e7d18, | ||
10508 | 0x04000045, 0x59300203, 0x82000580, 0x00000004, | ||
10509 | 0x02000800, 0x00100e99, 0x59325808, 0x0201f800, | ||
10510 | 0x00109037, 0x0400003a, 0x49425a06, 0x497a5c09, | ||
10511 | 0x0401faff, 0x0201f800, 0x0010959c, 0x0201f800, | ||
10512 | 0x000202da, 0x0401f032, 0x0201f800, 0x001062d5, | ||
10513 | 0x04000031, 0x59300203, 0x82000580, 0x00000004, | ||
10514 | 0x0400002d, 0x59300203, 0x82000580, 0x00000003, | ||
10515 | 0x04020029, 0x0201f800, 0x00106b8a, 0x59325808, | ||
10516 | 0x0201f800, 0x00109037, 0x04000021, 0x0201f800, | ||
10517 | 0x000202da, 0x0401f01e, 0x59300203, 0x82000580, | ||
10518 | 0x00000004, 0x02000800, 0x00100e99, 0x59325808, | ||
10519 | 0x0201f800, 0x00109037, 0x04000015, 0x49425a06, | ||
10520 | 0x497a5c09, 0x0201f800, 0x000202da, 0x0401f010, | ||
10521 | 0x833c0500, 0x00001800, 0x0400000f, 0x8d3e7d16, | ||
10522 | 0x0402000d, 0x59325817, 0x0201f800, 0x001007fd, | ||
10523 | 0x59325808, 0x0201f800, 0x00109037, 0x04000004, | ||
10524 | 0x49425a06, 0x0201f800, 0x000202da, 0x0201f800, | ||
10525 | 0x00107911, 0x83326400, 0x00000024, 0x41580000, | ||
10526 | 0x81300480, 0x0400173b, 0x5c026800, 0x5c026000, | ||
10527 | 0x5c025800, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
10528 | 0x5c00c000, 0x1c01f000, 0x5c000000, 0x4c000000, | ||
10529 | 0x4803c857, 0x4d3c0000, 0x42027800, 0x00000001, | ||
10530 | 0x0201f800, 0x00104567, 0x5c027800, 0x4c580000, | ||
10531 | 0x4200b000, 0x00000002, 0x83a81c00, 0x00000002, | ||
10532 | 0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a, | ||
10533 | 0x5c00b000, 0x80000540, 0x1c01f000, 0x492fc857, | ||
10534 | 0x4943c857, 0x59a8000c, 0x812c0480, 0x04001011, | ||
10535 | 0x59a8000d, 0x812c0480, 0x0402100e, 0x592c0000, | ||
10536 | 0x80005d40, 0x04000008, 0x497a5800, 0x49425a06, | ||
10537 | 0x4c2c0000, 0x0201f800, 0x000202da, 0x5c025800, | ||
10538 | 0x0401f7f7, 0x49425a06, 0x0201f000, 0x000202da, | ||
10539 | 0x1c01f000, 0x493fc857, 0x4933c857, 0x480bc857, | ||
10540 | 0x0201f800, 0x00103b25, 0x0400002e, 0x41502800, | ||
10541 | 0x813e79c0, 0x04020006, 0x59a80066, 0x80000000, | ||
10542 | 0x59a8086a, 0x80040580, 0x04000026, 0x41300000, | ||
10543 | 0x80140580, 0x0400001a, 0x58140203, 0x82000580, | ||
10544 | 0x00000000, 0x04000016, 0x58140202, 0x80080580, | ||
10545 | 0x04020013, 0x58141c06, 0x820c0580, 0x00000005, | ||
10546 | 0x0400000f, 0x820c0580, 0x00000009, 0x04000017, | ||
10547 | 0x59300009, 0x58142009, 0x801021c0, 0x04020006, | ||
10548 | 0x5814201e, 0x59301809, 0x580c0002, 0x82000500, | ||
10549 | 0x00ffffff, 0x80100580, 0x04000007, 0x82142c00, | ||
10550 | 0x00000024, 0x41540000, 0x80140480, 0x04021005, | ||
10551 | 0x0401f7df, 0x40163800, 0x81300540, 0x0401f002, | ||
10552 | 0x80000580, 0x1c01f000, 0x58141807, 0x8c0c1d10, | ||
10553 | 0x040207f3, 0x0401f7e7, 0x42002000, 0x0000ffff, | ||
10554 | 0x59301009, 0x800811c0, 0x04000002, 0x58082403, | ||
10555 | 0x41301000, 0x0401f007, 0x41781000, 0x41442000, | ||
10556 | 0x0401f004, 0x41781000, 0x42002000, 0x0000ffff, | ||
10557 | 0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857, | ||
10558 | 0x4813c857, 0x492fc857, 0x4943c857, 0x4d2c0000, | ||
10559 | 0x0201f800, 0x001007e4, 0x02000800, 0x001005d8, | ||
10560 | 0x4a025a04, 0x0000010d, 0x800811c0, 0x04000017, | ||
10561 | 0x83400580, 0x00000029, 0x04020010, 0x82180580, | ||
10562 | 0x00000002, 0x0400000a, 0x82180580, 0x00000003, | ||
10563 | 0x04000007, 0x82180580, 0x00000008, 0x04000004, | ||
10564 | 0x82180580, 0x00000009, 0x04020004, 0x4a025809, | ||
10565 | 0xffffffff, 0x0401f002, 0x480a5809, 0x58080202, | ||
10566 | 0x48025c13, 0x0401f005, 0x4a025809, 0xffffffff, | ||
10567 | 0x4a025c13, 0x0000ffff, 0x49425a08, 0x48125a06, | ||
10568 | 0x82100580, 0x0000ffff, 0x0400000e, 0x4d440000, | ||
10569 | 0x4d340000, 0x40128800, 0x0201f800, 0x00020245, | ||
10570 | 0x02020800, 0x001005d8, 0x59340002, 0x82000500, | ||
10571 | 0x00ffffff, 0x48025812, 0x5c026800, 0x5c028800, | ||
10572 | 0x497a5800, 0x497a5c04, 0x83400580, 0x00000046, | ||
10573 | 0x04020002, 0x48165a07, 0x481a5c08, 0x0401fbed, | ||
10574 | 0x5c025800, 0x1c01f000, 0x59300809, 0x800409c0, | ||
10575 | 0x04000004, 0x58040403, 0x81440580, 0x1c01f000, | ||
10576 | 0x82000540, 0x00000001, 0x0401f7fd, 0x4933c857, | ||
10577 | 0x4c040000, 0x59300403, 0x82000d80, 0x0000001e, | ||
10578 | 0x04020016, 0x800000d0, 0x59300a16, 0x82040d00, | ||
10579 | 0x000000ff, 0x80040540, 0x4803c857, 0x48026416, | ||
10580 | 0x4a026403, 0x00000085, 0x4a026203, 0x00000009, | ||
10581 | 0x4a026406, 0x00000005, 0x4a02621d, 0x00000004, | ||
10582 | 0x59a80038, 0x48026206, 0x42000800, 0x8000004b, | ||
10583 | 0x0201f800, 0x00020721, 0x5c000800, 0x1c01f000, | ||
10584 | 0x4933c857, 0x40000000, 0x40000000, 0x1c01f000, | ||
10585 | 0x59300414, 0x4933c857, 0x4803c857, 0x8c000518, | ||
10586 | 0x04000009, 0x8c000512, 0x02020000, 0x0010921e, | ||
10587 | 0x0401f91b, 0x0201f800, 0x000206fd, 0x0201f800, | ||
10588 | 0x0002077d, 0x1c01f000, 0x591c0406, 0x4803c857, | ||
10589 | 0x82000c80, 0x00000009, 0x0402100b, 0x0c01f001, | ||
10590 | 0x0010a4d9, 0x0010a4d9, 0x0010a4d9, 0x0010a4db, | ||
10591 | 0x0010a4d9, 0x0010a4db, 0x0010a4db, 0x0010a4d9, | ||
10592 | 0x0010a4db, 0x80000580, 0x1c01f000, 0x82000540, | ||
10593 | 0x00000001, 0x1c01f000, 0x591c0406, 0x82000500, | ||
10594 | 0x0000001f, 0x82000580, 0x00000006, 0x0400000e, | ||
10595 | 0x4803c857, 0x4a026403, 0x0000003b, 0x4a02641a, | ||
10596 | 0x00000009, 0x4a02621a, 0x00002a00, 0x4a026203, | ||
10597 | 0x00000001, 0x42000800, 0x80000040, 0x0201f000, | ||
10598 | 0x00020721, 0x4803c856, 0x4c040000, 0x4c140000, | ||
10599 | 0x4d300000, 0x411e6000, 0x0401f8e9, 0x497a6205, | ||
10600 | 0x59300414, 0x4803c857, 0x82000500, 0xffffadff, | ||
10601 | 0x48026414, 0x497a6405, 0x5c026000, 0x0201f800, | ||
10602 | 0x001007e4, 0x02000800, 0x001005d8, 0x5c002800, | ||
10603 | 0x5c000800, 0x4a025a04, 0x0000010d, 0x497a5800, | ||
10604 | 0x497a5c04, 0x4a025a08, 0x00000045, 0x491e5809, | ||
10605 | 0x59300402, 0x48025c07, 0x59300419, 0x48025c0b, | ||
10606 | 0x591c0414, 0x84000556, 0x48023c14, 0x591c1809, | ||
10607 | 0x580c0403, 0x48025a06, 0x4816580a, 0x48065a0b, | ||
10608 | 0x0401f99d, 0x4d400000, 0x42028000, 0x00000045, | ||
10609 | 0x591c0202, 0x4c000000, 0x4d300000, 0x411e6000, | ||
10610 | 0x0401fcb1, 0x5c026000, 0x5c000000, 0x48023a02, | ||
10611 | 0x5c028000, 0x4a023c06, 0x00000006, 0x4a023a03, | ||
10612 | 0x00000007, 0x497a3a06, 0x497a3a05, 0x1c01f000, | ||
10613 | 0x4933c857, 0x83380580, 0x00000013, 0x0402000b, | ||
10614 | 0x59300403, 0x4803c857, 0x82000d80, 0x00000085, | ||
10615 | 0x0400002b, 0x82000d80, 0x0000008b, 0x04000028, | ||
10616 | 0x0201f800, 0x001005d8, 0x83380580, 0x00000027, | ||
10617 | 0x0402000c, 0x0201f800, 0x00106bbf, 0x4d2c0000, | ||
10618 | 0x4d400000, 0x59325808, 0x42028000, 0x00000004, | ||
10619 | 0x0401feab, 0x5c028000, 0x5c025800, 0x1c01f000, | ||
10620 | 0x83380580, 0x00000014, 0x040007f3, 0x83380580, | ||
10621 | 0x00000089, 0x04000005, 0x83380580, 0x0000008a, | ||
10622 | 0x02020000, 0x00107974, 0x0201f800, 0x00106f60, | ||
10623 | 0x02020000, 0x00107974, 0x59300a03, 0x82040580, | ||
10624 | 0x0000000a, 0x04000009, 0x82040580, 0x0000000c, | ||
10625 | 0x04000006, 0x0201f800, 0x001005d8, 0x4a026203, | ||
10626 | 0x0000000a, 0x1c01f000, 0x83380480, 0x00000093, | ||
10627 | 0x0402100c, 0x83380480, 0x00000085, 0x04001009, | ||
10628 | 0x83380580, 0x00000089, 0x0400000a, 0x83380580, | ||
10629 | 0x0000008a, 0x04000022, 0x0201f800, 0x001005d8, | ||
10630 | 0x493bc857, 0x4933c857, 0x0201f000, 0x00107974, | ||
10631 | 0x4933c857, 0x4c340000, 0x41306800, 0x0201f800, | ||
10632 | 0x0002075a, 0x04000011, 0x4a026203, 0x00000001, | ||
10633 | 0x4a026403, 0x0000001e, 0x59cc0c07, 0x48066419, | ||
10634 | 0x59cc0a07, 0x48066219, 0x58340809, 0x48066009, | ||
10635 | 0x4a026406, 0x00000004, 0x42000800, 0x80000040, | ||
10636 | 0x0201f800, 0x00020721, 0x40366000, 0x0201f800, | ||
10637 | 0x0002077d, 0x5c006800, 0x1c01f000, 0x4933c857, | ||
10638 | 0x0201f000, 0x0002077d, 0x4933c857, 0x59300809, | ||
10639 | 0x58040200, 0x8c00051a, 0x1c01f000, 0x0201f800, | ||
10640 | 0x001048df, 0x0400001e, 0x4a026203, 0x00000002, | ||
10641 | 0x59300414, 0x84000558, 0x48026414, 0x8c000512, | ||
10642 | 0x04000004, 0x59a80039, 0x48026205, 0x0401f007, | ||
10643 | 0x59a80839, 0x59a80037, 0x80040400, 0x82000400, | ||
10644 | 0x0000000a, 0x48026205, 0x59300009, 0x82000c00, | ||
10645 | 0x00000011, 0x50040000, 0x80000540, 0x04000004, | ||
10646 | 0x82000c00, 0x00000000, 0x0401f7fb, 0x45300800, | ||
10647 | 0x497a6000, 0x82000540, 0x00000001, 0x1c01f000, | ||
10648 | 0x82100500, 0xfffffeef, 0x04020020, 0x4d2c0000, | ||
10649 | 0x4937c857, 0x59340811, 0x83341400, 0x00000011, | ||
10650 | 0x800409c0, 0x0400000e, 0x40040000, 0x81300580, | ||
10651 | 0x04000005, 0x58040800, 0x82041400, 0x00000000, | ||
10652 | 0x0401f7f8, 0x59300800, 0x497a6000, 0x44041000, | ||
10653 | 0x0201f800, 0x000206fd, 0x0401f002, 0x4933c857, | ||
10654 | 0x592c0000, 0x80000540, 0x02020800, 0x001005d8, | ||
10655 | 0x5c025800, 0x492e6008, 0x0201f800, 0x000206fd, | ||
10656 | 0x0201f000, 0x0002077d, 0x492fc857, 0x4a025a06, | ||
10657 | 0x00000006, 0x0201f000, 0x000202da, 0x4c340000, | ||
10658 | 0x59300009, 0x800001c0, 0x04000010, 0x82006c00, | ||
10659 | 0x00000011, 0x50340000, 0x80000540, 0x04000009, | ||
10660 | 0x81300580, 0x04000005, 0x50340000, 0x82006c00, | ||
10661 | 0x00000000, 0x0401f7f8, 0x59300000, 0x44006800, | ||
10662 | 0x5c006800, 0x1c01f000, 0x59300c06, 0x82040580, | ||
10663 | 0x00000005, 0x040007fb, 0x82040580, 0x00000011, | ||
10664 | 0x040007f8, 0x82040580, 0x00000006, 0x040007f5, | ||
10665 | 0x82040580, 0x00000001, 0x040007f2, 0x0201f800, | ||
10666 | 0x001005d8, 0x4933c857, 0x4c080000, 0x4c0c0000, | ||
10667 | 0x4c580000, 0x59a8101d, 0x59cc1807, 0x820c1d00, | ||
10668 | 0x00ffffff, 0x800c0110, 0x80083580, 0x04020014, | ||
10669 | 0x83cc1400, 0x00000008, 0x4200b000, 0x00000002, | ||
10670 | 0x59300009, 0x82001c00, 0x00000006, 0x0201f800, | ||
10671 | 0x0010855a, 0x0402000a, 0x83cc1400, 0x0000000a, | ||
10672 | 0x4200b000, 0x00000002, 0x59300009, 0x82001c00, | ||
10673 | 0x00000008, 0x0201f800, 0x0010855a, 0x5c00b000, | ||
10674 | 0x5c001800, 0x5c001000, 0x1c01f000, 0x4933c856, | ||
10675 | 0x0201f800, 0x0010421b, 0x0201f000, 0x00101e45, | ||
10676 | 0x493bc857, 0x4d2c0000, 0x0201f800, 0x001007e4, | ||
10677 | 0x02000800, 0x001005d8, 0x832cac00, 0x00000005, | ||
10678 | 0x4c580000, 0x4c540000, 0x4200b000, 0x00000006, | ||
10679 | 0x4578a800, 0x8054a800, 0x8058b040, 0x040207fd, | ||
10680 | 0x83380580, 0x00000046, 0x04020004, 0x4a025a04, | ||
10681 | 0x00000144, 0x0401f008, 0x4a025a04, 0x00000146, | ||
10682 | 0x83380580, 0x00000041, 0x04000003, 0x4a025a06, | ||
10683 | 0x00000001, 0x59cc0007, 0x82000500, 0xff000000, | ||
10684 | 0x80000110, 0x59cc1008, 0x82081500, 0xff000000, | ||
10685 | 0x80081540, 0x480a580a, 0x83380580, 0x00000046, | ||
10686 | 0x04020006, 0x59cc0007, 0x82000500, 0x00ffffff, | ||
10687 | 0x4802580b, 0x0401f005, 0x59cc0008, 0x82000500, | ||
10688 | 0x00ffffff, 0x4802580b, 0x83380580, 0x00000046, | ||
10689 | 0x04020004, 0x83cc1400, 0x00000009, 0x0401f003, | ||
10690 | 0x83cc1400, 0x0000000d, 0x50080000, 0x9c0001c0, | ||
10691 | 0x4802580c, 0x80081000, 0x50080000, 0x9c0001c0, | ||
10692 | 0x4802580d, 0x83380580, 0x00000046, 0x04020008, | ||
10693 | 0x59cc000b, 0x9c0001c0, 0x4802580e, 0x59cc000c, | ||
10694 | 0x9c0001c0, 0x4802580f, 0x0401f007, 0x59cc000f, | ||
10695 | 0x9c0001c0, 0x4802580e, 0x59cc0010, 0x9c0001c0, | ||
10696 | 0x4802580f, 0x83380580, 0x00000046, 0x04020004, | ||
10697 | 0x83cc1400, 0x00000011, 0x0401f003, 0x83cc1400, | ||
10698 | 0x00000015, 0x412c3000, 0x82183400, 0x00000010, | ||
10699 | 0x4200b000, 0x00000004, 0x50080000, 0x9c0001c0, | ||
10700 | 0x44003000, 0x80081000, 0x80183000, 0x8058b040, | ||
10701 | 0x040207fa, 0x5c00a800, 0x5c00b000, 0x0201f800, | ||
10702 | 0x000202da, 0x5c025800, 0x1c01f000, 0x4933c857, | ||
10703 | 0x492fc857, 0x59300809, 0x58040200, 0x8c00051e, | ||
10704 | 0x04000004, 0x592c0208, 0x84000558, 0x48025a08, | ||
10705 | 0x1c01f000, 0x59e0180f, 0x599c0413, 0x800c1000, | ||
10706 | 0x80080580, 0x04020002, 0x41781000, 0x59e00010, | ||
10707 | 0x59e00810, 0x80040d80, 0x040207fd, 0x80080580, | ||
10708 | 0x0400000b, 0x4c080000, 0x599c0814, 0x599c1015, | ||
10709 | 0x800c00cc, 0x80040c00, 0x82081440, 0x00000000, | ||
10710 | 0x5c001800, 0x82000540, 0x00000001, 0x4803c857, | ||
10711 | 0x1c01f000, 0x492fc857, 0x42007000, 0x0010b7f8, | ||
10712 | 0x58380807, 0x800409c0, 0x04020005, 0x492c7008, | ||
10713 | 0x492c7007, 0x0201f000, 0x00100875, 0x492c0800, | ||
10714 | 0x492c7007, 0x1c01f000, 0x59300203, 0x4933c857, | ||
10715 | 0x4937c857, 0x493bc857, 0x4803c857, 0x82003480, | ||
10716 | 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f001, | ||
10717 | 0x0010a6da, 0x0010a82c, 0x0010a6da, 0x0010a6da, | ||
10718 | 0x0010a6da, 0x0010a6da, 0x0010a6da, 0x0010a791, | ||
10719 | 0x0010a6dc, 0x0010a6da, 0x0010a6da, 0x0010a6da, | ||
10720 | 0x0010a6da, 0x0010a6da, 0x0201f800, 0x001005d8, | ||
10721 | 0x83380580, 0x0000004c, 0x02020800, 0x001005d8, | ||
10722 | 0x0201f800, 0x001048ec, 0x04020020, 0x59a80826, | ||
10723 | 0x82040500, 0x00000009, 0x82000580, 0x00000008, | ||
10724 | 0x0400001a, 0x8c040d12, 0x0400003d, 0x59cc0806, | ||
10725 | 0x82040d00, 0xff000000, 0x82040580, 0x03000000, | ||
10726 | 0x0400001f, 0x82040580, 0x50000000, 0x04000005, | ||
10727 | 0x82040580, 0x52000000, 0x02020000, 0x0002077d, | ||
10728 | 0x813669c0, 0x04000006, 0x4d3c0000, 0x417a7800, | ||
10729 | 0x0201f800, 0x0010203c, 0x5c027800, 0x4a026403, | ||
10730 | 0x00000001, 0x0401f014, 0x59cc0806, 0x82040d00, | ||
10731 | 0xff000000, 0x82040580, 0x03000000, 0x04000008, | ||
10732 | 0x82040580, 0x50000000, 0x04000005, 0x82040580, | ||
10733 | 0x52000000, 0x02020000, 0x0002077d, 0x4a026403, | ||
10734 | 0x00000009, 0x4a02641a, 0x00000009, 0x4a02621a, | ||
10735 | 0x00000000, 0x813669c0, 0x0402000b, 0x59cc0001, | ||
10736 | 0x0201f800, 0x00105c9a, 0x02020000, 0x0002077d, | ||
10737 | 0x0201f800, 0x001045a6, 0x02020000, 0x0002077d, | ||
10738 | 0x49366009, 0x4a026406, 0x00000004, 0x4a026203, | ||
10739 | 0x00000001, 0x0201f000, 0x0010672b, 0x0201f800, | ||
10740 | 0x00103b25, 0x04000023, 0x59cc0806, 0x4807c857, | ||
10741 | 0x82040d00, 0xff000000, 0x82040580, 0x03000000, | ||
10742 | 0x04000033, 0x82040580, 0x20000000, 0x04000041, | ||
10743 | 0x82040580, 0x21000000, 0x04000052, 0x82040580, | ||
10744 | 0x24000000, 0x0400004f, 0x82040580, 0x50000000, | ||
10745 | 0x0400004c, 0x82040580, 0x52000000, 0x04000049, | ||
10746 | 0x82040580, 0x05000000, 0x0402000d, 0x59cc0806, | ||
10747 | 0x82040d00, 0xff000000, 0x9c0431c0, 0x42028000, | ||
10748 | 0x00000046, 0x42002800, 0x00000001, 0x0401fcf3, | ||
10749 | 0x0401f93c, 0x02000800, 0x001005d8, 0x42002000, | ||
10750 | 0x00000051, 0x0201f800, 0x00107a4a, 0x59cc0000, | ||
10751 | 0x82000500, 0x00ffffff, 0x82000580, 0x00ffffff, | ||
10752 | 0x04000005, 0x4a026203, 0x00000007, 0x493a6403, | ||
10753 | 0x1c01f000, 0x59325817, 0x812e59c0, 0x02020800, | ||
10754 | 0x001007fd, 0x0201f000, 0x0002077d, 0x813669c0, | ||
10755 | 0x040007df, 0x59340400, 0x82000500, 0x000000ff, | ||
10756 | 0x82000580, 0x00000003, 0x040207d9, 0x0401fc6f, | ||
10757 | 0x040207d7, 0x4a026403, 0x00000009, 0x4a02641a, | ||
10758 | 0x0000000e, 0x4a02621a, 0x00001900, 0x0401f7a2, | ||
10759 | 0x813669c0, 0x0400000c, 0x59340c00, 0x82040500, | ||
10760 | 0x000000ff, 0x82000580, 0x00000009, 0x04000794, | ||
10761 | 0x82040500, 0x0000ff00, 0x82000580, 0x00000700, | ||
10762 | 0x040207c3, 0x4a026403, 0x00000009, 0x4a02641a, | ||
10763 | 0x00000009, 0x4a02621a, 0x00001e00, 0x0401f78e, | ||
10764 | 0x813669c0, 0x040007f8, 0x59340c00, 0x82040500, | ||
10765 | 0x0000ff00, 0x82000580, 0x00000700, 0x040007f2, | ||
10766 | 0x0401f7b3, 0x4d2c0000, 0x4c580000, 0x4c500000, | ||
10767 | 0x4c540000, 0x41385000, 0x83380580, 0x00000054, | ||
10768 | 0x02020800, 0x001005d8, 0x59325808, 0x592c0c0b, | ||
10769 | 0x82040d00, 0x0000e000, 0x82040580, 0x00002000, | ||
10770 | 0x04020076, 0x59300817, 0x800409c0, 0x04000014, | ||
10771 | 0x58041404, 0x41cca800, 0x8204a400, 0x00000005, | ||
10772 | 0x82080480, 0x00000010, 0x04021004, 0x4008b000, | ||
10773 | 0x0401fb6b, 0x0401f00a, 0x40001000, 0x4200b000, | ||
10774 | 0x0000000f, 0x0401fb66, 0x58040801, 0x800409c0, | ||
10775 | 0x040207f2, 0x0201f800, 0x001005d8, 0x813669c0, | ||
10776 | 0x0400005e, 0x59344c00, 0x592c0c09, 0x4807c857, | ||
10777 | 0x4827c857, 0x82040d00, 0x000000ff, 0x82040580, | ||
10778 | 0x00000003, 0x0400002a, 0x82040580, 0x00000005, | ||
10779 | 0x04000032, 0x82040580, 0x00000020, 0x04000036, | ||
10780 | 0x82040580, 0x00000052, 0x04000042, 0x82040580, | ||
10781 | 0x00000050, 0x04000042, 0x82040580, 0x00000021, | ||
10782 | 0x04000004, 0x82040580, 0x00000024, 0x04020043, | ||
10783 | 0x82240500, 0x0000ff00, 0x82000580, 0x00000007, | ||
10784 | 0x04000008, 0x42000800, 0x00000009, 0x0201f800, | ||
10785 | 0x00104571, 0x42005000, 0x0000000c, 0x0401f037, | ||
10786 | 0x4a025a06, 0x00000031, 0x4a02580d, 0x00000009, | ||
10787 | 0x59340400, 0x4802580e, 0x0201f800, 0x000202da, | ||
10788 | 0x0201f800, 0x00107911, 0x0401f03d, 0x0201f800, | ||
10789 | 0x001042b4, 0x0201f800, 0x0010462a, 0x42000800, | ||
10790 | 0x00000003, 0x0201f800, 0x00104571, 0x42005000, | ||
10791 | 0x00000008, 0x0401f021, 0x59cc0007, 0x0201f800, | ||
10792 | 0x00105eec, 0x0402001d, 0x0201f800, 0x001042b4, | ||
10793 | 0x0401f01a, 0x82240500, 0x0000ff00, 0x82000580, | ||
10794 | 0x00000007, 0x040007df, 0x82240500, 0x000000ff, | ||
10795 | 0x82000580, 0x00000009, 0x040007da, 0x0201f800, | ||
10796 | 0x0010468d, 0x42005000, 0x0000000a, 0x0401f00b, | ||
10797 | 0x42005000, 0x0000000e, 0x0401f003, 0x42005000, | ||
10798 | 0x00000010, 0x82240500, 0x0000ff00, 0x82000580, | ||
10799 | 0x00000007, 0x040007cb, 0x482a6403, 0x4a026203, | ||
10800 | 0x00000001, 0x592c000d, 0x48026011, 0x497a6013, | ||
10801 | 0x59a80038, 0x48026206, 0x417a7800, 0x0201f800, | ||
10802 | 0x0010672b, 0x59325817, 0x812e59c0, 0x04000004, | ||
10803 | 0x0201f800, 0x001007fd, 0x497a6017, 0x5c00a800, | ||
10804 | 0x5c00a000, 0x5c00b000, 0x5c025800, 0x1c01f000, | ||
10805 | 0x4d2c0000, 0x59325808, 0x83380580, 0x00000013, | ||
10806 | 0x04020029, 0x59300c03, 0x82040580, 0x00000054, | ||
10807 | 0x0400001e, 0x82040580, 0x00000010, 0x04000018, | ||
10808 | 0x82040580, 0x0000000e, 0x04000015, 0x82040580, | ||
10809 | 0x00000008, 0x0400000d, 0x82040580, 0x0000000c, | ||
10810 | 0x0400000a, 0x82040580, 0x0000000a, 0x02020800, | ||
10811 | 0x001005d8, 0x42000800, 0x00000006, 0x0201f800, | ||
10812 | 0x00104571, 0x0401f009, 0x42000800, 0x00000004, | ||
10813 | 0x0201f800, 0x00104571, 0x0401f004, 0x59340200, | ||
10814 | 0x8400051a, 0x48026a00, 0x4a025a06, 0x00000000, | ||
10815 | 0x0201f800, 0x000202da, 0x0201f800, 0x0002077d, | ||
10816 | 0x0401f022, 0x83380580, 0x00000027, 0x0400000e, | ||
10817 | 0x83380580, 0x00000014, 0x02020800, 0x001005d8, | ||
10818 | 0x0201f800, 0x00106bbf, 0x42028000, 0x00000031, | ||
10819 | 0x42000800, 0x00000004, 0x42001000, 0x000000ff, | ||
10820 | 0x0401f009, 0x0201f800, 0x00106bbf, 0x42028000, | ||
10821 | 0x00000031, 0x42000800, 0x00000004, 0x42001000, | ||
10822 | 0x00000010, 0x49425a06, 0x4806580d, 0x480a580e, | ||
10823 | 0x0201f800, 0x000202da, 0x0201f800, 0x00104c19, | ||
10824 | 0x0201f800, 0x00107911, 0x5c025800, 0x1c01f000, | ||
10825 | 0x42007000, 0x0010b7f8, 0x58380807, 0x800409c0, | ||
10826 | 0x04020005, 0x492c7008, 0x492c7007, 0x0201f000, | ||
10827 | 0x00100875, 0x492c0800, 0x492c7007, 0x1c01f000, | ||
10828 | 0x4d2c0000, 0x4c580000, 0x4c500000, 0x4c540000, | ||
10829 | 0x4933c857, 0x4937c857, 0x59cc0806, 0x4807c857, | ||
10830 | 0x82040d00, 0xff000000, 0x82040580, 0x03000000, | ||
10831 | 0x0400000d, 0x82040580, 0x05000000, 0x0400000a, | ||
10832 | 0x82040580, 0x21000000, 0x04000030, 0x82040580, | ||
10833 | 0x24000000, 0x0400002d, 0x82040580, 0x20000000, | ||
10834 | 0x0402002f, 0x0201f800, 0x001007e4, 0x0400002c, | ||
10835 | 0x492fc857, 0x492e6017, 0x59a8b016, 0x8258b400, | ||
10836 | 0x0000001b, 0x8258b500, 0xfffffffc, 0x8058b104, | ||
10837 | 0x485a5c04, 0x412c7800, 0x41cca000, 0x82580480, | ||
10838 | 0x00000010, 0x04021005, 0x832cac00, 0x00000005, | ||
10839 | 0x0401fa63, 0x0401f015, 0x40580800, 0x4200b000, | ||
10840 | 0x0000000f, 0x832cac00, 0x00000005, 0x0401fa5c, | ||
10841 | 0x8204b480, 0x0000000f, 0x0201f800, 0x001007e4, | ||
10842 | 0x04000004, 0x492c7801, 0x412c7800, 0x0401f7ec, | ||
10843 | 0x59325817, 0x0201f800, 0x001007fd, 0x497a6017, | ||
10844 | 0x80000580, 0x0401f006, 0x59340200, 0x84000554, | ||
10845 | 0x48026a00, 0x82000540, 0x00000001, 0x5c00a800, | ||
10846 | 0x5c00a000, 0x5c00b000, 0x5c025800, 0x1c01f000, | ||
10847 | 0x4933c857, 0x492fc857, 0x4d2c0000, 0x59300a03, | ||
10848 | 0x82040580, 0x00000007, 0x04000036, 0x82040580, | ||
10849 | 0x00000001, 0x02020800, 0x001005d8, 0x0201f800, | ||
10850 | 0x00106c55, 0x4df00000, 0x598c000d, 0x81300580, | ||
10851 | 0x04020016, 0x59300004, 0x8c000520, 0x04000004, | ||
10852 | 0x84000520, 0x48026004, 0x0401f016, 0x42001000, | ||
10853 | 0x0010b7f6, 0x50081000, 0x58080002, 0x82000580, | ||
10854 | 0x00000100, 0x04000006, 0x5808000c, 0x81300580, | ||
10855 | 0x02020800, 0x001005d8, 0x0401f00a, 0x0201f800, | ||
10856 | 0x00106e8e, 0x04020020, 0x59300004, 0x8c000520, | ||
10857 | 0x04000004, 0x84000520, 0x48026004, 0x0401f003, | ||
10858 | 0x0201f800, 0x001068d3, 0x5c03e000, 0x02000800, | ||
10859 | 0x00106c4b, 0x0201f800, 0x00109037, 0x02000800, | ||
10860 | 0x001005d8, 0x59325808, 0x4a025a06, 0x00000005, | ||
10861 | 0x0201f800, 0x000202da, 0x0201f800, 0x00104c19, | ||
10862 | 0x59325817, 0x812e59c0, 0x02020800, 0x001007fd, | ||
10863 | 0x0201f800, 0x00107911, 0x80000580, 0x5c025800, | ||
10864 | 0x1c01f000, 0x5c03e000, 0x02000800, 0x00106c4b, | ||
10865 | 0x59300406, 0x82000580, 0x00000011, 0x040007b8, | ||
10866 | 0x0401f7f7, 0x4c040000, 0x59340200, 0x4803c857, | ||
10867 | 0x8c00051c, 0x04000009, 0x59cc0805, 0x591c0019, | ||
10868 | 0x4803c857, 0x80040580, 0x04000004, 0x80000580, | ||
10869 | 0x4803c856, 0x0401f003, 0x82000540, 0x00000001, | ||
10870 | 0x5c000800, 0x1c01f000, 0x4c000000, 0x4c0c0000, | ||
10871 | 0x4c100000, 0x42001800, 0x0000ffff, 0x42002000, | ||
10872 | 0x00000004, 0x0401f010, 0x4c000000, 0x4c0c0000, | ||
10873 | 0x4c100000, 0x59302009, 0x58101c03, 0x42002000, | ||
10874 | 0x00000004, 0x0401f008, 0x4c000000, 0x4c0c0000, | ||
10875 | 0x4c100000, 0x59302009, 0x58101c03, 0x42002000, | ||
10876 | 0x00000007, 0x480fc857, 0x4813c857, 0x481bc857, | ||
10877 | 0x0201f800, 0x00103aae, 0x5c002000, 0x5c001800, | ||
10878 | 0x5c000000, 0x1c01f000, 0x83380580, 0x00000092, | ||
10879 | 0x02020800, 0x001005d8, 0x42000800, 0x80000040, | ||
10880 | 0x4a026203, 0x00000001, 0x493a6403, 0x0201f000, | ||
10881 | 0x00020721, 0x4d400000, 0x0201f800, 0x00103b25, | ||
10882 | 0x04000008, 0x59a80005, 0x84000544, 0x48035005, | ||
10883 | 0x42028000, 0x0000002a, 0x0201f800, 0x0010a449, | ||
10884 | 0x5c028000, 0x1c01f000, 0x59a80026, 0x8c000508, | ||
10885 | 0x04000005, 0x599c0017, 0x8c00050a, 0x04020002, | ||
10886 | 0x1c01f000, 0x82000540, 0x00000001, 0x1c01f000, | ||
10887 | 0x59300420, 0x84000540, 0x48026420, 0x1c01f000, | ||
10888 | 0x4817c857, 0x4c000000, 0x4c040000, 0x8c142d2a, | ||
10889 | 0x04000004, 0x598800b8, 0x80000000, 0x480310b8, | ||
10890 | 0x8c142d2e, 0x04000004, 0x598800b9, 0x80000000, | ||
10891 | 0x480310b9, 0x8c142d2c, 0x04000013, 0x40140000, | ||
10892 | 0x82000500, 0x00070000, 0x82000d80, 0x00030000, | ||
10893 | 0x0400000d, 0x82000d80, 0x00040000, 0x0400000a, | ||
10894 | 0x82000d80, 0x00050000, 0x04000007, 0x59880005, | ||
10895 | 0x80000000, 0x48031005, 0x598800ba, 0x80000000, | ||
10896 | 0x480310ba, 0x5c000800, 0x5c000000, 0x1c01f000, | ||
10897 | 0x4817c857, 0x4c000000, 0x4c040000, 0x8c142d2a, | ||
10898 | 0x04000004, 0x598800bb, 0x80000000, 0x480310bb, | ||
10899 | 0x8c142d2e, 0x04000004, 0x598800bc, 0x80000000, | ||
10900 | 0x480310bc, 0x8c142d2c, 0x04000013, 0x40140000, | ||
10901 | 0x82000500, 0x00070000, 0x82000d80, 0x00030000, | ||
10902 | 0x0400000d, 0x82000d80, 0x00040000, 0x0400000a, | ||
10903 | 0x82000d80, 0x00050000, 0x04000007, 0x59880005, | ||
10904 | 0x80000000, 0x48031005, 0x598800bd, 0x80000000, | ||
10905 | 0x480310bd, 0x5c000800, 0x5c000000, 0x1c01f000, | ||
10906 | 0x4c000000, 0x59880001, 0x80000000, 0x4803c857, | ||
10907 | 0x48031001, 0x5c000000, 0x1c01f000, 0x4c000000, | ||
10908 | 0x59880000, 0x80000000, 0x4803c857, 0x48031000, | ||
10909 | 0x5c000000, 0x1c01f000, 0x4c000000, 0x59880002, | ||
10910 | 0x80000000, 0x4803c857, 0x48031002, 0x5c000000, | ||
10911 | 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040d2c, | ||
10912 | 0x04000004, 0x598800a6, 0x80000000, 0x480310a6, | ||
10913 | 0x8c040d2a, 0x04000004, 0x598800a7, 0x80000000, | ||
10914 | 0x480310a7, 0x8c040d28, 0x04000004, 0x598800a8, | ||
10915 | 0x80000000, 0x480310a8, 0x8c040d26, 0x04000004, | ||
10916 | 0x598800a9, 0x80000000, 0x480310a9, 0x8c040d24, | ||
10917 | 0x04000004, 0x598800aa, 0x80000000, 0x480310aa, | ||
10918 | 0x8c040d22, 0x04000004, 0x598800ab, 0x80000000, | ||
10919 | 0x480310ab, 0x8c040d20, 0x04000004, 0x598800ac, | ||
10920 | 0x80000000, 0x480310ac, 0x5c000000, 0x1c01f000, | ||
10921 | 0x4807c857, 0x4c000000, 0x598800ad, 0x80000000, | ||
10922 | 0x480310ad, 0x5c000000, 0x1c01f000, 0x4807c857, | ||
10923 | 0x4c000000, 0x8c040d1c, 0x04000004, 0x598800ae, | ||
10924 | 0x80000000, 0x480310ae, 0x8c040d1a, 0x04000004, | ||
10925 | 0x598800af, 0x80000000, 0x480310af, 0x5c000000, | ||
10926 | 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040d18, | ||
10927 | 0x04000004, 0x598800b0, 0x80000000, 0x480310b0, | ||
10928 | 0x8c040d16, 0x04000004, 0x598800b1, 0x80000000, | ||
10929 | 0x480310b1, 0x8c040d14, 0x04000004, 0x598800b2, | ||
10930 | 0x80000000, 0x480310b2, 0x5c000000, 0x1c01f000, | ||
10931 | 0x4807c857, 0x4c000000, 0x8c040d10, 0x04000004, | ||
10932 | 0x598800b3, 0x80000000, 0x480310b3, 0x8c040d0c, | ||
10933 | 0x04000004, 0x598800b4, 0x80000000, 0x480310b4, | ||
10934 | 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, | ||
10935 | 0x8c040d08, 0x04000004, 0x598800b5, 0x80000000, | ||
10936 | 0x480310b5, 0x8c040d04, 0x04000004, 0x598800b6, | ||
10937 | 0x80000000, 0x480310b6, 0x5c000000, 0x1c01f000, | ||
10938 | 0x4807c856, 0x4c000000, 0x5988007f, 0x80000000, | ||
10939 | 0x4803107f, 0x5c000000, 0x1c01f000, 0x4803c857, | ||
10940 | 0x4c040000, 0x50000800, 0x80040800, 0x4807c857, | ||
10941 | 0x44040000, 0x5c000800, 0x1c01f000, 0x480fc857, | ||
10942 | 0x4c000000, 0x820c0580, 0x00000000, 0x04020004, | ||
10943 | 0x42000000, 0x0010b819, 0x0401f014, 0x820c0580, | ||
10944 | 0x00001001, 0x04020004, 0x42000000, 0x0010b81a, | ||
10945 | 0x0401f00e, 0x820c0580, 0x00001002, 0x04020004, | ||
10946 | 0x42000000, 0x0010b81b, 0x0401f008, 0x820c0c80, | ||
10947 | 0x0000201c, 0x02021800, 0x001005d8, 0x820c0500, | ||
10948 | 0x0000001f, 0x0c01f804, 0x0401ffdd, 0x5c000000, | ||
10949 | 0x1c01f000, 0x0010aa89, 0x0010aa8c, 0x0010aa8f, | ||
10950 | 0x0010aa92, 0x0010aa95, 0x0010aa98, 0x0010aa9b, | ||
10951 | 0x0010aa9e, 0x0010aaa1, 0x0010aaa4, 0x0010aaa7, | ||
10952 | 0x0010aaaa, 0x0010aaad, 0x0010aab0, 0x0010aab3, | ||
10953 | 0x0010aab6, 0x0010aab9, 0x0010aabc, 0x0010aabf, | ||
10954 | 0x0010aac2, 0x0010aac5, 0x0010aac8, 0x0010aacb, | ||
10955 | 0x0010aace, 0x0010aad1, 0x0010aad4, 0x0010aad7, | ||
10956 | 0x0010aada, 0x42000000, 0x0010b81c, 0x1c01f000, | ||
10957 | 0x42000000, 0x0010b81d, 0x1c01f000, 0x42000000, | ||
10958 | 0x0010b81e, 0x1c01f000, 0x42000000, 0x0010b81f, | ||
10959 | 0x1c01f000, 0x42000000, 0x0010b820, 0x1c01f000, | ||
10960 | 0x42000000, 0x0010b821, 0x1c01f000, 0x42000000, | ||
10961 | 0x0010b822, 0x1c01f000, 0x42000000, 0x0010b823, | ||
10962 | 0x1c01f000, 0x42000000, 0x0010b824, 0x1c01f000, | ||
10963 | 0x42000000, 0x0010b825, 0x1c01f000, 0x42000000, | ||
10964 | 0x0010b826, 0x1c01f000, 0x42000000, 0x0010b827, | ||
10965 | 0x1c01f000, 0x42000000, 0x0010b828, 0x1c01f000, | ||
10966 | 0x42000000, 0x0010b829, 0x1c01f000, 0x42000000, | ||
10967 | 0x0010b82a, 0x1c01f000, 0x42000000, 0x0010b82b, | ||
10968 | 0x1c01f000, 0x42000000, 0x0010b82c, 0x1c01f000, | ||
10969 | 0x42000000, 0x0010b82d, 0x1c01f000, 0x42000000, | ||
10970 | 0x0010b82e, 0x1c01f000, 0x42000000, 0x0010b82f, | ||
10971 | 0x1c01f000, 0x42000000, 0x0010b830, 0x1c01f000, | ||
10972 | 0x42000000, 0x0010b831, 0x1c01f000, 0x42000000, | ||
10973 | 0x0010b832, 0x1c01f000, 0x42000000, 0x0010b833, | ||
10974 | 0x1c01f000, 0x42000000, 0x0010b834, 0x1c01f000, | ||
10975 | 0x42000000, 0x0010b835, 0x1c01f000, 0x42000000, | ||
10976 | 0x0010b836, 0x1c01f000, 0x42000000, 0x0010b837, | ||
10977 | 0x1c01f000, 0x480fc857, 0x4c000000, 0x820c0580, | ||
10978 | 0x00000001, 0x04020004, 0x42000000, 0x0010b80e, | ||
10979 | 0x0401f012, 0x820c0580, 0x00000002, 0x04020004, | ||
10980 | 0x42000000, 0x0010b80f, 0x0401f00c, 0x820c0580, | ||
10981 | 0x00000003, 0x04020004, 0x42000000, 0x0010b810, | ||
10982 | 0x0401f006, 0x820c0580, 0x00000004, 0x04020004, | ||
10983 | 0x42000000, 0x0010b811, 0x0401ff51, 0x5c000000, | ||
10984 | 0x1c01f000, 0x4c000000, 0x59a80026, 0x4803c857, | ||
10985 | 0x8c000502, 0x04000010, 0x8c000506, 0x04000004, | ||
10986 | 0x42000000, 0x0010b841, 0x0401f012, 0x8c00050a, | ||
10987 | 0x04000004, 0x42000000, 0x0010b840, 0x0401f00d, | ||
10988 | 0x8c000508, 0x04000004, 0x42000000, 0x0010b843, | ||
10989 | 0x0401f008, 0x0201f800, 0x0010513b, 0x04000006, | ||
10990 | 0x8c000506, 0x04020004, 0x42000000, 0x0010b842, | ||
10991 | 0x0401ff33, 0x5c000000, 0x1c01f000, 0x8058b1c0, | ||
10992 | 0x02000800, 0x001005d8, 0x5450a800, 0x8050a000, | ||
10993 | 0x8054a800, 0x8058b040, 0x040207fc, 0x1c01f000, | ||
10994 | 0x8058b1c0, 0x02000800, 0x001005d8, 0x4450a800, | ||
10995 | 0x8054a800, 0x8058b040, 0x040207fd, 0x1c01f000, | ||
10996 | 0x8058b1c0, 0x02000800, 0x001005d8, 0x50500000, | ||
10997 | 0x9c0001c0, 0x4400a800, 0x8050a000, 0x8054a800, | ||
10998 | 0x8058b040, 0x040207fa, 0x1c01f000, 0x4c000000, | ||
10999 | 0x59a80008, 0x8c00051c, 0x5c000000, 0x1c01f000, | ||
11000 | 0x00000001, 0x00000002, 0x00000004, 0x00000008, | ||
11001 | 0x00000010, 0x00000020, 0x00000040, 0x00000080, | ||
11002 | 0x00000100, 0x00000200, 0x00000400, 0x00000800, | ||
11003 | 0x00001000, 0x00002000, 0x00004000, 0x00008000, | ||
11004 | 0x00010000, 0xa5f2b3ac | ||
11005 | }; | ||
11006 | |||
11007 | #ifdef UNIQUE_FW_NAME | ||
11008 | uint32_t fw2400_length01 = 0x0000ab4a ; | ||
11009 | #else | ||
11010 | uint32_t risc_code_length01 = 0x0000ab4a ; | ||
11011 | #endif | ||
11012 | |||
11013 | |||
11014 | #ifdef UNIQUE_FW_NAME | ||
11015 | uint32_t fw2400_addr02 = 0x0010e000 ; | ||
11016 | #else | ||
11017 | uint32_t risc_code_addr02 = 0x0010e000 ; | ||
11018 | #endif | ||
11019 | |||
11020 | #ifdef UNIQUE_FW_NAME | ||
11021 | uint32_t fw2400_code02[] = { | ||
11022 | #else | ||
11023 | uint32_t risc_code02[] = { | ||
11024 | #endif | ||
11025 | 0x00000000, 0x00000000, 0x0010e000, 0x000014ff, | ||
11026 | 0x00000000, 0x00000000, 0x00020000, 0x000008c0, | ||
11027 | 0x836c0580, 0x00000003, 0x02020000, 0x001002e3, | ||
11028 | 0x42000000, 0x0010b4bb, 0x50000000, 0x800001c0, | ||
11029 | 0x04020956, 0x0401f923, 0x0401fbe3, 0x0401fb5c, | ||
11030 | 0x0201f800, 0x00020718, 0x0201f800, 0x0002057b, | ||
11031 | 0x0401f7f0, 0x59b800ea, 0x82000d00, 0xf0000038, | ||
11032 | 0x02020000, 0x00100a7a, 0x8c000510, 0x02000000, | ||
11033 | 0x00100a79, 0x59ba60e0, 0x81300182, 0x0402104e, | ||
11034 | 0x04002030, 0x8532653e, 0x59300406, 0x82000580, | ||
11035 | 0x00000003, 0x04020028, 0x59300203, 0x82000580, | ||
11036 | 0x00000004, 0x04020024, 0x59325808, 0x59300402, | ||
11037 | 0x4a025a04, 0x00000103, 0x900001c0, 0x48025806, | ||
11038 | 0x497a5807, 0x497a5c09, 0x5930001f, 0x80000540, | ||
11039 | 0x02020800, 0x00100d56, 0x59300004, 0x8c00053e, | ||
11040 | 0x04020010, 0x0401fa88, 0x59326809, 0x0201f800, | ||
11041 | 0x0002077d, 0x5934000f, 0x5934140b, 0x80081040, | ||
11042 | 0x04001002, 0x480a6c0b, 0x80000540, 0x04020a10, | ||
11043 | 0x59b800ea, 0x8c000510, 0x040207d7, 0x1c01f000, | ||
11044 | 0x0201f800, 0x00106f60, 0x040007ef, 0x0201f000, | ||
11045 | 0x00100a65, 0x42027000, 0x00000055, 0x0401f027, | ||
11046 | 0x83326500, 0x3fffffff, 0x59300406, 0x82000580, | ||
11047 | 0x00000003, 0x04020015, 0x59325808, 0x59326809, | ||
11048 | 0x59301402, 0x4a025a04, 0x00000103, 0x900811c0, | ||
11049 | 0x480a5806, 0x497a5c09, 0x497a5807, 0x0401fa62, | ||
11050 | 0x0201f800, 0x0002077d, 0x5934000f, 0x5934140b, | ||
11051 | 0x80081040, 0x04001002, 0x480a6c0b, 0x80000540, | ||
11052 | 0x040209eb, 0x0401f7db, 0x42027000, 0x00000054, | ||
11053 | 0x0401f00a, 0x83300500, 0x60000000, 0x02000000, | ||
11054 | 0x00100a68, 0x81326580, 0x8000013a, 0x82000400, | ||
11055 | 0x00100a80, 0x50027000, 0x59300c06, 0x82040580, | ||
11056 | 0x00000002, 0x02000000, 0x00100a65, 0x59300004, | ||
11057 | 0x8c00053e, 0x04020004, 0x0201f800, 0x000207a1, | ||
11058 | 0x0401f7c4, 0x0201f800, 0x00106f60, 0x040007fb, | ||
11059 | 0x0201f000, 0x00100a65, 0x59325808, 0x412c7000, | ||
11060 | 0x58380a04, 0x82040500, 0x0000000f, 0x82000c00, | ||
11061 | 0x001010bd, 0x50044000, 0x0c01f001, 0x00100dd9, | ||
11062 | 0x00100dd9, 0x0002009f, 0x00100dd9, 0x00100dd9, | ||
11063 | 0x00100dd9, 0x00100dd9, 0x00100dd9, 0x000200af, | ||
11064 | 0x00100ded, 0x00100dd9, 0x00100dd9, 0x00100ddb, | ||
11065 | 0x00100dd9, 0x00100dd9, 0x00100dd9, 0x5838040a, | ||
11066 | 0x8c000500, 0x02000800, 0x001005d8, 0x50200000, | ||
11067 | 0x80387c00, 0x583c1002, 0x583c2800, 0x583c2001, | ||
11068 | 0x58380a07, 0x5838300f, 0x59303807, 0x58384c08, | ||
11069 | 0x5838000d, 0x48026012, 0x0401f010, 0x5838020a, | ||
11070 | 0x8c000502, 0x02000000, 0x00100dd9, 0x50200000, | ||
11071 | 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002, | ||
11072 | 0x592c0a07, 0x592c4c08, 0x592c300f, 0x59303807, | ||
11073 | 0x497a6012, 0x497a6013, 0x4816600e, 0x4812600f, | ||
11074 | 0x480a6010, 0x481a6011, 0x80040840, 0x4806600d, | ||
11075 | 0x02020000, 0x00100e1a, 0x841c3d40, 0x481e6007, | ||
11076 | 0x1c01f000, 0x41787800, 0x59325808, 0x592c0c0a, | ||
11077 | 0x8c040d02, 0x02000000, 0x00100f8c, 0x592c000d, | ||
11078 | 0x592c100f, 0x592c0a04, 0x480a6011, 0x48026012, | ||
11079 | 0x48026013, 0x412c3000, 0x82040500, 0x0000000f, | ||
11080 | 0x82000400, 0x001010bd, 0x50003800, 0x501c0000, | ||
11081 | 0x401c1000, 0x592c1a07, 0x4802600a, 0x481a600b, | ||
11082 | 0x480a600c, 0x480e600d, 0x843c7d4a, 0x403c1000, | ||
11083 | 0x1c01f000, 0x41787800, 0x497a6012, 0x592c0a04, | ||
11084 | 0x412c3000, 0x592c1a07, 0x82040500, 0x0000000f, | ||
11085 | 0x82000400, 0x001010bd, 0x50004000, 0x50200000, | ||
11086 | 0x40201000, 0x4802600a, 0x481a600b, 0x480a600c, | ||
11087 | 0x480e600d, 0x80000580, 0x483e6004, 0x1c01f000, | ||
11088 | 0x4c000000, 0x4df00000, 0x0201f800, 0x00020729, | ||
11089 | 0x0401f005, 0x4c000000, 0x4df00000, 0x0401ff16, | ||
11090 | 0x0401f001, 0x5c03e000, 0x5c000000, 0x1801f000, | ||
11091 | 0x4203e000, 0xb0100000, 0x41fc0000, 0x82000500, | ||
11092 | 0x00000011, 0x0c01f001, 0x0002012a, 0x00020697, | ||
11093 | 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a, | ||
11094 | 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a, | ||
11095 | 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a, | ||
11096 | 0x0002012a, 0x0002012a, 0x0010115a, 0x0002012c, | ||
11097 | 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a, | ||
11098 | 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a, | ||
11099 | 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a, | ||
11100 | 0x0002012a, 0x0002012a, 0x0201f800, 0x001005d8, | ||
11101 | 0x0201f800, 0x00020697, 0x0201f000, 0x0010115a, | ||
11102 | 0x42000000, 0x0010b4c1, 0x50000000, 0x8c000504, | ||
11103 | 0x04000014, 0x42000000, 0x0010b4c1, 0x50000000, | ||
11104 | 0x8c000502, 0x04020002, 0x1c01f000, 0x4df00000, | ||
11105 | 0x4203e000, 0x50000000, 0x42034000, 0x0010b4a4, | ||
11106 | 0x59a0001d, 0x59a1d81e, 0x84000502, 0x4803401d, | ||
11107 | 0x58ec0009, 0x0801f800, 0x5c03e000, 0x1c01f000, | ||
11108 | 0x04027002, 0x04026002, 0x1c01f000, 0x4df00000, | ||
11109 | 0x4203e000, 0x50000000, 0x0201f800, 0x001007e4, | ||
11110 | 0x04000010, 0x412dd800, 0x48efc857, 0x0201f800, | ||
11111 | 0x00103b28, 0x42034000, 0x0010b4a4, 0x49a1d80b, | ||
11112 | 0x48ef401e, 0x59a0001d, 0x84000544, 0x4803401d, | ||
11113 | 0x0201f800, 0x00102214, 0x0201f800, 0x00102233, | ||
11114 | 0x5c03e000, 0x1c01f000, 0x4da00000, 0x4df00000, | ||
11115 | 0x4203e000, 0x50000000, 0x04006051, 0x40001000, | ||
11116 | 0x42034000, 0x0010b4a4, 0x59a01818, 0x800c19c0, | ||
11117 | 0x04020008, 0x59a0381b, 0x801c39c0, 0x02000800, | ||
11118 | 0x001005d8, 0x59a0041c, 0x801c3c00, 0x0401f00c, | ||
11119 | 0x59a00419, 0x82000400, 0x00000002, 0x48034419, | ||
11120 | 0x82000c80, 0x00000013, 0x04001003, 0x497b4419, | ||
11121 | 0x41780000, 0x59a03816, 0x801c3c00, 0x80081040, | ||
11122 | 0x480b4017, 0x581c0200, 0x4803c021, 0x581c0401, | ||
11123 | 0x4803c022, 0x581c0201, 0x4803c023, 0x581c0400, | ||
11124 | 0x4803c020, 0x900001c0, 0x82000540, 0x00000012, | ||
11125 | 0x4803c011, 0x59e00017, 0x8c000508, 0x04000003, | ||
11126 | 0x4a03c017, 0x00000002, 0x4203e000, 0x30000001, | ||
11127 | 0x800c19c0, 0x04000007, 0x800c1840, 0x480f4018, | ||
11128 | 0x0402001f, 0x497b4419, 0x497b4219, 0x0401f01c, | ||
11129 | 0x800811c0, 0x0402000b, 0x4d2c0000, 0x59a2581b, | ||
11130 | 0x0201f800, 0x001007f4, 0x5c025800, 0x497b401b, | ||
11131 | 0x497b401a, 0x497b441c, 0x497b421c, 0x0401f010, | ||
11132 | 0x59a0041c, 0x82000400, 0x00000002, 0x82000c80, | ||
11133 | 0x00000012, 0x4803441c, 0x04001009, 0x4d2c0000, | ||
11134 | 0x59a2581b, 0x592c3813, 0x481f401b, 0x497b441c, | ||
11135 | 0x0201f800, 0x001007f4, 0x5c025800, 0x5c03e000, | ||
11136 | 0x5c034000, 0x1c01f000, 0x59a80005, 0x82000500, | ||
11137 | 0x00000003, 0x02020000, 0x00104315, 0x59340400, | ||
11138 | 0x82000580, 0x00000606, 0x02020000, 0x001042e6, | ||
11139 | 0x5934000d, 0x80027d40, 0x02020000, 0x00104321, | ||
11140 | 0x0401f803, 0x80000580, 0x1c01f000, 0x5934000f, | ||
11141 | 0x59341203, 0x80080540, 0x0402006f, 0x5934020b, | ||
11142 | 0x5934140b, 0x80080480, 0x0402106b, 0x0201f800, | ||
11143 | 0x0002075a, 0x04000064, 0x80081000, 0x592c0406, | ||
11144 | 0x480a6c0b, 0x49366009, 0x492e6008, 0x4a026406, | ||
11145 | 0x00000003, 0x4a026403, 0x00000040, 0x800000c2, | ||
11146 | 0x800018c4, 0x800c0400, 0x48026206, 0x592c0808, | ||
11147 | 0x592c1809, 0x592c020a, 0x48066017, 0x480e6018, | ||
11148 | 0x8c000502, 0x04000030, 0x4a026203, 0x00000004, | ||
11149 | 0x592c0207, 0x80000040, 0x04020020, 0x59a80005, | ||
11150 | 0x8c000514, 0x42000000, 0x00000055, 0x04020003, | ||
11151 | 0x42000000, 0x00000033, 0x80000040, 0x040207ff, | ||
11152 | 0x592c0204, 0x82000500, 0x000000ff, 0x82000580, | ||
11153 | 0x00000018, 0x04020011, 0x592c180f, 0x59300007, | ||
11154 | 0x82000540, 0x00000091, 0x480e6011, 0x48026007, | ||
11155 | 0x42000000, 0x80000004, 0x48026004, 0x59bc00ea, | ||
11156 | 0x8c000516, 0x040207fe, 0x83300400, 0x20000000, | ||
11157 | 0x480378e1, 0x1c01f000, 0x0401fe78, 0x59300007, | ||
11158 | 0x8400054e, 0x48026007, 0x592c1a04, 0x820c1d00, | ||
11159 | 0x000000ff, 0x820c0580, 0x00000048, 0x04000017, | ||
11160 | 0x0401f7ec, 0x8c000500, 0x04020ecb, 0x4a026203, | ||
11161 | 0x00000002, 0x59a80805, 0x82040500, 0x00000600, | ||
11162 | 0x04020012, 0x42000000, 0x00000030, 0x80000040, | ||
11163 | 0x040207ff, 0x592c1a04, 0x820c1d00, 0x000000ff, | ||
11164 | 0x820c0580, 0x00000018, 0x040007da, 0x820c0580, | ||
11165 | 0x00000048, 0x040207d7, 0x42000800, 0x80000804, | ||
11166 | 0x0201f000, 0x00106721, 0x8c040d12, 0x42000000, | ||
11167 | 0x00000010, 0x040207ee, 0x42000000, 0x00000051, | ||
11168 | 0x0401f7eb, 0x800811c0, 0x04020003, 0x4a026a03, | ||
11169 | 0x00000001, 0x59340010, 0x492e6810, 0x80000d40, | ||
11170 | 0x04020003, 0x492e680f, 0x1c01f000, 0x492c0800, | ||
11171 | 0x1c01f000, 0x83440c80, 0x00000800, 0x04021009, | ||
11172 | 0x83440400, 0x0010ac00, 0x50000000, 0x80000540, | ||
11173 | 0x04000004, 0x40026800, 0x80000580, 0x1c01f000, | ||
11174 | 0x82000540, 0x00000001, 0x1c01f000, 0x59340203, | ||
11175 | 0x80000540, 0x0402004b, 0x4d300000, 0x4d2c0000, | ||
11176 | 0x5934000f, 0x80025d40, 0x04000044, 0x0201f800, | ||
11177 | 0x0002075a, 0x0400003f, 0x592c0000, 0x4802680f, | ||
11178 | 0x80000540, 0x04020002, 0x48026810, 0x592c2a04, | ||
11179 | 0x80081000, 0x480a6c0b, 0x49366009, 0x492e6008, | ||
11180 | 0x82142d00, 0x000000ff, 0x82140580, 0x00000012, | ||
11181 | 0x04000035, 0x4a026406, 0x00000003, 0x4a026403, | ||
11182 | 0x00000040, 0x592c0406, 0x800000c2, 0x800018c4, | ||
11183 | 0x800c0400, 0x48026206, 0x592c0808, 0x592c1809, | ||
11184 | 0x592c020a, 0x48066017, 0x480e6018, 0x8c000502, | ||
11185 | 0x02000000, 0x0010474d, 0x4a026203, 0x00000004, | ||
11186 | 0x592c0207, 0x80000040, 0x02020000, 0x00104740, | ||
11187 | 0x82140580, 0x00000018, 0x02020000, 0x00104740, | ||
11188 | 0x592c180f, 0x59300007, 0x82000540, 0x00000091, | ||
11189 | 0x480e6011, 0x48026007, 0x42000000, 0x80000004, | ||
11190 | 0x48026004, 0x59bc00ea, 0x8c000516, 0x040207fe, | ||
11191 | 0x83300400, 0x20000000, 0x480378e1, 0x5934020b, | ||
11192 | 0x5934140b, 0x80080480, 0x040017be, 0x0401f003, | ||
11193 | 0x4a026a03, 0x00000001, 0x5c025800, 0x5c026000, | ||
11194 | 0x1c01f000, 0x497a5800, 0x49325809, 0x4a026406, | ||
11195 | 0x00000006, 0x4a026203, 0x00000007, 0x0401f802, | ||
11196 | 0x0401f7ef, 0x59a80021, 0x800001c0, 0x02020000, | ||
11197 | 0x0010476f, 0x59a80005, 0x8c000504, 0x02020000, | ||
11198 | 0x0010476b, 0x59340200, 0x8c000518, 0x02020000, | ||
11199 | 0x00104767, 0x592c0a0c, 0x48066202, 0x4a025a06, | ||
11200 | 0x00000000, 0x8c000508, 0x02020000, 0x00104763, | ||
11201 | 0x4d3c0000, 0x417a7800, 0x0401fbdf, 0x5c027800, | ||
11202 | 0x1c01f000, 0x592c0404, 0x8c00051e, 0x02020000, | ||
11203 | 0x00104ce4, 0x59980022, 0x80000540, 0x04000017, | ||
11204 | 0x592c0a06, 0x592c0409, 0x80040540, 0x04020013, | ||
11205 | 0x0201f000, 0x00104cfa, 0x592c0404, 0x8c00051e, | ||
11206 | 0x02020000, 0x00104cf3, 0x59980022, 0x80000540, | ||
11207 | 0x0400000a, 0x82040580, 0x00000001, 0x04020007, | ||
11208 | 0x0201f000, 0x00104cfa, 0x592c0404, 0x8c00051e, | ||
11209 | 0x02020000, 0x00104dca, 0x59980026, 0x497a5800, | ||
11210 | 0x80000540, 0x02020000, 0x00104e1d, 0x59d80105, | ||
11211 | 0x82000d00, 0x00018780, 0x02020000, 0x00104edb, | ||
11212 | 0x80000106, 0x82000500, 0x00000003, 0x0c01f001, | ||
11213 | 0x000202f0, 0x00104e1d, 0x000202f6, 0x00020341, | ||
11214 | 0x592c0001, 0x492fb107, 0x80000d40, 0x02020000, | ||
11215 | 0x00104ddb, 0x1c01f000, 0x592c0001, 0x492fb107, | ||
11216 | 0x80000d40, 0x02020000, 0x00104de8, 0x59da5908, | ||
11217 | 0x835c0480, 0x00000020, 0x0400102c, 0x0402b034, | ||
11218 | 0x492fb007, 0x0400e7fa, 0x59d80105, 0x82000500, | ||
11219 | 0x00018780, 0x02020000, 0x00104edb, 0x0400601f, | ||
11220 | 0x59d8010a, 0x59d8090a, 0x80040580, 0x040207fd, | ||
11221 | 0x800408e0, 0x599c1017, 0x8c081508, 0x04020028, | ||
11222 | 0x82040d40, 0x00000013, 0x5998002b, 0x4807c011, | ||
11223 | 0x84000500, 0x4803302b, 0x59e00017, 0x8c000508, | ||
11224 | 0x04020004, 0x4203e000, 0x30000001, 0x1c01f000, | ||
11225 | 0x4a03c017, 0x00000003, 0x82040500, 0x000000ff, | ||
11226 | 0x82000580, 0x0000001d, 0x040207f7, 0x4a03c017, | ||
11227 | 0x0000000d, 0x0401f7f4, 0x5998082b, 0x84040d40, | ||
11228 | 0x4807302b, 0x1c01f000, 0x496a5800, 0x412ed000, | ||
11229 | 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, | ||
11230 | 0x48039000, 0x0400e7ca, 0x0401f7d0, 0x0402f7f7, | ||
11231 | 0x492fa807, 0x0400e7c6, 0x0401f7cc, 0x59e0000f, | ||
11232 | 0x59e0100f, 0x80081580, 0x040207fd, 0x81281580, | ||
11233 | 0x040007d4, 0x40025000, 0x82040d40, 0x0000001d, | ||
11234 | 0x0401f7d2, 0x59d80908, 0x45680800, 0x4006d000, | ||
11235 | 0x815eb800, 0x0400e7fc, 0x59c80000, 0x82000540, | ||
11236 | 0x00001200, 0x48039000, 0x02006000, 0x00104df8, | ||
11237 | 0x59d8010a, 0x59d8090a, 0x80040d80, 0x040207fd, | ||
11238 | 0x900001c0, 0x82000540, 0x00000013, 0x4803c011, | ||
11239 | 0x5998002b, 0x84000500, 0x4803302b, 0x59e00017, | ||
11240 | 0x8c000508, 0x04000003, 0x4a03c017, 0x00000003, | ||
11241 | 0x4203e000, 0x30000001, 0x59d80105, 0x82000500, | ||
11242 | 0x00018780, 0x02020000, 0x00104edb, 0x0202d000, | ||
11243 | 0x00104dfd, 0x592c0001, 0x492fb107, 0x80000d40, | ||
11244 | 0x02020000, 0x00104e10, 0x1c01f000, 0x59980020, | ||
11245 | 0x0c01f001, 0x00020370, 0x00020371, 0x00104e88, | ||
11246 | 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, | ||
11247 | 0x0402681e, 0x04006004, 0x599c0017, 0x8c000508, | ||
11248 | 0x04020865, 0x59980029, 0x80025d40, 0x0400000a, | ||
11249 | 0x0402d00b, 0x59980026, 0x80000040, 0x48033026, | ||
11250 | 0x592c0000, 0x492fb107, 0x48033029, 0x04020002, | ||
11251 | 0x48033028, 0x5c03e000, 0x1c01f000, 0x59d80105, | ||
11252 | 0x82000500, 0x00018780, 0x02020000, 0x00104edb, | ||
11253 | 0x42000000, 0x0010b855, 0x0201f800, 0x0010aa47, | ||
11254 | 0x5c03e000, 0x1c01f000, 0x5998002b, 0x8c000500, | ||
11255 | 0x0402003b, 0x0400e007, 0x59d80105, 0x82000500, | ||
11256 | 0x00018780, 0x02020000, 0x00104edb, 0x1c01f000, | ||
11257 | 0x59da5908, 0x835c0c80, 0x00000020, 0x04001003, | ||
11258 | 0x0400b029, 0x0400f02b, 0x496a5800, 0x412ed000, | ||
11259 | 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, | ||
11260 | 0x48039000, 0x0400e7f3, 0x59d8010a, 0x59d8090a, | ||
11261 | 0x80040580, 0x040207fd, 0x800408e0, 0x599c1017, | ||
11262 | 0x8c081508, 0x04020022, 0x82040d40, 0x00000013, | ||
11263 | 0x4807c011, 0x59e00017, 0x8c000508, 0x0400000a, | ||
11264 | 0x4a03c017, 0x00000003, 0x82040500, 0x000000ff, | ||
11265 | 0x82000580, 0x0000001d, 0x04020003, 0x4a03c017, | ||
11266 | 0x0000000d, 0x4203e000, 0x30000001, 0x59d80105, | ||
11267 | 0x82000500, 0x00018780, 0x02020000, 0x00104edb, | ||
11268 | 0x1c01f000, 0x492fb007, 0x0400e7d2, 0x0401f7df, | ||
11269 | 0x492fa807, 0x0400e7cf, 0x0401f7dc, 0x84000500, | ||
11270 | 0x4803302b, 0x0400e7cb, 0x0401f7d8, 0x59e0000f, | ||
11271 | 0x59e0100f, 0x80081580, 0x040207fd, 0x81281580, | ||
11272 | 0x040007da, 0x40025000, 0x82040d40, 0x0000001d, | ||
11273 | 0x0401f7d8, 0x59e0000f, 0x59e0100f, 0x80080d80, | ||
11274 | 0x040207fd, 0x81280580, 0x04020002, 0x1c01f000, | ||
11275 | 0x400a5000, 0x900811c0, 0x82081540, 0x0000001c, | ||
11276 | 0x480bc011, 0x59e00017, 0x8c000508, 0x04000003, | ||
11277 | 0x4a03c017, 0x0000000c, 0x4203e000, 0x30000001, | ||
11278 | 0x1c01f000, 0x41700000, 0x0c01f001, 0x00105420, | ||
11279 | 0x000203fc, 0x00105420, 0x00105421, 0x0010541e, | ||
11280 | 0x0010541e, 0x0010541e, 0x0010541e, 0x001058b0, | ||
11281 | 0x04010037, 0x59980006, 0x80000540, 0x0402003c, | ||
11282 | 0x0402c01c, 0x4202f800, 0x00000010, 0x4df00000, | ||
11283 | 0x4203e000, 0x50000000, 0x49db3005, 0x59da5808, | ||
11284 | 0x592c0204, 0x497a5800, 0x497a5801, 0x82000500, | ||
11285 | 0x000000ff, 0x82000c80, 0x00000079, 0x04021036, | ||
11286 | 0x0c01f839, 0x5c03e000, 0x817ef840, 0x04000009, | ||
11287 | 0x836c0580, 0x00000003, 0x04020006, 0x83700580, | ||
11288 | 0x00000001, 0x04020010, 0x0401001b, 0x0400c7e8, | ||
11289 | 0x0400f94a, 0x0400b134, 0x59d40005, 0x82000500, | ||
11290 | 0x43018780, 0x02020000, 0x0010583f, 0x59d80005, | ||
11291 | 0x82000500, 0x43018780, 0x02020000, 0x00105846, | ||
11292 | 0x1c01f000, 0x83700580, 0x00000003, 0x02000800, | ||
11293 | 0x00105421, 0x83700580, 0x00000001, 0x040207ed, | ||
11294 | 0x04010005, 0x0400c7d2, 0x0401f7ea, 0x4202f800, | ||
11295 | 0x00000010, 0x4df00000, 0x4203e000, 0x50000000, | ||
11296 | 0x49d73005, 0x59d65808, 0x0401f7ce, 0x4df00000, | ||
11297 | 0x4203e000, 0x50000000, 0x40025800, 0x592c0204, | ||
11298 | 0x497b3005, 0x497b3006, 0x4202f800, 0x00000010, | ||
11299 | 0x0401f7c7, 0x0201f800, 0x00105491, 0x5c03e000, | ||
11300 | 0x0401f7d4, 0x00105491, 0x00105491, 0x00105491, | ||
11301 | 0x00105491, 0x00105527, 0x00105491, 0x00105491, | ||
11302 | 0x00105491, 0x00105491, 0x00105491, 0x001054a1, | ||
11303 | 0x00105491, 0x00105491, 0x00105491, 0x00105551, | ||
11304 | 0x00105491, 0x00105491, 0x00105491, 0x000204ef, | ||
11305 | 0x00105491, 0x001056b4, 0x00105491, 0x00105491, | ||
11306 | 0x00105491, 0x000204c2, 0x00105491, 0x00105491, | ||
11307 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11308 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11309 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11310 | 0x00105491, 0x00105491, 0x001054c9, 0x00105491, | ||
11311 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11312 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11313 | 0x001057d3, 0x00105491, 0x00105491, 0x00105491, | ||
11314 | 0x00105491, 0x00105491, 0x0010581e, 0x00105491, | ||
11315 | 0x001054bb, 0x00105491, 0x00105797, 0x00105491, | ||
11316 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11317 | 0x00105491, 0x00105491, 0x00105765, 0x00105491, | ||
11318 | 0x00105765, 0x00105872, 0x00105491, 0x00105491, | ||
11319 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11320 | 0x00105491, 0x00105491, 0x00105491, 0x00105725, | ||
11321 | 0x00105855, 0x00105491, 0x00105865, 0x00105491, | ||
11322 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11323 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11324 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11325 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11326 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11327 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11328 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11329 | 0x00105491, 0x00105491, 0x00105491, 0x00105491, | ||
11330 | 0x00105491, 0x00105491, 0x592c0204, 0x80000110, | ||
11331 | 0x02000000, 0x00105499, 0x80000040, 0x04000009, | ||
11332 | 0x48033002, 0x492f3003, 0x492f3004, 0x4a033008, | ||
11333 | 0x000204d0, 0x4202e000, 0x00000003, 0x1c01f000, | ||
11334 | 0x592c0406, 0x82000c80, 0x0000199a, 0x02021000, | ||
11335 | 0x001054a9, 0x59a80021, 0x80000540, 0x02020000, | ||
11336 | 0x001054d7, 0x592e8a06, 0x83440c80, 0x000007f0, | ||
11337 | 0x02021000, 0x001054a9, 0x83440400, 0x0010ac00, | ||
11338 | 0x50000000, 0x80026d40, 0x02000000, 0x001054db, | ||
11339 | 0x59340002, 0x592c0810, 0x80040580, 0x82000500, | ||
11340 | 0x00ffffff, 0x02020000, 0x001054a9, 0x0401fccf, | ||
11341 | 0x02020000, 0x001054de, 0x1c01f000, 0x592c0204, | ||
11342 | 0x80000110, 0x02000000, 0x00105499, 0x80000040, | ||
11343 | 0x0402000b, 0x592c040a, 0x8c000504, 0x04000010, | ||
11344 | 0x592c0207, 0x82000c80, 0x00001001, 0x02021000, | ||
11345 | 0x001054a9, 0x0201f000, 0x0010588a, 0x48033002, | ||
11346 | 0x492f3003, 0x492f3004, 0x4a033008, 0x00020507, | ||
11347 | 0x4202e000, 0x00000003, 0x1c01f000, 0x592c0406, | ||
11348 | 0x82000c80, 0x0000199a, 0x02021000, 0x001054a9, | ||
11349 | 0x592e8a06, 0x417a7800, 0x0401fd37, 0x02020000, | ||
11350 | 0x00105658, 0x59340002, 0x592c0808, 0x80040580, | ||
11351 | 0x82000500, 0x00ffffff, 0x02020000, 0x001054a9, | ||
11352 | 0x497a5808, 0x592e6009, 0x83300580, 0xffffffff, | ||
11353 | 0x02000000, 0x00105618, 0x83300480, 0x0010d1c0, | ||
11354 | 0x02001000, 0x00105675, 0x59a8000b, 0x81300480, | ||
11355 | 0x02021000, 0x00105675, 0x592c240a, 0x49366009, | ||
11356 | 0x8c10251c, 0x02020000, 0x00105606, 0x59a80068, | ||
11357 | 0x8c000510, 0x02020000, 0x0010568e, 0x59a80821, | ||
11358 | 0x800409c0, 0x02020000, 0x001055ec, 0x59a80805, | ||
11359 | 0x8c040d04, 0x02020000, 0x0010567f, 0x59340200, | ||
11360 | 0x8c000518, 0x02020000, 0x00105670, 0x59300c06, | ||
11361 | 0x82040580, 0x00000006, 0x02020000, 0x00105610, | ||
11362 | 0x59300414, 0x8c000516, 0x02020000, 0x0010567a, | ||
11363 | 0x8c102508, 0x02020000, 0x0010a5b8, 0x59300808, | ||
11364 | 0x4a025a06, 0x00000000, 0x800409c0, 0x02020000, | ||
11365 | 0x001055e7, 0x592c0a0c, 0x48066202, 0x492e6008, | ||
11366 | 0x0401f14d, 0x4df00000, 0x4203e000, 0x50000000, | ||
11367 | 0x0402b00b, 0x835c0480, 0x00000020, 0x0400100d, | ||
11368 | 0x815eb840, 0x416a5800, 0x592ed000, 0x492fb007, | ||
11369 | 0x497a5800, 0x497a5801, 0x0400b7f7, 0x59d80005, | ||
11370 | 0x82000500, 0x43018780, 0x02020000, 0x00105846, | ||
11371 | 0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000, | ||
11372 | 0x50000000, 0x0402f00b, 0x835c0480, 0x00000020, | ||
11373 | 0x0400100d, 0x815eb840, 0x416a5800, 0x592ed000, | ||
11374 | 0x492fa807, 0x497a5800, 0x497a5801, 0x0400f7f7, | ||
11375 | 0x59d40005, 0x82000500, 0x43018780, 0x02020000, | ||
11376 | 0x0010583f, 0x5c03e000, 0x1c01f000, 0x4df00000, | ||
11377 | 0x4203e000, 0x50000000, 0x59940024, 0x80000540, | ||
11378 | 0x04000112, 0x4c000000, 0x42000000, 0x00001000, | ||
11379 | 0x50000000, 0x82000480, 0x24320001, 0x04020015, | ||
11380 | 0x42000800, 0x00000064, 0x80040840, 0x04000007, | ||
11381 | 0x4a030000, 0x00000001, 0x40000000, 0x59800000, | ||
11382 | 0x8c000500, 0x040007f9, 0x04000008, 0x42000800, | ||
11383 | 0x00007a01, 0x50040000, 0x8c000510, 0x04000003, | ||
11384 | 0x84000510, 0x44000800, 0x4a030000, 0x00000000, | ||
11385 | 0x59e00002, 0x8c00051e, 0x0402001b, 0x42000000, | ||
11386 | 0x00001000, 0x50000000, 0x82000480, 0x24320002, | ||
11387 | 0x04020015, 0x42000800, 0x00000064, 0x80040840, | ||
11388 | 0x04000007, 0x4a030000, 0x00000001, 0x40000000, | ||
11389 | 0x59800000, 0x8c000500, 0x040007f9, 0x04000008, | ||
11390 | 0x42000800, 0x00007a17, 0x50040000, 0x8c00050e, | ||
11391 | 0x04020003, 0x8400054e, 0x44000800, 0x4a030000, | ||
11392 | 0x00000000, 0x5c000000, 0x5994781a, 0x48032825, | ||
11393 | 0x803c0480, 0x04001004, 0x04000003, 0x4803281a, | ||
11394 | 0x0401f022, 0x41787800, 0x803c7800, 0x82000400, | ||
11395 | 0x000003e8, 0x040027fd, 0x4803281a, 0x59a80024, | ||
11396 | 0x803c1400, 0x480b5024, 0x803c0040, 0x04000002, | ||
11397 | 0x483fc857, 0x59e40852, 0x59a80025, 0x80040580, | ||
11398 | 0x04000004, 0x480bc857, 0x59e40052, 0x48035025, | ||
11399 | 0x59940026, 0x803c0400, 0x48032826, 0x0201f800, | ||
11400 | 0x00106021, 0x59940000, 0x82000580, 0x00000000, | ||
11401 | 0x04020006, 0x59940026, 0x48032827, 0x497b2826, | ||
11402 | 0x4a032800, 0x00000001, 0x4c0c0000, 0x59940007, | ||
11403 | 0x80000d40, 0x0400001d, 0x59941006, 0x59940025, | ||
11404 | 0x80081c80, 0x04001004, 0x04000003, 0x480f2806, | ||
11405 | 0x0401f016, 0x80040840, 0x48072807, 0x82040580, | ||
11406 | 0x000003e8, 0x04020007, 0x4c040000, 0x4c0c0000, | ||
11407 | 0x59940008, 0x0801f800, 0x5c001800, 0x5c000800, | ||
11408 | 0x800409c0, 0x04020004, 0x59940008, 0x0801f800, | ||
11409 | 0x0401f006, 0x400c0000, 0x820c1c00, 0x0000000a, | ||
11410 | 0x040027ed, 0x480f2806, 0x5c001800, 0x4d180000, | ||
11411 | 0x59c40008, 0x8c000534, 0x04020025, 0x417a3000, | ||
11412 | 0x83947c00, 0x00000009, 0x583c0001, 0x80000d40, | ||
11413 | 0x04020008, 0x823c7c00, 0x00000003, 0x811a3000, | ||
11414 | 0x83180580, 0x00000005, 0x040207f8, 0x0401f018, | ||
11415 | 0x583c1000, 0x59940025, 0x80080480, 0x04001005, | ||
11416 | 0x04000004, 0x48007800, 0x80000040, 0x04021010, | ||
11417 | 0x80040840, 0x48047801, 0x04000008, 0x82000400, | ||
11418 | 0x0000000a, 0x48007800, 0x040027fa, 0x82040500, | ||
11419 | 0x0000007f, 0x0401f7e8, 0x583c0002, 0x4c3c0000, | ||
11420 | 0x0801f800, 0x5c007800, 0x0401f7e3, 0x5c023000, | ||
11421 | 0x59940019, 0x80001540, 0x04000008, 0x04002007, | ||
11422 | 0x59940025, 0x80080480, 0x497b2819, 0x04001003, | ||
11423 | 0x04000002, 0x48032819, 0x59940004, 0x80000d40, | ||
11424 | 0x0400002a, 0x4c040000, 0x5994001c, 0x80000d40, | ||
11425 | 0x04000013, 0x5994101b, 0x59940025, 0x80080480, | ||
11426 | 0x04001005, 0x04000004, 0x4803281b, 0x80000040, | ||
11427 | 0x0402100b, 0x80040840, 0x4807281c, 0x04020004, | ||
11428 | 0x5994001d, 0x0801f800, 0x0401f005, 0x82000400, | ||
11429 | 0x0000000a, 0x4803281b, 0x040027f7, 0x5c000800, | ||
11430 | 0x59941003, 0x59940025, 0x80080480, 0x04001005, | ||
11431 | 0x04000004, 0x48032803, 0x80000040, 0x0402100b, | ||
11432 | 0x80040840, 0x48072804, 0x04020004, 0x59940005, | ||
11433 | 0x0801f800, 0x0401f005, 0x82000400, 0x0000000a, | ||
11434 | 0x48032803, 0x040027f7, 0x5994001f, 0x80000d40, | ||
11435 | 0x04000013, 0x5994101e, 0x59940025, 0x80080480, | ||
11436 | 0x04001005, 0x04000004, 0x4803281e, 0x80000040, | ||
11437 | 0x0402100b, 0x80040840, 0x4807281f, 0x04020004, | ||
11438 | 0x59940020, 0x0801f800, 0x0401f005, 0x82000400, | ||
11439 | 0x00000001, 0x4803281e, 0x040027f7, 0x59940022, | ||
11440 | 0x80000d40, 0x04000013, 0x59941021, 0x59940025, | ||
11441 | 0x80080480, 0x04001005, 0x04000004, 0x48032821, | ||
11442 | 0x80000040, 0x0402100b, 0x80040840, 0x48072822, | ||
11443 | 0x04020004, 0x59940023, 0x0801f800, 0x0401f005, | ||
11444 | 0x82000400, 0x0000000a, 0x48032821, 0x040027f7, | ||
11445 | 0x59940824, 0x59940025, 0x80040480, 0x02001800, | ||
11446 | 0x001005d8, 0x48032824, 0x59940000, 0x0c01f001, | ||
11447 | 0x00105fb5, 0x00105fb7, 0x00105fdd, 0x59940024, | ||
11448 | 0x80000000, 0x48032824, 0x4203e000, 0x70000000, | ||
11449 | 0x1c01f000, 0x592c0406, 0x800000c2, 0x800008c4, | ||
11450 | 0x80040c00, 0x592c040a, 0x48066206, 0x82000d00, | ||
11451 | 0x00000003, 0x02000000, 0x0010615e, 0x8c000500, | ||
11452 | 0x04020029, 0x8c00051e, 0x02000000, 0x00106139, | ||
11453 | 0x82000d00, 0x000000c0, 0x02020000, 0x0010612f, | ||
11454 | 0x82000d00, 0x00002020, 0x02020000, 0x0010612c, | ||
11455 | 0x813e79c0, 0x02020000, 0x0010612c, 0x592c0c0c, | ||
11456 | 0x800409c0, 0x02020000, 0x0010612c, 0x59300a03, | ||
11457 | 0x82040d80, 0x00000007, 0x02020000, 0x0010612c, | ||
11458 | 0x4a026203, 0x00000003, 0x4a026403, 0x00000043, | ||
11459 | 0x0201f800, 0x000200c9, 0x82080d40, 0x80003465, | ||
11460 | 0x48066004, 0x497a6000, 0x59bc00ea, 0x8c000516, | ||
11461 | 0x040207fe, 0x83300400, 0xa0000000, 0x480378e1, | ||
11462 | 0x1c01f000, 0x8c000502, 0x02020000, 0x00106181, | ||
11463 | 0x8c00051e, 0x0400000e, 0x82000d00, 0x000000c0, | ||
11464 | 0x04000005, 0x82040d80, 0x000000c0, 0x02020000, | ||
11465 | 0x00106186, 0x82000d00, 0x00002020, 0x82040d80, | ||
11466 | 0x00002020, 0x02000000, 0x0010614d, 0x592c0207, | ||
11467 | 0x80000040, 0x02020000, 0x00106157, 0x592c180d, | ||
11468 | 0x800c19c0, 0x02020000, 0x00106157, 0x592c180f, | ||
11469 | 0x59300007, 0x82000540, 0x00000011, 0x480e6011, | ||
11470 | 0x48026007, 0x4a026203, 0x00000004, 0x4a026403, | ||
11471 | 0x00000042, 0x42000800, 0x80002001, 0x0401f02a, | ||
11472 | 0x5c000000, 0x4c000000, 0x4803c857, 0x4807c857, | ||
11473 | 0x0401f003, 0x42000800, 0x00000001, 0x59325808, | ||
11474 | 0x832c0500, 0x00ff0000, 0x0400000d, 0x592c0000, | ||
11475 | 0x48065a06, 0x48026008, 0x592c040a, 0x8c000510, | ||
11476 | 0x04020008, 0x0201f800, 0x000202ce, 0x417a7800, | ||
11477 | 0x59300008, 0x80025d40, 0x0402078f, 0x1c01f000, | ||
11478 | 0x456a5800, 0x412ed000, 0x815eb800, 0x59c80000, | ||
11479 | 0x82000540, 0x00001200, 0x48039000, 0x0401f7f4, | ||
11480 | 0x59840000, 0x80000540, 0x04020002, 0x1c01f000, | ||
11481 | 0x59840003, 0x80000540, 0x02020000, 0x001061fe, | ||
11482 | 0x1c01f000, 0x48066004, 0x59bc00ea, 0x8c000516, | ||
11483 | 0x040207fe, 0x83300400, 0x40000000, 0x480378e1, | ||
11484 | 0x1c01f000, 0x59bc00ea, 0x82001500, 0xb0000018, | ||
11485 | 0x02020000, 0x00106c81, 0x8c000510, 0x0400002a, | ||
11486 | 0x59bc10e0, 0x82080500, 0xfffff000, 0x0402000a, | ||
11487 | 0x80080108, 0x820a3500, 0x0000000f, 0x4803c857, | ||
11488 | 0x1201f000, 0x00106c87, 0x84000510, 0x48026004, | ||
11489 | 0x0401f016, 0x840a653e, 0x59300004, 0x8c000520, | ||
11490 | 0x040007fa, 0x82000500, 0xfffefeff, 0x48026004, | ||
11491 | 0x8c08153e, 0x04020005, 0x42027000, 0x00000013, | ||
11492 | 0x0401f859, 0x0401f009, 0x59300004, 0x8c000514, | ||
11493 | 0x04000003, 0x0401ffb0, 0x0401f02f, 0x42027000, | ||
11494 | 0x00000049, 0x0401f850, 0x59bc00ea, 0x82001500, | ||
11495 | 0xb0000018, 0x02020000, 0x00106c81, 0x8c000510, | ||
11496 | 0x040207d8, 0x1c01f000, 0x83640480, 0x00000010, | ||
11497 | 0x0400101a, 0x41626000, 0x41580000, 0x59300a03, | ||
11498 | 0x82040d80, 0x00000000, 0x04000008, 0x83326400, | ||
11499 | 0x00000024, 0x81300c80, 0x040017f9, 0x42026000, | ||
11500 | 0x0010d1c0, 0x0401f7f6, 0x8166c840, 0x83300c00, | ||
11501 | 0x00000024, 0x80040480, 0x04021005, 0x4006c000, | ||
11502 | 0x4a026203, 0x00000008, 0x1c01f000, 0x837ac540, | ||
11503 | 0x0010d1c0, 0x0401f7fb, 0x42000000, 0x0010b854, | ||
11504 | 0x0201f800, 0x0010aa47, 0x4967c857, 0x80026580, | ||
11505 | 0x1c01f000, 0x83300480, 0x0010d1c0, 0x02001800, | ||
11506 | 0x001005d8, 0x41580000, 0x81300480, 0x0402100c, | ||
11507 | 0x04011000, 0x457a6000, 0x4a026202, 0x0000ffff, | ||
11508 | 0x83300400, 0x00000003, 0x4803c840, 0x4a03c842, | ||
11509 | 0x00000021, 0x8166c800, 0x1c01f000, 0x41540000, | ||
11510 | 0x81300480, 0x02021800, 0x001005d8, 0x04011000, | ||
11511 | 0x457a6000, 0x4a026202, 0x0000ffff, 0x83300400, | ||
11512 | 0x00000003, 0x4803c840, 0x4a03c842, 0x00000021, | ||
11513 | 0x59a80066, 0x49335065, 0x80000000, 0x48035066, | ||
11514 | 0x1c01f000, 0x4d340000, 0x59326809, 0x59300406, | ||
11515 | 0x82000500, 0x0000001f, 0x0c01f803, 0x5c026800, | ||
11516 | 0x1c01f000, 0x00107966, 0x00107979, 0x00107993, | ||
11517 | 0x000207c9, 0x001098f1, 0x0010990c, 0x0002083e, | ||
11518 | 0x00107966, 0x00107979, 0x001064ee, 0x001079ac, | ||
11519 | 0x00107966, 0x00107966, 0x00107966, 0x00107966, | ||
11520 | 0x00107966, 0x001095a1, 0x0010a6c2, 0x00107966, | ||
11521 | 0x00107966, 0x00107966, 0x00107966, 0x00107966, | ||
11522 | 0x00107966, 0x00107966, 0x00107966, 0x00107966, | ||
11523 | 0x00107966, 0x00107966, 0x00107966, 0x00107966, | ||
11524 | 0x00107966, 0x59300203, 0x82000c80, 0x0000000e, | ||
11525 | 0x02021800, 0x001005d8, 0x0c01f001, 0x001079aa, | ||
11526 | 0x00108592, 0x000207dd, 0x00108720, 0x001087b9, | ||
11527 | 0x001079aa, 0x001079aa, 0x001079aa, 0x00108577, | ||
11528 | 0x001079aa, 0x001079aa, 0x001079aa, 0x001079aa, | ||
11529 | 0x00108985, 0x83380480, 0x00000058, 0x04021007, | ||
11530 | 0x83380480, 0x00000040, 0x04001004, 0x4d2c0000, | ||
11531 | 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010861b, | ||
11532 | 0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b, | ||
11533 | 0x0010861d, 0x001086bd, 0x0010861b, 0x0010861b, | ||
11534 | 0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b, | ||
11535 | 0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b, | ||
11536 | 0x0010861b, 0x0010861b, 0x001086c1, 0x000207ff, | ||
11537 | 0x0010861b, 0x001086c0, 0x001086c2, 0x59325808, | ||
11538 | 0x59300811, 0x59301402, 0x59340200, 0x8c00050e, | ||
11539 | 0x0402001c, 0x0401f826, 0x04000005, 0x4a025a04, | ||
11540 | 0x00000103, 0x497a5c09, 0x0401f009, 0x4a025a04, | ||
11541 | 0x00000103, 0x4a025a06, 0x00000000, 0x497a5c09, | ||
11542 | 0x800409c0, 0x02020800, 0x00108785, 0x48065807, | ||
11543 | 0x480a5c06, 0x0201f800, 0x000202c1, 0x5934000f, | ||
11544 | 0x5934140b, 0x80081040, 0x04001002, 0x480a6c0b, | ||
11545 | 0x80000540, 0x02020800, 0x00020253, 0x0401f75e, | ||
11546 | 0x592c020a, 0x8c000502, 0x040007e9, 0x800409c0, | ||
11547 | 0x040007e7, 0x592c0208, 0x8c00050e, 0x040207e4, | ||
11548 | 0x4933c857, 0x0201f000, 0x0010920f, 0x592c020a, | ||
11549 | 0x8c000500, 0x04000010, 0x59300015, 0x592c380f, | ||
11550 | 0x801c3c80, 0x0400000c, 0x4a025a06, 0x00000015, | ||
11551 | 0x8c1c3d3e, 0x04000005, 0x4a025a06, 0x00000007, | ||
11552 | 0x801c3880, 0x801c3800, 0x481fc857, 0x821c0d40, | ||
11553 | 0x00000000, 0x1c01f000, 0x59300203, 0x82003480, | ||
11554 | 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f001, | ||
11555 | 0x0010992b, 0x00020852, 0x00109fba, 0x00109fc8, | ||
11556 | 0x0002086e, 0x0010992b, 0x0010a0a8, 0x0002088d, | ||
11557 | 0x0010992b, 0x0010992b, 0x0010992b, 0x0010992b, | ||
11558 | 0x0010992b, 0x0010992b, 0x83380580, 0x00000013, | ||
11559 | 0x02020000, 0x00109f42, 0x59300403, 0x82027480, | ||
11560 | 0x00000044, 0x02021800, 0x001005d8, 0x82000480, | ||
11561 | 0x00000040, 0x02001800, 0x001005d8, 0x0c01f001, | ||
11562 | 0x00109f9e, 0x00020864, 0x00109fa0, 0x00109fb2, | ||
11563 | 0x59325808, 0x832c0500, 0x00ff0000, 0x04000005, | ||
11564 | 0x592c0c0a, 0x8c040d1a, 0x02020000, 0x00109fad, | ||
11565 | 0x0401fe91, 0x0401f710, 0x83380580, 0x00000048, | ||
11566 | 0x04000007, 0x83380580, 0x00000053, 0x02000000, | ||
11567 | 0x0010a04a, 0x0201f800, 0x001005d8, 0x5930001f, | ||
11568 | 0x59301011, 0x59300809, 0x58040a00, 0x8c040d0e, | ||
11569 | 0x02020000, 0x0010a026, 0x800811c0, 0x02020000, | ||
11570 | 0x0010a033, 0x5930001f, 0x80000540, 0x02020000, | ||
11571 | 0x0010a041, 0x59325808, 0x592c040a, 0x8c00051e, | ||
11572 | 0x02000000, 0x0010a01c, 0x42027000, 0x00000041, | ||
11573 | 0x0401f001, 0x83380480, 0x00000054, 0x02021800, | ||
11574 | 0x001005d8, 0x83380480, 0x00000040, 0x02001000, | ||
11575 | 0x0010a067, 0x0c01f001, 0x0010a073, 0x000208aa, | ||
11576 | 0x0010a07f, 0x0010a086, 0x0010a073, 0x0010a073, | ||
11577 | 0x0010a073, 0x0010a073, 0x0010a075, 0x0010a07a, | ||
11578 | 0x0010a07a, 0x0010a073, 0x0010a073, 0x0010a073, | ||
11579 | 0x0010a073, 0x0010a07a, 0x0010a073, 0x0010a07a, | ||
11580 | 0x0010a073, 0x0010a075, 0x4a026203, 0x00000001, | ||
11581 | 0x493a6403, 0x42000800, 0x80002042, 0x0401f672, | ||
11582 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
11583 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
11584 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
11585 | 0x00000000, 0x00000000, 0x00000000, 0x14aa62b1, | ||
11586 | 0x00000000, 0x00000000, 0x00000000, 0x00000005, | ||
11587 | 0xfffffffb, 0x02800004, 0x00000000, 0x0000c000, | ||
11588 | 0x0000071d, 0x073fca5a, 0x0705a5a5, 0x01928009, | ||
11589 | 0x070ff0e1, 0x03800006, 0x04958010, 0x05308000, | ||
11590 | 0x05008000, 0x0600902f, 0x04a004dc, 0x0202f051, | ||
11591 | 0x042e4020, 0x018f021b, 0x033e5000, 0x03020000, | ||
11592 | 0x078d0018, 0x0493041a, 0x0092041c, 0x038a0305, | ||
11593 | 0x078b0303, 0x048e8010, 0x0678aae5, 0x06000001, | ||
11594 | 0x07818174, 0x040010e6, 0x0448e0e6, 0x04818010, | ||
11595 | 0x002fb008, 0x0448e0e6, 0x04818010, 0x060ff0e6, | ||
11596 | 0x00580401, 0x054880ff, 0x04818010, 0x022a5001, | ||
11597 | 0x030430d4, 0x06780043, 0x030e0000, 0x030450ff, | ||
11598 | 0x06780043, 0x03019000, 0x058185c6, 0x027c0045, | ||
11599 | 0x03020000, 0x06810037, 0x027c0045, 0x03040000, | ||
11600 | 0x068100c7, 0x027c0045, 0x03080000, 0x0781061e, | ||
11601 | 0x04908037, 0x029105c4, 0x010410a6, 0x0379ff41, | ||
11602 | 0x037fffff, 0x072d6000, 0x07601241, 0x050f80ff, | ||
11603 | 0x032fa009, 0x05600400, 0x050f80ff, 0x056c04ff, | ||
11604 | 0x068105dc, 0x073fa009, 0x06000001, 0x0279ff02, | ||
11605 | 0x0700ffff, 0x070ff0d1, 0x0179feff, 0x0700ffff, | ||
11606 | 0x045c0402, 0x048185dc, 0x060ff0d0, 0x0179feff, | ||
11607 | 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x078105be, | ||
11608 | 0x05600e41, 0x050f80ff, 0x032fa069, 0x07480000, | ||
11609 | 0x068105d0, 0x06780043, 0x070000f0, 0x0781005f, | ||
11610 | 0x037c00ff, 0x06000010, 0x0781005f, 0x038005cc, | ||
11611 | 0x0379ff00, 0x070fffff, 0x06780043, 0x07f00000, | ||
11612 | 0x075a0000, 0x020ef001, 0x028605ce, 0x05484000, | ||
11613 | 0x02a1819e, 0x062d6001, 0x002fb001, 0x070ff069, | ||
11614 | 0x01868072, 0x060ff079, 0x055c0441, 0x06810010, | ||
11615 | 0x012fb000, 0x060560fb, 0x03800078, 0x060ff079, | ||
11616 | 0x02868198, 0x070ff069, 0x055c0441, 0x06810010, | ||
11617 | 0x060560fb, 0x0400d0d0, 0x062d6002, 0x0648300d, | ||
11618 | 0x06810086, 0x070ff0d1, 0x062d6001, 0x045c040b, | ||
11619 | 0x06810089, 0x05488000, 0x04818086, 0x072e500c, | ||
11620 | 0x00208001, 0x05a004e1, 0x02800010, 0x062d6001, | ||
11621 | 0x07f00000, 0x07f00000, 0x070ff0d1, 0x0179feff, | ||
11622 | 0x070000ff, 0x055c040c, 0x058180bb, 0x0007b001, | ||
11623 | 0x03079041, 0x0307a000, 0x06600a79, 0x050f80ff, | ||
11624 | 0x053fa80a, 0x06000010, 0x072d5003, 0x078d0096, | ||
11625 | 0x0307c003, 0x0007d004, 0x0107e005, 0x0307f006, | ||
11626 | 0x02080007, 0x00081008, 0x01082009, 0x0308300a, | ||
11627 | 0x0008400b, 0x0308500c, 0x068d00a1, 0x0678007a, | ||
11628 | 0x07f00000, 0x010880ff, 0x03386000, 0x03010000, | ||
11629 | 0x072e6300, 0x020ef07f, 0x02860010, 0x070ff07d, | ||
11630 | 0x0450047c, 0x050f80ff, 0x002fa819, 0x068d00ae, | ||
11631 | 0x02080001, 0x00081002, 0x0448807a, 0x068100b5, | ||
11632 | 0x0379ff03, 0x070000ff, 0x01082003, 0x068d00b6, | ||
11633 | 0x02386004, 0x03010000, 0x072e6c00, 0x02800010, | ||
11634 | 0x06780043, 0x070000f0, 0x078105d7, 0x050020ff, | ||
11635 | 0x027c0002, 0x06000010, 0x078100c3, 0x038005d7, | ||
11636 | 0x0700c0d1, 0x0379ff0c, 0x070000ff, 0x0380008e, | ||
11637 | 0x0204a051, 0x06780043, 0x070000f0, 0x037c00ff, | ||
11638 | 0x06000010, 0x0781816a, 0x072d6000, 0x019485c0, | ||
11639 | 0x050fb056, 0x044880e6, 0x04818010, 0x060ff0d0, | ||
11640 | 0x0179feff, 0x0700ffff, 0x057dfeff, 0x0700ffff, | ||
11641 | 0x078105be, 0x05a00212, 0x0349c0e4, 0x0781811d, | ||
11642 | 0x070ff093, 0x050010ff, 0x070ff093, 0x045c0401, | ||
11643 | 0x058180db, 0x02046092, 0x04002046, 0x04600202, | ||
11644 | 0x00540401, 0x048280e6, 0x04500425, 0x070060ff, | ||
11645 | 0x0730ffff, 0x0700000f, 0x0742000f, 0x05810190, | ||
11646 | 0x07a005a6, 0x0648a002, 0x048180e9, 0x00047089, | ||
11647 | 0x070ff047, 0x045c0443, 0x077800ff, 0x07f00000, | ||
11648 | 0x0781818e, 0x07780047, 0x0500e000, 0x048185ad, | ||
11649 | 0x070ff006, 0x01860117, 0x0179fe47, 0x0700000f, | ||
11650 | 0x010480ff, 0x056c7048, 0x06818102, 0x007a0d4a, | ||
11651 | 0x04003801, 0x0220f001, 0x0180010f, 0x07608e48, | ||
11652 | 0x034a60ff, 0x0700f0ff, 0x074b88ff, 0x037000ff, | ||
11653 | 0x07000600, 0x05500448, 0x074d00ff, 0x045a044a, | ||
11654 | 0x0304a0ff, 0x070ff00f, 0x01540406, 0x05820117, | ||
11655 | 0x04950120, 0x05a001bd, 0x02868123, 0x0134bfff, | ||
11656 | 0x070fffff, 0x0104102e, 0x050fd041, 0x00800126, | ||
11657 | 0x0595011d, 0x05a001bd, 0x0186011d, 0x0202f00e, | ||
11658 | 0x052e4030, 0x040fd02f, 0x070fc0ff, 0x05a00218, | ||
11659 | 0x02800010, 0x0400e02f, 0x042e4020, 0x0202f051, | ||
11660 | 0x0004100e, 0x0004b00e, 0x050fd041, 0x024a6c46, | ||
11661 | 0x04500423, 0x050070ff, 0x03620024, 0x050080ff, | ||
11662 | 0x04004046, 0x0700500f, 0x03206000, 0x05601048, | ||
11663 | 0x0700a0ff, 0x0700900a, 0x070ff005, 0x04500446, | ||
11664 | 0x00540425, 0x04820157, 0x05601622, 0x050f80ff, | ||
11665 | 0x063fa032, 0x06000002, 0x03203000, 0x01204000, | ||
11666 | 0x03205000, 0x0120b000, 0x0320c000, 0x07601441, | ||
11667 | 0x050f80ff, 0x043fa852, 0x06000001, 0x070ff056, | ||
11668 | 0x056c02ff, 0x050fb0ff, 0x070560ff, 0x03079041, | ||
11669 | 0x05600e41, 0x050f80ff, 0x073fa011, 0x0600003d, | ||
11670 | 0x06780043, 0x07f00000, 0x065a007a, 0x010880ff, | ||
11671 | 0x04a001b6, 0x058d0150, 0x0208a04a, 0x0108b04b, | ||
11672 | 0x02386001, 0x03010000, 0x072e6300, 0x028000a8, | ||
11673 | 0x0500d00a, 0x05500405, 0x014a68ff, 0x070090ff, | ||
11674 | 0x0154040a, 0x0700c0ff, 0x0600a023, 0x0500b024, | ||
11675 | 0x02206001, 0x05601622, 0x050f80ff, 0x063fa04a, | ||
11676 | 0x06000002, 0x05601022, 0x050f80ff, 0x043fa819, | ||
11677 | 0x06000001, 0x0600a00d, 0x0180013c, 0x06780043, | ||
11678 | 0x070000f0, 0x050010ff, 0x027c0001, 0x07000030, | ||
11679 | 0x078105b4, 0x027c0001, 0x06000020, 0x078105b4, | ||
11680 | 0x038005cc, 0x054880ff, 0x06810010, 0x070ff056, | ||
11681 | 0x050fb0ff, 0x044880e5, 0x0581017d, 0x044880e6, | ||
11682 | 0x04818010, 0x00800183, 0x056c02ff, 0x050fb0ff, | ||
11683 | 0x070560ff, 0x072e5300, 0x044880e6, 0x04818010, | ||
11684 | 0x072d5003, 0x06780043, 0x07f00000, 0x010880ff, | ||
11685 | 0x058d0187, 0x03386005, 0x03010000, 0x033e6000, | ||
11686 | 0x0700000c, 0x052e5200, 0x02800010, 0x0120918e, | ||
11687 | 0x018004e4, 0x01209190, 0x018004e4, 0x00209192, | ||
11688 | 0x018004e4, 0x03209000, 0x018004e4, 0x01209196, | ||
11689 | 0x018004e4, 0x00209198, 0x018004e4, 0x02493075, | ||
11690 | 0x06810510, 0x0120919a, 0x018004e4, 0x06601e01, | ||
11691 | 0x050f80ff, 0x063fa029, 0x06000008, 0x02015010, | ||
11692 | 0x02016051, 0x00017051, 0x00011051, 0x05601a41, | ||
11693 | 0x050f80ff, 0x053fa83a, 0x06000008, 0x05600e41, | ||
11694 | 0x050f80ff, 0x01464000, 0x032fa00a, 0x07006011, | ||
11695 | 0x05007012, 0x04008013, 0x07009014, 0x0600a015, | ||
11696 | 0x0400b016, 0x0700c017, 0x07c00000, 0x072d5003, | ||
11697 | 0x06601479, 0x050f80ff, 0x048d01b9, 0x063fa051, | ||
11698 | 0x0600003e, 0x07c00000, 0x06005051, 0x0400e02c, | ||
11699 | 0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00, | ||
11700 | 0x070000ff, 0x076c0000, 0x058101dd, 0x0660480e, | ||
11701 | 0x0500e0ff, 0x034000ff, 0x01540427, 0x0582020a, | ||
11702 | 0x03400005, 0x070ff005, 0x055c0428, 0x0481020e, | ||
11703 | 0x01680e05, 0x056c0405, 0x068181bf, 0x040f8029, | ||
11704 | 0x053fa809, 0x07000024, 0x06600649, 0x050f80ff, | ||
11705 | 0x032fa009, 0x0379ff00, 0x070000ff, 0x076c0000, | ||
11706 | 0x068181bf, 0x0400e049, 0x0340002d, 0x050f802b, | ||
11707 | 0x053fa80a, 0x06000016, 0x0660480e, 0x0302c0ff, | ||
11708 | 0x034000ff, 0x01540427, 0x0582020c, 0x072d6000, | ||
11709 | 0x0460040e, 0x050f80ff, 0x0104e0d1, 0x0379ff4e, | ||
11710 | 0x0700ffff, 0x062d6002, 0x032fa009, 0x0004d0d0, | ||
11711 | 0x074b004d, 0x07780000, 0x07ffff00, 0x055a044d, | ||
11712 | 0x070000ff, 0x00201008, 0x04002051, 0x06003051, | ||
11713 | 0x05304000, 0x07000060, 0x03205009, 0x07006022, | ||
11714 | 0x0460040e, 0x050f80ff, 0x032fa03a, 0x06603c0e, | ||
11715 | 0x050f80ff, 0x073fa00a, 0x07000027, 0x050010d1, | ||
11716 | 0x0460320e, 0x050f80ff, 0x012fa80a, 0x060ff00e, | ||
11717 | 0x055c042e, 0x04810210, 0x07c00000, 0x0400e026, | ||
11718 | 0x008001cb, 0x0202c026, 0x008001e6, 0x0500e02e, | ||
11719 | 0x008001e6, 0x0400e051, 0x01800209, 0x0349c0e4, | ||
11720 | 0x04810215, 0x07c00000, 0x013e4000, 0x070c0000, | ||
11721 | 0x07c00000, 0x013e4000, 0x03080000, 0x07c00000, | ||
11722 | 0x009702f4, 0x022a5002, 0x0790821d, 0x00910291, | ||
11723 | 0x030400a6, 0x0678aae5, 0x06000001, 0x00a1860e, | ||
11724 | 0x06600c40, 0x050f80ff, 0x032fa021, 0x074b0000, | ||
11725 | 0x076c0600, 0x07818293, 0x05600403, 0x050f80ff, | ||
11726 | 0x073fa009, 0x06000002, 0x0279ff04, 0x0700ffff, | ||
11727 | 0x010440d7, 0x0179fe44, 0x0700ffff, 0x045c0404, | ||
11728 | 0x07818295, 0x0349f044, 0x0681829e, 0x02495001, | ||
11729 | 0x06818297, 0x060ff079, 0x045c0440, 0x0781823c, | ||
11730 | 0x0644f07a, 0x002fb008, 0x060ff079, 0x045c0440, | ||
11731 | 0x07818241, 0x0644f07a, 0x002fb008, 0x0648f001, | ||
11732 | 0x07818288, 0x04600e40, 0x050f80ff, 0x06480001, | ||
11733 | 0x04810257, 0x0448e001, 0x04810273, 0x02460001, | ||
11734 | 0x0644f001, 0x012fa80a, 0x04008040, 0x05a004ee, | ||
11735 | 0x0286828c, 0x05a004d8, 0x062da001, 0x013e4000, | ||
11736 | 0x06000080, 0x06930013, 0x02920013, 0x02800010, | ||
11737 | 0x0644f001, 0x012fa80a, 0x020ef002, 0x00860275, | ||
11738 | 0x04600840, 0x050f80ff, 0x053fa809, 0x06000002, | ||
11739 | 0x05780105, 0x00800440, 0x017c0105, 0x05000400, | ||
11740 | 0x06818275, 0x06601e02, 0x050f80ff, 0x053fa809, | ||
11741 | 0x06000002, 0x04602a40, 0x050f80ff, 0x070ff005, | ||
11742 | 0x053fa809, 0x06000002, 0x055c0405, 0x06818275, | ||
11743 | 0x04008040, 0x0045e008, 0x05a004d8, 0x00800251, | ||
11744 | 0x0644f001, 0x012fa80a, 0x050020d8, 0x04600440, | ||
11745 | 0x050f80ff, 0x073fa00a, 0x06000001, 0x06480001, | ||
11746 | 0x07818281, 0x05308000, 0x03040000, 0x06009040, | ||
11747 | 0x04a004dc, 0x00800251, 0x06a0060e, 0x054b0800, | ||
11748 | 0x056a0700, 0x06600c40, 0x050f80ff, 0x032fa00a, | ||
11749 | 0x00800251, 0x013e4000, 0x06000080, 0x01209288, | ||
11750 | 0x018004e4, 0x06009008, 0x05308000, 0x05004000, | ||
11751 | 0x04a004dc, 0x00800251, 0x02209002, 0x008002e5, | ||
11752 | 0x03209000, 0x008002e5, 0x02209004, 0x008002e5, | ||
11753 | 0x04a002fd, 0x062da001, 0x05308000, 0x05002000, | ||
11754 | 0x06009040, 0x04a004dc, 0x02800013, 0x013e4000, | ||
11755 | 0x06000080, 0x02495001, 0x078182db, 0x04600840, | ||
11756 | 0x050f80ff, 0x053fa809, 0x06000001, 0x0721f000, | ||
11757 | 0x0349f003, 0x058102aa, 0x0245f01f, 0x06000002, | ||
11758 | 0x018602db, 0x07601400, 0x050f80ff, 0x012fa809, | ||
11759 | 0x06480001, 0x058102db, 0x06602440, 0x050f80ff, | ||
11760 | 0x012fa809, 0x020ef001, 0x038682db, 0x019b02db, | ||
11761 | 0x050020d8, 0x062da001, 0x06303002, 0x05000430, | ||
11762 | 0x04600440, 0x050f80ff, 0x073fa012, 0x06000001, | ||
11763 | 0x028f82bf, 0x050040d8, 0x062da001, 0x07601e00, | ||
11764 | 0x050f80ff, 0x073fa009, 0x06000001, 0x060ff004, | ||
11765 | 0x00540402, 0x048202d9, 0x06005051, 0x06006051, | ||
11766 | 0x06602240, 0x050f80ff, 0x063fa01a, 0x06000002, | ||
11767 | 0x06600a40, 0x050f80ff, 0x073fa00a, 0x07000003, | ||
11768 | 0x060ff040, 0x045a041f, 0x010eb0ff, 0x06930013, | ||
11769 | 0x02920013, 0x02800010, 0x04004002, 0x018002c9, | ||
11770 | 0x04a002fd, 0x062da001, 0x05308000, 0x07005000, | ||
11771 | 0x06009040, 0x04a004dc, 0x050080d8, 0x05a004e1, | ||
11772 | 0x062da001, 0x02800013, 0x050fd009, 0x050fd041, | ||
11773 | 0x013e4000, 0x06000080, 0x05308000, 0x03013000, | ||
11774 | 0x04a004dc, 0x010440d7, 0x0349f044, 0x048102f2, | ||
11775 | 0x062da001, 0x008f02f2, 0x03e00000, 0x062da001, | ||
11776 | 0x02800013, 0x0249c0e5, 0x06810013, 0x062da001, | ||
11777 | 0x07f00000, 0x07f00000, 0x033e5000, 0x070c0000, | ||
11778 | 0x018f02f6, 0x03800011, 0x050020d8, 0x04600440, | ||
11779 | 0x050f80ff, 0x073fa00a, 0x06000001, 0x07c00000, | ||
11780 | 0x002fb001, 0x03800306, 0x012fb000, 0x03075087, | ||
11781 | 0x068d0307, 0x03386000, 0x03020000, 0x04482075, | ||
11782 | 0x06810352, 0x0648a0e6, 0x07810347, 0x0642007f, | ||
11783 | 0x06810345, 0x0340007e, 0x060ff038, 0x0154047e, | ||
11784 | 0x02d00334, 0x0560027d, 0x050f80ff, 0x032fa009, | ||
11785 | 0x030ef000, 0x02860504, 0x0107d000, 0x05600800, | ||
11786 | 0x050f80ff, 0x032fa009, 0x03681e00, 0x04500420, | ||
11787 | 0x050f80ff, 0x073fa009, 0x0700003f, 0x03800311, | ||
11788 | 0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819, | ||
11789 | 0x078d0327, 0x02080001, 0x00081002, 0x0448807a, | ||
11790 | 0x0781032e, 0x0379ff03, 0x070000ff, 0x01082003, | ||
11791 | 0x068d032f, 0x02386004, 0x03010000, 0x072e6c00, | ||
11792 | 0x02800352, 0x0380033a, 0x0380033c, 0x0280033e, | ||
11793 | 0x02800340, 0x03800342, 0x03800344, 0x0727c005, | ||
11794 | 0x02800323, 0x0627c008, 0x02800323, 0x0627c00b, | ||
11795 | 0x02800323, 0x0627c00e, 0x02800323, 0x0727c011, | ||
11796 | 0x02800323, 0x03800314, 0x052e6800, 0x02800352, | ||
11797 | 0x044880e6, 0x07810533, 0x052e6200, 0x070ff088, | ||
11798 | 0x0179feff, 0x070fffff, 0x04818501, 0x060ff083, | ||
11799 | 0x0086836d, 0x033e6000, 0x07000003, 0x068d0352, | ||
11800 | 0x07286000, 0x07f00000, 0x078d0355, 0x038c0306, | ||
11801 | 0x0648c0e6, 0x05818372, 0x0448e0e6, 0x0781036a, | ||
11802 | 0x004920e6, 0x07810365, 0x07a0056f, 0x05001088, | ||
11803 | 0x00700101, 0x03100000, 0x00088001, 0x033e6000, | ||
11804 | 0x07000088, 0x03800560, 0x02386001, 0x07030000, | ||
11805 | 0x033e6000, 0x06000008, 0x028003f1, 0x02799075, | ||
11806 | 0x0500040f, 0x06810010, 0x06601479, 0x050080ff, | ||
11807 | 0x06309052, 0x0600003e, 0x02800376, 0x06602279, | ||
11808 | 0x050080ff, 0x05309812, 0x07000041, 0x0648007a, | ||
11809 | 0x0781037e, 0x04488075, 0x0581837e, 0x040f8008, | ||
11810 | 0x070fa009, 0x0049107a, 0x01a183f3, 0x00798075, | ||
11811 | 0x06000507, 0x05818521, 0x0448b075, 0x06810385, | ||
11812 | 0x02493075, 0x0681050e, 0x0249c0e6, 0x048183e0, | ||
11813 | 0x0648c0e6, 0x0581839a, 0x068d0389, 0x02386001, | ||
11814 | 0x07030000, 0x0049107a, 0x07810390, 0x020ef083, | ||
11815 | 0x0386039a, 0x06483075, 0x068103ef, 0x0678007a, | ||
11816 | 0x07000035, 0x03a184cf, 0x05308000, 0x07060000, | ||
11817 | 0x06009079, 0x04a004dc, 0x028003ef, 0x0448807a, | ||
11818 | 0x0681039e, 0x06483075, 0x058104f9, 0x0448d07a, | ||
11819 | 0x068103a2, 0x06483075, 0x058104f9, 0x068d03a2, | ||
11820 | 0x02386001, 0x07030000, 0x0444e07a, 0x0648307a, | ||
11821 | 0x048183c7, 0x0448707a, 0x068103ea, 0x0648f07a, | ||
11822 | 0x078103b2, 0x05a004cf, 0x04008079, 0x05a004ee, | ||
11823 | 0x008683c2, 0x05a004d8, 0x028003ef, 0x0560107b, | ||
11824 | 0x050f80ff, 0x032fa009, 0x0349c000, 0x058183c0, | ||
11825 | 0x04600e79, 0x050f80ff, 0x073fa00a, 0x0600003d, | ||
11826 | 0x06600a79, 0x050f80ff, 0x053fa80a, 0x06000010, | ||
11827 | 0x028003ef, 0x0046e07a, 0x028003ea, 0x06009008, | ||
11828 | 0x05308000, 0x05004000, 0x04a004dc, 0x028003ef, | ||
11829 | 0x0560167b, 0x050f80ff, 0x032fa011, 0x070ff000, | ||
11830 | 0x04500401, 0x030460ff, 0x060ff025, 0x00540446, | ||
11831 | 0x078203d1, 0x030460ff, 0x04092046, 0x05a00218, | ||
11832 | 0x06600679, 0x050f80ff, 0x00201007, 0x012fa80a, | ||
11833 | 0x0046047a, 0x034630ff, 0x050020ff, 0x06003051, | ||
11834 | 0x04600e79, 0x050f80ff, 0x073fa012, 0x06000001, | ||
11835 | 0x028003ef, 0x033e6a00, 0x0202000e, 0x02079051, | ||
11836 | 0x07000088, 0x078d03e4, 0x0744c000, 0x01088000, | ||
11837 | 0x03386006, 0x03010000, 0x02800010, 0x05a004cf, | ||
11838 | 0x05308000, 0x03020000, 0x06009079, 0x04a004dc, | ||
11839 | 0x033e6a00, 0x0302000a, 0x02079051, 0x02800010, | ||
11840 | 0x04603e79, 0x050f80ff, 0x032fa009, 0x070ff000, | ||
11841 | 0x0186040c, 0x057dfeff, 0x07ffffff, 0x0581040c, | ||
11842 | 0x050f8000, 0x012fa811, 0x0079fe02, 0x070000ff, | ||
11843 | 0x077d66ff, 0x060000dc, 0x0781840c, 0x060ff001, | ||
11844 | 0x0286840d, 0x064b0002, 0x06420002, 0x060ff002, | ||
11845 | 0x05500400, 0x050f80ff, 0x05004084, 0x073fa00a, | ||
11846 | 0x06000002, 0x07c00000, 0x04600201, 0x050f80ff, | ||
11847 | 0x073fa009, 0x06000001, 0x0079fe02, 0x070000ff, | ||
11848 | 0x077d72ff, 0x070000dd, 0x0781840c, 0x064b0002, | ||
11849 | 0x06420002, 0x06000001, 0x01800406, 0x0605004c, | ||
11850 | 0x0180041e, 0x0493041a, 0x04a004d5, 0x054bc450, | ||
11851 | 0x05810421, 0x01d00422, 0x01800421, 0x00800432, | ||
11852 | 0x00800434, 0x00800432, 0x008004a7, 0x0180043f, | ||
11853 | 0x00800434, 0x01800471, 0x00800432, 0x00800432, | ||
11854 | 0x008004ab, 0x00800432, 0x018004af, 0x008004c4, | ||
11855 | 0x01800488, 0x00800432, 0x00800432, 0x00209432, | ||
11856 | 0x018004e4, 0x0379ff50, 0x070fffff, 0x060ff079, | ||
11857 | 0x055c0450, 0x048104a4, 0x002fb008, 0x060ff079, | ||
11858 | 0x055c0450, 0x058104a3, 0x04a004c7, 0x0180049c, | ||
11859 | 0x0179fe50, 0x070fffff, 0x070050ff, 0x060ff079, | ||
11860 | 0x055c0405, 0x04810449, 0x002fb008, 0x060ff079, | ||
11861 | 0x055c0405, 0x078184a0, 0x070ff087, 0x017980ff, | ||
11862 | 0x06000507, 0x06818451, 0x02203040, 0x05002087, | ||
11863 | 0x0049d002, 0x0481046b, 0x04930458, 0x01257000, | ||
11864 | 0x073c3fff, 0x0700000f, 0x052e4003, 0x072e5030, | ||
11865 | 0x0304c050, 0x02400057, 0x06740057, 0x06000002, | ||
11866 | 0x06820016, 0x04002083, 0x07003084, 0x04004085, | ||
11867 | 0x06602279, 0x050f80ff, 0x063fa01a, 0x06000001, | ||
11868 | 0x05a004cf, 0x07a00578, 0x033e6a00, 0x0302000a, | ||
11869 | 0x062e5020, 0x003e4002, 0x07000a00, 0x028003f1, | ||
11870 | 0x07420003, 0x0781844e, 0x00798002, 0x06000507, | ||
11871 | 0x06818451, 0x0180045c, 0x05930478, 0x01257000, | ||
11872 | 0x073c3fff, 0x0700000f, 0x052e4003, 0x072e5030, | ||
11873 | 0x0304c050, 0x067800e6, 0x07000041, 0x0581047d, | ||
11874 | 0x07a00581, 0x04818016, 0x002fb008, 0x067800e6, | ||
11875 | 0x07000041, 0x04810483, 0x07a00581, 0x04818016, | ||
11876 | 0x062e5020, 0x003e4002, 0x07000a00, 0x03e00000, | ||
11877 | 0x02800010, 0x0379ff50, 0x070fffff, 0x060ff079, | ||
11878 | 0x055c0450, 0x0781848e, 0x0245507a, 0x002fb008, | ||
11879 | 0x060ff079, 0x055c0450, 0x07818493, 0x0245507a, | ||
11880 | 0x002fb008, 0x05600e50, 0x050f80ff, 0x012fa809, | ||
11881 | 0x02455001, 0x05600e50, 0x050f80ff, 0x012fa80a, | ||
11882 | 0x0080049d, 0x002fb008, 0x003e4002, 0x07000a00, | ||
11883 | 0x02800016, 0x079384a3, 0x062e5020, 0x042e4002, | ||
11884 | 0x002fb008, 0x013e4000, 0x05000e00, 0x02800016, | ||
11885 | 0x0179fe50, 0x070fffff, 0x010210ff, 0x02800016, | ||
11886 | 0x0179fe50, 0x070fffff, 0x050340ff, 0x0080049d, | ||
11887 | 0x0179fe50, 0x070fffff, 0x0102e0ff, 0x0760282e, | ||
11888 | 0x050f80ff, 0x05222000, 0x07223000, 0x05224000, | ||
11889 | 0x07225000, 0x07226000, 0x05227000, 0x05228000, | ||
11890 | 0x07229000, 0x0722a000, 0x0522b000, 0x063fa051, | ||
11891 | 0x07000011, 0x0202c026, 0x0522d000, 0x052e400c, | ||
11892 | 0x02800016, 0x030430d4, 0x062e5008, 0x00800176, | ||
11893 | 0x05600e50, 0x050f80ff, 0x032fa009, 0x03460000, | ||
11894 | 0x018004d2, 0x0246007a, 0x0045207a, 0x008004d0, | ||
11895 | 0x0246007a, 0x0600007a, 0x04600e79, 0x050f80ff, | ||
11896 | 0x032fa00a, 0x07c00000, 0x029284d5, 0x070500e1, | ||
11897 | 0x07c00000, 0x0245f008, 0x048404d9, 0x020e0008, | ||
11898 | 0x07c00000, 0x070ff009, 0x065a0008, 0x058404de, | ||
11899 | 0x020e0008, 0x07c00000, 0x058404e1, 0x020e0008, | ||
11900 | 0x07c00000, 0x05308000, 0x0500d000, 0x04a004dc, | ||
11901 | 0x04a004e9, 0x02800010, 0x052e4300, 0x072e500c, | ||
11902 | 0x073c3fff, 0x0700000f, 0x07c00000, 0x06602208, | ||
11903 | 0x050f80ff, 0x032fa011, 0x076a0000, 0x068184f7, | ||
11904 | 0x066a0001, 0x048104f7, 0x04002051, 0x07c00000, | ||
11905 | 0x00202001, 0x07c00000, 0x0648307a, 0x00a18608, | ||
11906 | 0x05a004cc, 0x05308000, 0x05001000, 0x06009079, | ||
11907 | 0x04a004dc, 0x03800560, 0x0249c0e6, 0x058104f9, | ||
11908 | 0x0280036d, 0x0648307a, 0x07818196, 0x05a004cf, | ||
11909 | 0x05308000, 0x03013000, 0x03209006, 0x04a004dc, | ||
11910 | 0x033e6000, 0x07030000, 0x02800345, 0x02490075, | ||
11911 | 0x0781051e, 0x04002089, 0x04780102, 0x07f00000, | ||
11912 | 0x05001088, 0x07a0056f, 0x04740101, 0x03100000, | ||
11913 | 0x060ff002, 0x045c0401, 0x0481851f, 0x00088001, | ||
11914 | 0x033e6000, 0x070000c0, 0x0380055c, 0x07f00000, | ||
11915 | 0x0220951f, 0x018004e4, 0x0648307a, 0x07810527, | ||
11916 | 0x06780075, 0x06000007, 0x0581852e, 0x06a00608, | ||
11917 | 0x06486075, 0x06818194, 0x02490075, 0x0781819a, | ||
11918 | 0x04487075, 0x05818536, 0x0280053d, 0x05308000, | ||
11919 | 0x03010000, 0x06009079, 0x04a004dc, 0x02800010, | ||
11920 | 0x0448e0e6, 0x04818352, 0x00800192, 0x05308000, | ||
11921 | 0x0500e000, 0x06009079, 0x04a004dc, 0x04008089, | ||
11922 | 0x05a004e1, 0x0380055c, 0x05a004cc, 0x05308000, | ||
11923 | 0x0700f000, 0x06009079, 0x07000088, 0x06a00545, | ||
11924 | 0x04a004dc, 0x02800010, 0x03386000, 0x07030000, | ||
11925 | 0x07f00000, 0x078d0548, 0x033e6a00, 0x0202000e, | ||
11926 | 0x02079051, 0x0448b075, 0x07810553, 0x02493075, | ||
11927 | 0x07810553, 0x05301005, 0x03010000, 0x03800555, | ||
11928 | 0x05301006, 0x03010000, 0x05002087, 0x06485002, | ||
11929 | 0x05818555, 0x0744c000, 0x01088000, 0x02086001, | ||
11930 | 0x07c00000, 0x05001088, 0x07a0056f, 0x0644c001, | ||
11931 | 0x00088001, 0x033e6a00, 0x0202000e, 0x004920e6, | ||
11932 | 0x05818565, 0x02079051, 0x078d0565, 0x060ff089, | ||
11933 | 0x034990ff, 0x0781056c, 0x03386005, 0x03010000, | ||
11934 | 0x02800010, 0x03386006, 0x03010000, 0x02800010, | ||
11935 | 0x078d056f, 0x03386000, 0x07030000, 0x07f00000, | ||
11936 | 0x068d0573, 0x070ff087, 0x074850ff, 0x05818574, | ||
11937 | 0x07c00000, 0x078d0578, 0x02386001, 0x07030000, | ||
11938 | 0x07f00000, 0x068d057c, 0x070ff087, 0x074850ff, | ||
11939 | 0x0581857d, 0x07c00000, 0x05002087, 0x0049d002, | ||
11940 | 0x05818590, 0x002fb008, 0x067800e6, 0x07000041, | ||
11941 | 0x002fb008, 0x05818590, 0x07a005a6, 0x0448e002, | ||
11942 | 0x07810593, 0x0648a002, 0x0481859d, 0x06486002, | ||
11943 | 0x06810597, 0x02400057, 0x056a02ff, 0x07c00000, | ||
11944 | 0x07a005a6, 0x06788102, 0x06000004, 0x05818590, | ||
11945 | 0x04002089, 0x070ff0d4, 0x045c0402, 0x077800ff, | ||
11946 | 0x07f00000, 0x05818590, 0x00202010, 0x038c0590, | ||
11947 | 0x07f00000, 0x06420002, 0x0481859e, 0x07a00578, | ||
11948 | 0x033e6a00, 0x0302000a, 0x07c00000, 0x07f00000, | ||
11949 | 0x060ff0a2, 0x050020ff, 0x060ff0a2, 0x045c0402, | ||
11950 | 0x048185a7, 0x07c00000, 0x05a00218, 0x03495047, | ||
11951 | 0x078105b2, 0x0320901d, 0x02800604, 0x0220901f, | ||
11952 | 0x02800604, 0x014980e4, 0x04818010, 0x013e4000, | ||
11953 | 0x07003000, 0x05600e35, 0x050f80ff, 0x07a006fc, | ||
11954 | 0x01208003, 0x05a004e1, 0x038005cc, 0x03209009, | ||
11955 | 0x02800604, 0x03209011, 0x02800604, 0x02209007, | ||
11956 | 0x02800604, 0x03209003, 0x02800604, 0x00498043, | ||
11957 | 0x058185be, 0x00497043, 0x048185c2, 0x02209001, | ||
11958 | 0x02800604, 0x0220900d, 0x02800604, 0x0320900f, | ||
11959 | 0x02800604, 0x03493000, 0x068105d5, 0x027c0045, | ||
11960 | 0x070a0000, 0x078105de, 0x0220900b, 0x02800604, | ||
11961 | 0x02209013, 0x05308000, 0x01012000, 0x04a004dc, | ||
11962 | 0x00800183, 0x03209005, 0x02800604, 0x072e500c, | ||
11963 | 0x00208002, 0x05a004e1, 0x02800010, 0x02209015, | ||
11964 | 0x02800604, 0x072d6000, 0x05308000, 0x05007000, | ||
11965 | 0x07f00000, 0x070090d1, 0x0379ff09, 0x0700ffff, | ||
11966 | 0x04a004dc, 0x03209017, 0x02800604, 0x033e5000, | ||
11967 | 0x06000080, 0x02209019, 0x02800604, 0x072d6000, | ||
11968 | 0x033e5000, 0x06000080, 0x07f00000, 0x060ff0d0, | ||
11969 | 0x0179feff, 0x0700ffff, 0x057dfeff, 0x0700ffff, | ||
11970 | 0x04818010, 0x02400058, 0x00642058, 0x06820010, | ||
11971 | 0x033e5000, 0x06000080, 0x04058051, 0x0320901b, | ||
11972 | 0x02800604, 0x05308000, 0x01012000, 0x04a004dc, | ||
11973 | 0x00800176, 0x05a00218, 0x05308000, 0x05008000, | ||
11974 | 0x06009079, 0x04a004dc, 0x07c00000, 0x034900e4, | ||
11975 | 0x05818618, 0x013e4000, 0x070000c0, 0x07f00000, | ||
11976 | 0x034900e4, 0x04818616, 0x07c00000, 0x013e4000, | ||
11977 | 0x06000080, 0x07f00000, 0x07f00000, 0x07f00000, | ||
11978 | 0x034900e4, 0x06810610, 0x03800618, 0x072d6000, | ||
11979 | 0x00498043, 0x06810632, 0x060ff0d0, 0x0179feff, | ||
11980 | 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x058185e2, | ||
11981 | 0x050f8030, 0x032fa009, 0x0379ff00, 0x0700ffff, | ||
11982 | 0x070ff0d1, 0x0179feff, 0x0700ffff, 0x055c0400, | ||
11983 | 0x078105e2, 0x04004051, 0x0280067a, 0x06a006dc, | ||
11984 | 0x062d6001, 0x020ef004, 0x038605e4, 0x06600004, | ||
11985 | 0x050f80ff, 0x032fa009, 0x074b0000, 0x05002000, | ||
11986 | 0x0769ff00, 0x01640800, 0x078205e4, 0x01640e00, | ||
11987 | 0x058285e4, 0x070ff036, 0x045c0404, 0x0581864d, | ||
11988 | 0x072d6000, 0x050f8030, 0x032fa009, 0x0379ff00, | ||
11989 | 0x0700ffff, 0x070ff0d1, 0x0179feff, 0x0700ffff, | ||
11990 | 0x055c0400, 0x078105e2, 0x04482034, 0x078105ff, | ||
11991 | 0x06483034, 0x058185ff, 0x070ff0d4, 0x077800ff, | ||
11992 | 0x070000f0, 0x037c00ff, 0x06000010, 0x0681067a, | ||
11993 | 0x06a006d6, 0x024900e5, 0x0681065d, 0x033e5000, | ||
11994 | 0x06000080, 0x02800010, 0x04601c04, 0x050f80ff, | ||
11995 | 0x053fa809, 0x06000020, 0x030ef041, 0x038605ee, | ||
11996 | 0x062d6002, 0x05602a41, 0x050f80ff, 0x012fa809, | ||
11997 | 0x060ff0d0, 0x074b00ff, 0x045c0401, 0x05818678, | ||
11998 | 0x062d6001, 0x07602841, 0x050f80ff, 0x053fa809, | ||
11999 | 0x06000001, 0x070ff0d1, 0x054b80ff, 0x074b0003, | ||
12000 | 0x055c0403, 0x05818678, 0x033e5000, 0x06000080, | ||
12001 | 0x0080070e, 0x07600041, 0x0280065e, 0x06a006d6, | ||
12002 | 0x024900e5, 0x06810680, 0x033e5000, 0x06000080, | ||
12003 | 0x02800010, 0x06a006c2, 0x030ef041, 0x028605f2, | ||
12004 | 0x04058051, 0x072d6000, 0x05601041, 0x050f80ff, | ||
12005 | 0x012fa809, 0x0600a0d0, 0x0500b0d1, 0x062d6001, | ||
12006 | 0x07f00000, 0x07f00000, 0x0600c0d0, 0x0500d0d1, | ||
12007 | 0x062d6002, 0x0279ff0d, 0x07ff0000, 0x044d800d, | ||
12008 | 0x060ff0d0, 0x074b00ff, 0x065a000d, 0x06601201, | ||
12009 | 0x050f80ff, 0x073fa022, 0x07000005, 0x0079fe0d, | ||
12010 | 0x070000ff, 0x050020ff, 0x05602a41, 0x050f80ff, | ||
12011 | 0x073fa00a, 0x06000001, 0x020ef004, 0x028606bf, | ||
12012 | 0x04601c04, 0x050f80ff, 0x053fa809, 0x06000001, | ||
12013 | 0x050f80ff, 0x053fa80a, 0x06000020, 0x07602841, | ||
12014 | 0x050f80ff, 0x073fa009, 0x06000001, 0x0279ff02, | ||
12015 | 0x070000ff, 0x0678000d, 0x0700ff00, 0x065a0002, | ||
12016 | 0x07602841, 0x050f80ff, 0x073fa00a, 0x06000001, | ||
12017 | 0x07600041, 0x050f80ff, 0x053fa80a, 0x06000001, | ||
12018 | 0x07601241, 0x050f80ff, 0x073fa00a, 0x06000002, | ||
12019 | 0x033e5000, 0x06000080, 0x0080070e, 0x040f8032, | ||
12020 | 0x073fa011, 0x06000001, 0x060ff002, 0x055c0403, | ||
12021 | 0x058186ca, 0x00041051, 0x07c00000, 0x04600402, | ||
12022 | 0x04500432, 0x050f80ff, 0x053fa809, 0x06000020, | ||
12023 | 0x00400402, 0x01680eff, 0x070030ff, 0x040f8032, | ||
12024 | 0x053fa80a, 0x06000001, 0x07c00000, 0x024900e5, | ||
12025 | 0x068106d9, 0x07c00000, 0x033e5000, 0x070000c0, | ||
12026 | 0x07c00000, 0x05004036, 0x060000d0, 0x0179fe00, | ||
12027 | 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x068106fb, | ||
12028 | 0x070000d1, 0x0379ff00, 0x0700ffff, 0x06005051, | ||
12029 | 0x060ff031, 0x05500405, 0x050f80ff, 0x073fa009, | ||
12030 | 0x06000002, 0x020ef004, 0x038606f5, 0x04600404, | ||
12031 | 0x050f80ff, 0x012fa809, 0x0079fe01, 0x0700ffff, | ||
12032 | 0x055c0400, 0x068106fb, 0x01400405, 0x070050ff, | ||
12033 | 0x057de0ff, 0x06000007, 0x058186e7, 0x04004051, | ||
12034 | 0x07c00000, 0x072d6000, 0x07f00000, 0x07f00000, | ||
12035 | 0x000110d0, 0x010120d1, 0x062d6001, 0x07f00000, | ||
12036 | 0x07f00000, 0x020130d0, 0x010140d1, 0x062d6002, | ||
12037 | 0x010170d4, 0x07f00000, 0x020150d0, 0x030160d1, | ||
12038 | 0x053fa83a, 0x06000008, 0x07c00000, 0x07600c41, | ||
12039 | 0x050f80ff, 0x073fa009, 0x06000001, 0x04780102, | ||
12040 | 0x07ffff00, 0x046a0702, 0x050f80ff, 0x073fa00a, | ||
12041 | 0x06000001, 0x05600e41, 0x050f80ff, 0x032fa069, | ||
12042 | 0x03800053, 0xba6b4e34, 0x02800004, 0x00000000, | ||
12043 | 0x00008000, 0x00000518, 0x040f801f, 0x012fa8c9, | ||
12044 | 0x040f801f, 0x073fa081, 0x06000010, 0x03200005, | ||
12045 | 0x07420000, 0x050fb000, 0x040f801f, 0x073fa011, | ||
12046 | 0x06000038, 0x040f801f, 0x053fa859, 0x0700003a, | ||
12047 | 0x050fe000, 0x0581800a, 0x0684003d, 0x04958019, | ||
12048 | 0x030e0011, 0x072e4200, 0x03800014, 0x0291001f, | ||
12049 | 0x050010c0, 0x04482001, 0x058180e8, 0x06483001, | ||
12050 | 0x0781814b, 0x02920029, 0x068b0029, 0x018a0150, | ||
12051 | 0x050010c0, 0x06780001, 0x050007c0, 0x06818223, | ||
12052 | 0x06780001, 0x0500f800, 0x07818263, 0x03910030, | ||
12053 | 0x040fe029, 0x03860030, 0x076c001d, 0x04810294, | ||
12054 | 0x076c0a1d, 0x048102b9, 0x0292003d, 0x040fe02f, | ||
12055 | 0x0286003d, 0x06000013, 0x050fb000, 0x066c0073, | ||
12056 | 0x068103c2, 0x0297003d, 0x014920e4, 0x0481803d, | ||
12057 | 0x03400000, 0x076c0a00, 0x04818034, 0x0796003f, | ||
12058 | 0x03b900b8, 0x05908014, 0x010170e1, 0x07780017, | ||
12059 | 0x03e00000, 0x06810092, 0x050010ff, 0x0179fe17, | ||
12060 | 0x031fffff, 0x070000ff, 0x05600800, 0x050f80ff, | ||
12061 | 0x073fa009, 0x06000001, 0x06780002, 0x02800040, | ||
12062 | 0x037c00ff, 0x03800000, 0x0681005e, 0x0249f002, | ||
12063 | 0x068100ab, 0x0448e002, 0x0681005e, 0x07600c00, | ||
12064 | 0x050f80ff, 0x073fa009, 0x06000001, 0x06780002, | ||
12065 | 0x07ffff00, 0x037c00ff, 0x05000200, 0x048180ab, | ||
12066 | 0x064bd401, 0x03d00060, 0x038000a9, 0x02800068, | ||
12067 | 0x03800072, 0x0280007c, 0x02800086, 0x03800090, | ||
12068 | 0x038000a9, 0x038000a9, 0x050fe027, 0x0186806c, | ||
12069 | 0x01028000, 0x0380006f, 0x07600027, 0x050f80ff, | ||
12070 | 0x032fa00a, 0x01027000, 0x02400029, 0x028000ab, | ||
12071 | 0x040fe025, 0x00868076, 0x03026000, 0x02800079, | ||
12072 | 0x06600025, 0x050f80ff, 0x032fa00a, 0x03025000, | ||
12073 | 0x02400029, 0x028000ab, 0x050fe021, 0x00868080, | ||
12074 | 0x01022000, 0x02800083, 0x07600021, 0x050f80ff, | ||
12075 | 0x032fa00a, 0x01021000, 0x02400029, 0x028000ab, | ||
12076 | 0x040fe023, 0x0086808a, 0x01024000, 0x0380008d, | ||
12077 | 0x06600023, 0x050f80ff, 0x032fa00a, 0x03023000, | ||
12078 | 0x02400029, 0x028000ab, 0x06a000c8, 0x028000ab, | ||
12079 | 0x01640817, 0x058280a9, 0x070ff017, 0x03d00096, | ||
12080 | 0x0280009e, 0x038000a0, 0x038000a3, 0x038000a6, | ||
12081 | 0x038000a9, 0x038000a9, 0x038000a9, 0x038000a9, | ||
12082 | 0x03e00000, 0x03800014, 0x059080a0, 0x030160e1, | ||
12083 | 0x028000ab, 0x059080a3, 0x030150e1, 0x028000ab, | ||
12084 | 0x059080a6, 0x010140e1, 0x028000ab, 0x060fc013, | ||
12085 | 0x06a00510, 0x03800014, 0x072e4800, 0x07000012, | ||
12086 | 0x038000bb, 0x0747f000, 0x05600800, 0x050f80ff, | ||
12087 | 0x012fa809, 0x0249f001, 0x078100bb, 0x01012000, | ||
12088 | 0x052e4c00, 0x07c00000, 0x070000eb, 0x0349f000, | ||
12089 | 0x058180af, 0x05600800, 0x050f80ff, 0x012fa809, | ||
12090 | 0x0448e001, 0x068100c1, 0x07c00000, 0x0079c101, | ||
12091 | 0x07ffffff, 0x027a4b01, 0x03800000, 0x05600800, | ||
12092 | 0x050f80ff, 0x012fa80a, 0x07600c00, 0x050f80ff, | ||
12093 | 0x012fa821, 0x06780001, 0x07ffff00, 0x037c00ff, | ||
12094 | 0x05000700, 0x078100dd, 0x06601804, 0x070030ff, | ||
12095 | 0x050f80ff, 0x012fa809, 0x05002000, 0x050f8003, | ||
12096 | 0x073fa00a, 0x06000001, 0x040fe001, 0x038600de, | ||
12097 | 0x04600201, 0x050f80ff, 0x032fa00a, 0x07c00000, | ||
12098 | 0x050fe02e, 0x008680e3, 0x0102e000, 0x0302f000, | ||
12099 | 0x038000e7, 0x0760002e, 0x050f80ff, 0x032fa00a, | ||
12100 | 0x0102e000, 0x07c00000, 0x022c0004, 0x056c041d, | ||
12101 | 0x078100fc, 0x056c021d, 0x04810113, 0x056c081d, | ||
12102 | 0x04810125, 0x076c061d, 0x0581013f, 0x0521d000, | ||
12103 | 0x0202c013, 0x0202a013, 0x02020013, 0x0460021a, | ||
12104 | 0x050f80ff, 0x053fa80a, 0x07000009, 0x03b600ac, | ||
12105 | 0x0484801f, 0x0280003d, 0x040fe02a, 0x028600f2, | ||
12106 | 0x06000013, 0x04001013, 0x0560102b, 0x050f80ff, | ||
12107 | 0x032fa012, 0x06420029, 0x0660002a, 0x050f80ff, | ||
12108 | 0x053fa809, 0x06000001, 0x050fe003, 0x00860110, | ||
12109 | 0x01028003, 0x0660002a, 0x050f80ff, 0x053fa80a, | ||
12110 | 0x07000009, 0x00800140, 0x00028013, 0x00027013, | ||
12111 | 0x00800140, 0x040fe02a, 0x028600f1, 0x06420029, | ||
12112 | 0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001, | ||
12113 | 0x050fe003, 0x01860122, 0x03026003, 0x0660002a, | ||
12114 | 0x050f80ff, 0x053fa80a, 0x07000009, 0x00800140, | ||
12115 | 0x02026013, 0x02025013, 0x00800140, 0x040fe02a, | ||
12116 | 0x028600f1, 0x06420029, 0x0660002a, 0x050f80ff, | ||
12117 | 0x053fa809, 0x06000001, 0x050fe003, 0x00860134, | ||
12118 | 0x01022003, 0x0660002a, 0x050f80ff, 0x053fa80a, | ||
12119 | 0x07000009, 0x01800136, 0x00022013, 0x00021013, | ||
12120 | 0x0647f020, 0x007a0120, 0x04000101, 0x04a00285, | ||
12121 | 0x0400802a, 0x05a004f5, 0x009480f1, 0x0521d005, | ||
12122 | 0x028000f2, 0x038000fa, 0x0647f020, 0x06486020, | ||
12123 | 0x06818145, 0x04a00285, 0x028000f1, 0x007a0120, | ||
12124 | 0x04000101, 0x04a00285, 0x0400802a, 0x05a004f5, | ||
12125 | 0x028000f1, 0x040fd02a, 0x052e4003, 0x00208010, | ||
12126 | 0x05a004f5, 0x038000fa, 0x00018098, 0x07480018, | ||
12127 | 0x06818161, 0x05481018, 0x0781815f, 0x05482018, | ||
12128 | 0x0681815d, 0x07483018, 0x0681815b, 0x002fb004, | ||
12129 | 0x00800162, 0x012fb003, 0x00800162, 0x002fb002, | ||
12130 | 0x00800162, 0x002fb001, 0x00800162, 0x012fb000, | ||
12131 | 0x0179fe78, 0x070000ff, 0x030190ff, 0x00017086, | ||
12132 | 0x058b0166, 0x03385000, 0x03020000, 0x07780017, | ||
12133 | 0x00430407, 0x078181ee, 0x046c0419, 0x048101a2, | ||
12134 | 0x046c0219, 0x05810172, 0x07219000, 0x00800186, | ||
12135 | 0x07219000, 0x07483017, 0x0481018c, 0x05482017, | ||
12136 | 0x05810193, 0x0448b075, 0x06818186, 0x06601476, | ||
12137 | 0x050f80ff, 0x073fa022, 0x0600003e, 0x06000080, | ||
12138 | 0x05001081, 0x05002082, 0x06003083, 0x05004084, | ||
12139 | 0x04601c76, 0x050f80ff, 0x022fa02a, 0x07219000, | ||
12140 | 0x07780078, 0x07ffff00, 0x045a0419, 0x010780ff, | ||
12141 | 0x0484801f, 0x0280003d, 0x040fe07f, 0x0086019b, | ||
12142 | 0x05a001bb, 0x00920186, 0x040fe07f, 0x07a681bb, | ||
12143 | 0x00800186, 0x0560107b, 0x050f80ff, 0x032fa009, | ||
12144 | 0x0744f000, 0x0560107b, 0x050f80ff, 0x032fa00a, | ||
12145 | 0x00800179, 0x052e400c, 0x040080fb, 0x046aa108, | ||
12146 | 0x06009076, 0x04002075, 0x05a004fc, 0x00800186, | ||
12147 | 0x06219001, 0x05482017, 0x058101af, 0x058b01a5, | ||
12148 | 0x060ff086, 0x0349f0ff, 0x07818165, 0x07483017, | ||
12149 | 0x058101ac, 0x050fd0ff, 0x040fe07f, 0x07a681bb, | ||
12150 | 0x00800186, 0x05004084, 0x05a00205, 0x00920186, | ||
12151 | 0x070ff07d, 0x0450047c, 0x056004ff, 0x050f80ff, | ||
12152 | 0x032fa009, 0x070ff000, 0x00540479, 0x030790ff, | ||
12153 | 0x01800193, 0x060ff079, 0x0054047a, 0x058201e7, | ||
12154 | 0x058101e7, 0x070ff07d, 0x0450047c, 0x050f80ff, | ||
12155 | 0x002fa819, 0x058b01c3, 0x02080001, 0x00081002, | ||
12156 | 0x01082003, 0x048b01c7, 0x03385000, 0x03010000, | ||
12157 | 0x02400019, 0x070ff003, 0x04500479, 0x030790ff, | ||
12158 | 0x0340007e, 0x0642007f, 0x058101e7, 0x070ff07e, | ||
12159 | 0x050f80ff, 0x032fa009, 0x050fe000, 0x028681e6, | ||
12160 | 0x070ff07d, 0x056002ff, 0x050f80ff, 0x032fa009, | ||
12161 | 0x0107d000, 0x018601e8, 0x0560087d, 0x050f80ff, | ||
12162 | 0x032fa009, 0x0569fe00, 0x0550041b, 0x050f80ff, | ||
12163 | 0x032fa009, 0x0107e000, 0x070ff07e, 0x018001d2, | ||
12164 | 0x0307c000, 0x07c00000, 0x052e400c, 0x040080fb, | ||
12165 | 0x046aa108, 0x06009076, 0x04002075, 0x018004fc, | ||
12166 | 0x040fd076, 0x050fd017, 0x060ff086, 0x077800ff, | ||
12167 | 0x07000060, 0x037c00ff, 0x07000060, 0x078181f0, | ||
12168 | 0x07780078, 0x07ffff00, 0x045a0419, 0x010780ff, | ||
12169 | 0x06601476, 0x050f80ff, 0x073fa022, 0x0600003e, | ||
12170 | 0x052e400c, 0x040080fb, 0x066a8108, 0x06009076, | ||
12171 | 0x04002075, 0x05a004fc, 0x02800029, 0x0240007f, | ||
12172 | 0x0742007e, 0x050f807e, 0x032fa009, 0x050fe000, | ||
12173 | 0x0286821f, 0x070ff07d, 0x055c047b, 0x05810214, | ||
12174 | 0x0760007d, 0x050f80ff, 0x032fa009, 0x050fe000, | ||
12175 | 0x03868214, 0x070ff07b, 0x0107d0ff, 0x0560087d, | ||
12176 | 0x050f80ff, 0x032fa009, 0x03681e00, 0x0450041c, | ||
12177 | 0x0107e0ff, 0x050f80ff, 0x032fa009, 0x050fe000, | ||
12178 | 0x01860221, 0x0307c000, 0x07c00000, 0x040fd076, | ||
12179 | 0x02800510, 0x010180c0, 0x0548e018, 0x0781823c, | ||
12180 | 0x0748f018, 0x06818238, 0x03490018, 0x06818234, | ||
12181 | 0x01491018, 0x07818230, 0x073c0000, 0x06000040, | ||
12182 | 0x02200004, 0x0180023f, 0x073c0000, 0x06000020, | ||
12183 | 0x03200003, 0x0180023f, 0x073c0000, 0x06000010, | ||
12184 | 0x02200002, 0x0180023f, 0x073c0000, 0x06000008, | ||
12185 | 0x02200001, 0x0180023f, 0x073c0000, 0x06000004, | ||
12186 | 0x06000013, 0x050fb000, 0x040fe076, 0x00860258, | ||
12187 | 0x046c0273, 0x04810268, 0x066c0073, 0x04810249, | ||
12188 | 0x040fd076, 0x06a00510, 0x03800014, 0x040fd076, | ||
12189 | 0x0080024c, 0x00452075, 0x00077013, 0x0647f075, | ||
12190 | 0x06486075, 0x06818252, 0x05a0028b, 0x00800258, | ||
12191 | 0x007a0175, 0x04000101, 0x05a0028b, 0x04008076, | ||
12192 | 0x0245f008, 0x05a004f5, 0x07273000, 0x05600272, | ||
12193 | 0x050f80ff, 0x053fa80a, 0x07000009, 0x0379ff78, | ||
12194 | 0x070000ff, 0x02076013, 0x02075013, 0x0484801f, | ||
12195 | 0x0280003d, 0x070fc0ff, 0x052e400c, 0x00208020, | ||
12196 | 0x05a004f5, 0x00800261, 0x04600276, 0x050010ff, | ||
12197 | 0x040f8001, 0x032fa009, 0x040f8001, 0x053fa80a, | ||
12198 | 0x07000009, 0x070ff000, 0x0286827a, 0x06601276, | ||
12199 | 0x050f80ff, 0x073fa009, 0x0700000c, 0x07601818, | ||
12200 | 0x050f80ff, 0x053fa80a, 0x07000009, 0x0180027b, | ||
12201 | 0x07a000de, 0x0448b075, 0x0581024b, 0x06000013, | ||
12202 | 0x04001013, 0x0560107b, 0x050f80ff, 0x032fa012, | ||
12203 | 0x0046b075, 0x03b600ac, 0x0080024c, 0x06000020, | ||
12204 | 0x04001016, 0x0460082a, 0x050f80ff, 0x032fa012, | ||
12205 | 0x07c00000, 0x06000075, 0x040010a2, 0x044b0801, | ||
12206 | 0x060ff016, 0x065a0001, 0x04600876, 0x050f80ff, | ||
12207 | 0x032fa012, 0x07c00000, 0x050fe022, 0x0186029a, | ||
12208 | 0x0421d004, 0x0302a022, 0x04a002c1, 0x018002b1, | ||
12209 | 0x040fe026, 0x008602b3, 0x0421d001, 0x0202a026, | ||
12210 | 0x04a002c1, 0x0202c013, 0x00683e20, 0x070060ff, | ||
12211 | 0x056c0206, 0x048102f4, 0x056c0406, 0x0781030a, | ||
12212 | 0x076c0606, 0x06810379, 0x056c1606, 0x078182b1, | ||
12213 | 0x04488020, 0x07810387, 0x040fd02a, 0x0521d000, | ||
12214 | 0x0202a013, 0x02020013, 0x008002b3, 0x04a004ec, | ||
12215 | 0x008002bf, 0x050fe028, 0x008602bf, 0x0302a028, | ||
12216 | 0x0421d002, 0x04a002c1, 0x008002c8, 0x050fe022, | ||
12217 | 0x008602bf, 0x0421d004, 0x0302a022, 0x04a002c1, | ||
12218 | 0x04a004ec, 0x05848030, 0x0280003d, 0x0460082a, | ||
12219 | 0x050f80ff, 0x022fa031, 0x03020000, 0x0002b004, | ||
12220 | 0x01018005, 0x07c00000, 0x0400702a, 0x06a003ba, | ||
12221 | 0x007a0101, 0x07060000, 0x07303000, 0x07008290, | ||
12222 | 0x07600018, 0x050f80ff, 0x053fa809, 0x07000003, | ||
12223 | 0x0448e007, 0x068182d6, 0x06006013, 0x018002dd, | ||
12224 | 0x02400010, 0x048102d6, 0x06006010, 0x0460322a, | ||
12225 | 0x050f80ff, 0x073fa00a, 0x07000003, 0x050f801e, | ||
12226 | 0x032fa03a, 0x063aa020, 0x06000002, 0x013e4000, | ||
12227 | 0x07000030, 0x009802e3, 0x070ff0f6, 0x036830ff, | ||
12228 | 0x078182e4, 0x070f001e, 0x0560102b, 0x050f10ff, | ||
12229 | 0x063f3c08, 0x0600000d, 0x013e4000, 0x06000020, | ||
12230 | 0x040f801a, 0x0320000a, 0x022017d0, 0x032fa012, | ||
12231 | 0x0202c013, 0x008002bf, 0x04007013, 0x06a003ba, | ||
12232 | 0x007a0101, 0x07050000, 0x07303000, 0x07008890, | ||
12233 | 0x074d0005, 0x06006013, 0x050f801e, 0x032fa03a, | ||
12234 | 0x05601a2b, 0x050f80ff, 0x022fa019, 0x04001002, | ||
12235 | 0x04002013, 0x040f801f, 0x022fa01a, 0x073aa00c, | ||
12236 | 0x06000002, 0x07300c03, 0x0600000d, 0x028003a7, | ||
12237 | 0x04007013, 0x06a003ba, 0x007a0101, 0x03070000, | ||
12238 | 0x0660282a, 0x050f80ff, 0x073fa009, 0x06000004, | ||
12239 | 0x02499008, 0x07810317, 0x07303000, 0x07008890, | ||
12240 | 0x02800319, 0x07303000, 0x04008980, 0x05007003, | ||
12241 | 0x074d0005, 0x06006013, 0x050f801e, 0x032fa03a, | ||
12242 | 0x0760142b, 0x050f80ff, 0x032fa021, 0x064b0002, | ||
12243 | 0x02499008, 0x06810325, 0x0644c002, 0x054b0400, | ||
12244 | 0x050040ff, 0x06698104, 0x0581833a, 0x06000013, | ||
12245 | 0x04001013, 0x04780102, 0x06000010, 0x06003013, | ||
12246 | 0x04004013, 0x06005013, 0x06006013, 0x04007013, | ||
12247 | 0x00644015, 0x07820336, 0x04448002, 0x02205008, | ||
12248 | 0x040f801f, 0x032fa042, 0x04008015, 0x03800371, | ||
12249 | 0x046c8004, 0x05818348, 0x01208018, 0x06780002, | ||
12250 | 0x07000003, 0x0581834b, 0x06003001, 0x06000013, | ||
12251 | 0x04001013, 0x04004013, 0x06005013, 0x040f801f, | ||
12252 | 0x022fa032, 0x03800371, 0x040fd02a, 0x06a00510, | ||
12253 | 0x03800014, 0x04488002, 0x07810350, 0x070ff003, | ||
12254 | 0x04500408, 0x050080ff, 0x06489002, 0x06810357, | ||
12255 | 0x0379ff00, 0x070000ff, 0x070ff000, 0x04500408, | ||
12256 | 0x050080ff, 0x07005003, 0x05004000, 0x06003001, | ||
12257 | 0x06000013, 0x04001013, 0x040f801f, 0x022fa032, | ||
12258 | 0x05601c2b, 0x050f80ff, 0x022fa031, 0x06600c1f, | ||
12259 | 0x050f80ff, 0x022fa032, 0x02680608, 0x07810371, | ||
12260 | 0x016408ff, 0x057dfeff, 0x07ffffff, 0x034000ff, | ||
12261 | 0x045a0407, 0x070000ff, 0x0760061e, 0x050f80ff, | ||
12262 | 0x032fa00a, 0x06600908, 0x0669f908, 0x027a0008, | ||
12263 | 0x06000020, 0x070aa0ff, 0x014a20ff, 0x037a00ff, | ||
12264 | 0x060000dc, 0x070000ff, 0x028003a7, 0x04007013, | ||
12265 | 0x06a003ba, 0x007a0101, 0x07030000, 0x07303000, | ||
12266 | 0x07008190, 0x06006013, 0x050f801e, 0x032fa03a, | ||
12267 | 0x073aa000, 0x06000002, 0x07300c00, 0x07000005, | ||
12268 | 0x028003a7, 0x04007013, 0x06a003ba, 0x007a0101, | ||
12269 | 0x07810000, 0x07303000, 0x07000090, 0x06006013, | ||
12270 | 0x06600c2a, 0x050f80ff, 0x053fa809, 0x07000003, | ||
12271 | 0x04780107, 0x07ffff00, 0x007c0107, 0x07000500, | ||
12272 | 0x0581839a, 0x07303000, 0x05000890, 0x074d0005, | ||
12273 | 0x0660282a, 0x050f80ff, 0x053fa809, 0x07000003, | ||
12274 | 0x0049d007, 0x068103a1, 0x02206001, 0x050f801e, | ||
12275 | 0x032fa03a, 0x073aa000, 0x06000002, 0x07300c00, | ||
12276 | 0x07000005, 0x013e4000, 0x07000030, 0x039803a9, | ||
12277 | 0x070ff0f6, 0x036830ff, 0x058183aa, 0x070f001e, | ||
12278 | 0x040f101f, 0x070f3000, 0x013e4000, 0x06000020, | ||
12279 | 0x040f801a, 0x0320000a, 0x022017d0, 0x032fa012, | ||
12280 | 0x008002bf, 0x03200000, 0x06006076, 0x028003bc, | ||
12281 | 0x03200011, 0x0600602a, 0x05a00441, 0x05600406, | ||
12282 | 0x050f80ff, 0x053fa809, 0x06000002, 0x07c00000, | ||
12283 | 0x0207602f, 0x04600876, 0x050f80ff, 0x022fa031, | ||
12284 | 0x03075000, 0x0007b004, 0x01018005, 0x06600076, | ||
12285 | 0x050020ff, 0x050f80ff, 0x012fa809, 0x0202f001, | ||
12286 | 0x008683d0, 0x0002e013, 0x040f8002, 0x053fa80a, | ||
12287 | 0x07000009, 0x06273001, 0x0448b075, 0x048183da, | ||
12288 | 0x04602076, 0x050f80ff, 0x053fa811, 0x0700003c, | ||
12289 | 0x0179fe78, 0x070000ff, 0x030190ff, 0x018683e2, | ||
12290 | 0x07a003f6, 0x00078019, 0x039203f5, 0x0180043a, | ||
12291 | 0x040fd076, 0x040fd019, 0x04600276, 0x050020ff, | ||
12292 | 0x050f80ff, 0x032fa009, 0x040f8002, 0x053fa80a, | ||
12293 | 0x07000009, 0x050fe000, 0x008683f2, 0x07601818, | ||
12294 | 0x050f80ff, 0x053fa80a, 0x07000009, 0x038003f3, | ||
12295 | 0x07a000de, 0x07273000, 0x02076013, 0x0280003d, | ||
12296 | 0x078b03f6, 0x03385000, 0x07030000, 0x05600818, | ||
12297 | 0x050f80ff, 0x032fa009, 0x054b0400, 0x0308a0ff, | ||
12298 | 0x0179fe00, 0x070000ff, 0x010880ff, 0x0448b075, | ||
12299 | 0x04810410, 0x0760147b, 0x050f80ff, 0x002fa819, | ||
12300 | 0x064b0001, 0x02080002, 0x01081003, 0x00082001, | ||
12301 | 0x02083001, 0x02079001, 0x0207a001, 0x00084013, | ||
12302 | 0x0207f013, 0x00800432, 0x06485075, 0x05810428, | ||
12303 | 0x02465075, 0x06601476, 0x050f80ff, 0x073fa021, | ||
12304 | 0x0600003e, 0x070ff07d, 0x0450047c, 0x050f80ff, | ||
12305 | 0x002fa819, 0x058b041b, 0x02080001, 0x00081002, | ||
12306 | 0x01082003, 0x03079003, 0x0208307a, 0x0340007e, | ||
12307 | 0x0642007f, 0x0581042d, 0x070ff07e, 0x05a001d2, | ||
12308 | 0x0392842d, 0x01800439, 0x058b0428, 0x06601476, | ||
12309 | 0x050f80ff, 0x073fa041, 0x0600003e, 0x06602476, | ||
12310 | 0x050f80ff, 0x073fa009, 0x06000007, 0x0008400e, | ||
12311 | 0x048b0432, 0x03385000, 0x03010000, 0x06219001, | ||
12312 | 0x040fe07f, 0x01860439, 0x018001bb, 0x07c00000, | ||
12313 | 0x00683e75, 0x0581043f, 0x0448d075, 0x05810465, | ||
12314 | 0x01800493, 0x05a004f0, 0x038003f5, 0x0297844c, | ||
12315 | 0x07602418, 0x050f80ff, 0x012fa809, 0x06780001, | ||
12316 | 0x070000ff, 0x075a0000, 0x070ff014, 0x0569feff, | ||
12317 | 0x054b08ff, 0x075a0000, 0x05600418, 0x050f80ff, | ||
12318 | 0x012fa809, 0x040fe007, 0x03868453, 0x01204000, | ||
12319 | 0x00800461, 0x00700101, 0x03010000, 0x06780001, | ||
12320 | 0x07ff0000, 0x076c00ff, 0x0681845b, 0x00700101, | ||
12321 | 0x03010000, 0x05600418, 0x050f80ff, 0x012fa80a, | ||
12322 | 0x06780001, 0x07ff0000, 0x050040ff, 0x0279ff01, | ||
12323 | 0x0700ffff, 0x05002014, 0x07c00000, 0x04007076, | ||
12324 | 0x0448b075, 0x0481047f, 0x03200011, 0x06006076, | ||
12325 | 0x06a003bc, 0x007a0101, 0x07060000, 0x07303000, | ||
12326 | 0x07008290, 0x07600018, 0x050f80ff, 0x053fa809, | ||
12327 | 0x07000003, 0x0448e007, 0x07818477, 0x06006013, | ||
12328 | 0x0180048e, 0x02400010, 0x05810477, 0x06006010, | ||
12329 | 0x04603276, 0x050f80ff, 0x073fa00a, 0x07000003, | ||
12330 | 0x0180048e, 0x04602a76, 0x050f80ff, 0x032fa009, | ||
12331 | 0x060ff07a, 0x05500400, 0x070000ff, 0x04602a76, | ||
12332 | 0x050f80ff, 0x032fa00a, 0x07a003b7, 0x007a0101, | ||
12333 | 0x03010000, 0x06303008, 0x05008000, 0x0600600e, | ||
12334 | 0x050f8074, 0x032fa03a, 0x053079a0, 0x0700000c, | ||
12335 | 0x008004d3, 0x00683e75, 0x076c0aff, 0x058104b2, | ||
12336 | 0x04007013, 0x03200011, 0x06006076, 0x06a003bc, | ||
12337 | 0x007a0101, 0x03070000, 0x06602876, 0x050f80ff, | ||
12338 | 0x053fa809, 0x06000001, 0x03499003, 0x048104a7, | ||
12339 | 0x07303000, 0x07008890, 0x053079a0, 0x0700000c, | ||
12340 | 0x008004ab, 0x07303000, 0x04008980, 0x04307920, | ||
12341 | 0x0700000c, 0x074d0005, 0x06006013, 0x050f8074, | ||
12342 | 0x032fa03a, 0x04307920, 0x0700000c, 0x008004d3, | ||
12343 | 0x04602a76, 0x050f80ff, 0x032fa009, 0x060ff07a, | ||
12344 | 0x05500400, 0x070000ff, 0x04602a76, 0x050f80ff, | ||
12345 | 0x032fa00a, 0x04007076, 0x07a003b7, 0x007a0101, | ||
12346 | 0x03010000, 0x06303008, 0x07008800, 0x074d0005, | ||
12347 | 0x06600a76, 0x050f80ff, 0x073fa009, 0x07000003, | ||
12348 | 0x054b0406, 0x045a0404, 0x050040ff, 0x0600600e, | ||
12349 | 0x050f8074, 0x032fa03a, 0x0648c075, 0x058104d1, | ||
12350 | 0x06307d20, 0x0700000c, 0x008004d3, 0x04307920, | ||
12351 | 0x0700000c, 0x013e4000, 0x07000030, 0x009804d5, | ||
12352 | 0x070ff0f6, 0x074850ff, 0x068184d6, 0x050f2074, | ||
12353 | 0x060a0007, 0x040070fb, 0x046a7007, 0x050f40ff, | ||
12354 | 0x013e4000, 0x06000020, 0x0678007a, 0x07fff000, | ||
12355 | 0x068184e6, 0x0320000a, 0x022017d0, 0x008004e9, | ||
12356 | 0x0320000a, 0x06301b58, 0x06000001, 0x050f8072, | ||
12357 | 0x032fa012, 0x038003f5, 0x01208060, 0x0600902a, | ||
12358 | 0x04002020, 0x018004fc, 0x040080fb, 0x066ae108, | ||
12359 | 0x06009076, 0x04002075, 0x018004fc, 0x03201100, | ||
12360 | 0x078484fa, 0x06420001, 0x078184f6, 0x02800513, | ||
12361 | 0x020e0008, 0x07c00000, 0x050fd009, 0x040fd008, | ||
12362 | 0x03201100, 0x05848503, 0x06420001, 0x078184ff, | ||
12363 | 0x02800513, 0x007a0102, 0x04000101, 0x05600809, | ||
12364 | 0x050f80ff, 0x073fa00a, 0x06000001, 0x020e0008, | ||
12365 | 0x0684050d, 0x030e0009, 0x07c00000, 0x01011009, | ||
12366 | 0x052e4300, 0x07c00000, 0x052e400f, 0x01208090, | ||
12367 | 0x018004f5, 0x070fc0ff, 0x040f8013, 0x032fa009, | ||
12368 | 0x02800516, 0x15416ea9, 0xffef0b01 | ||
12369 | }; | ||
12370 | |||
12371 | #ifdef UNIQUE_FW_NAME | ||
12372 | uint32_t fw2400_length02 = 0x000014ff ; | ||
12373 | #else | ||
12374 | uint32_t risc_code_length02 = 0x000014ff ; | ||
12375 | #endif | ||
12376 | |||
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 48e460eef05a..b17ee62dd1a9 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -232,7 +232,7 @@ static ssize_t | |||
232 | qla2x00_isp_name_show(struct class_device *cdev, char *buf) | 232 | qla2x00_isp_name_show(struct class_device *cdev, char *buf) |
233 | { | 233 | { |
234 | scsi_qla_host_t *ha = to_qla_host(class_to_shost(cdev)); | 234 | scsi_qla_host_t *ha = to_qla_host(class_to_shost(cdev)); |
235 | return snprintf(buf, PAGE_SIZE, "%s\n", ha->brd_info->isp_name); | 235 | return snprintf(buf, PAGE_SIZE, "ISP%04X\n", ha->pdev->device); |
236 | } | 236 | } |
237 | 237 | ||
238 | static ssize_t | 238 | static ssize_t |
@@ -541,7 +541,7 @@ struct fc_function_template qla2xxx_transport_functions = { | |||
541 | void | 541 | void |
542 | qla2x00_init_host_attr(scsi_qla_host_t *ha) | 542 | qla2x00_init_host_attr(scsi_qla_host_t *ha) |
543 | { | 543 | { |
544 | fc_host_node_name(ha->host) = wwn_to_u64(ha->init_cb->node_name); | 544 | fc_host_node_name(ha->host) = wwn_to_u64(ha->node_name); |
545 | fc_host_port_name(ha->host) = wwn_to_u64(ha->init_cb->port_name); | 545 | fc_host_port_name(ha->host) = wwn_to_u64(ha->port_name); |
546 | fc_host_supported_classes(ha->host) = FC_COS_CLASS3; | 546 | fc_host_supported_classes(ha->host) = FC_COS_CLASS3; |
547 | } | 547 | } |
diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c index 5c5d2315cfab..2d9b12ffe09c 100644 --- a/drivers/scsi/qla2xxx/qla_dbg.c +++ b/drivers/scsi/qla2xxx/qla_dbg.c | |||
@@ -1003,10 +1003,10 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked) | |||
1003 | fw = (struct qla24xx_fw_dump *) ha->fw_dump24; | 1003 | fw = (struct qla24xx_fw_dump *) ha->fw_dump24; |
1004 | 1004 | ||
1005 | rval = QLA_SUCCESS; | 1005 | rval = QLA_SUCCESS; |
1006 | fw->hccr = RD_REG_DWORD(®->hccr); | 1006 | fw->host_status = RD_REG_DWORD(®->host_status); |
1007 | 1007 | ||
1008 | /* Pause RISC. */ | 1008 | /* Pause RISC. */ |
1009 | if ((fw->hccr & HCCRX_RISC_PAUSE) == 0) { | 1009 | if ((RD_REG_DWORD(®->hccr) & HCCRX_RISC_PAUSE) == 0) { |
1010 | WRT_REG_DWORD(®->hccr, HCCRX_SET_RISC_RESET | | 1010 | WRT_REG_DWORD(®->hccr, HCCRX_SET_RISC_RESET | |
1011 | HCCRX_CLR_HOST_INT); | 1011 | HCCRX_CLR_HOST_INT); |
1012 | RD_REG_DWORD(®->hccr); /* PCI Posting. */ | 1012 | RD_REG_DWORD(®->hccr); /* PCI Posting. */ |
@@ -1021,16 +1021,54 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked) | |||
1021 | } | 1021 | } |
1022 | } | 1022 | } |
1023 | 1023 | ||
1024 | /* Disable interrupts. */ | ||
1025 | WRT_REG_DWORD(®->ictrl, 0); | ||
1026 | RD_REG_DWORD(®->ictrl); | ||
1027 | |||
1028 | if (rval == QLA_SUCCESS) { | 1024 | if (rval == QLA_SUCCESS) { |
1029 | /* Host interface registers. */ | 1025 | /* Host interface registers. */ |
1030 | dmp_reg = (uint32_t __iomem *)(reg + 0); | 1026 | dmp_reg = (uint32_t __iomem *)(reg + 0); |
1031 | for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++) | 1027 | for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++) |
1032 | fw->host_reg[cnt] = RD_REG_DWORD(dmp_reg++); | 1028 | fw->host_reg[cnt] = RD_REG_DWORD(dmp_reg++); |
1033 | 1029 | ||
1030 | /* Disable interrupts. */ | ||
1031 | WRT_REG_DWORD(®->ictrl, 0); | ||
1032 | RD_REG_DWORD(®->ictrl); | ||
1033 | |||
1034 | /* Shadow registers. */ | ||
1035 | WRT_REG_DWORD(®->iobase_addr, 0x0F70); | ||
1036 | RD_REG_DWORD(®->iobase_addr); | ||
1037 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1038 | WRT_REG_DWORD(dmp_reg, 0xB0000000); | ||
1039 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1040 | fw->shadow_reg[0] = RD_REG_DWORD(dmp_reg); | ||
1041 | |||
1042 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1043 | WRT_REG_DWORD(dmp_reg, 0xB0100000); | ||
1044 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1045 | fw->shadow_reg[1] = RD_REG_DWORD(dmp_reg); | ||
1046 | |||
1047 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1048 | WRT_REG_DWORD(dmp_reg, 0xB0200000); | ||
1049 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1050 | fw->shadow_reg[2] = RD_REG_DWORD(dmp_reg); | ||
1051 | |||
1052 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1053 | WRT_REG_DWORD(dmp_reg, 0xB0300000); | ||
1054 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1055 | fw->shadow_reg[3] = RD_REG_DWORD(dmp_reg); | ||
1056 | |||
1057 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1058 | WRT_REG_DWORD(dmp_reg, 0xB0400000); | ||
1059 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1060 | fw->shadow_reg[4] = RD_REG_DWORD(dmp_reg); | ||
1061 | |||
1062 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1063 | WRT_REG_DWORD(dmp_reg, 0xB0500000); | ||
1064 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1065 | fw->shadow_reg[5] = RD_REG_DWORD(dmp_reg); | ||
1066 | |||
1067 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1068 | WRT_REG_DWORD(dmp_reg, 0xB0600000); | ||
1069 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1070 | fw->shadow_reg[6] = RD_REG_DWORD(dmp_reg); | ||
1071 | |||
1034 | /* Mailbox registers. */ | 1072 | /* Mailbox registers. */ |
1035 | mbx_reg = (uint16_t __iomem *)((uint8_t __iomem *)reg + 0x80); | 1073 | mbx_reg = (uint16_t __iomem *)((uint8_t __iomem *)reg + 0x80); |
1036 | for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++) | 1074 | for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++) |
@@ -1308,43 +1346,6 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked) | |||
1308 | for (cnt = 0; cnt < 16; cnt++) | 1346 | for (cnt = 0; cnt < 16; cnt++) |
1309 | *iter_reg++ = RD_REG_DWORD(dmp_reg++); | 1347 | *iter_reg++ = RD_REG_DWORD(dmp_reg++); |
1310 | 1348 | ||
1311 | WRT_REG_DWORD(®->iobase_addr, 0x0F70); | ||
1312 | RD_REG_DWORD(®->iobase_addr); | ||
1313 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1314 | WRT_REG_DWORD(dmp_reg, 0xB0000000); | ||
1315 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1316 | fw->shadow_reg[0] = RD_REG_DWORD(dmp_reg); | ||
1317 | |||
1318 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1319 | WRT_REG_DWORD(dmp_reg, 0xB0100000); | ||
1320 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1321 | fw->shadow_reg[1] = RD_REG_DWORD(dmp_reg); | ||
1322 | |||
1323 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1324 | WRT_REG_DWORD(dmp_reg, 0xB0200000); | ||
1325 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1326 | fw->shadow_reg[2] = RD_REG_DWORD(dmp_reg); | ||
1327 | |||
1328 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1329 | WRT_REG_DWORD(dmp_reg, 0xB0300000); | ||
1330 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1331 | fw->shadow_reg[3] = RD_REG_DWORD(dmp_reg); | ||
1332 | |||
1333 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1334 | WRT_REG_DWORD(dmp_reg, 0xB0400000); | ||
1335 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1336 | fw->shadow_reg[4] = RD_REG_DWORD(dmp_reg); | ||
1337 | |||
1338 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1339 | WRT_REG_DWORD(dmp_reg, 0xB0500000); | ||
1340 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1341 | fw->shadow_reg[5] = RD_REG_DWORD(dmp_reg); | ||
1342 | |||
1343 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xF0); | ||
1344 | WRT_REG_DWORD(dmp_reg, 0xB0600000); | ||
1345 | dmp_reg = (uint32_t __iomem *)((uint8_t __iomem *)reg + 0xFC); | ||
1346 | fw->shadow_reg[6] = RD_REG_DWORD(dmp_reg); | ||
1347 | |||
1348 | /* Local memory controller registers. */ | 1349 | /* Local memory controller registers. */ |
1349 | iter_reg = fw->lmc_reg; | 1350 | iter_reg = fw->lmc_reg; |
1350 | WRT_REG_DWORD(®->iobase_addr, 0x3000); | 1351 | WRT_REG_DWORD(®->iobase_addr, 0x3000); |
@@ -1677,7 +1678,7 @@ qla24xx_ascii_fw_dump(scsi_qla_host_t *ha) | |||
1677 | ha->fw_major_version, ha->fw_minor_version, | 1678 | ha->fw_major_version, ha->fw_minor_version, |
1678 | ha->fw_subminor_version, ha->fw_attributes); | 1679 | ha->fw_subminor_version, ha->fw_attributes); |
1679 | 1680 | ||
1680 | qla_uprintf(&uiter, "\nHCCR Register\n%04x\n", fw->hccr); | 1681 | qla_uprintf(&uiter, "\nR2H Status Register\n%04x\n", fw->host_status); |
1681 | 1682 | ||
1682 | qla_uprintf(&uiter, "\nHost Interface Registers"); | 1683 | qla_uprintf(&uiter, "\nHost Interface Registers"); |
1683 | for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++) { | 1684 | for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++) { |
@@ -1687,6 +1688,14 @@ qla24xx_ascii_fw_dump(scsi_qla_host_t *ha) | |||
1687 | qla_uprintf(&uiter, "%08x ", fw->host_reg[cnt]); | 1688 | qla_uprintf(&uiter, "%08x ", fw->host_reg[cnt]); |
1688 | } | 1689 | } |
1689 | 1690 | ||
1691 | qla_uprintf(&uiter, "\n\nShadow Registers"); | ||
1692 | for (cnt = 0; cnt < sizeof(fw->shadow_reg) / 4; cnt++) { | ||
1693 | if (cnt % 8 == 0) | ||
1694 | qla_uprintf(&uiter, "\n"); | ||
1695 | |||
1696 | qla_uprintf(&uiter, "%08x ", fw->shadow_reg[cnt]); | ||
1697 | } | ||
1698 | |||
1690 | qla_uprintf(&uiter, "\n\nMailbox Registers"); | 1699 | qla_uprintf(&uiter, "\n\nMailbox Registers"); |
1691 | for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++) { | 1700 | for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++) { |
1692 | if (cnt % 8 == 0) | 1701 | if (cnt % 8 == 0) |
@@ -1855,14 +1864,6 @@ qla24xx_ascii_fw_dump(scsi_qla_host_t *ha) | |||
1855 | qla_uprintf(&uiter, "%08x ", fw->risc_gp_reg[cnt]); | 1864 | qla_uprintf(&uiter, "%08x ", fw->risc_gp_reg[cnt]); |
1856 | } | 1865 | } |
1857 | 1866 | ||
1858 | qla_uprintf(&uiter, "\n\nShadow Registers"); | ||
1859 | for (cnt = 0; cnt < sizeof(fw->shadow_reg) / 4; cnt++) { | ||
1860 | if (cnt % 8 == 0) | ||
1861 | qla_uprintf(&uiter, "\n"); | ||
1862 | |||
1863 | qla_uprintf(&uiter, "%08x ", fw->shadow_reg[cnt]); | ||
1864 | } | ||
1865 | |||
1866 | qla_uprintf(&uiter, "\n\nLMC Registers"); | 1867 | qla_uprintf(&uiter, "\n\nLMC Registers"); |
1867 | for (cnt = 0; cnt < sizeof(fw->lmc_reg) / 4; cnt++) { | 1868 | for (cnt = 0; cnt < sizeof(fw->lmc_reg) / 4; cnt++) { |
1868 | if (cnt % 8 == 0) | 1869 | if (cnt % 8 == 0) |
diff --git a/drivers/scsi/qla2xxx/qla_dbg.h b/drivers/scsi/qla2xxx/qla_dbg.h index 935a59a8c054..ab6afeaa2f2c 100644 --- a/drivers/scsi/qla2xxx/qla_dbg.h +++ b/drivers/scsi/qla2xxx/qla_dbg.h | |||
@@ -227,8 +227,9 @@ struct qla2100_fw_dump { | |||
227 | #define FW_DUMP_SIZE_24XX 0x2B0000 | 227 | #define FW_DUMP_SIZE_24XX 0x2B0000 |
228 | 228 | ||
229 | struct qla24xx_fw_dump { | 229 | struct qla24xx_fw_dump { |
230 | uint32_t hccr; | 230 | uint32_t host_status; |
231 | uint32_t host_reg[32]; | 231 | uint32_t host_reg[32]; |
232 | uint32_t shadow_reg[7]; | ||
232 | uint16_t mailbox_reg[32]; | 233 | uint16_t mailbox_reg[32]; |
233 | uint32_t xseq_gp_reg[128]; | 234 | uint32_t xseq_gp_reg[128]; |
234 | uint32_t xseq_0_reg[16]; | 235 | uint32_t xseq_0_reg[16]; |
@@ -250,7 +251,6 @@ struct qla24xx_fw_dump { | |||
250 | uint32_t rcvt0_data_dma_reg[32]; | 251 | uint32_t rcvt0_data_dma_reg[32]; |
251 | uint32_t rcvt1_data_dma_reg[32]; | 252 | uint32_t rcvt1_data_dma_reg[32]; |
252 | uint32_t risc_gp_reg[128]; | 253 | uint32_t risc_gp_reg[128]; |
253 | uint32_t shadow_reg[7]; | ||
254 | uint32_t lmc_reg[112]; | 254 | uint32_t lmc_reg[112]; |
255 | uint32_t fpm_hdw_reg[192]; | 255 | uint32_t fpm_hdw_reg[192]; |
256 | uint32_t fb_hdw_reg[176]; | 256 | uint32_t fb_hdw_reg[176]; |
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 7b3efd531297..79d8a914f9d0 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/completion.h> | 22 | #include <linux/completion.h> |
23 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
24 | #include <linux/workqueue.h> | 24 | #include <linux/workqueue.h> |
25 | #include <linux/firmware.h> | ||
25 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
26 | 27 | ||
27 | #include <scsi/scsi.h> | 28 | #include <scsi/scsi.h> |
@@ -29,6 +30,7 @@ | |||
29 | #include <scsi/scsi_device.h> | 30 | #include <scsi/scsi_device.h> |
30 | #include <scsi/scsi_cmnd.h> | 31 | #include <scsi/scsi_cmnd.h> |
31 | 32 | ||
33 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) | ||
32 | #if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE) | 34 | #if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE) |
33 | #define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100) | 35 | #define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100) |
34 | #else | 36 | #else |
@@ -79,9 +81,23 @@ | |||
79 | #define IS_QLA2522(ha) 0 | 81 | #define IS_QLA2522(ha) 0 |
80 | #endif | 82 | #endif |
81 | 83 | ||
84 | #else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */ | ||
85 | |||
86 | #define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100) | ||
87 | #define IS_QLA2200(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2200) | ||
88 | #define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300) | ||
89 | #define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312) | ||
90 | #define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322) | ||
91 | #define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312) | ||
92 | #define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322) | ||
93 | #define IS_QLA2422(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422) | ||
94 | #define IS_QLA2432(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) | ||
95 | #define IS_QLA2512(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2512) | ||
96 | #define IS_QLA2522(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2522) | ||
97 | #endif | ||
98 | |||
82 | #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ | 99 | #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ |
83 | IS_QLA6312(ha) || IS_QLA6322(ha)) | 100 | IS_QLA6312(ha) || IS_QLA6322(ha)) |
84 | |||
85 | #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) | 101 | #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) |
86 | #define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha)) | 102 | #define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha)) |
87 | 103 | ||
@@ -2124,6 +2140,12 @@ struct qla_board_info { | |||
2124 | struct scsi_host_template *sht; | 2140 | struct scsi_host_template *sht; |
2125 | }; | 2141 | }; |
2126 | 2142 | ||
2143 | struct fw_blob { | ||
2144 | char *name; | ||
2145 | uint32_t segs[4]; | ||
2146 | const struct firmware *fw; | ||
2147 | }; | ||
2148 | |||
2127 | /* Return data from MBC_GET_ID_LIST call. */ | 2149 | /* Return data from MBC_GET_ID_LIST call. */ |
2128 | struct gid_list_info { | 2150 | struct gid_list_info { |
2129 | uint8_t al_pa; | 2151 | uint8_t al_pa; |
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index fedcb0d3fc72..32be4c14cccb 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h | |||
@@ -33,8 +33,8 @@ extern int qla24xx_nvram_config(struct scsi_qla_host *); | |||
33 | extern void qla2x00_update_fw_options(struct scsi_qla_host *); | 33 | extern void qla2x00_update_fw_options(struct scsi_qla_host *); |
34 | extern void qla24xx_update_fw_options(scsi_qla_host_t *); | 34 | extern void qla24xx_update_fw_options(scsi_qla_host_t *); |
35 | extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *); | 35 | extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *); |
36 | extern int qla24xx_load_risc(scsi_qla_host_t *, uint32_t *); | ||
36 | extern int qla24xx_load_risc_flash(scsi_qla_host_t *, uint32_t *); | 37 | extern int qla24xx_load_risc_flash(scsi_qla_host_t *, uint32_t *); |
37 | extern int qla24xx_load_risc_hotplug(scsi_qla_host_t *, uint32_t *); | ||
38 | 38 | ||
39 | extern fc_port_t *qla2x00_alloc_fcport(scsi_qla_host_t *, gfp_t); | 39 | extern fc_port_t *qla2x00_alloc_fcport(scsi_qla_host_t *, gfp_t); |
40 | 40 | ||
@@ -62,6 +62,7 @@ extern int qlport_down_retry; | |||
62 | extern int ql2xplogiabsentdevice; | 62 | extern int ql2xplogiabsentdevice; |
63 | extern int ql2xloginretrycount; | 63 | extern int ql2xloginretrycount; |
64 | extern int ql2xfdmienable; | 64 | extern int ql2xfdmienable; |
65 | extern int ql2xprocessrscn; | ||
65 | 66 | ||
66 | extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); | 67 | extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); |
67 | 68 | ||
@@ -76,6 +77,8 @@ extern void qla2x00_blink_led(scsi_qla_host_t *); | |||
76 | 77 | ||
77 | extern int qla2x00_down_timeout(struct semaphore *, unsigned long); | 78 | extern int qla2x00_down_timeout(struct semaphore *, unsigned long); |
78 | 79 | ||
80 | extern struct fw_blob *qla2x00_request_firmware(scsi_qla_host_t *); | ||
81 | |||
79 | /* | 82 | /* |
80 | * Global Function Prototypes in qla_iocb.c source file. | 83 | * Global Function Prototypes in qla_iocb.c source file. |
81 | */ | 84 | */ |
@@ -94,10 +97,7 @@ int __qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t); | |||
94 | * Global Function Prototypes in qla_mbx.c source file. | 97 | * Global Function Prototypes in qla_mbx.c source file. |
95 | */ | 98 | */ |
96 | extern int | 99 | extern int |
97 | qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t); | 100 | qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint32_t, uint32_t); |
98 | |||
99 | extern int | ||
100 | qla2x00_load_ram_ext(scsi_qla_host_t *, dma_addr_t, uint32_t, uint32_t); | ||
101 | 101 | ||
102 | extern int | 102 | extern int |
103 | qla2x00_execute_fw(scsi_qla_host_t *, uint32_t); | 103 | qla2x00_execute_fw(scsi_qla_host_t *, uint32_t); |
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c index cd6f7c3cfe68..d620a8e8a614 100644 --- a/drivers/scsi/qla2xxx/qla_gs.c +++ b/drivers/scsi/qla2xxx/qla_gs.c | |||
@@ -538,6 +538,7 @@ qla2x00_rff_id(scsi_qla_host_t *ha) | |||
538 | ct_req->req.rff_id.port_id[1] = ha->d_id.b.area; | 538 | ct_req->req.rff_id.port_id[1] = ha->d_id.b.area; |
539 | ct_req->req.rff_id.port_id[2] = ha->d_id.b.al_pa; | 539 | ct_req->req.rff_id.port_id[2] = ha->d_id.b.al_pa; |
540 | 540 | ||
541 | ct_req->req.rff_id.fc4_feature = BIT_1; | ||
541 | ct_req->req.rff_id.fc4_type = 0x08; /* SCSI - FCP */ | 542 | ct_req->req.rff_id.fc4_type = 0x08; /* SCSI - FCP */ |
542 | 543 | ||
543 | /* Execute MS IOCB */ | 544 | /* Execute MS IOCB */ |
@@ -1529,9 +1530,9 @@ qla2x00_fdmi_rpa(scsi_qla_host_t *ha) | |||
1529 | eiter->type = __constant_cpu_to_be16(FDMI_PORT_SUPPORT_SPEED); | 1530 | eiter->type = __constant_cpu_to_be16(FDMI_PORT_SUPPORT_SPEED); |
1530 | eiter->len = __constant_cpu_to_be16(4 + 4); | 1531 | eiter->len = __constant_cpu_to_be16(4 + 4); |
1531 | if (IS_QLA25XX(ha)) | 1532 | if (IS_QLA25XX(ha)) |
1532 | eiter->a.sup_speed = __constant_cpu_to_be32(4); | ||
1533 | else if (IS_QLA24XX(ha)) | ||
1534 | eiter->a.sup_speed = __constant_cpu_to_be32(8); | 1533 | eiter->a.sup_speed = __constant_cpu_to_be32(8); |
1534 | else if (IS_QLA24XX(ha)) | ||
1535 | eiter->a.sup_speed = __constant_cpu_to_be32(4); | ||
1535 | else if (IS_QLA23XX(ha)) | 1536 | else if (IS_QLA23XX(ha)) |
1536 | eiter->a.sup_speed = __constant_cpu_to_be32(2); | 1537 | eiter->a.sup_speed = __constant_cpu_to_be32(2); |
1537 | else | 1538 | else |
@@ -1553,9 +1554,6 @@ qla2x00_fdmi_rpa(scsi_qla_host_t *ha) | |||
1553 | eiter->a.cur_speed = __constant_cpu_to_be32(2); | 1554 | eiter->a.cur_speed = __constant_cpu_to_be32(2); |
1554 | break; | 1555 | break; |
1555 | case 3: | 1556 | case 3: |
1556 | eiter->a.cur_speed = __constant_cpu_to_be32(8); | ||
1557 | break; | ||
1558 | case 4: | ||
1559 | eiter->a.cur_speed = __constant_cpu_to_be32(4); | 1557 | eiter->a.cur_speed = __constant_cpu_to_be32(4); |
1560 | break; | 1558 | break; |
1561 | } | 1559 | } |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index c46d2469b85f..a91fea69ad63 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -8,7 +8,6 @@ | |||
8 | 8 | ||
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/vmalloc.h> | 10 | #include <linux/vmalloc.h> |
11 | #include <linux/firmware.h> | ||
12 | #include <scsi/scsi_transport_fc.h> | 11 | #include <scsi/scsi_transport_fc.h> |
13 | 12 | ||
14 | #include "qla_devtbl.h" | 13 | #include "qla_devtbl.h" |
@@ -1015,11 +1014,13 @@ qla24xx_update_fw_options(scsi_qla_host_t *ha) | |||
1015 | int rval; | 1014 | int rval; |
1016 | 1015 | ||
1017 | /* Update Serial Link options. */ | 1016 | /* Update Serial Link options. */ |
1018 | if ((ha->fw_seriallink_options24[0] & BIT_0) == 0) | 1017 | if ((le16_to_cpu(ha->fw_seriallink_options24[0]) & BIT_0) == 0) |
1019 | return; | 1018 | return; |
1020 | 1019 | ||
1021 | rval = qla2x00_set_serdes_params(ha, ha->fw_seriallink_options24[1], | 1020 | rval = qla2x00_set_serdes_params(ha, |
1022 | ha->fw_seriallink_options24[2], ha->fw_seriallink_options24[3]); | 1021 | le16_to_cpu(ha->fw_seriallink_options24[1]), |
1022 | le16_to_cpu(ha->fw_seriallink_options24[2]), | ||
1023 | le16_to_cpu(ha->fw_seriallink_options24[3])); | ||
1023 | if (rval != QLA_SUCCESS) { | 1024 | if (rval != QLA_SUCCESS) { |
1024 | qla_printk(KERN_WARNING, ha, | 1025 | qla_printk(KERN_WARNING, ha, |
1025 | "Unable to update Serial Link options (%x).\n", rval); | 1026 | "Unable to update Serial Link options (%x).\n", rval); |
@@ -1940,6 +1941,9 @@ qla2x00_configure_local_loop(scsi_qla_host_t *ha) | |||
1940 | "information -- get_port_database=%x, " | 1941 | "information -- get_port_database=%x, " |
1941 | "loop_id=0x%04x\n", | 1942 | "loop_id=0x%04x\n", |
1942 | ha->host_no, rval2, new_fcport->loop_id)); | 1943 | ha->host_no, rval2, new_fcport->loop_id)); |
1944 | DEBUG2(printk("scsi(%ld): Scheduling resync...\n", | ||
1945 | ha->host_no)); | ||
1946 | set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags); | ||
1943 | continue; | 1947 | continue; |
1944 | } | 1948 | } |
1945 | 1949 | ||
@@ -2649,7 +2653,8 @@ qla2x00_device_resync(scsi_qla_host_t *ha) | |||
2649 | 2653 | ||
2650 | switch (format) { | 2654 | switch (format) { |
2651 | case 0: | 2655 | case 0: |
2652 | if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && | 2656 | if (ql2xprocessrscn && |
2657 | !IS_QLA2100(ha) && !IS_QLA2200(ha) && | ||
2653 | !IS_QLA6312(ha) && !IS_QLA6322(ha) && | 2658 | !IS_QLA6312(ha) && !IS_QLA6322(ha) && |
2654 | !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && | 2659 | !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && |
2655 | ha->flags.init_done) { | 2660 | ha->flags.init_done) { |
@@ -3403,6 +3408,8 @@ qla24xx_nvram_config(scsi_qla_host_t *ha) | |||
3403 | ha->node_name = icb->node_name; | 3408 | ha->node_name = icb->node_name; |
3404 | ha->port_name = icb->port_name; | 3409 | ha->port_name = icb->port_name; |
3405 | 3410 | ||
3411 | icb->execution_throttle = __constant_cpu_to_le16(0xFFFF); | ||
3412 | |||
3406 | ha->retry_count = le16_to_cpu(nv->login_retry_count); | 3413 | ha->retry_count = le16_to_cpu(nv->login_retry_count); |
3407 | 3414 | ||
3408 | /* Set minimum login_timeout to 4 seconds. */ | 3415 | /* Set minimum login_timeout to 4 seconds. */ |
@@ -3484,17 +3491,16 @@ qla24xx_nvram_config(scsi_qla_host_t *ha) | |||
3484 | return (rval); | 3491 | return (rval); |
3485 | } | 3492 | } |
3486 | 3493 | ||
3494 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) | ||
3495 | |||
3487 | int | 3496 | int |
3488 | qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) | 3497 | qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) |
3489 | { | 3498 | { |
3490 | int rval; | 3499 | int rval, num, i; |
3491 | uint16_t cnt; | 3500 | uint32_t cnt; |
3492 | uint16_t *risc_code; | 3501 | uint16_t *risc_code; |
3493 | unsigned long risc_address; | 3502 | uint32_t risc_addr, risc_size; |
3494 | unsigned long risc_code_size; | 3503 | uint16_t *req_ring; |
3495 | int num; | ||
3496 | int i; | ||
3497 | uint16_t *req_ring; | ||
3498 | struct qla_fw_info *fw_iter; | 3504 | struct qla_fw_info *fw_iter; |
3499 | 3505 | ||
3500 | rval = QLA_SUCCESS; | 3506 | rval = QLA_SUCCESS; |
@@ -3504,37 +3510,29 @@ qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3504 | *srisc_addr = *ha->brd_info->fw_info->fwstart; | 3510 | *srisc_addr = *ha->brd_info->fw_info->fwstart; |
3505 | while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) { | 3511 | while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) { |
3506 | risc_code = fw_iter->fwcode; | 3512 | risc_code = fw_iter->fwcode; |
3507 | risc_code_size = *fw_iter->fwlen; | 3513 | risc_size = *fw_iter->fwlen; |
3508 | 3514 | if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) | |
3509 | if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) { | 3515 | risc_addr = *fw_iter->fwstart; |
3510 | risc_address = *fw_iter->fwstart; | 3516 | else |
3511 | } else { | 3517 | risc_addr = *fw_iter->lfwstart; |
3512 | /* Extended address */ | ||
3513 | risc_address = *fw_iter->lfwstart; | ||
3514 | } | ||
3515 | 3518 | ||
3516 | num = 0; | 3519 | num = 0; |
3517 | rval = 0; | 3520 | rval = 0; |
3518 | while (risc_code_size > 0 && !rval) { | 3521 | while (risc_size > 0 && !rval) { |
3519 | cnt = (uint16_t)(ha->fw_transfer_size >> 1); | 3522 | cnt = (uint16_t)(ha->fw_transfer_size >> 1); |
3520 | if (cnt > risc_code_size) | 3523 | if (cnt > risc_size) |
3521 | cnt = risc_code_size; | 3524 | cnt = risc_size; |
3522 | 3525 | ||
3523 | DEBUG7(printk("scsi(%ld): Loading risc segment@ " | 3526 | DEBUG7(printk("scsi(%ld): Loading risc segment@ " |
3524 | "addr %p, number of bytes 0x%x, offset 0x%lx.\n", | 3527 | "addr %p, number of bytes 0x%x, offset 0x%lx.\n", |
3525 | ha->host_no, risc_code, cnt, risc_address)); | 3528 | ha->host_no, risc_code, cnt, risc_addr)); |
3526 | 3529 | ||
3527 | req_ring = (uint16_t *)ha->request_ring; | 3530 | req_ring = (uint16_t *)ha->request_ring; |
3528 | for (i = 0; i < cnt; i++) | 3531 | for (i = 0; i < cnt; i++) |
3529 | req_ring[i] = cpu_to_le16(risc_code[i]); | 3532 | req_ring[i] = cpu_to_le16(risc_code[i]); |
3530 | 3533 | ||
3531 | if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) { | 3534 | rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, |
3532 | rval = qla2x00_load_ram(ha, ha->request_dma, | 3535 | cnt); |
3533 | risc_address, cnt); | ||
3534 | } else { | ||
3535 | rval = qla2x00_load_ram_ext(ha, | ||
3536 | ha->request_dma, risc_address, cnt); | ||
3537 | } | ||
3538 | if (rval) { | 3536 | if (rval) { |
3539 | DEBUG(printk("scsi(%ld): [ERROR] Failed to " | 3537 | DEBUG(printk("scsi(%ld): [ERROR] Failed to " |
3540 | "load segment %d of firmware\n", | 3538 | "load segment %d of firmware\n", |
@@ -3548,16 +3546,76 @@ qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3548 | } | 3546 | } |
3549 | 3547 | ||
3550 | risc_code += cnt; | 3548 | risc_code += cnt; |
3551 | risc_address += cnt; | 3549 | risc_addr += cnt; |
3552 | risc_code_size -= cnt; | 3550 | risc_size -= cnt; |
3553 | num++; | 3551 | num++; |
3554 | } | 3552 | } |
3555 | 3553 | ||
3556 | /* Next firmware sequence */ | 3554 | /* Next firmware sequence */ |
3557 | fw_iter++; | 3555 | fw_iter++; |
3558 | } | 3556 | } |
3557 | return rval; | ||
3558 | } | ||
3559 | 3559 | ||
3560 | return (rval); | 3560 | int |
3561 | qla24xx_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) | ||
3562 | { | ||
3563 | int rval, num, i; | ||
3564 | uint32_t cnt; | ||
3565 | uint32_t *risc_code; | ||
3566 | uint32_t risc_addr, risc_size; | ||
3567 | uint32_t *req_ring; | ||
3568 | struct qla_fw_info *fw_iter; | ||
3569 | |||
3570 | rval = QLA_SUCCESS; | ||
3571 | |||
3572 | /* Load firmware sequences */ | ||
3573 | fw_iter = ha->brd_info->fw_info; | ||
3574 | *srisc_addr = *((uint32_t *)fw_iter->lfwstart); | ||
3575 | while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) { | ||
3576 | risc_code = (uint32_t *)fw_iter->fwcode; | ||
3577 | risc_size = *((uint32_t *)fw_iter->fwlen); | ||
3578 | risc_addr = *((uint32_t *)fw_iter->lfwstart); | ||
3579 | |||
3580 | num = 0; | ||
3581 | rval = 0; | ||
3582 | while (risc_size > 0 && !rval) { | ||
3583 | cnt = (uint32_t)(ha->fw_transfer_size >> 2); | ||
3584 | if (cnt > risc_size) | ||
3585 | cnt = risc_size; | ||
3586 | |||
3587 | DEBUG7(printk("scsi(%ld): Loading risc segment@ " | ||
3588 | "addr %p, number of bytes 0x%x, offset 0x%lx.\n", | ||
3589 | ha->host_no, risc_code, cnt, risc_addr)); | ||
3590 | |||
3591 | req_ring = (uint32_t *)ha->request_ring; | ||
3592 | for (i = 0; i < cnt; i++) | ||
3593 | req_ring[i] = cpu_to_le32(risc_code[i]); | ||
3594 | |||
3595 | rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, | ||
3596 | cnt); | ||
3597 | if (rval) { | ||
3598 | DEBUG(printk("scsi(%ld): [ERROR] Failed to " | ||
3599 | "load segment %d of firmware\n", | ||
3600 | ha->host_no, num)); | ||
3601 | qla_printk(KERN_WARNING, ha, | ||
3602 | "[ERROR] Failed to load segment %d of " | ||
3603 | "firmware\n", num); | ||
3604 | |||
3605 | qla2x00_dump_regs(ha); | ||
3606 | break; | ||
3607 | } | ||
3608 | |||
3609 | risc_code += cnt; | ||
3610 | risc_addr += cnt; | ||
3611 | risc_size -= cnt; | ||
3612 | num++; | ||
3613 | } | ||
3614 | |||
3615 | /* Next firmware sequence */ | ||
3616 | fw_iter++; | ||
3617 | } | ||
3618 | return rval; | ||
3561 | } | 3619 | } |
3562 | 3620 | ||
3563 | int | 3621 | int |
@@ -3617,8 +3675,8 @@ qla24xx_load_risc_flash(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3617 | for (i = 0; i < dlen; i++) | 3675 | for (i = 0; i < dlen; i++) |
3618 | dcode[i] = swab32(dcode[i]); | 3676 | dcode[i] = swab32(dcode[i]); |
3619 | 3677 | ||
3620 | rval = qla2x00_load_ram_ext(ha, ha->request_dma, | 3678 | rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, |
3621 | risc_addr, dlen); | 3679 | dlen); |
3622 | if (rval) { | 3680 | if (rval) { |
3623 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " | 3681 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " |
3624 | "segment %d of firmware\n", ha->host_no, | 3682 | "segment %d of firmware\n", ha->host_no, |
@@ -3642,8 +3700,108 @@ qla24xx_load_risc_flash(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3642 | return rval; | 3700 | return rval; |
3643 | } | 3701 | } |
3644 | 3702 | ||
3703 | #else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */ | ||
3704 | |||
3705 | int | ||
3706 | qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) | ||
3707 | { | ||
3708 | int rval; | ||
3709 | int i, fragment; | ||
3710 | uint16_t *wcode, *fwcode; | ||
3711 | uint32_t risc_addr, risc_size, fwclen, wlen, *seg; | ||
3712 | struct fw_blob *blob; | ||
3713 | |||
3714 | /* Load firmware blob. */ | ||
3715 | blob = qla2x00_request_firmware(ha); | ||
3716 | if (!blob) { | ||
3717 | qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n"); | ||
3718 | return QLA_FUNCTION_FAILED; | ||
3719 | } | ||
3720 | |||
3721 | rval = QLA_SUCCESS; | ||
3722 | |||
3723 | wcode = (uint16_t *)ha->request_ring; | ||
3724 | *srisc_addr = 0; | ||
3725 | fwcode = (uint16_t *)blob->fw->data; | ||
3726 | fwclen = 0; | ||
3727 | |||
3728 | /* Validate firmware image by checking version. */ | ||
3729 | if (blob->fw->size < 8 * sizeof(uint16_t)) { | ||
3730 | qla_printk(KERN_WARNING, ha, | ||
3731 | "Unable to verify integrity of firmware image (%Zd)!\n", | ||
3732 | blob->fw->size); | ||
3733 | goto fail_fw_integrity; | ||
3734 | } | ||
3735 | for (i = 0; i < 4; i++) | ||
3736 | wcode[i] = be16_to_cpu(fwcode[i + 4]); | ||
3737 | if ((wcode[0] == 0xffff && wcode[1] == 0xffff && wcode[2] == 0xffff && | ||
3738 | wcode[3] == 0xffff) || (wcode[0] == 0 && wcode[1] == 0 && | ||
3739 | wcode[2] == 0 && wcode[3] == 0)) { | ||
3740 | qla_printk(KERN_WARNING, ha, | ||
3741 | "Unable to verify integrity of firmware image!\n"); | ||
3742 | qla_printk(KERN_WARNING, ha, | ||
3743 | "Firmware data: %04x %04x %04x %04x!\n", wcode[0], | ||
3744 | wcode[1], wcode[2], wcode[3]); | ||
3745 | goto fail_fw_integrity; | ||
3746 | } | ||
3747 | |||
3748 | seg = blob->segs; | ||
3749 | while (*seg && rval == QLA_SUCCESS) { | ||
3750 | risc_addr = *seg; | ||
3751 | *srisc_addr = *srisc_addr == 0 ? *seg : *srisc_addr; | ||
3752 | risc_size = be16_to_cpu(fwcode[3]); | ||
3753 | |||
3754 | /* Validate firmware image size. */ | ||
3755 | fwclen += risc_size * sizeof(uint16_t); | ||
3756 | if (blob->fw->size < fwclen) { | ||
3757 | qla_printk(KERN_WARNING, ha, | ||
3758 | "Unable to verify integrity of firmware image " | ||
3759 | "(%Zd)!\n", blob->fw->size); | ||
3760 | goto fail_fw_integrity; | ||
3761 | } | ||
3762 | |||
3763 | fragment = 0; | ||
3764 | while (risc_size > 0 && rval == QLA_SUCCESS) { | ||
3765 | wlen = (uint16_t)(ha->fw_transfer_size >> 1); | ||
3766 | if (wlen > risc_size) | ||
3767 | wlen = risc_size; | ||
3768 | |||
3769 | DEBUG7(printk("scsi(%ld): Loading risc segment@ risc " | ||
3770 | "addr %x, number of words 0x%x.\n", ha->host_no, | ||
3771 | risc_addr, wlen)); | ||
3772 | |||
3773 | for (i = 0; i < wlen; i++) | ||
3774 | wcode[i] = swab16(fwcode[i]); | ||
3775 | |||
3776 | rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, | ||
3777 | wlen); | ||
3778 | if (rval) { | ||
3779 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " | ||
3780 | "segment %d of firmware\n", ha->host_no, | ||
3781 | fragment)); | ||
3782 | qla_printk(KERN_WARNING, ha, | ||
3783 | "[ERROR] Failed to load segment %d of " | ||
3784 | "firmware\n", fragment); | ||
3785 | break; | ||
3786 | } | ||
3787 | |||
3788 | fwcode += wlen; | ||
3789 | risc_addr += wlen; | ||
3790 | risc_size -= wlen; | ||
3791 | fragment++; | ||
3792 | } | ||
3793 | |||
3794 | /* Next segment. */ | ||
3795 | seg++; | ||
3796 | } | ||
3797 | return rval; | ||
3798 | |||
3799 | fail_fw_integrity: | ||
3800 | return QLA_FUNCTION_FAILED; | ||
3801 | } | ||
3802 | |||
3645 | int | 3803 | int |
3646 | qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | 3804 | qla24xx_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) |
3647 | { | 3805 | { |
3648 | int rval; | 3806 | int rval; |
3649 | int segments, fragment; | 3807 | int segments, fragment; |
@@ -3651,14 +3809,13 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3651 | uint32_t risc_addr; | 3809 | uint32_t risc_addr; |
3652 | uint32_t risc_size; | 3810 | uint32_t risc_size; |
3653 | uint32_t i; | 3811 | uint32_t i; |
3654 | const struct firmware *fw_entry; | 3812 | struct fw_blob *blob; |
3655 | uint32_t *fwcode, fwclen; | 3813 | uint32_t *fwcode, fwclen; |
3656 | 3814 | ||
3657 | if (request_firmware(&fw_entry, ha->brd_info->fw_fname, | 3815 | /* Load firmware blob. */ |
3658 | &ha->pdev->dev)) { | 3816 | blob = qla2x00_request_firmware(ha); |
3659 | qla_printk(KERN_ERR, ha, | 3817 | if (!blob) { |
3660 | "Firmware image file not available: '%s'\n", | 3818 | qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n"); |
3661 | ha->brd_info->fw_fname); | ||
3662 | return QLA_FUNCTION_FAILED; | 3819 | return QLA_FUNCTION_FAILED; |
3663 | } | 3820 | } |
3664 | 3821 | ||
@@ -3667,14 +3824,14 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3667 | segments = FA_RISC_CODE_SEGMENTS; | 3824 | segments = FA_RISC_CODE_SEGMENTS; |
3668 | dcode = (uint32_t *)ha->request_ring; | 3825 | dcode = (uint32_t *)ha->request_ring; |
3669 | *srisc_addr = 0; | 3826 | *srisc_addr = 0; |
3670 | fwcode = (uint32_t *)fw_entry->data; | 3827 | fwcode = (uint32_t *)blob->fw->data; |
3671 | fwclen = 0; | 3828 | fwclen = 0; |
3672 | 3829 | ||
3673 | /* Validate firmware image by checking version. */ | 3830 | /* Validate firmware image by checking version. */ |
3674 | if (fw_entry->size < 8 * sizeof(uint32_t)) { | 3831 | if (blob->fw->size < 8 * sizeof(uint32_t)) { |
3675 | qla_printk(KERN_WARNING, ha, | 3832 | qla_printk(KERN_WARNING, ha, |
3676 | "Unable to verify integrity of flash firmware image " | 3833 | "Unable to verify integrity of firmware image (%Zd)!\n", |
3677 | "(%Zd)!\n", fw_entry->size); | 3834 | blob->fw->size); |
3678 | goto fail_fw_integrity; | 3835 | goto fail_fw_integrity; |
3679 | } | 3836 | } |
3680 | for (i = 0; i < 4; i++) | 3837 | for (i = 0; i < 4; i++) |
@@ -3684,7 +3841,7 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3684 | (dcode[0] == 0 && dcode[1] == 0 && dcode[2] == 0 && | 3841 | (dcode[0] == 0 && dcode[1] == 0 && dcode[2] == 0 && |
3685 | dcode[3] == 0)) { | 3842 | dcode[3] == 0)) { |
3686 | qla_printk(KERN_WARNING, ha, | 3843 | qla_printk(KERN_WARNING, ha, |
3687 | "Unable to verify integrity of flash firmware image!\n"); | 3844 | "Unable to verify integrity of firmware image!\n"); |
3688 | qla_printk(KERN_WARNING, ha, | 3845 | qla_printk(KERN_WARNING, ha, |
3689 | "Firmware data: %08x %08x %08x %08x!\n", dcode[0], | 3846 | "Firmware data: %08x %08x %08x %08x!\n", dcode[0], |
3690 | dcode[1], dcode[2], dcode[3]); | 3847 | dcode[1], dcode[2], dcode[3]); |
@@ -3698,10 +3855,11 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3698 | 3855 | ||
3699 | /* Validate firmware image size. */ | 3856 | /* Validate firmware image size. */ |
3700 | fwclen += risc_size * sizeof(uint32_t); | 3857 | fwclen += risc_size * sizeof(uint32_t); |
3701 | if (fw_entry->size < fwclen) { | 3858 | if (blob->fw->size < fwclen) { |
3702 | qla_printk(KERN_WARNING, ha, | 3859 | qla_printk(KERN_WARNING, ha, |
3703 | "Unable to verify integrity of flash firmware " | 3860 | "Unable to verify integrity of firmware image " |
3704 | "image (%Zd)!\n", fw_entry->size); | 3861 | "(%Zd)!\n", blob->fw->size); |
3862 | |||
3705 | goto fail_fw_integrity; | 3863 | goto fail_fw_integrity; |
3706 | } | 3864 | } |
3707 | 3865 | ||
@@ -3718,8 +3876,8 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3718 | for (i = 0; i < dlen; i++) | 3876 | for (i = 0; i < dlen; i++) |
3719 | dcode[i] = swab32(fwcode[i]); | 3877 | dcode[i] = swab32(fwcode[i]); |
3720 | 3878 | ||
3721 | rval = qla2x00_load_ram_ext(ha, ha->request_dma, | 3879 | rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, |
3722 | risc_addr, dlen); | 3880 | dlen); |
3723 | if (rval) { | 3881 | if (rval) { |
3724 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " | 3882 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " |
3725 | "segment %d of firmware\n", ha->host_no, | 3883 | "segment %d of firmware\n", ha->host_no, |
@@ -3739,13 +3897,9 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) | |||
3739 | /* Next segment. */ | 3897 | /* Next segment. */ |
3740 | segments--; | 3898 | segments--; |
3741 | } | 3899 | } |
3742 | |||
3743 | release_firmware(fw_entry); | ||
3744 | return rval; | 3900 | return rval; |
3745 | 3901 | ||
3746 | fail_fw_integrity: | 3902 | fail_fw_integrity: |
3747 | |||
3748 | release_firmware(fw_entry); | ||
3749 | return QLA_FUNCTION_FAILED; | 3903 | return QLA_FUNCTION_FAILED; |
3750 | |||
3751 | } | 3904 | } |
3905 | #endif | ||
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 5181d966fecb..f63af081d4ff 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -519,7 +519,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb) | |||
519 | * us, create a new entry in our rscn fcports list and handle | 519 | * us, create a new entry in our rscn fcports list and handle |
520 | * the event like an RSCN. | 520 | * the event like an RSCN. |
521 | */ | 521 | */ |
522 | if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) && | 522 | if (ql2xprocessrscn && |
523 | !IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) && | ||
523 | !IS_QLA6322(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && | 524 | !IS_QLA6322(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && |
524 | ha->flags.init_done && mb[1] != 0xffff && | 525 | ha->flags.init_done && mb[1] != 0xffff && |
525 | ((ha->operating_mode == P2P && mb[1] != 0) || | 526 | ((ha->operating_mode == P2P && mb[1] != 0) || |
@@ -963,15 +964,16 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) | |||
963 | break; | 964 | break; |
964 | 965 | ||
965 | case CS_DATA_UNDERRUN: | 966 | case CS_DATA_UNDERRUN: |
966 | DEBUG2(printk(KERN_INFO | ||
967 | "scsi(%ld:%d:%d) UNDERRUN status detected 0x%x-0x%x.\n", | ||
968 | ha->host_no, cp->device->id, cp->device->lun, comp_status, | ||
969 | scsi_status)); | ||
970 | |||
971 | resid = resid_len; | 967 | resid = resid_len; |
972 | if (scsi_status & SS_RESIDUAL_UNDER) { | 968 | if (scsi_status & SS_RESIDUAL_UNDER) { |
973 | cp->resid = resid; | 969 | cp->resid = resid; |
974 | CMD_RESID_LEN(cp) = resid; | 970 | CMD_RESID_LEN(cp) = resid; |
971 | } else { | ||
972 | DEBUG2(printk(KERN_INFO | ||
973 | "scsi(%ld:%d:%d) UNDERRUN status detected " | ||
974 | "0x%x-0x%x.\n", ha->host_no, cp->device->id, | ||
975 | cp->device->lun, comp_status, scsi_status)); | ||
976 | |||
975 | } | 977 | } |
976 | 978 | ||
977 | /* | 979 | /* |
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 9746cd1e664b..3099b379de9d 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c | |||
@@ -196,7 +196,9 @@ qla2x00_mailbox_command(scsi_qla_host_t *ha, mbx_cmd_t *mcp) | |||
196 | /* Check for pending interrupts. */ | 196 | /* Check for pending interrupts. */ |
197 | qla2x00_poll(ha); | 197 | qla2x00_poll(ha); |
198 | 198 | ||
199 | udelay(10); /* v4.27 */ | 199 | if (command != MBC_LOAD_RISC_RAM_EXTENDED && |
200 | !ha->flags.mbox_int) | ||
201 | msleep(10); | ||
200 | } /* while */ | 202 | } /* while */ |
201 | } | 203 | } |
202 | 204 | ||
@@ -325,113 +327,30 @@ qla2x00_mailbox_command(scsi_qla_host_t *ha, mbx_cmd_t *mcp) | |||
325 | return rval; | 327 | return rval; |
326 | } | 328 | } |
327 | 329 | ||
328 | /* | ||
329 | * qla2x00_load_ram | ||
330 | * Load adapter RAM using DMA. | ||
331 | * | ||
332 | * Input: | ||
333 | * ha = adapter block pointer. | ||
334 | * | ||
335 | * Returns: | ||
336 | * qla2x00 local function return status code. | ||
337 | * | ||
338 | * Context: | ||
339 | * Kernel context. | ||
340 | */ | ||
341 | int | 330 | int |
342 | qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint16_t risc_addr, | 331 | qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t risc_addr, |
343 | uint16_t risc_code_size) | 332 | uint32_t risc_code_size) |
344 | { | 333 | { |
345 | int rval; | 334 | int rval; |
346 | mbx_cmd_t mc; | 335 | mbx_cmd_t mc; |
347 | mbx_cmd_t *mcp = &mc; | 336 | mbx_cmd_t *mcp = &mc; |
348 | uint32_t req_len; | ||
349 | dma_addr_t nml_dma; | ||
350 | uint32_t nml_len; | ||
351 | uint32_t normalized; | ||
352 | |||
353 | DEBUG11(printk("qla2x00_load_ram(%ld): entered.\n", | ||
354 | ha->host_no);) | ||
355 | 337 | ||
356 | req_len = risc_code_size; | 338 | DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); |
357 | nml_dma = 0; | ||
358 | nml_len = 0; | ||
359 | |||
360 | normalized = qla2x00_normalize_dma_addr(&req_dma, &req_len, &nml_dma, | ||
361 | &nml_len); | ||
362 | |||
363 | /* Load first segment */ | ||
364 | mcp->mb[0] = MBC_LOAD_RISC_RAM; | ||
365 | mcp->mb[1] = risc_addr; | ||
366 | mcp->mb[2] = MSW(req_dma); | ||
367 | mcp->mb[3] = LSW(req_dma); | ||
368 | mcp->mb[4] = (uint16_t)req_len; | ||
369 | mcp->mb[6] = MSW(MSD(req_dma)); | ||
370 | mcp->mb[7] = LSW(MSD(req_dma)); | ||
371 | mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; | ||
372 | mcp->in_mb = MBX_0; | ||
373 | mcp->tov = 30; | ||
374 | mcp->flags = 0; | ||
375 | rval = qla2x00_mailbox_command(ha, mcp); | ||
376 | |||
377 | /* Load second segment - if necessary */ | ||
378 | if (normalized && (rval == QLA_SUCCESS)) { | ||
379 | mcp->mb[0] = MBC_LOAD_RISC_RAM; | ||
380 | mcp->mb[1] = risc_addr + (uint16_t)req_len; | ||
381 | mcp->mb[2] = MSW(nml_dma); | ||
382 | mcp->mb[3] = LSW(nml_dma); | ||
383 | mcp->mb[4] = (uint16_t)nml_len; | ||
384 | mcp->mb[6] = MSW(MSD(nml_dma)); | ||
385 | mcp->mb[7] = LSW(MSD(nml_dma)); | ||
386 | mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; | ||
387 | mcp->in_mb = MBX_0; | ||
388 | mcp->tov = 30; | ||
389 | mcp->flags = 0; | ||
390 | rval = qla2x00_mailbox_command(ha, mcp); | ||
391 | } | ||
392 | 339 | ||
393 | if (rval == QLA_SUCCESS) { | 340 | if (MSW(risc_addr) || IS_QLA24XX(ha) || IS_QLA25XX(ha)) { |
394 | /* Empty */ | 341 | mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED; |
395 | DEBUG11(printk("qla2x00_load_ram(%ld): done.\n", ha->host_no);) | 342 | mcp->mb[8] = MSW(risc_addr); |
343 | mcp->out_mb = MBX_8|MBX_0; | ||
396 | } else { | 344 | } else { |
397 | /* Empty */ | 345 | mcp->mb[0] = MBC_LOAD_RISC_RAM; |
398 | DEBUG2_3_11(printk("qla2x00_load_ram(%ld): failed. rval=%x " | 346 | mcp->out_mb = MBX_0; |
399 | "mb[0]=%x.\n", ha->host_no, rval, mcp->mb[0]);) | ||
400 | } | 347 | } |
401 | return rval; | ||
402 | } | ||
403 | |||
404 | /* | ||
405 | * qla2x00_load_ram_ext | ||
406 | * Load adapter extended RAM using DMA. | ||
407 | * | ||
408 | * Input: | ||
409 | * ha = adapter block pointer. | ||
410 | * | ||
411 | * Returns: | ||
412 | * qla2x00 local function return status code. | ||
413 | * | ||
414 | * Context: | ||
415 | * Kernel context. | ||
416 | */ | ||
417 | int | ||
418 | qla2x00_load_ram_ext(scsi_qla_host_t *ha, dma_addr_t req_dma, | ||
419 | uint32_t risc_addr, uint32_t risc_code_size) | ||
420 | { | ||
421 | int rval; | ||
422 | mbx_cmd_t mc; | ||
423 | mbx_cmd_t *mcp = &mc; | ||
424 | |||
425 | DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); | ||
426 | |||
427 | mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED; | ||
428 | mcp->mb[1] = LSW(risc_addr); | 348 | mcp->mb[1] = LSW(risc_addr); |
429 | mcp->mb[2] = MSW(req_dma); | 349 | mcp->mb[2] = MSW(req_dma); |
430 | mcp->mb[3] = LSW(req_dma); | 350 | mcp->mb[3] = LSW(req_dma); |
431 | mcp->mb[6] = MSW(MSD(req_dma)); | 351 | mcp->mb[6] = MSW(MSD(req_dma)); |
432 | mcp->mb[7] = LSW(MSD(req_dma)); | 352 | mcp->mb[7] = LSW(MSD(req_dma)); |
433 | mcp->mb[8] = MSW(risc_addr); | 353 | mcp->out_mb |= MBX_7|MBX_6|MBX_3|MBX_2|MBX_1; |
434 | mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; | ||
435 | if (IS_QLA24XX(ha) || IS_QLA25XX(ha)) { | 354 | if (IS_QLA24XX(ha) || IS_QLA25XX(ha)) { |
436 | mcp->mb[4] = MSW(risc_code_size); | 355 | mcp->mb[4] = MSW(risc_code_size); |
437 | mcp->mb[5] = LSW(risc_code_size); | 356 | mcp->mb[5] = LSW(risc_code_size); |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index c58c9d97b041..4916847d84ec 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -54,10 +54,12 @@ module_param(ql2xloginretrycount, int, S_IRUGO|S_IRUSR); | |||
54 | MODULE_PARM_DESC(ql2xloginretrycount, | 54 | MODULE_PARM_DESC(ql2xloginretrycount, |
55 | "Specify an alternate value for the NVRAM login retry count."); | 55 | "Specify an alternate value for the NVRAM login retry count."); |
56 | 56 | ||
57 | int ql2xfwloadbin=1; | 57 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) |
58 | module_param(ql2xfwloadbin, int, S_IRUGO|S_IRUSR); | 58 | int ql2xfwloadflash; |
59 | MODULE_PARM_DESC(ql2xfwloadbin, | 59 | module_param(ql2xfwloadflash, int, S_IRUGO|S_IRUSR); |
60 | "Load ISP2xxx firmware image via hotplug."); | 60 | MODULE_PARM_DESC(ql2xfwloadflash, |
61 | "Load ISP24xx firmware image from FLASH (onboard memory)."); | ||
62 | #endif | ||
61 | 63 | ||
62 | static void qla2x00_free_device(scsi_qla_host_t *); | 64 | static void qla2x00_free_device(scsi_qla_host_t *); |
63 | 65 | ||
@@ -69,6 +71,12 @@ MODULE_PARM_DESC(ql2xfdmienable, | |||
69 | "Enables FDMI registratons " | 71 | "Enables FDMI registratons " |
70 | "Default is 0 - no FDMI. 1 - perfom FDMI."); | 72 | "Default is 0 - no FDMI. 1 - perfom FDMI."); |
71 | 73 | ||
74 | int ql2xprocessrscn; | ||
75 | module_param(ql2xprocessrscn, int, S_IRUGO|S_IRUSR); | ||
76 | MODULE_PARM_DESC(ql2xprocessrscn, | ||
77 | "Option to enable port RSCN handling via a series of less" | ||
78 | "fabric intrusive ADISCs and PLOGIs."); | ||
79 | |||
72 | /* | 80 | /* |
73 | * SCSI host template entry points | 81 | * SCSI host template entry points |
74 | */ | 82 | */ |
@@ -1261,12 +1269,16 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1261 | char pci_info[20]; | 1269 | char pci_info[20]; |
1262 | char fw_str[30]; | 1270 | char fw_str[30]; |
1263 | fc_port_t *fcport; | 1271 | fc_port_t *fcport; |
1272 | struct scsi_host_template *sht; | ||
1264 | 1273 | ||
1265 | if (pci_enable_device(pdev)) | 1274 | if (pci_enable_device(pdev)) |
1266 | goto probe_out; | 1275 | goto probe_out; |
1267 | 1276 | ||
1268 | host = scsi_host_alloc(brd_info->sht ? brd_info->sht: | 1277 | sht = &qla2x00_driver_template; |
1269 | &qla2x00_driver_template, sizeof(scsi_qla_host_t)); | 1278 | if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 || |
1279 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) | ||
1280 | sht = &qla24xx_driver_template; | ||
1281 | host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t)); | ||
1270 | if (host == NULL) { | 1282 | if (host == NULL) { |
1271 | printk(KERN_WARNING | 1283 | printk(KERN_WARNING |
1272 | "qla2xxx: Couldn't allocate host from scsi layer!\n"); | 1284 | "qla2xxx: Couldn't allocate host from scsi layer!\n"); |
@@ -1291,8 +1303,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1291 | goto probe_failed; | 1303 | goto probe_failed; |
1292 | 1304 | ||
1293 | qla_printk(KERN_INFO, ha, | 1305 | qla_printk(KERN_INFO, ha, |
1294 | "Found an %s, irq %d, iobase 0x%p\n", ha->brd_info->isp_name, | 1306 | "Found an ISP%04X, irq %d, iobase 0x%p\n", pdev->device, pdev->irq, |
1295 | pdev->irq, ha->iobase); | 1307 | ha->iobase); |
1296 | 1308 | ||
1297 | spin_lock_init(&ha->hardware_lock); | 1309 | spin_lock_init(&ha->hardware_lock); |
1298 | 1310 | ||
@@ -1368,9 +1380,11 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1368 | ha->isp_ops.reset_adapter = qla24xx_reset_adapter; | 1380 | ha->isp_ops.reset_adapter = qla24xx_reset_adapter; |
1369 | ha->isp_ops.nvram_config = qla24xx_nvram_config; | 1381 | ha->isp_ops.nvram_config = qla24xx_nvram_config; |
1370 | ha->isp_ops.update_fw_options = qla24xx_update_fw_options; | 1382 | ha->isp_ops.update_fw_options = qla24xx_update_fw_options; |
1371 | ha->isp_ops.load_risc = qla24xx_load_risc_flash; | 1383 | ha->isp_ops.load_risc = qla24xx_load_risc; |
1372 | if (ql2xfwloadbin) | 1384 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) |
1373 | ha->isp_ops.load_risc = qla24xx_load_risc_hotplug; | 1385 | if (ql2xfwloadflash) |
1386 | ha->isp_ops.load_risc = qla24xx_load_risc_flash; | ||
1387 | #endif | ||
1374 | ha->isp_ops.pci_info_str = qla24xx_pci_info_str; | 1388 | ha->isp_ops.pci_info_str = qla24xx_pci_info_str; |
1375 | ha->isp_ops.fw_version_str = qla24xx_fw_version_str; | 1389 | ha->isp_ops.fw_version_str = qla24xx_fw_version_str; |
1376 | ha->isp_ops.intr_handler = qla24xx_intr_handler; | 1390 | ha->isp_ops.intr_handler = qla24xx_intr_handler; |
@@ -1531,11 +1545,12 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1531 | qla_printk(KERN_INFO, ha, "\n" | 1545 | qla_printk(KERN_INFO, ha, "\n" |
1532 | " QLogic Fibre Channel HBA Driver: %s\n" | 1546 | " QLogic Fibre Channel HBA Driver: %s\n" |
1533 | " QLogic %s - %s\n" | 1547 | " QLogic %s - %s\n" |
1534 | " %s: %s @ %s hdma%c, host#=%ld, fw=%s\n", qla2x00_version_str, | 1548 | " ISP%04X: %s @ %s hdma%c, host#=%ld, fw=%s\n", |
1535 | ha->model_number, ha->model_desc ? ha->model_desc: "", | 1549 | qla2x00_version_str, ha->model_number, |
1536 | ha->brd_info->isp_name, ha->isp_ops.pci_info_str(ha, pci_info), | 1550 | ha->model_desc ? ha->model_desc: "", pdev->device, |
1537 | pci_name(pdev), ha->flags.enable_64bit_addressing ? '+': '-', | 1551 | ha->isp_ops.pci_info_str(ha, pci_info), pci_name(pdev), |
1538 | ha->host_no, ha->isp_ops.fw_version_str(ha, fw_str)); | 1552 | ha->flags.enable_64bit_addressing ? '+': '-', ha->host_no, |
1553 | ha->isp_ops.fw_version_str(ha, fw_str)); | ||
1539 | 1554 | ||
1540 | /* Go with fc_rport registration. */ | 1555 | /* Go with fc_rport registration. */ |
1541 | list_for_each_entry(fcport, &ha->fcports, list) | 1556 | list_for_each_entry(fcport, &ha->fcports, list) |
@@ -2483,45 +2498,115 @@ qla2x00_down_timeout(struct semaphore *sema, unsigned long timeout) | |||
2483 | return -ETIMEDOUT; | 2498 | return -ETIMEDOUT; |
2484 | } | 2499 | } |
2485 | 2500 | ||
2486 | static struct qla_board_info qla_board_tbl[] = { | 2501 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) |
2487 | { | 2502 | |
2488 | .drv_name = "qla2400", | 2503 | #define qla2x00_release_firmware() do { } while (0) |
2489 | .isp_name = "ISP2422", | 2504 | #define qla2x00_pci_module_init() (0) |
2490 | .fw_fname = "ql2400_fw.bin", | 2505 | #define qla2x00_pci_module_exit() do { } while (0) |
2491 | .sht = &qla24xx_driver_template, | 2506 | |
2492 | }, | 2507 | #else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */ |
2493 | { | 2508 | |
2494 | .drv_name = "qla2400", | 2509 | /* Firmware interface routines. */ |
2495 | .isp_name = "ISP2432", | 2510 | |
2496 | .fw_fname = "ql2400_fw.bin", | 2511 | #define FW_BLOBS 6 |
2497 | .sht = &qla24xx_driver_template, | 2512 | #define FW_ISP21XX 0 |
2498 | }, | 2513 | #define FW_ISP22XX 1 |
2514 | #define FW_ISP2300 2 | ||
2515 | #define FW_ISP2322 3 | ||
2516 | #define FW_ISP63XX 4 | ||
2517 | #define FW_ISP24XX 5 | ||
2518 | |||
2519 | static DECLARE_MUTEX(qla_fw_lock); | ||
2520 | |||
2521 | static struct fw_blob qla_fw_blobs[FW_BLOBS] = { | ||
2522 | { .name = "ql2100_fw.bin", .segs = { 0x1000, 0 }, }, | ||
2523 | { .name = "ql2200_fw.bin", .segs = { 0x1000, 0 }, }, | ||
2524 | { .name = "ql2300_fw.bin", .segs = { 0x800, 0 }, }, | ||
2525 | { .name = "ql2322_fw.bin", .segs = { 0x800, 0x1c000, 0x1e000, 0 }, }, | ||
2526 | { .name = "ql6312_fw.bin", .segs = { 0x800, 0 }, }, | ||
2527 | { .name = "ql2400_fw.bin", }, | ||
2528 | }; | ||
2529 | |||
2530 | struct fw_blob * | ||
2531 | qla2x00_request_firmware(scsi_qla_host_t *ha) | ||
2532 | { | ||
2533 | struct fw_blob *blob; | ||
2534 | |||
2535 | blob = NULL; | ||
2536 | if (IS_QLA2100(ha)) { | ||
2537 | blob = &qla_fw_blobs[FW_ISP21XX]; | ||
2538 | } else if (IS_QLA2200(ha)) { | ||
2539 | blob = &qla_fw_blobs[FW_ISP22XX]; | ||
2540 | } else if (IS_QLA2300(ha) || IS_QLA2312(ha)) { | ||
2541 | blob = &qla_fw_blobs[FW_ISP2300]; | ||
2542 | } else if (IS_QLA2322(ha)) { | ||
2543 | blob = &qla_fw_blobs[FW_ISP2322]; | ||
2544 | } else if (IS_QLA6312(ha) || IS_QLA6322(ha)) { | ||
2545 | blob = &qla_fw_blobs[FW_ISP63XX]; | ||
2546 | } else if (IS_QLA24XX(ha)) { | ||
2547 | blob = &qla_fw_blobs[FW_ISP24XX]; | ||
2548 | } | ||
2549 | |||
2550 | down(&qla_fw_lock); | ||
2551 | if (blob->fw) | ||
2552 | goto out; | ||
2553 | |||
2554 | if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) { | ||
2555 | DEBUG2(printk("scsi(%ld): Failed to load firmware image " | ||
2556 | "(%s).\n", ha->host_no, blob->name)); | ||
2557 | blob->fw = NULL; | ||
2558 | blob = NULL; | ||
2559 | goto out; | ||
2560 | } | ||
2561 | |||
2562 | out: | ||
2563 | up(&qla_fw_lock); | ||
2564 | return blob; | ||
2565 | } | ||
2566 | |||
2567 | static void | ||
2568 | qla2x00_release_firmware(void) | ||
2569 | { | ||
2570 | int idx; | ||
2571 | |||
2572 | down(&qla_fw_lock); | ||
2573 | for (idx = 0; idx < FW_BLOBS; idx++) | ||
2574 | if (qla_fw_blobs[idx].fw) | ||
2575 | release_firmware(qla_fw_blobs[idx].fw); | ||
2576 | up(&qla_fw_lock); | ||
2577 | } | ||
2578 | |||
2579 | static struct qla_board_info qla_board_tbl = { | ||
2580 | .drv_name = "qla2xxx", | ||
2499 | }; | 2581 | }; |
2500 | 2582 | ||
2501 | static struct pci_device_id qla2xxx_pci_tbl[] = { | 2583 | static struct pci_device_id qla2xxx_pci_tbl[] = { |
2502 | { | 2584 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2100, |
2503 | .vendor = PCI_VENDOR_ID_QLOGIC, | 2585 | PCI_ANY_ID, PCI_ANY_ID, }, |
2504 | .device = PCI_DEVICE_ID_QLOGIC_ISP2422, | 2586 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2200, |
2505 | .subvendor = PCI_ANY_ID, | 2587 | PCI_ANY_ID, PCI_ANY_ID, }, |
2506 | .subdevice = PCI_ANY_ID, | 2588 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2300, |
2507 | .driver_data = (unsigned long)&qla_board_tbl[0], | 2589 | PCI_ANY_ID, PCI_ANY_ID, }, |
2508 | }, | 2590 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2312, |
2509 | { | 2591 | PCI_ANY_ID, PCI_ANY_ID, }, |
2510 | .vendor = PCI_VENDOR_ID_QLOGIC, | 2592 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2322, |
2511 | .device = PCI_DEVICE_ID_QLOGIC_ISP2432, | 2593 | PCI_ANY_ID, PCI_ANY_ID, }, |
2512 | .subvendor = PCI_ANY_ID, | 2594 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP6312, |
2513 | .subdevice = PCI_ANY_ID, | 2595 | PCI_ANY_ID, PCI_ANY_ID, }, |
2514 | .driver_data = (unsigned long)&qla_board_tbl[1], | 2596 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP6322, |
2515 | }, | 2597 | PCI_ANY_ID, PCI_ANY_ID, }, |
2516 | {0, 0}, | 2598 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2422, |
2599 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
2600 | { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2432, | ||
2601 | PCI_ANY_ID, PCI_ANY_ID, }, | ||
2602 | { 0 }, | ||
2517 | }; | 2603 | }; |
2518 | MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl); | 2604 | MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl); |
2519 | 2605 | ||
2520 | static int __devinit | 2606 | static int __devinit |
2521 | qla2xxx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | 2607 | qla2xxx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) |
2522 | { | 2608 | { |
2523 | return qla2x00_probe_one(pdev, | 2609 | return qla2x00_probe_one(pdev, &qla_board_tbl); |
2524 | (struct qla_board_info *)id->driver_data); | ||
2525 | } | 2610 | } |
2526 | 2611 | ||
2527 | static void __devexit | 2612 | static void __devexit |
@@ -2532,11 +2617,28 @@ qla2xxx_remove_one(struct pci_dev *pdev) | |||
2532 | 2617 | ||
2533 | static struct pci_driver qla2xxx_pci_driver = { | 2618 | static struct pci_driver qla2xxx_pci_driver = { |
2534 | .name = "qla2xxx", | 2619 | .name = "qla2xxx", |
2620 | .driver = { | ||
2621 | .owner = THIS_MODULE, | ||
2622 | }, | ||
2535 | .id_table = qla2xxx_pci_tbl, | 2623 | .id_table = qla2xxx_pci_tbl, |
2536 | .probe = qla2xxx_probe_one, | 2624 | .probe = qla2xxx_probe_one, |
2537 | .remove = __devexit_p(qla2xxx_remove_one), | 2625 | .remove = __devexit_p(qla2xxx_remove_one), |
2538 | }; | 2626 | }; |
2539 | 2627 | ||
2628 | static inline int | ||
2629 | qla2x00_pci_module_init(void) | ||
2630 | { | ||
2631 | return pci_module_init(&qla2xxx_pci_driver); | ||
2632 | } | ||
2633 | |||
2634 | static inline void | ||
2635 | qla2x00_pci_module_exit(void) | ||
2636 | { | ||
2637 | pci_unregister_driver(&qla2xxx_pci_driver); | ||
2638 | } | ||
2639 | |||
2640 | #endif | ||
2641 | |||
2540 | /** | 2642 | /** |
2541 | * qla2x00_module_init - Module initialization. | 2643 | * qla2x00_module_init - Module initialization. |
2542 | **/ | 2644 | **/ |
@@ -2556,6 +2658,9 @@ qla2x00_module_init(void) | |||
2556 | 2658 | ||
2557 | /* Derive version string. */ | 2659 | /* Derive version string. */ |
2558 | strcpy(qla2x00_version_str, QLA2XXX_VERSION); | 2660 | strcpy(qla2x00_version_str, QLA2XXX_VERSION); |
2661 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) | ||
2662 | strcat(qla2x00_version_str, "-fw"); | ||
2663 | #endif | ||
2559 | #if DEBUG_QLA2100 | 2664 | #if DEBUG_QLA2100 |
2560 | strcat(qla2x00_version_str, "-debug"); | 2665 | strcat(qla2x00_version_str, "-debug"); |
2561 | #endif | 2666 | #endif |
@@ -2565,7 +2670,7 @@ qla2x00_module_init(void) | |||
2565 | return -ENODEV; | 2670 | return -ENODEV; |
2566 | 2671 | ||
2567 | printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n"); | 2672 | printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n"); |
2568 | ret = pci_module_init(&qla2xxx_pci_driver); | 2673 | ret = qla2x00_pci_module_init(); |
2569 | if (ret) { | 2674 | if (ret) { |
2570 | kmem_cache_destroy(srb_cachep); | 2675 | kmem_cache_destroy(srb_cachep); |
2571 | fc_release_transport(qla2xxx_transport_template); | 2676 | fc_release_transport(qla2xxx_transport_template); |
@@ -2579,7 +2684,8 @@ qla2x00_module_init(void) | |||
2579 | static void __exit | 2684 | static void __exit |
2580 | qla2x00_module_exit(void) | 2685 | qla2x00_module_exit(void) |
2581 | { | 2686 | { |
2582 | pci_unregister_driver(&qla2xxx_pci_driver); | 2687 | qla2x00_pci_module_exit(); |
2688 | qla2x00_release_firmware(); | ||
2583 | kmem_cache_destroy(srb_cachep); | 2689 | kmem_cache_destroy(srb_cachep); |
2584 | fc_release_transport(qla2xxx_transport_template); | 2690 | fc_release_transport(qla2xxx_transport_template); |
2585 | } | 2691 | } |
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c index d54d2a99c3d3..f4d755a643e4 100644 --- a/drivers/scsi/qla2xxx/qla_sup.c +++ b/drivers/scsi/qla2xxx/qla_sup.c | |||
@@ -573,6 +573,9 @@ qla24xx_write_flash_data(scsi_qla_host_t *ha, uint32_t *dwptr, uint32_t faddr, | |||
573 | } | 573 | } |
574 | } while (0); | 574 | } while (0); |
575 | 575 | ||
576 | /* Enable flash write-protection. */ | ||
577 | qla24xx_write_flash_dword(ha, flash_conf_to_access_addr(0x101), 0x9c); | ||
578 | |||
576 | /* Disable flash write. */ | 579 | /* Disable flash write. */ |
577 | WRT_REG_DWORD(®->ctrl_status, | 580 | WRT_REG_DWORD(®->ctrl_status, |
578 | RD_REG_DWORD(®->ctrl_status) & ~CSRX_FLASH_ENABLE); | 581 | RD_REG_DWORD(®->ctrl_status) & ~CSRX_FLASH_ENABLE); |
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h index f7937f7f9c68..d537192a1edb 100644 --- a/drivers/scsi/qla2xxx/qla_version.h +++ b/drivers/scsi/qla2xxx/qla_version.h | |||
@@ -7,9 +7,9 @@ | |||
7 | /* | 7 | /* |
8 | * Driver version | 8 | * Driver version |
9 | */ | 9 | */ |
10 | #define QLA2XXX_VERSION "8.01.03-k" | 10 | #define QLA2XXX_VERSION "8.01.04-k" |
11 | 11 | ||
12 | #define QLA_DRIVER_MAJOR_VER 8 | 12 | #define QLA_DRIVER_MAJOR_VER 8 |
13 | #define QLA_DRIVER_MINOR_VER 1 | 13 | #define QLA_DRIVER_MINOR_VER 1 |
14 | #define QLA_DRIVER_PATCH_VER 3 | 14 | #define QLA_DRIVER_PATCH_VER 4 |
15 | #define QLA_DRIVER_BETA_VER 0 | 15 | #define QLA_DRIVER_BETA_VER 0 |
diff --git a/drivers/scsi/raid_class.c b/drivers/scsi/raid_class.c index 5b1c12041a4f..50c398aab557 100644 --- a/drivers/scsi/raid_class.c +++ b/drivers/scsi/raid_class.c | |||
@@ -115,7 +115,7 @@ static DECLARE_TRANSPORT_CLASS(raid_class, | |||
115 | raid_remove, | 115 | raid_remove, |
116 | NULL); | 116 | NULL); |
117 | 117 | ||
118 | static struct { | 118 | static const struct { |
119 | enum raid_state value; | 119 | enum raid_state value; |
120 | char *name; | 120 | char *name; |
121 | } raid_states[] = { | 121 | } raid_states[] = { |
@@ -148,9 +148,11 @@ static struct { | |||
148 | { RAID_LEVEL_LINEAR, "linear" }, | 148 | { RAID_LEVEL_LINEAR, "linear" }, |
149 | { RAID_LEVEL_0, "raid0" }, | 149 | { RAID_LEVEL_0, "raid0" }, |
150 | { RAID_LEVEL_1, "raid1" }, | 150 | { RAID_LEVEL_1, "raid1" }, |
151 | { RAID_LEVEL_10, "raid10" }, | ||
151 | { RAID_LEVEL_3, "raid3" }, | 152 | { RAID_LEVEL_3, "raid3" }, |
152 | { RAID_LEVEL_4, "raid4" }, | 153 | { RAID_LEVEL_4, "raid4" }, |
153 | { RAID_LEVEL_5, "raid5" }, | 154 | { RAID_LEVEL_5, "raid5" }, |
155 | { RAID_LEVEL_50, "raid50" }, | ||
154 | { RAID_LEVEL_6, "raid6" }, | 156 | { RAID_LEVEL_6, "raid6" }, |
155 | }; | 157 | }; |
156 | 158 | ||
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c index 17044168ebfe..e9bee1210c23 100644 --- a/drivers/scsi/sata_mv.c +++ b/drivers/scsi/sata_mv.c | |||
@@ -374,7 +374,6 @@ static struct scsi_host_template mv_sht = { | |||
374 | .dma_boundary = MV_DMA_BOUNDARY, | 374 | .dma_boundary = MV_DMA_BOUNDARY, |
375 | .slave_configure = ata_scsi_slave_config, | 375 | .slave_configure = ata_scsi_slave_config, |
376 | .bios_param = ata_std_bios_param, | 376 | .bios_param = ata_std_bios_param, |
377 | .ordered_flush = 1, | ||
378 | }; | 377 | }; |
379 | 378 | ||
380 | static const struct ata_port_operations mv5_ops = { | 379 | static const struct ata_port_operations mv5_ops = { |
diff --git a/drivers/scsi/sata_nv.c b/drivers/scsi/sata_nv.c index 8fdb2336f6f3..945194b76998 100644 --- a/drivers/scsi/sata_nv.c +++ b/drivers/scsi/sata_nv.c | |||
@@ -29,6 +29,12 @@ | |||
29 | * NV-specific details such as register offsets, SATA phy location, | 29 | * NV-specific details such as register offsets, SATA phy location, |
30 | * hotplug info, etc. | 30 | * hotplug info, etc. |
31 | * | 31 | * |
32 | * 0.10 | ||
33 | * - Fixed spurious interrupts issue seen with the Maxtor 6H500F0 500GB | ||
34 | * drive. Also made the check_hotplug() callbacks return whether there | ||
35 | * was a hotplug interrupt or not. This was not the source of the | ||
36 | * spurious interrupts, but is the right thing to do anyway. | ||
37 | * | ||
32 | * 0.09 | 38 | * 0.09 |
33 | * - Fixed bug introduced by 0.08's MCP51 and MCP55 support. | 39 | * - Fixed bug introduced by 0.08's MCP51 and MCP55 support. |
34 | * | 40 | * |
@@ -124,10 +130,10 @@ static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); | |||
124 | static void nv_host_stop (struct ata_host_set *host_set); | 130 | static void nv_host_stop (struct ata_host_set *host_set); |
125 | static void nv_enable_hotplug(struct ata_probe_ent *probe_ent); | 131 | static void nv_enable_hotplug(struct ata_probe_ent *probe_ent); |
126 | static void nv_disable_hotplug(struct ata_host_set *host_set); | 132 | static void nv_disable_hotplug(struct ata_host_set *host_set); |
127 | static void nv_check_hotplug(struct ata_host_set *host_set); | 133 | static int nv_check_hotplug(struct ata_host_set *host_set); |
128 | static void nv_enable_hotplug_ck804(struct ata_probe_ent *probe_ent); | 134 | static void nv_enable_hotplug_ck804(struct ata_probe_ent *probe_ent); |
129 | static void nv_disable_hotplug_ck804(struct ata_host_set *host_set); | 135 | static void nv_disable_hotplug_ck804(struct ata_host_set *host_set); |
130 | static void nv_check_hotplug_ck804(struct ata_host_set *host_set); | 136 | static int nv_check_hotplug_ck804(struct ata_host_set *host_set); |
131 | 137 | ||
132 | enum nv_host_type | 138 | enum nv_host_type |
133 | { | 139 | { |
@@ -176,7 +182,7 @@ struct nv_host_desc | |||
176 | enum nv_host_type host_type; | 182 | enum nv_host_type host_type; |
177 | void (*enable_hotplug)(struct ata_probe_ent *probe_ent); | 183 | void (*enable_hotplug)(struct ata_probe_ent *probe_ent); |
178 | void (*disable_hotplug)(struct ata_host_set *host_set); | 184 | void (*disable_hotplug)(struct ata_host_set *host_set); |
179 | void (*check_hotplug)(struct ata_host_set *host_set); | 185 | int (*check_hotplug)(struct ata_host_set *host_set); |
180 | 186 | ||
181 | }; | 187 | }; |
182 | static struct nv_host_desc nv_device_tbl[] = { | 188 | static struct nv_host_desc nv_device_tbl[] = { |
@@ -235,7 +241,6 @@ static struct scsi_host_template nv_sht = { | |||
235 | .dma_boundary = ATA_DMA_BOUNDARY, | 241 | .dma_boundary = ATA_DMA_BOUNDARY, |
236 | .slave_configure = ata_scsi_slave_config, | 242 | .slave_configure = ata_scsi_slave_config, |
237 | .bios_param = ata_std_bios_param, | 243 | .bios_param = ata_std_bios_param, |
238 | .ordered_flush = 1, | ||
239 | }; | 244 | }; |
240 | 245 | ||
241 | static const struct ata_port_operations nv_ops = { | 246 | static const struct ata_port_operations nv_ops = { |
@@ -310,12 +315,16 @@ static irqreturn_t nv_interrupt (int irq, void *dev_instance, | |||
310 | qc = ata_qc_from_tag(ap, ap->active_tag); | 315 | qc = ata_qc_from_tag(ap, ap->active_tag); |
311 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) | 316 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) |
312 | handled += ata_host_intr(ap, qc); | 317 | handled += ata_host_intr(ap, qc); |
318 | else | ||
319 | // No request pending? Clear interrupt status | ||
320 | // anyway, in case there's one pending. | ||
321 | ap->ops->check_status(ap); | ||
313 | } | 322 | } |
314 | 323 | ||
315 | } | 324 | } |
316 | 325 | ||
317 | if (host->host_desc->check_hotplug) | 326 | if (host->host_desc->check_hotplug) |
318 | host->host_desc->check_hotplug(host_set); | 327 | handled += host->host_desc->check_hotplug(host_set); |
319 | 328 | ||
320 | spin_unlock_irqrestore(&host_set->lock, flags); | 329 | spin_unlock_irqrestore(&host_set->lock, flags); |
321 | 330 | ||
@@ -498,7 +507,7 @@ static void nv_disable_hotplug(struct ata_host_set *host_set) | |||
498 | outb(intr_mask, host_set->ports[0]->ioaddr.scr_addr + NV_INT_ENABLE); | 507 | outb(intr_mask, host_set->ports[0]->ioaddr.scr_addr + NV_INT_ENABLE); |
499 | } | 508 | } |
500 | 509 | ||
501 | static void nv_check_hotplug(struct ata_host_set *host_set) | 510 | static int nv_check_hotplug(struct ata_host_set *host_set) |
502 | { | 511 | { |
503 | u8 intr_status; | 512 | u8 intr_status; |
504 | 513 | ||
@@ -523,7 +532,11 @@ static void nv_check_hotplug(struct ata_host_set *host_set) | |||
523 | if (intr_status & NV_INT_STATUS_SDEV_REMOVED) | 532 | if (intr_status & NV_INT_STATUS_SDEV_REMOVED) |
524 | printk(KERN_WARNING "nv_sata: " | 533 | printk(KERN_WARNING "nv_sata: " |
525 | "Secondary device removed\n"); | 534 | "Secondary device removed\n"); |
535 | |||
536 | return 1; | ||
526 | } | 537 | } |
538 | |||
539 | return 0; | ||
527 | } | 540 | } |
528 | 541 | ||
529 | static void nv_enable_hotplug_ck804(struct ata_probe_ent *probe_ent) | 542 | static void nv_enable_hotplug_ck804(struct ata_probe_ent *probe_ent) |
@@ -561,7 +574,7 @@ static void nv_disable_hotplug_ck804(struct ata_host_set *host_set) | |||
561 | pci_write_config_byte(pdev, NV_MCP_SATA_CFG_20, regval); | 574 | pci_write_config_byte(pdev, NV_MCP_SATA_CFG_20, regval); |
562 | } | 575 | } |
563 | 576 | ||
564 | static void nv_check_hotplug_ck804(struct ata_host_set *host_set) | 577 | static int nv_check_hotplug_ck804(struct ata_host_set *host_set) |
565 | { | 578 | { |
566 | u8 intr_status; | 579 | u8 intr_status; |
567 | 580 | ||
@@ -586,7 +599,11 @@ static void nv_check_hotplug_ck804(struct ata_host_set *host_set) | |||
586 | if (intr_status & NV_INT_STATUS_SDEV_REMOVED) | 599 | if (intr_status & NV_INT_STATUS_SDEV_REMOVED) |
587 | printk(KERN_WARNING "nv_sata: " | 600 | printk(KERN_WARNING "nv_sata: " |
588 | "Secondary device removed\n"); | 601 | "Secondary device removed\n"); |
602 | |||
603 | return 1; | ||
589 | } | 604 | } |
605 | |||
606 | return 0; | ||
590 | } | 607 | } |
591 | 608 | ||
592 | static int __init nv_init(void) | 609 | static int __init nv_init(void) |
diff --git a/drivers/scsi/sata_promise.c b/drivers/scsi/sata_promise.c index e35838043b56..02b14a870f52 100644 --- a/drivers/scsi/sata_promise.c +++ b/drivers/scsi/sata_promise.c | |||
@@ -66,6 +66,7 @@ enum { | |||
66 | board_2037x = 0, /* FastTrak S150 TX2plus */ | 66 | board_2037x = 0, /* FastTrak S150 TX2plus */ |
67 | board_20319 = 1, /* FastTrak S150 TX4 */ | 67 | board_20319 = 1, /* FastTrak S150 TX4 */ |
68 | board_20619 = 2, /* FastTrak TX4000 */ | 68 | board_20619 = 2, /* FastTrak TX4000 */ |
69 | board_20771 = 3, /* FastTrak TX2300 */ | ||
69 | 70 | ||
70 | PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */ | 71 | PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */ |
71 | 72 | ||
@@ -115,7 +116,6 @@ static struct scsi_host_template pdc_ata_sht = { | |||
115 | .dma_boundary = ATA_DMA_BOUNDARY, | 116 | .dma_boundary = ATA_DMA_BOUNDARY, |
116 | .slave_configure = ata_scsi_slave_config, | 117 | .slave_configure = ata_scsi_slave_config, |
117 | .bios_param = ata_std_bios_param, | 118 | .bios_param = ata_std_bios_param, |
118 | .ordered_flush = 1, | ||
119 | }; | 119 | }; |
120 | 120 | ||
121 | static const struct ata_port_operations pdc_sata_ops = { | 121 | static const struct ata_port_operations pdc_sata_ops = { |
@@ -192,6 +192,16 @@ static const struct ata_port_info pdc_port_info[] = { | |||
192 | .udma_mask = 0x7f, /* udma0-6 ; FIXME */ | 192 | .udma_mask = 0x7f, /* udma0-6 ; FIXME */ |
193 | .port_ops = &pdc_pata_ops, | 193 | .port_ops = &pdc_pata_ops, |
194 | }, | 194 | }, |
195 | |||
196 | /* board_20771 */ | ||
197 | { | ||
198 | .sht = &pdc_ata_sht, | ||
199 | .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SATA, | ||
200 | .pio_mask = 0x1f, /* pio0-4 */ | ||
201 | .mwdma_mask = 0x07, /* mwdma0-2 */ | ||
202 | .udma_mask = 0x7f, /* udma0-6 ; FIXME */ | ||
203 | .port_ops = &pdc_sata_ops, | ||
204 | }, | ||
195 | }; | 205 | }; |
196 | 206 | ||
197 | static const struct pci_device_id pdc_ata_pci_tbl[] = { | 207 | static const struct pci_device_id pdc_ata_pci_tbl[] = { |
@@ -228,6 +238,8 @@ static const struct pci_device_id pdc_ata_pci_tbl[] = { | |||
228 | { PCI_VENDOR_ID_PROMISE, 0x6629, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 238 | { PCI_VENDOR_ID_PROMISE, 0x6629, PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
229 | board_20619 }, | 239 | board_20619 }, |
230 | 240 | ||
241 | { PCI_VENDOR_ID_PROMISE, 0x3570, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
242 | board_20771 }, | ||
231 | { } /* terminate list */ | 243 | { } /* terminate list */ |
232 | }; | 244 | }; |
233 | 245 | ||
@@ -708,6 +720,9 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e | |||
708 | case board_2037x: | 720 | case board_2037x: |
709 | probe_ent->n_ports = 2; | 721 | probe_ent->n_ports = 2; |
710 | break; | 722 | break; |
723 | case board_20771: | ||
724 | probe_ent->n_ports = 2; | ||
725 | break; | ||
711 | case board_20619: | 726 | case board_20619: |
712 | probe_ent->n_ports = 4; | 727 | probe_ent->n_ports = 4; |
713 | 728 | ||
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c index d2053487c73b..b017f85e6d6a 100644 --- a/drivers/scsi/sata_sil.c +++ b/drivers/scsi/sata_sil.c | |||
@@ -147,7 +147,6 @@ static struct scsi_host_template sil_sht = { | |||
147 | .dma_boundary = ATA_DMA_BOUNDARY, | 147 | .dma_boundary = ATA_DMA_BOUNDARY, |
148 | .slave_configure = ata_scsi_slave_config, | 148 | .slave_configure = ata_scsi_slave_config, |
149 | .bios_param = ata_std_bios_param, | 149 | .bios_param = ata_std_bios_param, |
150 | .ordered_flush = 1, | ||
151 | }; | 150 | }; |
152 | 151 | ||
153 | static const struct ata_port_operations sil_ops = { | 152 | static const struct ata_port_operations sil_ops = { |
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c index a0ad3ed2200a..923130185a9e 100644 --- a/drivers/scsi/sata_sil24.c +++ b/drivers/scsi/sata_sil24.c | |||
@@ -292,7 +292,6 @@ static struct scsi_host_template sil24_sht = { | |||
292 | .dma_boundary = ATA_DMA_BOUNDARY, | 292 | .dma_boundary = ATA_DMA_BOUNDARY, |
293 | .slave_configure = ata_scsi_slave_config, | 293 | .slave_configure = ata_scsi_slave_config, |
294 | .bios_param = ata_std_bios_param, | 294 | .bios_param = ata_std_bios_param, |
295 | .ordered_flush = 1, /* NCQ not supported yet */ | ||
296 | }; | 295 | }; |
297 | 296 | ||
298 | static const struct ata_port_operations sil24_ops = { | 297 | static const struct ata_port_operations sil24_ops = { |
diff --git a/drivers/scsi/sata_sis.c b/drivers/scsi/sata_sis.c index 32e12620b162..2df8c5632ac3 100644 --- a/drivers/scsi/sata_sis.c +++ b/drivers/scsi/sata_sis.c | |||
@@ -99,7 +99,6 @@ static struct scsi_host_template sis_sht = { | |||
99 | .dma_boundary = ATA_DMA_BOUNDARY, | 99 | .dma_boundary = ATA_DMA_BOUNDARY, |
100 | .slave_configure = ata_scsi_slave_config, | 100 | .slave_configure = ata_scsi_slave_config, |
101 | .bios_param = ata_std_bios_param, | 101 | .bios_param = ata_std_bios_param, |
102 | .ordered_flush = 1, | ||
103 | }; | 102 | }; |
104 | 103 | ||
105 | static const struct ata_port_operations sis_ops = { | 104 | static const struct ata_port_operations sis_ops = { |
diff --git a/drivers/scsi/sata_svw.c b/drivers/scsi/sata_svw.c index 6e7f7c83a75a..d8472563fde8 100644 --- a/drivers/scsi/sata_svw.c +++ b/drivers/scsi/sata_svw.c | |||
@@ -303,7 +303,6 @@ static struct scsi_host_template k2_sata_sht = { | |||
303 | .proc_info = k2_sata_proc_info, | 303 | .proc_info = k2_sata_proc_info, |
304 | #endif | 304 | #endif |
305 | .bios_param = ata_std_bios_param, | 305 | .bios_param = ata_std_bios_param, |
306 | .ordered_flush = 1, | ||
307 | }; | 306 | }; |
308 | 307 | ||
309 | 308 | ||
@@ -471,6 +470,7 @@ static const struct pci_device_id k2_sata_pci_tbl[] = { | |||
471 | { 0x1166, 0x0241, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, | 470 | { 0x1166, 0x0241, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, |
472 | { 0x1166, 0x0242, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 }, | 471 | { 0x1166, 0x0242, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 }, |
473 | { 0x1166, 0x024a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, | 472 | { 0x1166, 0x024a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, |
473 | { 0x1166, 0x024b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, | ||
474 | { } | 474 | { } |
475 | }; | 475 | }; |
476 | 476 | ||
diff --git a/drivers/scsi/sata_sx4.c b/drivers/scsi/sata_sx4.c index a33862d2b630..9d8e4226c25c 100644 --- a/drivers/scsi/sata_sx4.c +++ b/drivers/scsi/sata_sx4.c | |||
@@ -194,7 +194,6 @@ static struct scsi_host_template pdc_sata_sht = { | |||
194 | .dma_boundary = ATA_DMA_BOUNDARY, | 194 | .dma_boundary = ATA_DMA_BOUNDARY, |
195 | .slave_configure = ata_scsi_slave_config, | 195 | .slave_configure = ata_scsi_slave_config, |
196 | .bios_param = ata_std_bios_param, | 196 | .bios_param = ata_std_bios_param, |
197 | .ordered_flush = 1, | ||
198 | }; | 197 | }; |
199 | 198 | ||
200 | static const struct ata_port_operations pdc_20621_ops = { | 199 | static const struct ata_port_operations pdc_20621_ops = { |
diff --git a/drivers/scsi/sata_uli.c b/drivers/scsi/sata_uli.c index b2422a0f25c8..9635ca700977 100644 --- a/drivers/scsi/sata_uli.c +++ b/drivers/scsi/sata_uli.c | |||
@@ -87,7 +87,6 @@ static struct scsi_host_template uli_sht = { | |||
87 | .dma_boundary = ATA_DMA_BOUNDARY, | 87 | .dma_boundary = ATA_DMA_BOUNDARY, |
88 | .slave_configure = ata_scsi_slave_config, | 88 | .slave_configure = ata_scsi_slave_config, |
89 | .bios_param = ata_std_bios_param, | 89 | .bios_param = ata_std_bios_param, |
90 | .ordered_flush = 1, | ||
91 | }; | 90 | }; |
92 | 91 | ||
93 | static const struct ata_port_operations uli_ops = { | 92 | static const struct ata_port_operations uli_ops = { |
diff --git a/drivers/scsi/sata_via.c b/drivers/scsi/sata_via.c index c76215692da2..6d5b0a794cfd 100644 --- a/drivers/scsi/sata_via.c +++ b/drivers/scsi/sata_via.c | |||
@@ -106,7 +106,6 @@ static struct scsi_host_template svia_sht = { | |||
106 | .dma_boundary = ATA_DMA_BOUNDARY, | 106 | .dma_boundary = ATA_DMA_BOUNDARY, |
107 | .slave_configure = ata_scsi_slave_config, | 107 | .slave_configure = ata_scsi_slave_config, |
108 | .bios_param = ata_std_bios_param, | 108 | .bios_param = ata_std_bios_param, |
109 | .ordered_flush = 1, | ||
110 | }; | 109 | }; |
111 | 110 | ||
112 | static const struct ata_port_operations svia_sata_ops = { | 111 | static const struct ata_port_operations svia_sata_ops = { |
diff --git a/drivers/scsi/sata_vsc.c b/drivers/scsi/sata_vsc.c index f566e17246f0..3e34fedd2104 100644 --- a/drivers/scsi/sata_vsc.c +++ b/drivers/scsi/sata_vsc.c | |||
@@ -235,7 +235,6 @@ static struct scsi_host_template vsc_sata_sht = { | |||
235 | .dma_boundary = ATA_DMA_BOUNDARY, | 235 | .dma_boundary = ATA_DMA_BOUNDARY, |
236 | .slave_configure = ata_scsi_slave_config, | 236 | .slave_configure = ata_scsi_slave_config, |
237 | .bios_param = ata_std_bios_param, | 237 | .bios_param = ata_std_bios_param, |
238 | .ordered_flush = 1, | ||
239 | }; | 238 | }; |
240 | 239 | ||
241 | 240 | ||
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 180676d7115a..245ca99a641e 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c | |||
@@ -55,6 +55,7 @@ | |||
55 | #include <linux/interrupt.h> | 55 | #include <linux/interrupt.h> |
56 | #include <linux/notifier.h> | 56 | #include <linux/notifier.h> |
57 | #include <linux/cpu.h> | 57 | #include <linux/cpu.h> |
58 | #include <linux/mutex.h> | ||
58 | 59 | ||
59 | #include <scsi/scsi.h> | 60 | #include <scsi/scsi.h> |
60 | #include <scsi/scsi_cmnd.h> | 61 | #include <scsi/scsi_cmnd.h> |
@@ -69,7 +70,6 @@ | |||
69 | #include "scsi_logging.h" | 70 | #include "scsi_logging.h" |
70 | 71 | ||
71 | static void scsi_done(struct scsi_cmnd *cmd); | 72 | static void scsi_done(struct scsi_cmnd *cmd); |
72 | static int scsi_retry_command(struct scsi_cmnd *cmd); | ||
73 | 73 | ||
74 | /* | 74 | /* |
75 | * Definitions and constants. | 75 | * Definitions and constants. |
@@ -210,7 +210,7 @@ static struct scsi_host_cmd_pool scsi_cmd_dma_pool = { | |||
210 | .gfp_mask = __GFP_DMA, | 210 | .gfp_mask = __GFP_DMA, |
211 | }; | 211 | }; |
212 | 212 | ||
213 | static DECLARE_MUTEX(host_cmd_pool_mutex); | 213 | static DEFINE_MUTEX(host_cmd_pool_mutex); |
214 | 214 | ||
215 | static struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, | 215 | static struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, |
216 | gfp_t gfp_mask) | 216 | gfp_t gfp_mask) |
@@ -331,7 +331,7 @@ int scsi_setup_command_freelist(struct Scsi_Host *shost) | |||
331 | * Select a command slab for this host and create it if not | 331 | * Select a command slab for this host and create it if not |
332 | * yet existant. | 332 | * yet existant. |
333 | */ | 333 | */ |
334 | down(&host_cmd_pool_mutex); | 334 | mutex_lock(&host_cmd_pool_mutex); |
335 | pool = (shost->unchecked_isa_dma ? &scsi_cmd_dma_pool : &scsi_cmd_pool); | 335 | pool = (shost->unchecked_isa_dma ? &scsi_cmd_dma_pool : &scsi_cmd_pool); |
336 | if (!pool->users) { | 336 | if (!pool->users) { |
337 | pool->slab = kmem_cache_create(pool->name, | 337 | pool->slab = kmem_cache_create(pool->name, |
@@ -343,7 +343,7 @@ int scsi_setup_command_freelist(struct Scsi_Host *shost) | |||
343 | 343 | ||
344 | pool->users++; | 344 | pool->users++; |
345 | shost->cmd_pool = pool; | 345 | shost->cmd_pool = pool; |
346 | up(&host_cmd_pool_mutex); | 346 | mutex_unlock(&host_cmd_pool_mutex); |
347 | 347 | ||
348 | /* | 348 | /* |
349 | * Get one backup command for this host. | 349 | * Get one backup command for this host. |
@@ -360,7 +360,7 @@ int scsi_setup_command_freelist(struct Scsi_Host *shost) | |||
360 | kmem_cache_destroy(pool->slab); | 360 | kmem_cache_destroy(pool->slab); |
361 | return -ENOMEM; | 361 | return -ENOMEM; |
362 | fail: | 362 | fail: |
363 | up(&host_cmd_pool_mutex); | 363 | mutex_unlock(&host_cmd_pool_mutex); |
364 | return -ENOMEM; | 364 | return -ENOMEM; |
365 | 365 | ||
366 | } | 366 | } |
@@ -382,10 +382,10 @@ void scsi_destroy_command_freelist(struct Scsi_Host *shost) | |||
382 | kmem_cache_free(shost->cmd_pool->slab, cmd); | 382 | kmem_cache_free(shost->cmd_pool->slab, cmd); |
383 | } | 383 | } |
384 | 384 | ||
385 | down(&host_cmd_pool_mutex); | 385 | mutex_lock(&host_cmd_pool_mutex); |
386 | if (!--shost->cmd_pool->users) | 386 | if (!--shost->cmd_pool->users) |
387 | kmem_cache_destroy(shost->cmd_pool->slab); | 387 | kmem_cache_destroy(shost->cmd_pool->slab); |
388 | up(&host_cmd_pool_mutex); | 388 | mutex_unlock(&host_cmd_pool_mutex); |
389 | } | 389 | } |
390 | 390 | ||
391 | #ifdef CONFIG_SCSI_LOGGING | 391 | #ifdef CONFIG_SCSI_LOGGING |
@@ -752,7 +752,7 @@ static void scsi_done(struct scsi_cmnd *cmd) | |||
752 | * isn't running --- used by scsi_times_out */ | 752 | * isn't running --- used by scsi_times_out */ |
753 | void __scsi_done(struct scsi_cmnd *cmd) | 753 | void __scsi_done(struct scsi_cmnd *cmd) |
754 | { | 754 | { |
755 | unsigned long flags; | 755 | struct request *rq = cmd->request; |
756 | 756 | ||
757 | /* | 757 | /* |
758 | * Set the serial numbers back to zero | 758 | * Set the serial numbers back to zero |
@@ -763,71 +763,14 @@ void __scsi_done(struct scsi_cmnd *cmd) | |||
763 | if (cmd->result) | 763 | if (cmd->result) |
764 | atomic_inc(&cmd->device->ioerr_cnt); | 764 | atomic_inc(&cmd->device->ioerr_cnt); |
765 | 765 | ||
766 | BUG_ON(!rq); | ||
767 | |||
766 | /* | 768 | /* |
767 | * Next, enqueue the command into the done queue. | 769 | * The uptodate/nbytes values don't matter, as we allow partial |
768 | * It is a per-CPU queue, so we just disable local interrupts | 770 | * completes and thus will check this in the softirq callback |
769 | * and need no spinlock. | ||
770 | */ | 771 | */ |
771 | local_irq_save(flags); | 772 | rq->completion_data = cmd; |
772 | list_add_tail(&cmd->eh_entry, &__get_cpu_var(scsi_done_q)); | 773 | blk_complete_request(rq); |
773 | raise_softirq_irqoff(SCSI_SOFTIRQ); | ||
774 | local_irq_restore(flags); | ||
775 | } | ||
776 | |||
777 | /** | ||
778 | * scsi_softirq - Perform post-interrupt processing of finished SCSI commands. | ||
779 | * | ||
780 | * This is the consumer of the done queue. | ||
781 | * | ||
782 | * This is called with all interrupts enabled. This should reduce | ||
783 | * interrupt latency, stack depth, and reentrancy of the low-level | ||
784 | * drivers. | ||
785 | */ | ||
786 | static void scsi_softirq(struct softirq_action *h) | ||
787 | { | ||
788 | int disposition; | ||
789 | LIST_HEAD(local_q); | ||
790 | |||
791 | local_irq_disable(); | ||
792 | list_splice_init(&__get_cpu_var(scsi_done_q), &local_q); | ||
793 | local_irq_enable(); | ||
794 | |||
795 | while (!list_empty(&local_q)) { | ||
796 | struct scsi_cmnd *cmd = list_entry(local_q.next, | ||
797 | struct scsi_cmnd, eh_entry); | ||
798 | /* The longest time any command should be outstanding is the | ||
799 | * per command timeout multiplied by the number of retries. | ||
800 | * | ||
801 | * For a typical command, this is 2.5 minutes */ | ||
802 | unsigned long wait_for | ||
803 | = cmd->allowed * cmd->timeout_per_command; | ||
804 | list_del_init(&cmd->eh_entry); | ||
805 | |||
806 | disposition = scsi_decide_disposition(cmd); | ||
807 | if (disposition != SUCCESS && | ||
808 | time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) { | ||
809 | sdev_printk(KERN_ERR, cmd->device, | ||
810 | "timing out command, waited %lus\n", | ||
811 | wait_for/HZ); | ||
812 | disposition = SUCCESS; | ||
813 | } | ||
814 | |||
815 | scsi_log_completion(cmd, disposition); | ||
816 | switch (disposition) { | ||
817 | case SUCCESS: | ||
818 | scsi_finish_command(cmd); | ||
819 | break; | ||
820 | case NEEDS_RETRY: | ||
821 | scsi_retry_command(cmd); | ||
822 | break; | ||
823 | case ADD_TO_MLQUEUE: | ||
824 | scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY); | ||
825 | break; | ||
826 | default: | ||
827 | if (!scsi_eh_scmd_add(cmd, 0)) | ||
828 | scsi_finish_command(cmd); | ||
829 | } | ||
830 | } | ||
831 | } | 774 | } |
832 | 775 | ||
833 | /* | 776 | /* |
@@ -840,7 +783,7 @@ static void scsi_softirq(struct softirq_action *h) | |||
840 | * level drivers should not become re-entrant as a result of | 783 | * level drivers should not become re-entrant as a result of |
841 | * this. | 784 | * this. |
842 | */ | 785 | */ |
843 | static int scsi_retry_command(struct scsi_cmnd *cmd) | 786 | int scsi_retry_command(struct scsi_cmnd *cmd) |
844 | { | 787 | { |
845 | /* | 788 | /* |
846 | * Restore the SCSI command state. | 789 | * Restore the SCSI command state. |
@@ -1273,38 +1216,6 @@ int scsi_device_cancel(struct scsi_device *sdev, int recovery) | |||
1273 | } | 1216 | } |
1274 | EXPORT_SYMBOL(scsi_device_cancel); | 1217 | EXPORT_SYMBOL(scsi_device_cancel); |
1275 | 1218 | ||
1276 | #ifdef CONFIG_HOTPLUG_CPU | ||
1277 | static int scsi_cpu_notify(struct notifier_block *self, | ||
1278 | unsigned long action, void *hcpu) | ||
1279 | { | ||
1280 | int cpu = (unsigned long)hcpu; | ||
1281 | |||
1282 | switch(action) { | ||
1283 | case CPU_DEAD: | ||
1284 | /* Drain scsi_done_q. */ | ||
1285 | local_irq_disable(); | ||
1286 | list_splice_init(&per_cpu(scsi_done_q, cpu), | ||
1287 | &__get_cpu_var(scsi_done_q)); | ||
1288 | raise_softirq_irqoff(SCSI_SOFTIRQ); | ||
1289 | local_irq_enable(); | ||
1290 | break; | ||
1291 | default: | ||
1292 | break; | ||
1293 | } | ||
1294 | return NOTIFY_OK; | ||
1295 | } | ||
1296 | |||
1297 | static struct notifier_block __devinitdata scsi_cpu_nb = { | ||
1298 | .notifier_call = scsi_cpu_notify, | ||
1299 | }; | ||
1300 | |||
1301 | #define register_scsi_cpu() register_cpu_notifier(&scsi_cpu_nb) | ||
1302 | #define unregister_scsi_cpu() unregister_cpu_notifier(&scsi_cpu_nb) | ||
1303 | #else | ||
1304 | #define register_scsi_cpu() | ||
1305 | #define unregister_scsi_cpu() | ||
1306 | #endif /* CONFIG_HOTPLUG_CPU */ | ||
1307 | |||
1308 | MODULE_DESCRIPTION("SCSI core"); | 1219 | MODULE_DESCRIPTION("SCSI core"); |
1309 | MODULE_LICENSE("GPL"); | 1220 | MODULE_LICENSE("GPL"); |
1310 | 1221 | ||
@@ -1338,8 +1249,6 @@ static int __init init_scsi(void) | |||
1338 | INIT_LIST_HEAD(&per_cpu(scsi_done_q, i)); | 1249 | INIT_LIST_HEAD(&per_cpu(scsi_done_q, i)); |
1339 | 1250 | ||
1340 | devfs_mk_dir("scsi"); | 1251 | devfs_mk_dir("scsi"); |
1341 | open_softirq(SCSI_SOFTIRQ, scsi_softirq, NULL); | ||
1342 | register_scsi_cpu(); | ||
1343 | printk(KERN_NOTICE "SCSI subsystem initialized\n"); | 1252 | printk(KERN_NOTICE "SCSI subsystem initialized\n"); |
1344 | return 0; | 1253 | return 0; |
1345 | 1254 | ||
@@ -1367,7 +1276,6 @@ static void __exit exit_scsi(void) | |||
1367 | devfs_remove("scsi"); | 1276 | devfs_remove("scsi"); |
1368 | scsi_exit_procfs(); | 1277 | scsi_exit_procfs(); |
1369 | scsi_exit_queue(); | 1278 | scsi_exit_queue(); |
1370 | unregister_scsi_cpu(); | ||
1371 | } | 1279 | } |
1372 | 1280 | ||
1373 | subsys_initcall(init_scsi); | 1281 | subsys_initcall(init_scsi); |
diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 3ded9daaf4a0..0e529f8171c4 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c | |||
@@ -221,8 +221,6 @@ static struct bus_type pseudo_lld_bus; | |||
221 | static struct device_driver sdebug_driverfs_driver = { | 221 | static struct device_driver sdebug_driverfs_driver = { |
222 | .name = sdebug_proc_name, | 222 | .name = sdebug_proc_name, |
223 | .bus = &pseudo_lld_bus, | 223 | .bus = &pseudo_lld_bus, |
224 | .probe = sdebug_driver_probe, | ||
225 | .remove = sdebug_driver_remove, | ||
226 | }; | 224 | }; |
227 | 225 | ||
228 | static const int check_condition_result = | 226 | static const int check_condition_result = |
@@ -1796,6 +1794,8 @@ static int pseudo_lld_bus_match(struct device *dev, | |||
1796 | static struct bus_type pseudo_lld_bus = { | 1794 | static struct bus_type pseudo_lld_bus = { |
1797 | .name = "pseudo", | 1795 | .name = "pseudo", |
1798 | .match = pseudo_lld_bus_match, | 1796 | .match = pseudo_lld_bus_match, |
1797 | .probe = sdebug_driver_probe, | ||
1798 | .remove = sdebug_driver_remove, | ||
1799 | }; | 1799 | }; |
1800 | 1800 | ||
1801 | static void sdebug_release_adapter(struct device * dev) | 1801 | static void sdebug_release_adapter(struct device * dev) |
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c index e69477d1889b..f01ec0a7c506 100644 --- a/drivers/scsi/scsi_devinfo.c +++ b/drivers/scsi/scsi_devinfo.c | |||
@@ -354,8 +354,9 @@ static int scsi_dev_info_list_add_str(char *dev_list) | |||
354 | * @model, if found, return the matching flags value, else return | 354 | * @model, if found, return the matching flags value, else return |
355 | * the host or global default settings. | 355 | * the host or global default settings. |
356 | **/ | 356 | **/ |
357 | int scsi_get_device_flags(struct scsi_device *sdev, unsigned char *vendor, | 357 | int scsi_get_device_flags(struct scsi_device *sdev, |
358 | unsigned char *model) | 358 | const unsigned char *vendor, |
359 | const unsigned char *model) | ||
359 | { | 360 | { |
360 | struct scsi_dev_info_list *devinfo; | 361 | struct scsi_dev_info_list *devinfo; |
361 | unsigned int bflags; | 362 | unsigned int bflags; |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index c0ae9e965f6f..a2333d2c7af0 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -1320,23 +1320,6 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd) | |||
1320 | } | 1320 | } |
1321 | 1321 | ||
1322 | /** | 1322 | /** |
1323 | * scsi_eh_lock_done - done function for eh door lock request | ||
1324 | * @scmd: SCSI command block for the door lock request | ||
1325 | * | ||
1326 | * Notes: | ||
1327 | * We completed the asynchronous door lock request, and it has either | ||
1328 | * locked the door or failed. We must free the command structures | ||
1329 | * associated with this request. | ||
1330 | **/ | ||
1331 | static void scsi_eh_lock_done(struct scsi_cmnd *scmd) | ||
1332 | { | ||
1333 | struct scsi_request *sreq = scmd->sc_request; | ||
1334 | |||
1335 | scsi_release_request(sreq); | ||
1336 | } | ||
1337 | |||
1338 | |||
1339 | /** | ||
1340 | * scsi_eh_lock_door - Prevent medium removal for the specified device | 1323 | * scsi_eh_lock_door - Prevent medium removal for the specified device |
1341 | * @sdev: SCSI device to prevent medium removal | 1324 | * @sdev: SCSI device to prevent medium removal |
1342 | * | 1325 | * |
@@ -1358,29 +1341,17 @@ static void scsi_eh_lock_done(struct scsi_cmnd *scmd) | |||
1358 | **/ | 1341 | **/ |
1359 | static void scsi_eh_lock_door(struct scsi_device *sdev) | 1342 | static void scsi_eh_lock_door(struct scsi_device *sdev) |
1360 | { | 1343 | { |
1361 | struct scsi_request *sreq = scsi_allocate_request(sdev, GFP_KERNEL); | 1344 | unsigned char cmnd[MAX_COMMAND_SIZE]; |
1362 | 1345 | ||
1363 | if (unlikely(!sreq)) { | 1346 | cmnd[0] = ALLOW_MEDIUM_REMOVAL; |
1364 | printk(KERN_ERR "%s: request allocate failed," | 1347 | cmnd[1] = 0; |
1365 | "prevent media removal cmd not sent\n", __FUNCTION__); | 1348 | cmnd[2] = 0; |
1366 | return; | 1349 | cmnd[3] = 0; |
1367 | } | 1350 | cmnd[4] = SCSI_REMOVAL_PREVENT; |
1351 | cmnd[5] = 0; | ||
1368 | 1352 | ||
1369 | sreq->sr_cmnd[0] = ALLOW_MEDIUM_REMOVAL; | 1353 | scsi_execute_async(sdev, cmnd, DMA_NONE, NULL, 0, 0, 10 * HZ, |
1370 | sreq->sr_cmnd[1] = 0; | 1354 | 5, NULL, NULL, GFP_KERNEL); |
1371 | sreq->sr_cmnd[2] = 0; | ||
1372 | sreq->sr_cmnd[3] = 0; | ||
1373 | sreq->sr_cmnd[4] = SCSI_REMOVAL_PREVENT; | ||
1374 | sreq->sr_cmnd[5] = 0; | ||
1375 | sreq->sr_data_direction = DMA_NONE; | ||
1376 | sreq->sr_bufflen = 0; | ||
1377 | sreq->sr_buffer = NULL; | ||
1378 | sreq->sr_allowed = 5; | ||
1379 | sreq->sr_done = scsi_eh_lock_done; | ||
1380 | sreq->sr_timeout_per_command = 10 * HZ; | ||
1381 | sreq->sr_cmd_len = COMMAND_SIZE(sreq->sr_cmnd[0]); | ||
1382 | |||
1383 | scsi_insert_special_req(sreq, 1); | ||
1384 | } | 1355 | } |
1385 | 1356 | ||
1386 | 1357 | ||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index dc249cb970ea..3574ba935af8 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -63,39 +63,6 @@ static struct scsi_host_sg_pool scsi_sg_pools[] = { | |||
63 | }; | 63 | }; |
64 | #undef SP | 64 | #undef SP |
65 | 65 | ||
66 | |||
67 | /* | ||
68 | * Function: scsi_insert_special_req() | ||
69 | * | ||
70 | * Purpose: Insert pre-formed request into request queue. | ||
71 | * | ||
72 | * Arguments: sreq - request that is ready to be queued. | ||
73 | * at_head - boolean. True if we should insert at head | ||
74 | * of queue, false if we should insert at tail. | ||
75 | * | ||
76 | * Lock status: Assumed that lock is not held upon entry. | ||
77 | * | ||
78 | * Returns: Nothing | ||
79 | * | ||
80 | * Notes: This function is called from character device and from | ||
81 | * ioctl types of functions where the caller knows exactly | ||
82 | * what SCSI command needs to be issued. The idea is that | ||
83 | * we merely inject the command into the queue (at the head | ||
84 | * for now), and then call the queue request function to actually | ||
85 | * process it. | ||
86 | */ | ||
87 | int scsi_insert_special_req(struct scsi_request *sreq, int at_head) | ||
88 | { | ||
89 | /* | ||
90 | * Because users of this function are apt to reuse requests with no | ||
91 | * modification, we have to sanitise the request flags here | ||
92 | */ | ||
93 | sreq->sr_request->flags &= ~REQ_DONTPREP; | ||
94 | blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request, | ||
95 | at_head, sreq); | ||
96 | return 0; | ||
97 | } | ||
98 | |||
99 | static void scsi_run_queue(struct request_queue *q); | 66 | static void scsi_run_queue(struct request_queue *q); |
100 | 67 | ||
101 | /* | 68 | /* |
@@ -249,8 +216,13 @@ void scsi_do_req(struct scsi_request *sreq, const void *cmnd, | |||
249 | 216 | ||
250 | /* | 217 | /* |
251 | * head injection *required* here otherwise quiesce won't work | 218 | * head injection *required* here otherwise quiesce won't work |
219 | * | ||
220 | * Because users of this function are apt to reuse requests with no | ||
221 | * modification, we have to sanitise the request flags here | ||
252 | */ | 222 | */ |
253 | scsi_insert_special_req(sreq, 1); | 223 | sreq->sr_request->flags &= ~REQ_DONTPREP; |
224 | blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request, | ||
225 | 1, sreq); | ||
254 | } | 226 | } |
255 | EXPORT_SYMBOL(scsi_do_req); | 227 | EXPORT_SYMBOL(scsi_do_req); |
256 | 228 | ||
@@ -287,6 +259,7 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, | |||
287 | memcpy(req->cmd, cmd, req->cmd_len); | 259 | memcpy(req->cmd, cmd, req->cmd_len); |
288 | req->sense = sense; | 260 | req->sense = sense; |
289 | req->sense_len = 0; | 261 | req->sense_len = 0; |
262 | req->retries = retries; | ||
290 | req->timeout = timeout; | 263 | req->timeout = timeout; |
291 | req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL | REQ_QUIET; | 264 | req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL | REQ_QUIET; |
292 | 265 | ||
@@ -327,6 +300,200 @@ int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd, | |||
327 | } | 300 | } |
328 | EXPORT_SYMBOL(scsi_execute_req); | 301 | EXPORT_SYMBOL(scsi_execute_req); |
329 | 302 | ||
303 | struct scsi_io_context { | ||
304 | void *data; | ||
305 | void (*done)(void *data, char *sense, int result, int resid); | ||
306 | char sense[SCSI_SENSE_BUFFERSIZE]; | ||
307 | }; | ||
308 | |||
309 | static kmem_cache_t *scsi_io_context_cache; | ||
310 | |||
311 | static void scsi_end_async(struct request *req, int uptodate) | ||
312 | { | ||
313 | struct scsi_io_context *sioc = req->end_io_data; | ||
314 | |||
315 | if (sioc->done) | ||
316 | sioc->done(sioc->data, sioc->sense, req->errors, req->data_len); | ||
317 | |||
318 | kmem_cache_free(scsi_io_context_cache, sioc); | ||
319 | __blk_put_request(req->q, req); | ||
320 | } | ||
321 | |||
322 | static int scsi_merge_bio(struct request *rq, struct bio *bio) | ||
323 | { | ||
324 | struct request_queue *q = rq->q; | ||
325 | |||
326 | bio->bi_flags &= ~(1 << BIO_SEG_VALID); | ||
327 | if (rq_data_dir(rq) == WRITE) | ||
328 | bio->bi_rw |= (1 << BIO_RW); | ||
329 | blk_queue_bounce(q, &bio); | ||
330 | |||
331 | if (!rq->bio) | ||
332 | blk_rq_bio_prep(q, rq, bio); | ||
333 | else if (!q->back_merge_fn(q, rq, bio)) | ||
334 | return -EINVAL; | ||
335 | else { | ||
336 | rq->biotail->bi_next = bio; | ||
337 | rq->biotail = bio; | ||
338 | rq->hard_nr_sectors += bio_sectors(bio); | ||
339 | rq->nr_sectors = rq->hard_nr_sectors; | ||
340 | } | ||
341 | |||
342 | return 0; | ||
343 | } | ||
344 | |||
345 | static int scsi_bi_endio(struct bio *bio, unsigned int bytes_done, int error) | ||
346 | { | ||
347 | if (bio->bi_size) | ||
348 | return 1; | ||
349 | |||
350 | bio_put(bio); | ||
351 | return 0; | ||
352 | } | ||
353 | |||
354 | /** | ||
355 | * scsi_req_map_sg - map a scatterlist into a request | ||
356 | * @rq: request to fill | ||
357 | * @sg: scatterlist | ||
358 | * @nsegs: number of elements | ||
359 | * @bufflen: len of buffer | ||
360 | * @gfp: memory allocation flags | ||
361 | * | ||
362 | * scsi_req_map_sg maps a scatterlist into a request so that the | ||
363 | * request can be sent to the block layer. We do not trust the scatterlist | ||
364 | * sent to use, as some ULDs use that struct to only organize the pages. | ||
365 | */ | ||
366 | static int scsi_req_map_sg(struct request *rq, struct scatterlist *sgl, | ||
367 | int nsegs, unsigned bufflen, gfp_t gfp) | ||
368 | { | ||
369 | struct request_queue *q = rq->q; | ||
370 | int nr_pages = (bufflen + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
371 | unsigned int data_len = 0, len, bytes, off; | ||
372 | struct page *page; | ||
373 | struct bio *bio = NULL; | ||
374 | int i, err, nr_vecs = 0; | ||
375 | |||
376 | for (i = 0; i < nsegs; i++) { | ||
377 | page = sgl[i].page; | ||
378 | off = sgl[i].offset; | ||
379 | len = sgl[i].length; | ||
380 | data_len += len; | ||
381 | |||
382 | while (len > 0) { | ||
383 | bytes = min_t(unsigned int, len, PAGE_SIZE - off); | ||
384 | |||
385 | if (!bio) { | ||
386 | nr_vecs = min_t(int, BIO_MAX_PAGES, nr_pages); | ||
387 | nr_pages -= nr_vecs; | ||
388 | |||
389 | bio = bio_alloc(gfp, nr_vecs); | ||
390 | if (!bio) { | ||
391 | err = -ENOMEM; | ||
392 | goto free_bios; | ||
393 | } | ||
394 | bio->bi_end_io = scsi_bi_endio; | ||
395 | } | ||
396 | |||
397 | if (bio_add_pc_page(q, bio, page, bytes, off) != | ||
398 | bytes) { | ||
399 | bio_put(bio); | ||
400 | err = -EINVAL; | ||
401 | goto free_bios; | ||
402 | } | ||
403 | |||
404 | if (bio->bi_vcnt >= nr_vecs) { | ||
405 | err = scsi_merge_bio(rq, bio); | ||
406 | if (err) { | ||
407 | bio_endio(bio, bio->bi_size, 0); | ||
408 | goto free_bios; | ||
409 | } | ||
410 | bio = NULL; | ||
411 | } | ||
412 | |||
413 | page++; | ||
414 | len -= bytes; | ||
415 | off = 0; | ||
416 | } | ||
417 | } | ||
418 | |||
419 | rq->buffer = rq->data = NULL; | ||
420 | rq->data_len = data_len; | ||
421 | return 0; | ||
422 | |||
423 | free_bios: | ||
424 | while ((bio = rq->bio) != NULL) { | ||
425 | rq->bio = bio->bi_next; | ||
426 | /* | ||
427 | * call endio instead of bio_put incase it was bounced | ||
428 | */ | ||
429 | bio_endio(bio, bio->bi_size, 0); | ||
430 | } | ||
431 | |||
432 | return err; | ||
433 | } | ||
434 | |||
435 | /** | ||
436 | * scsi_execute_async - insert request | ||
437 | * @sdev: scsi device | ||
438 | * @cmd: scsi command | ||
439 | * @data_direction: data direction | ||
440 | * @buffer: data buffer (this can be a kernel buffer or scatterlist) | ||
441 | * @bufflen: len of buffer | ||
442 | * @use_sg: if buffer is a scatterlist this is the number of elements | ||
443 | * @timeout: request timeout in seconds | ||
444 | * @retries: number of times to retry request | ||
445 | * @flags: or into request flags | ||
446 | **/ | ||
447 | int scsi_execute_async(struct scsi_device *sdev, const unsigned char *cmd, | ||
448 | int data_direction, void *buffer, unsigned bufflen, | ||
449 | int use_sg, int timeout, int retries, void *privdata, | ||
450 | void (*done)(void *, char *, int, int), gfp_t gfp) | ||
451 | { | ||
452 | struct request *req; | ||
453 | struct scsi_io_context *sioc; | ||
454 | int err = 0; | ||
455 | int write = (data_direction == DMA_TO_DEVICE); | ||
456 | |||
457 | sioc = kmem_cache_alloc(scsi_io_context_cache, gfp); | ||
458 | if (!sioc) | ||
459 | return DRIVER_ERROR << 24; | ||
460 | memset(sioc, 0, sizeof(*sioc)); | ||
461 | |||
462 | req = blk_get_request(sdev->request_queue, write, gfp); | ||
463 | if (!req) | ||
464 | goto free_sense; | ||
465 | req->flags |= REQ_BLOCK_PC | REQ_QUIET; | ||
466 | |||
467 | if (use_sg) | ||
468 | err = scsi_req_map_sg(req, buffer, use_sg, bufflen, gfp); | ||
469 | else if (bufflen) | ||
470 | err = blk_rq_map_kern(req->q, req, buffer, bufflen, gfp); | ||
471 | |||
472 | if (err) | ||
473 | goto free_req; | ||
474 | |||
475 | req->cmd_len = COMMAND_SIZE(cmd[0]); | ||
476 | memcpy(req->cmd, cmd, req->cmd_len); | ||
477 | req->sense = sioc->sense; | ||
478 | req->sense_len = 0; | ||
479 | req->timeout = timeout; | ||
480 | req->retries = retries; | ||
481 | req->end_io_data = sioc; | ||
482 | |||
483 | sioc->data = privdata; | ||
484 | sioc->done = done; | ||
485 | |||
486 | blk_execute_rq_nowait(req->q, NULL, req, 1, scsi_end_async); | ||
487 | return 0; | ||
488 | |||
489 | free_req: | ||
490 | blk_put_request(req); | ||
491 | free_sense: | ||
492 | kfree(sioc); | ||
493 | return DRIVER_ERROR << 24; | ||
494 | } | ||
495 | EXPORT_SYMBOL_GPL(scsi_execute_async); | ||
496 | |||
330 | /* | 497 | /* |
331 | * Function: scsi_init_cmd_errh() | 498 | * Function: scsi_init_cmd_errh() |
332 | * | 499 | * |
@@ -624,7 +791,7 @@ static struct scsi_cmnd *scsi_end_request(struct scsi_cmnd *cmd, int uptodate, | |||
624 | spin_lock_irqsave(q->queue_lock, flags); | 791 | spin_lock_irqsave(q->queue_lock, flags); |
625 | if (blk_rq_tagged(req)) | 792 | if (blk_rq_tagged(req)) |
626 | blk_queue_end_tag(q, req); | 793 | blk_queue_end_tag(q, req); |
627 | end_that_request_last(req); | 794 | end_that_request_last(req, uptodate); |
628 | spin_unlock_irqrestore(q->queue_lock, flags); | 795 | spin_unlock_irqrestore(q->queue_lock, flags); |
629 | 796 | ||
630 | /* | 797 | /* |
@@ -765,9 +932,6 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes, | |||
765 | int sense_valid = 0; | 932 | int sense_valid = 0; |
766 | int sense_deferred = 0; | 933 | int sense_deferred = 0; |
767 | 934 | ||
768 | if (blk_complete_barrier_rq(q, req, good_bytes >> 9)) | ||
769 | return; | ||
770 | |||
771 | /* | 935 | /* |
772 | * Free up any indirection buffers we allocated for DMA purposes. | 936 | * Free up any indirection buffers we allocated for DMA purposes. |
773 | * For the case of a READ, we need to copy the data out of the | 937 | * For the case of a READ, we need to copy the data out of the |
@@ -884,7 +1048,8 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes, | |||
884 | * system where READ CAPACITY failed, we may have read | 1048 | * system where READ CAPACITY failed, we may have read |
885 | * past the end of the disk. | 1049 | * past the end of the disk. |
886 | */ | 1050 | */ |
887 | if (cmd->device->use_10_for_rw && | 1051 | if ((cmd->device->use_10_for_rw && |
1052 | sshdr.asc == 0x20 && sshdr.ascq == 0x00) && | ||
888 | (cmd->cmnd[0] == READ_10 || | 1053 | (cmd->cmnd[0] == READ_10 || |
889 | cmd->cmnd[0] == WRITE_10)) { | 1054 | cmd->cmnd[0] == WRITE_10)) { |
890 | cmd->device->use_10_for_rw = 0; | 1055 | cmd->device->use_10_for_rw = 0; |
@@ -1031,38 +1196,6 @@ static int scsi_init_io(struct scsi_cmnd *cmd) | |||
1031 | return BLKPREP_KILL; | 1196 | return BLKPREP_KILL; |
1032 | } | 1197 | } |
1033 | 1198 | ||
1034 | static int scsi_prepare_flush_fn(request_queue_t *q, struct request *rq) | ||
1035 | { | ||
1036 | struct scsi_device *sdev = q->queuedata; | ||
1037 | struct scsi_driver *drv; | ||
1038 | |||
1039 | if (sdev->sdev_state == SDEV_RUNNING) { | ||
1040 | drv = *(struct scsi_driver **) rq->rq_disk->private_data; | ||
1041 | |||
1042 | if (drv->prepare_flush) | ||
1043 | return drv->prepare_flush(q, rq); | ||
1044 | } | ||
1045 | |||
1046 | return 0; | ||
1047 | } | ||
1048 | |||
1049 | static void scsi_end_flush_fn(request_queue_t *q, struct request *rq) | ||
1050 | { | ||
1051 | struct scsi_device *sdev = q->queuedata; | ||
1052 | struct request *flush_rq = rq->end_io_data; | ||
1053 | struct scsi_driver *drv; | ||
1054 | |||
1055 | if (flush_rq->errors) { | ||
1056 | printk("scsi: barrier error, disabling flush support\n"); | ||
1057 | blk_queue_ordered(q, QUEUE_ORDERED_NONE); | ||
1058 | } | ||
1059 | |||
1060 | if (sdev->sdev_state == SDEV_RUNNING) { | ||
1061 | drv = *(struct scsi_driver **) rq->rq_disk->private_data; | ||
1062 | drv->end_flush(q, rq); | ||
1063 | } | ||
1064 | } | ||
1065 | |||
1066 | static int scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk, | 1199 | static int scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk, |
1067 | sector_t *error_sector) | 1200 | sector_t *error_sector) |
1068 | { | 1201 | { |
@@ -1079,13 +1212,19 @@ static int scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk, | |||
1079 | return -EOPNOTSUPP; | 1212 | return -EOPNOTSUPP; |
1080 | } | 1213 | } |
1081 | 1214 | ||
1082 | static void scsi_generic_done(struct scsi_cmnd *cmd) | 1215 | static void scsi_blk_pc_done(struct scsi_cmnd *cmd) |
1083 | { | 1216 | { |
1084 | BUG_ON(!blk_pc_request(cmd->request)); | 1217 | BUG_ON(!blk_pc_request(cmd->request)); |
1085 | scsi_io_completion(cmd, cmd->result == 0 ? cmd->bufflen : 0, 0); | 1218 | /* |
1219 | * This will complete the whole command with uptodate=1 so | ||
1220 | * as far as the block layer is concerned the command completed | ||
1221 | * successfully. Since this is a REQ_BLOCK_PC command the | ||
1222 | * caller should check the request's errors value | ||
1223 | */ | ||
1224 | scsi_io_completion(cmd, cmd->bufflen, 0); | ||
1086 | } | 1225 | } |
1087 | 1226 | ||
1088 | void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries) | 1227 | static void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd) |
1089 | { | 1228 | { |
1090 | struct request *req = cmd->request; | 1229 | struct request *req = cmd->request; |
1091 | 1230 | ||
@@ -1100,10 +1239,10 @@ void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries) | |||
1100 | cmd->sc_data_direction = DMA_FROM_DEVICE; | 1239 | cmd->sc_data_direction = DMA_FROM_DEVICE; |
1101 | 1240 | ||
1102 | cmd->transfersize = req->data_len; | 1241 | cmd->transfersize = req->data_len; |
1103 | cmd->allowed = retries; | 1242 | cmd->allowed = req->retries; |
1104 | cmd->timeout_per_command = req->timeout; | 1243 | cmd->timeout_per_command = req->timeout; |
1244 | cmd->done = scsi_blk_pc_done; | ||
1105 | } | 1245 | } |
1106 | EXPORT_SYMBOL_GPL(scsi_setup_blk_pc_cmnd); | ||
1107 | 1246 | ||
1108 | static int scsi_prep_fn(struct request_queue *q, struct request *req) | 1247 | static int scsi_prep_fn(struct request_queue *q, struct request *req) |
1109 | { | 1248 | { |
@@ -1200,7 +1339,6 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req) | |||
1200 | * happening now. | 1339 | * happening now. |
1201 | */ | 1340 | */ |
1202 | if (req->flags & (REQ_CMD | REQ_BLOCK_PC)) { | 1341 | if (req->flags & (REQ_CMD | REQ_BLOCK_PC)) { |
1203 | struct scsi_driver *drv; | ||
1204 | int ret; | 1342 | int ret; |
1205 | 1343 | ||
1206 | /* | 1344 | /* |
@@ -1232,16 +1370,17 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req) | |||
1232 | /* | 1370 | /* |
1233 | * Initialize the actual SCSI command for this request. | 1371 | * Initialize the actual SCSI command for this request. |
1234 | */ | 1372 | */ |
1235 | if (req->rq_disk) { | 1373 | if (req->flags & REQ_BLOCK_PC) { |
1374 | scsi_setup_blk_pc_cmnd(cmd); | ||
1375 | } else if (req->rq_disk) { | ||
1376 | struct scsi_driver *drv; | ||
1377 | |||
1236 | drv = *(struct scsi_driver **)req->rq_disk->private_data; | 1378 | drv = *(struct scsi_driver **)req->rq_disk->private_data; |
1237 | if (unlikely(!drv->init_command(cmd))) { | 1379 | if (unlikely(!drv->init_command(cmd))) { |
1238 | scsi_release_buffers(cmd); | 1380 | scsi_release_buffers(cmd); |
1239 | scsi_put_command(cmd); | 1381 | scsi_put_command(cmd); |
1240 | goto kill; | 1382 | goto kill; |
1241 | } | 1383 | } |
1242 | } else { | ||
1243 | scsi_setup_blk_pc_cmnd(cmd, 3); | ||
1244 | cmd->done = scsi_generic_done; | ||
1245 | } | 1384 | } |
1246 | } | 1385 | } |
1247 | 1386 | ||
@@ -1354,6 +1493,41 @@ static void scsi_kill_request(struct request *req, request_queue_t *q) | |||
1354 | __scsi_done(cmd); | 1493 | __scsi_done(cmd); |
1355 | } | 1494 | } |
1356 | 1495 | ||
1496 | static void scsi_softirq_done(struct request *rq) | ||
1497 | { | ||
1498 | struct scsi_cmnd *cmd = rq->completion_data; | ||
1499 | unsigned long wait_for = cmd->allowed * cmd->timeout_per_command; | ||
1500 | int disposition; | ||
1501 | |||
1502 | INIT_LIST_HEAD(&cmd->eh_entry); | ||
1503 | |||
1504 | disposition = scsi_decide_disposition(cmd); | ||
1505 | if (disposition != SUCCESS && | ||
1506 | time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) { | ||
1507 | sdev_printk(KERN_ERR, cmd->device, | ||
1508 | "timing out command, waited %lus\n", | ||
1509 | wait_for/HZ); | ||
1510 | disposition = SUCCESS; | ||
1511 | } | ||
1512 | |||
1513 | scsi_log_completion(cmd, disposition); | ||
1514 | |||
1515 | switch (disposition) { | ||
1516 | case SUCCESS: | ||
1517 | scsi_finish_command(cmd); | ||
1518 | break; | ||
1519 | case NEEDS_RETRY: | ||
1520 | scsi_retry_command(cmd); | ||
1521 | break; | ||
1522 | case ADD_TO_MLQUEUE: | ||
1523 | scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY); | ||
1524 | break; | ||
1525 | default: | ||
1526 | if (!scsi_eh_scmd_add(cmd, 0)) | ||
1527 | scsi_finish_command(cmd); | ||
1528 | } | ||
1529 | } | ||
1530 | |||
1357 | /* | 1531 | /* |
1358 | * Function: scsi_request_fn() | 1532 | * Function: scsi_request_fn() |
1359 | * | 1533 | * |
@@ -1528,17 +1702,7 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) | |||
1528 | blk_queue_bounce_limit(q, scsi_calculate_bounce_limit(shost)); | 1702 | blk_queue_bounce_limit(q, scsi_calculate_bounce_limit(shost)); |
1529 | blk_queue_segment_boundary(q, shost->dma_boundary); | 1703 | blk_queue_segment_boundary(q, shost->dma_boundary); |
1530 | blk_queue_issue_flush_fn(q, scsi_issue_flush_fn); | 1704 | blk_queue_issue_flush_fn(q, scsi_issue_flush_fn); |
1531 | 1705 | blk_queue_softirq_done(q, scsi_softirq_done); | |
1532 | /* | ||
1533 | * ordered tags are superior to flush ordering | ||
1534 | */ | ||
1535 | if (shost->ordered_tag) | ||
1536 | blk_queue_ordered(q, QUEUE_ORDERED_TAG); | ||
1537 | else if (shost->ordered_flush) { | ||
1538 | blk_queue_ordered(q, QUEUE_ORDERED_FLUSH); | ||
1539 | q->prepare_flush_fn = scsi_prepare_flush_fn; | ||
1540 | q->end_flush_fn = scsi_end_flush_fn; | ||
1541 | } | ||
1542 | 1706 | ||
1543 | if (!shost->use_clustering) | 1707 | if (!shost->use_clustering) |
1544 | clear_bit(QUEUE_FLAG_CLUSTER, &q->queue_flags); | 1708 | clear_bit(QUEUE_FLAG_CLUSTER, &q->queue_flags); |
@@ -1603,6 +1767,14 @@ int __init scsi_init_queue(void) | |||
1603 | { | 1767 | { |
1604 | int i; | 1768 | int i; |
1605 | 1769 | ||
1770 | scsi_io_context_cache = kmem_cache_create("scsi_io_context", | ||
1771 | sizeof(struct scsi_io_context), | ||
1772 | 0, 0, NULL, NULL); | ||
1773 | if (!scsi_io_context_cache) { | ||
1774 | printk(KERN_ERR "SCSI: can't init scsi io context cache\n"); | ||
1775 | return -ENOMEM; | ||
1776 | } | ||
1777 | |||
1606 | for (i = 0; i < SG_MEMPOOL_NR; i++) { | 1778 | for (i = 0; i < SG_MEMPOOL_NR; i++) { |
1607 | struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; | 1779 | struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; |
1608 | int size = sgp->size * sizeof(struct scatterlist); | 1780 | int size = sgp->size * sizeof(struct scatterlist); |
@@ -1630,6 +1802,8 @@ void scsi_exit_queue(void) | |||
1630 | { | 1802 | { |
1631 | int i; | 1803 | int i; |
1632 | 1804 | ||
1805 | kmem_cache_destroy(scsi_io_context_cache); | ||
1806 | |||
1633 | for (i = 0; i < SG_MEMPOOL_NR; i++) { | 1807 | for (i = 0; i < SG_MEMPOOL_NR; i++) { |
1634 | struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; | 1808 | struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; |
1635 | mempool_destroy(sgp->pool); | 1809 | mempool_destroy(sgp->pool); |
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h index d632d9e1493c..27c48274e8cb 100644 --- a/drivers/scsi/scsi_priv.h +++ b/drivers/scsi/scsi_priv.h | |||
@@ -26,12 +26,6 @@ struct Scsi_Host; | |||
26 | #define SCSI_SENSE_VALID(scmd) \ | 26 | #define SCSI_SENSE_VALID(scmd) \ |
27 | (((scmd)->sense_buffer[0] & 0x70) == 0x70) | 27 | (((scmd)->sense_buffer[0] & 0x70) == 0x70) |
28 | 28 | ||
29 | /* | ||
30 | * Special value for scanning to specify scanning or rescanning of all | ||
31 | * possible channels, (target) ids, or luns on a given shost. | ||
32 | */ | ||
33 | #define SCAN_WILD_CARD ~0 | ||
34 | |||
35 | /* hosts.c */ | 29 | /* hosts.c */ |
36 | extern int scsi_init_hosts(void); | 30 | extern int scsi_init_hosts(void); |
37 | extern void scsi_exit_hosts(void); | 31 | extern void scsi_exit_hosts(void); |
@@ -40,11 +34,11 @@ extern void scsi_exit_hosts(void); | |||
40 | extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd); | 34 | extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd); |
41 | extern int scsi_setup_command_freelist(struct Scsi_Host *shost); | 35 | extern int scsi_setup_command_freelist(struct Scsi_Host *shost); |
42 | extern void scsi_destroy_command_freelist(struct Scsi_Host *shost); | 36 | extern void scsi_destroy_command_freelist(struct Scsi_Host *shost); |
43 | extern int scsi_insert_special_req(struct scsi_request *sreq, int); | ||
44 | extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd, | 37 | extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd, |
45 | struct scsi_request *sreq); | 38 | struct scsi_request *sreq); |
46 | extern void __scsi_release_request(struct scsi_request *sreq); | 39 | extern void __scsi_release_request(struct scsi_request *sreq); |
47 | extern void __scsi_done(struct scsi_cmnd *cmd); | 40 | extern void __scsi_done(struct scsi_cmnd *cmd); |
41 | extern int scsi_retry_command(struct scsi_cmnd *cmd); | ||
48 | #ifdef CONFIG_SCSI_LOGGING | 42 | #ifdef CONFIG_SCSI_LOGGING |
49 | void scsi_log_send(struct scsi_cmnd *cmd); | 43 | void scsi_log_send(struct scsi_cmnd *cmd); |
50 | void scsi_log_completion(struct scsi_cmnd *cmd, int disposition); | 44 | void scsi_log_completion(struct scsi_cmnd *cmd, int disposition); |
@@ -57,7 +51,8 @@ static inline void scsi_log_completion(struct scsi_cmnd *cmd, int disposition) | |||
57 | 51 | ||
58 | /* scsi_devinfo.c */ | 52 | /* scsi_devinfo.c */ |
59 | extern int scsi_get_device_flags(struct scsi_device *sdev, | 53 | extern int scsi_get_device_flags(struct scsi_device *sdev, |
60 | unsigned char *vendor, unsigned char *model); | 54 | const unsigned char *vendor, |
55 | const unsigned char *model); | ||
61 | extern int __init scsi_init_devinfo(void); | 56 | extern int __init scsi_init_devinfo(void); |
62 | extern void scsi_exit_devinfo(void); | 57 | extern void scsi_exit_devinfo(void); |
63 | 58 | ||
diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c index a50958b1b6ee..07be62bbaaea 100644 --- a/drivers/scsi/scsi_proc.c +++ b/drivers/scsi/scsi_proc.c | |||
@@ -25,11 +25,13 @@ | |||
25 | #include <linux/errno.h> | 25 | #include <linux/errno.h> |
26 | #include <linux/blkdev.h> | 26 | #include <linux/blkdev.h> |
27 | #include <linux/seq_file.h> | 27 | #include <linux/seq_file.h> |
28 | #include <linux/mutex.h> | ||
28 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
29 | 30 | ||
30 | #include <scsi/scsi.h> | 31 | #include <scsi/scsi.h> |
31 | #include <scsi/scsi_device.h> | 32 | #include <scsi/scsi_device.h> |
32 | #include <scsi/scsi_host.h> | 33 | #include <scsi/scsi_host.h> |
34 | #include <scsi/scsi_transport.h> | ||
33 | 35 | ||
34 | #include "scsi_priv.h" | 36 | #include "scsi_priv.h" |
35 | #include "scsi_logging.h" | 37 | #include "scsi_logging.h" |
@@ -41,7 +43,7 @@ | |||
41 | static struct proc_dir_entry *proc_scsi; | 43 | static struct proc_dir_entry *proc_scsi; |
42 | 44 | ||
43 | /* Protect sht->present and sht->proc_dir */ | 45 | /* Protect sht->present and sht->proc_dir */ |
44 | static DECLARE_MUTEX(global_host_template_sem); | 46 | static DEFINE_MUTEX(global_host_template_mutex); |
45 | 47 | ||
46 | static int proc_scsi_read(char *buffer, char **start, off_t offset, | 48 | static int proc_scsi_read(char *buffer, char **start, off_t offset, |
47 | int length, int *eof, void *data) | 49 | int length, int *eof, void *data) |
@@ -83,7 +85,7 @@ void scsi_proc_hostdir_add(struct scsi_host_template *sht) | |||
83 | if (!sht->proc_info) | 85 | if (!sht->proc_info) |
84 | return; | 86 | return; |
85 | 87 | ||
86 | down(&global_host_template_sem); | 88 | mutex_lock(&global_host_template_mutex); |
87 | if (!sht->present++) { | 89 | if (!sht->present++) { |
88 | sht->proc_dir = proc_mkdir(sht->proc_name, proc_scsi); | 90 | sht->proc_dir = proc_mkdir(sht->proc_name, proc_scsi); |
89 | if (!sht->proc_dir) | 91 | if (!sht->proc_dir) |
@@ -92,7 +94,7 @@ void scsi_proc_hostdir_add(struct scsi_host_template *sht) | |||
92 | else | 94 | else |
93 | sht->proc_dir->owner = sht->module; | 95 | sht->proc_dir->owner = sht->module; |
94 | } | 96 | } |
95 | up(&global_host_template_sem); | 97 | mutex_unlock(&global_host_template_mutex); |
96 | } | 98 | } |
97 | 99 | ||
98 | void scsi_proc_hostdir_rm(struct scsi_host_template *sht) | 100 | void scsi_proc_hostdir_rm(struct scsi_host_template *sht) |
@@ -100,12 +102,12 @@ void scsi_proc_hostdir_rm(struct scsi_host_template *sht) | |||
100 | if (!sht->proc_info) | 102 | if (!sht->proc_info) |
101 | return; | 103 | return; |
102 | 104 | ||
103 | down(&global_host_template_sem); | 105 | mutex_lock(&global_host_template_mutex); |
104 | if (!--sht->present && sht->proc_dir) { | 106 | if (!--sht->present && sht->proc_dir) { |
105 | remove_proc_entry(sht->proc_name, proc_scsi); | 107 | remove_proc_entry(sht->proc_name, proc_scsi); |
106 | sht->proc_dir = NULL; | 108 | sht->proc_dir = NULL; |
107 | } | 109 | } |
108 | up(&global_host_template_sem); | 110 | mutex_unlock(&global_host_template_mutex); |
109 | } | 111 | } |
110 | 112 | ||
111 | void scsi_proc_host_add(struct Scsi_Host *shost) | 113 | void scsi_proc_host_add(struct Scsi_Host *shost) |
@@ -199,7 +201,10 @@ static int scsi_add_single_device(uint host, uint channel, uint id, uint lun) | |||
199 | if (IS_ERR(shost)) | 201 | if (IS_ERR(shost)) |
200 | return PTR_ERR(shost); | 202 | return PTR_ERR(shost); |
201 | 203 | ||
202 | error = scsi_scan_host_selected(shost, channel, id, lun, 1); | 204 | if (shost->transportt->user_scan) |
205 | error = shost->transportt->user_scan(shost, channel, id, lun); | ||
206 | else | ||
207 | error = scsi_scan_host_selected(shost, channel, id, lun, 1); | ||
203 | scsi_host_put(shost); | 208 | scsi_host_put(shost); |
204 | return error; | 209 | return error; |
205 | } | 210 | } |
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 4e6709f448e1..752fb5da3de4 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
@@ -74,7 +74,7 @@ | |||
74 | #define SCSI_SCAN_TARGET_PRESENT 1 | 74 | #define SCSI_SCAN_TARGET_PRESENT 1 |
75 | #define SCSI_SCAN_LUN_PRESENT 2 | 75 | #define SCSI_SCAN_LUN_PRESENT 2 |
76 | 76 | ||
77 | static char *scsi_null_device_strs = "nullnullnullnull"; | 77 | static const char *scsi_null_device_strs = "nullnullnullnull"; |
78 | 78 | ||
79 | #define MAX_SCSI_LUNS 512 | 79 | #define MAX_SCSI_LUNS 512 |
80 | 80 | ||
@@ -334,19 +334,6 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, | |||
334 | struct scsi_target *starget; | 334 | struct scsi_target *starget; |
335 | struct scsi_target *found_target; | 335 | struct scsi_target *found_target; |
336 | 336 | ||
337 | /* | ||
338 | * Obtain the real parent from the transport. The transport | ||
339 | * is allowed to fail (no error) if there is nothing at that | ||
340 | * target id. | ||
341 | */ | ||
342 | if (shost->transportt->target_parent) { | ||
343 | spin_lock_irqsave(shost->host_lock, flags); | ||
344 | parent = shost->transportt->target_parent(shost, channel, id); | ||
345 | spin_unlock_irqrestore(shost->host_lock, flags); | ||
346 | if (!parent) | ||
347 | return NULL; | ||
348 | } | ||
349 | |||
350 | starget = kmalloc(size, GFP_KERNEL); | 337 | starget = kmalloc(size, GFP_KERNEL); |
351 | if (!starget) { | 338 | if (!starget) { |
352 | printk(KERN_ERR "%s: allocation failure\n", __FUNCTION__); | 339 | printk(KERN_ERR "%s: allocation failure\n", __FUNCTION__); |
@@ -1283,20 +1270,21 @@ struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel, | |||
1283 | struct scsi_device *sdev; | 1270 | struct scsi_device *sdev; |
1284 | struct device *parent = &shost->shost_gendev; | 1271 | struct device *parent = &shost->shost_gendev; |
1285 | int res; | 1272 | int res; |
1286 | struct scsi_target *starget = scsi_alloc_target(parent, channel, id); | 1273 | struct scsi_target *starget; |
1287 | 1274 | ||
1275 | starget = scsi_alloc_target(parent, channel, id); | ||
1288 | if (!starget) | 1276 | if (!starget) |
1289 | return ERR_PTR(-ENOMEM); | 1277 | return ERR_PTR(-ENOMEM); |
1290 | 1278 | ||
1291 | get_device(&starget->dev); | 1279 | get_device(&starget->dev); |
1292 | down(&shost->scan_mutex); | 1280 | mutex_lock(&shost->scan_mutex); |
1293 | if (scsi_host_scan_allowed(shost)) { | 1281 | if (scsi_host_scan_allowed(shost)) { |
1294 | res = scsi_probe_and_add_lun(starget, lun, NULL, &sdev, 1, | 1282 | res = scsi_probe_and_add_lun(starget, lun, NULL, &sdev, 1, |
1295 | hostdata); | 1283 | hostdata); |
1296 | if (res != SCSI_SCAN_LUN_PRESENT) | 1284 | if (res != SCSI_SCAN_LUN_PRESENT) |
1297 | sdev = ERR_PTR(-ENODEV); | 1285 | sdev = ERR_PTR(-ENODEV); |
1298 | } | 1286 | } |
1299 | up(&shost->scan_mutex); | 1287 | mutex_unlock(&shost->scan_mutex); |
1300 | scsi_target_reap(starget); | 1288 | scsi_target_reap(starget); |
1301 | put_device(&starget->dev); | 1289 | put_device(&starget->dev); |
1302 | 1290 | ||
@@ -1404,10 +1392,10 @@ void scsi_scan_target(struct device *parent, unsigned int channel, | |||
1404 | { | 1392 | { |
1405 | struct Scsi_Host *shost = dev_to_shost(parent); | 1393 | struct Scsi_Host *shost = dev_to_shost(parent); |
1406 | 1394 | ||
1407 | down(&shost->scan_mutex); | 1395 | mutex_lock(&shost->scan_mutex); |
1408 | if (scsi_host_scan_allowed(shost)) | 1396 | if (scsi_host_scan_allowed(shost)) |
1409 | __scsi_scan_target(parent, channel, id, lun, rescan); | 1397 | __scsi_scan_target(parent, channel, id, lun, rescan); |
1410 | up(&shost->scan_mutex); | 1398 | mutex_unlock(&shost->scan_mutex); |
1411 | } | 1399 | } |
1412 | EXPORT_SYMBOL(scsi_scan_target); | 1400 | EXPORT_SYMBOL(scsi_scan_target); |
1413 | 1401 | ||
@@ -1454,7 +1442,7 @@ int scsi_scan_host_selected(struct Scsi_Host *shost, unsigned int channel, | |||
1454 | ((lun != SCAN_WILD_CARD) && (lun > shost->max_lun))) | 1442 | ((lun != SCAN_WILD_CARD) && (lun > shost->max_lun))) |
1455 | return -EINVAL; | 1443 | return -EINVAL; |
1456 | 1444 | ||
1457 | down(&shost->scan_mutex); | 1445 | mutex_lock(&shost->scan_mutex); |
1458 | if (scsi_host_scan_allowed(shost)) { | 1446 | if (scsi_host_scan_allowed(shost)) { |
1459 | if (channel == SCAN_WILD_CARD) | 1447 | if (channel == SCAN_WILD_CARD) |
1460 | for (channel = 0; channel <= shost->max_channel; | 1448 | for (channel = 0; channel <= shost->max_channel; |
@@ -1464,7 +1452,7 @@ int scsi_scan_host_selected(struct Scsi_Host *shost, unsigned int channel, | |||
1464 | else | 1452 | else |
1465 | scsi_scan_channel(shost, channel, id, lun, rescan); | 1453 | scsi_scan_channel(shost, channel, id, lun, rescan); |
1466 | } | 1454 | } |
1467 | up(&shost->scan_mutex); | 1455 | mutex_unlock(&shost->scan_mutex); |
1468 | 1456 | ||
1469 | return 0; | 1457 | return 0; |
1470 | } | 1458 | } |
@@ -1522,7 +1510,7 @@ struct scsi_device *scsi_get_host_dev(struct Scsi_Host *shost) | |||
1522 | struct scsi_device *sdev = NULL; | 1510 | struct scsi_device *sdev = NULL; |
1523 | struct scsi_target *starget; | 1511 | struct scsi_target *starget; |
1524 | 1512 | ||
1525 | down(&shost->scan_mutex); | 1513 | mutex_lock(&shost->scan_mutex); |
1526 | if (!scsi_host_scan_allowed(shost)) | 1514 | if (!scsi_host_scan_allowed(shost)) |
1527 | goto out; | 1515 | goto out; |
1528 | starget = scsi_alloc_target(&shost->shost_gendev, 0, shost->this_id); | 1516 | starget = scsi_alloc_target(&shost->shost_gendev, 0, shost->this_id); |
@@ -1536,7 +1524,7 @@ struct scsi_device *scsi_get_host_dev(struct Scsi_Host *shost) | |||
1536 | } | 1524 | } |
1537 | put_device(&starget->dev); | 1525 | put_device(&starget->dev); |
1538 | out: | 1526 | out: |
1539 | up(&shost->scan_mutex); | 1527 | mutex_unlock(&shost->scan_mutex); |
1540 | return sdev; | 1528 | return sdev; |
1541 | } | 1529 | } |
1542 | EXPORT_SYMBOL(scsi_get_host_dev); | 1530 | EXPORT_SYMBOL(scsi_get_host_dev); |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 46349293de08..a77b32deaf8f 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "scsi_priv.h" | 21 | #include "scsi_priv.h" |
22 | #include "scsi_logging.h" | 22 | #include "scsi_logging.h" |
23 | 23 | ||
24 | static struct { | 24 | static const struct { |
25 | enum scsi_device_state value; | 25 | enum scsi_device_state value; |
26 | char *name; | 26 | char *name; |
27 | } sdev_states[] = { | 27 | } sdev_states[] = { |
@@ -48,7 +48,7 @@ const char *scsi_device_state_name(enum scsi_device_state state) | |||
48 | return name; | 48 | return name; |
49 | } | 49 | } |
50 | 50 | ||
51 | static struct { | 51 | static const struct { |
52 | enum scsi_host_state value; | 52 | enum scsi_host_state value; |
53 | char *name; | 53 | char *name; |
54 | } shost_states[] = { | 54 | } shost_states[] = { |
@@ -106,7 +106,10 @@ static int scsi_scan(struct Scsi_Host *shost, const char *str) | |||
106 | return -EINVAL; | 106 | return -EINVAL; |
107 | if (check_set(&lun, s3)) | 107 | if (check_set(&lun, s3)) |
108 | return -EINVAL; | 108 | return -EINVAL; |
109 | res = scsi_scan_host_selected(shost, channel, id, lun, 1); | 109 | if (shost->transportt->user_scan) |
110 | res = shost->transportt->user_scan(shost, channel, id, lun); | ||
111 | else | ||
112 | res = scsi_scan_host_selected(shost, channel, id, lun, 1); | ||
110 | return res; | 113 | return res; |
111 | } | 114 | } |
112 | 115 | ||
@@ -263,9 +266,40 @@ static int scsi_bus_match(struct device *dev, struct device_driver *gendrv) | |||
263 | return (sdp->inq_periph_qual == SCSI_INQ_PQ_CON)? 1: 0; | 266 | return (sdp->inq_periph_qual == SCSI_INQ_PQ_CON)? 1: 0; |
264 | } | 267 | } |
265 | 268 | ||
269 | static int scsi_bus_suspend(struct device * dev, pm_message_t state) | ||
270 | { | ||
271 | struct scsi_device *sdev = to_scsi_device(dev); | ||
272 | struct scsi_host_template *sht = sdev->host->hostt; | ||
273 | int err; | ||
274 | |||
275 | err = scsi_device_quiesce(sdev); | ||
276 | if (err) | ||
277 | return err; | ||
278 | |||
279 | if (sht->suspend) | ||
280 | err = sht->suspend(sdev); | ||
281 | |||
282 | return err; | ||
283 | } | ||
284 | |||
285 | static int scsi_bus_resume(struct device * dev) | ||
286 | { | ||
287 | struct scsi_device *sdev = to_scsi_device(dev); | ||
288 | struct scsi_host_template *sht = sdev->host->hostt; | ||
289 | int err = 0; | ||
290 | |||
291 | if (sht->resume) | ||
292 | err = sht->resume(sdev); | ||
293 | |||
294 | scsi_device_resume(sdev); | ||
295 | return err; | ||
296 | } | ||
297 | |||
266 | struct bus_type scsi_bus_type = { | 298 | struct bus_type scsi_bus_type = { |
267 | .name = "scsi", | 299 | .name = "scsi", |
268 | .match = scsi_bus_match, | 300 | .match = scsi_bus_match, |
301 | .suspend = scsi_bus_suspend, | ||
302 | .resume = scsi_bus_resume, | ||
269 | }; | 303 | }; |
270 | 304 | ||
271 | int scsi_sysfs_register(void) | 305 | int scsi_sysfs_register(void) |
@@ -714,9 +748,9 @@ void scsi_remove_device(struct scsi_device *sdev) | |||
714 | { | 748 | { |
715 | struct Scsi_Host *shost = sdev->host; | 749 | struct Scsi_Host *shost = sdev->host; |
716 | 750 | ||
717 | down(&shost->scan_mutex); | 751 | mutex_lock(&shost->scan_mutex); |
718 | __scsi_remove_device(sdev); | 752 | __scsi_remove_device(sdev); |
719 | up(&shost->scan_mutex); | 753 | mutex_unlock(&shost->scan_mutex); |
720 | } | 754 | } |
721 | EXPORT_SYMBOL(scsi_remove_device); | 755 | EXPORT_SYMBOL(scsi_remove_device); |
722 | 756 | ||
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 2a1a99a2ef56..f2c9acf11bd0 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -112,7 +112,7 @@ fc_enum_name_search(port_state, fc_port_state, fc_port_state_names) | |||
112 | 112 | ||
113 | 113 | ||
114 | /* Convert fc_tgtid_binding_type values to ascii string name */ | 114 | /* Convert fc_tgtid_binding_type values to ascii string name */ |
115 | static struct { | 115 | static const struct { |
116 | enum fc_tgtid_binding_type value; | 116 | enum fc_tgtid_binding_type value; |
117 | char *name; | 117 | char *name; |
118 | int matchlen; | 118 | int matchlen; |
@@ -150,7 +150,7 @@ get_fc_##title##_names(u32 table_key, char *buf) \ | |||
150 | 150 | ||
151 | 151 | ||
152 | /* Convert FC_COS bit values to ascii string name */ | 152 | /* Convert FC_COS bit values to ascii string name */ |
153 | static struct { | 153 | static const struct { |
154 | u32 value; | 154 | u32 value; |
155 | char *name; | 155 | char *name; |
156 | } fc_cos_names[] = { | 156 | } fc_cos_names[] = { |
@@ -164,7 +164,7 @@ fc_bitfield_name_search(cos, fc_cos_names) | |||
164 | 164 | ||
165 | 165 | ||
166 | /* Convert FC_PORTSPEED bit values to ascii string name */ | 166 | /* Convert FC_PORTSPEED bit values to ascii string name */ |
167 | static struct { | 167 | static const struct { |
168 | u32 value; | 168 | u32 value; |
169 | char *name; | 169 | char *name; |
170 | } fc_port_speed_names[] = { | 170 | } fc_port_speed_names[] = { |
@@ -190,7 +190,7 @@ show_fc_fc4s (char *buf, u8 *fc4_list) | |||
190 | 190 | ||
191 | 191 | ||
192 | /* Convert FC_RPORT_ROLE bit values to ascii string name */ | 192 | /* Convert FC_RPORT_ROLE bit values to ascii string name */ |
193 | static struct { | 193 | static const struct { |
194 | u32 value; | 194 | u32 value; |
195 | char *name; | 195 | char *name; |
196 | } fc_remote_port_role_names[] = { | 196 | } fc_remote_port_role_names[] = { |
@@ -295,6 +295,7 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev, | |||
295 | */ | 295 | */ |
296 | fc_host_node_name(shost) = -1; | 296 | fc_host_node_name(shost) = -1; |
297 | fc_host_port_name(shost) = -1; | 297 | fc_host_port_name(shost) = -1; |
298 | fc_host_permanent_port_name(shost) = -1; | ||
298 | fc_host_supported_classes(shost) = FC_COS_UNSPECIFIED; | 299 | fc_host_supported_classes(shost) = FC_COS_UNSPECIFIED; |
299 | memset(fc_host_supported_fc4s(shost), 0, | 300 | memset(fc_host_supported_fc4s(shost), 0, |
300 | sizeof(fc_host_supported_fc4s(shost))); | 301 | sizeof(fc_host_supported_fc4s(shost))); |
@@ -795,6 +796,8 @@ static FC_CLASS_DEVICE_ATTR(host, supported_speeds, S_IRUGO, | |||
795 | 796 | ||
796 | fc_private_host_rd_attr_cast(node_name, "0x%llx\n", 20, unsigned long long); | 797 | fc_private_host_rd_attr_cast(node_name, "0x%llx\n", 20, unsigned long long); |
797 | fc_private_host_rd_attr_cast(port_name, "0x%llx\n", 20, unsigned long long); | 798 | fc_private_host_rd_attr_cast(port_name, "0x%llx\n", 20, unsigned long long); |
799 | fc_private_host_rd_attr_cast(permanent_port_name, "0x%llx\n", 20, | ||
800 | unsigned long long); | ||
798 | fc_private_host_rd_attr(symbolic_name, "%s\n", (FC_SYMBOLIC_NAME_SIZE +1)); | 801 | fc_private_host_rd_attr(symbolic_name, "%s\n", (FC_SYMBOLIC_NAME_SIZE +1)); |
799 | fc_private_host_rd_attr(maxframe_size, "%u bytes\n", 20); | 802 | fc_private_host_rd_attr(maxframe_size, "%u bytes\n", 20); |
800 | fc_private_host_rd_attr(serial_number, "%s\n", (FC_SERIAL_NUMBER_SIZE +1)); | 803 | fc_private_host_rd_attr(serial_number, "%s\n", (FC_SERIAL_NUMBER_SIZE +1)); |
@@ -1090,17 +1093,23 @@ static int fc_rport_match(struct attribute_container *cont, | |||
1090 | /* | 1093 | /* |
1091 | * Must be called with shost->host_lock held | 1094 | * Must be called with shost->host_lock held |
1092 | */ | 1095 | */ |
1093 | static struct device *fc_target_parent(struct Scsi_Host *shost, | 1096 | static int fc_user_scan(struct Scsi_Host *shost, uint channel, |
1094 | int channel, uint id) | 1097 | uint id, uint lun) |
1095 | { | 1098 | { |
1096 | struct fc_rport *rport; | 1099 | struct fc_rport *rport; |
1097 | 1100 | ||
1098 | list_for_each_entry(rport, &fc_host_rports(shost), peers) | 1101 | list_for_each_entry(rport, &fc_host_rports(shost), peers) { |
1099 | if ((rport->channel == channel) && | 1102 | if (rport->scsi_target_id == -1) |
1100 | (rport->scsi_target_id == id)) | 1103 | continue; |
1101 | return &rport->dev; | 1104 | |
1105 | if ((channel == SCAN_WILD_CARD || channel == rport->channel) && | ||
1106 | (id == SCAN_WILD_CARD || id == rport->scsi_target_id)) { | ||
1107 | scsi_scan_target(&rport->dev, rport->channel, | ||
1108 | rport->scsi_target_id, lun, 1); | ||
1109 | } | ||
1110 | } | ||
1102 | 1111 | ||
1103 | return NULL; | 1112 | return 0; |
1104 | } | 1113 | } |
1105 | 1114 | ||
1106 | struct scsi_transport_template * | 1115 | struct scsi_transport_template * |
@@ -1139,7 +1148,7 @@ fc_attach_transport(struct fc_function_template *ft) | |||
1139 | /* Transport uses the shost workq for scsi scanning */ | 1148 | /* Transport uses the shost workq for scsi scanning */ |
1140 | i->t.create_work_queue = 1; | 1149 | i->t.create_work_queue = 1; |
1141 | 1150 | ||
1142 | i->t.target_parent = fc_target_parent; | 1151 | i->t.user_scan = fc_user_scan; |
1143 | 1152 | ||
1144 | /* | 1153 | /* |
1145 | * Setup SCSI Target Attributes. | 1154 | * Setup SCSI Target Attributes. |
@@ -1160,6 +1169,7 @@ fc_attach_transport(struct fc_function_template *ft) | |||
1160 | count=0; | 1169 | count=0; |
1161 | SETUP_HOST_ATTRIBUTE_RD(node_name); | 1170 | SETUP_HOST_ATTRIBUTE_RD(node_name); |
1162 | SETUP_HOST_ATTRIBUTE_RD(port_name); | 1171 | SETUP_HOST_ATTRIBUTE_RD(port_name); |
1172 | SETUP_HOST_ATTRIBUTE_RD(permanent_port_name); | ||
1163 | SETUP_HOST_ATTRIBUTE_RD(supported_classes); | 1173 | SETUP_HOST_ATTRIBUTE_RD(supported_classes); |
1164 | SETUP_HOST_ATTRIBUTE_RD(supported_fc4s); | 1174 | SETUP_HOST_ATTRIBUTE_RD(supported_fc4s); |
1165 | SETUP_HOST_ATTRIBUTE_RD(symbolic_name); | 1175 | SETUP_HOST_ATTRIBUTE_RD(symbolic_name); |
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index e08462d50c97..59a1c9d9d3bd 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c | |||
@@ -21,11 +21,9 @@ | |||
21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
22 | */ | 22 | */ |
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #include <linux/string.h> | ||
25 | #include <linux/slab.h> | ||
26 | #include <linux/mempool.h> | 24 | #include <linux/mempool.h> |
25 | #include <linux/mutex.h> | ||
27 | #include <net/tcp.h> | 26 | #include <net/tcp.h> |
28 | |||
29 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
30 | #include <scsi/scsi_host.h> | 28 | #include <scsi/scsi_host.h> |
31 | #include <scsi/scsi_device.h> | 29 | #include <scsi/scsi_device.h> |
@@ -45,11 +43,6 @@ struct iscsi_internal { | |||
45 | */ | 43 | */ |
46 | struct list_head sessions; | 44 | struct list_head sessions; |
47 | /* | 45 | /* |
48 | * lock to serialize access to the sessions list which must | ||
49 | * be taken after the rx_queue_sema | ||
50 | */ | ||
51 | spinlock_t session_lock; | ||
52 | /* | ||
53 | * based on transport capabilities, at register time we set these | 46 | * based on transport capabilities, at register time we set these |
54 | * bits to tell the transport class it wants attributes displayed | 47 | * bits to tell the transport class it wants attributes displayed |
55 | * in sysfs or that it can support different iSCSI Data-Path | 48 | * in sysfs or that it can support different iSCSI Data-Path |
@@ -70,7 +63,7 @@ struct iscsi_internal { | |||
70 | /* | 63 | /* |
71 | * list of registered transports and lock that must | 64 | * list of registered transports and lock that must |
72 | * be held while accessing list. The iscsi_transport_lock must | 65 | * be held while accessing list. The iscsi_transport_lock must |
73 | * be acquired after the rx_queue_sema. | 66 | * be acquired after the rx_queue_mutex. |
74 | */ | 67 | */ |
75 | static LIST_HEAD(iscsi_transports); | 68 | static LIST_HEAD(iscsi_transports); |
76 | static DEFINE_SPINLOCK(iscsi_transport_lock); | 69 | static DEFINE_SPINLOCK(iscsi_transport_lock); |
@@ -145,7 +138,7 @@ static DECLARE_TRANSPORT_CLASS(iscsi_connection_class, | |||
145 | 138 | ||
146 | static struct sock *nls; | 139 | static struct sock *nls; |
147 | static int daemon_pid; | 140 | static int daemon_pid; |
148 | static DECLARE_MUTEX(rx_queue_sema); | 141 | static DEFINE_MUTEX(rx_queue_mutex); |
149 | 142 | ||
150 | struct mempool_zone { | 143 | struct mempool_zone { |
151 | mempool_t *pool; | 144 | mempool_t *pool; |
@@ -156,7 +149,7 @@ struct mempool_zone { | |||
156 | spinlock_t freelock; | 149 | spinlock_t freelock; |
157 | }; | 150 | }; |
158 | 151 | ||
159 | static struct mempool_zone z_reply; | 152 | static struct mempool_zone *z_reply; |
160 | 153 | ||
161 | /* | 154 | /* |
162 | * Z_MAX_* - actual mempool size allocated at the mempool_zone_init() time | 155 | * Z_MAX_* - actual mempool size allocated at the mempool_zone_init() time |
@@ -171,50 +164,271 @@ static struct mempool_zone z_reply; | |||
171 | #define Z_MAX_ERROR 16 | 164 | #define Z_MAX_ERROR 16 |
172 | #define Z_HIWAT_ERROR 12 | 165 | #define Z_HIWAT_ERROR 12 |
173 | 166 | ||
174 | struct iscsi_if_conn { | 167 | static LIST_HEAD(connlist); |
175 | struct list_head conn_list; /* item in connlist */ | 168 | static DEFINE_SPINLOCK(connlock); |
176 | struct list_head session_list; /* item in session->connections */ | ||
177 | iscsi_connh_t connh; | ||
178 | int active; /* must be accessed with the connlock */ | ||
179 | struct Scsi_Host *host; /* originated shost */ | ||
180 | struct device dev; /* sysfs transport/container device */ | ||
181 | struct iscsi_transport *transport; | ||
182 | struct mempool_zone z_error; | ||
183 | struct mempool_zone z_pdu; | ||
184 | struct list_head freequeue; | ||
185 | }; | ||
186 | 169 | ||
187 | #define iscsi_dev_to_if_conn(_dev) \ | 170 | /* |
188 | container_of(_dev, struct iscsi_if_conn, dev) | 171 | * The following functions can be used by LLDs that allocate |
172 | * their own scsi_hosts or by software iscsi LLDs | ||
173 | */ | ||
174 | static void iscsi_session_release(struct device *dev) | ||
175 | { | ||
176 | struct iscsi_cls_session *session = iscsi_dev_to_session(dev); | ||
177 | struct iscsi_transport *transport = session->transport; | ||
178 | struct Scsi_Host *shost; | ||
189 | 179 | ||
190 | #define iscsi_cdev_to_if_conn(_cdev) \ | 180 | shost = iscsi_session_to_shost(session); |
191 | iscsi_dev_to_if_conn(_cdev->dev) | 181 | scsi_host_put(shost); |
182 | kfree(session); | ||
183 | module_put(transport->owner); | ||
184 | } | ||
192 | 185 | ||
193 | static LIST_HEAD(connlist); | 186 | static int iscsi_is_session_dev(const struct device *dev) |
194 | static DEFINE_SPINLOCK(connlock); | 187 | { |
188 | return dev->release == iscsi_session_release; | ||
189 | } | ||
195 | 190 | ||
196 | struct iscsi_if_session { | 191 | /** |
197 | struct list_head list; /* item in session_list */ | 192 | * iscsi_create_session - create iscsi class session |
198 | struct list_head connections; | 193 | * @shost: scsi host |
199 | iscsi_sessionh_t sessionh; | 194 | * @transport: iscsi transport |
200 | struct iscsi_transport *transport; | 195 | * |
201 | struct device dev; /* sysfs transport/container device */ | 196 | * This can be called from a LLD or iscsi_transport |
202 | }; | 197 | **/ |
198 | struct iscsi_cls_session * | ||
199 | iscsi_create_session(struct Scsi_Host *shost, struct iscsi_transport *transport) | ||
200 | { | ||
201 | struct iscsi_cls_session *session; | ||
202 | int err; | ||
203 | |||
204 | if (!try_module_get(transport->owner)) | ||
205 | return NULL; | ||
206 | |||
207 | session = kzalloc(sizeof(*session), GFP_KERNEL); | ||
208 | if (!session) | ||
209 | goto module_put; | ||
210 | session->transport = transport; | ||
211 | |||
212 | /* this is released in the dev's release function */ | ||
213 | scsi_host_get(shost); | ||
214 | snprintf(session->dev.bus_id, BUS_ID_SIZE, "session%u", shost->host_no); | ||
215 | session->dev.parent = &shost->shost_gendev; | ||
216 | session->dev.release = iscsi_session_release; | ||
217 | err = device_register(&session->dev); | ||
218 | if (err) { | ||
219 | dev_printk(KERN_ERR, &session->dev, "iscsi: could not " | ||
220 | "register session's dev\n"); | ||
221 | goto free_session; | ||
222 | } | ||
223 | transport_register_device(&session->dev); | ||
224 | |||
225 | return session; | ||
226 | |||
227 | free_session: | ||
228 | kfree(session); | ||
229 | module_put: | ||
230 | module_put(transport->owner); | ||
231 | return NULL; | ||
232 | } | ||
233 | |||
234 | EXPORT_SYMBOL_GPL(iscsi_create_session); | ||
235 | |||
236 | /** | ||
237 | * iscsi_destroy_session - destroy iscsi session | ||
238 | * @session: iscsi_session | ||
239 | * | ||
240 | * Can be called by a LLD or iscsi_transport. There must not be | ||
241 | * any running connections. | ||
242 | **/ | ||
243 | int iscsi_destroy_session(struct iscsi_cls_session *session) | ||
244 | { | ||
245 | transport_unregister_device(&session->dev); | ||
246 | device_unregister(&session->dev); | ||
247 | return 0; | ||
248 | } | ||
249 | |||
250 | EXPORT_SYMBOL_GPL(iscsi_destroy_session); | ||
251 | |||
252 | static void iscsi_conn_release(struct device *dev) | ||
253 | { | ||
254 | struct iscsi_cls_conn *conn = iscsi_dev_to_conn(dev); | ||
255 | struct device *parent = conn->dev.parent; | ||
256 | |||
257 | kfree(conn); | ||
258 | put_device(parent); | ||
259 | } | ||
260 | |||
261 | static int iscsi_is_conn_dev(const struct device *dev) | ||
262 | { | ||
263 | return dev->release == iscsi_conn_release; | ||
264 | } | ||
265 | |||
266 | /** | ||
267 | * iscsi_create_conn - create iscsi class connection | ||
268 | * @session: iscsi cls session | ||
269 | * @cid: connection id | ||
270 | * | ||
271 | * This can be called from a LLD or iscsi_transport. The connection | ||
272 | * is child of the session so cid must be unique for all connections | ||
273 | * on the session. | ||
274 | **/ | ||
275 | struct iscsi_cls_conn * | ||
276 | iscsi_create_conn(struct iscsi_cls_session *session, uint32_t cid) | ||
277 | { | ||
278 | struct iscsi_transport *transport = session->transport; | ||
279 | struct Scsi_Host *shost = iscsi_session_to_shost(session); | ||
280 | struct iscsi_cls_conn *conn; | ||
281 | int err; | ||
282 | |||
283 | conn = kzalloc(sizeof(*conn) + transport->conndata_size, GFP_KERNEL); | ||
284 | if (!conn) | ||
285 | return NULL; | ||
286 | |||
287 | if (transport->conndata_size) | ||
288 | conn->dd_data = &conn[1]; | ||
289 | |||
290 | INIT_LIST_HEAD(&conn->conn_list); | ||
291 | conn->transport = transport; | ||
292 | |||
293 | /* this is released in the dev's release function */ | ||
294 | if (!get_device(&session->dev)) | ||
295 | goto free_conn; | ||
296 | snprintf(conn->dev.bus_id, BUS_ID_SIZE, "connection%d:%u", | ||
297 | shost->host_no, cid); | ||
298 | conn->dev.parent = &session->dev; | ||
299 | conn->dev.release = iscsi_conn_release; | ||
300 | err = device_register(&conn->dev); | ||
301 | if (err) { | ||
302 | dev_printk(KERN_ERR, &conn->dev, "iscsi: could not register " | ||
303 | "connection's dev\n"); | ||
304 | goto release_parent_ref; | ||
305 | } | ||
306 | transport_register_device(&conn->dev); | ||
307 | return conn; | ||
308 | |||
309 | release_parent_ref: | ||
310 | put_device(&session->dev); | ||
311 | free_conn: | ||
312 | kfree(conn); | ||
313 | return NULL; | ||
314 | } | ||
315 | |||
316 | EXPORT_SYMBOL_GPL(iscsi_create_conn); | ||
317 | |||
318 | /** | ||
319 | * iscsi_destroy_conn - destroy iscsi class connection | ||
320 | * @session: iscsi cls session | ||
321 | * | ||
322 | * This can be called from a LLD or iscsi_transport. | ||
323 | **/ | ||
324 | int iscsi_destroy_conn(struct iscsi_cls_conn *conn) | ||
325 | { | ||
326 | transport_unregister_device(&conn->dev); | ||
327 | device_unregister(&conn->dev); | ||
328 | return 0; | ||
329 | } | ||
330 | |||
331 | EXPORT_SYMBOL_GPL(iscsi_destroy_conn); | ||
332 | |||
333 | /* | ||
334 | * These functions are used only by software iscsi_transports | ||
335 | * which do not allocate and more their scsi_hosts since this | ||
336 | * is initiated from userspace. | ||
337 | */ | ||
338 | |||
339 | /* | ||
340 | * iSCSI Session's hostdata organization: | ||
341 | * | ||
342 | * *------------------* <== hostdata_session(host->hostdata) | ||
343 | * | ptr to class sess| | ||
344 | * |------------------| <== iscsi_hostdata(host->hostdata) | ||
345 | * | transport's data | | ||
346 | * *------------------* | ||
347 | */ | ||
348 | |||
349 | #define hostdata_privsize(_t) (sizeof(unsigned long) + _t->hostdata_size + \ | ||
350 | _t->hostdata_size % sizeof(unsigned long)) | ||
351 | |||
352 | #define hostdata_session(_hostdata) (iscsi_ptr(*(unsigned long *)_hostdata)) | ||
353 | |||
354 | /** | ||
355 | * iscsi_transport_create_session - create iscsi cls session and host | ||
356 | * scsit: scsi transport template | ||
357 | * transport: iscsi transport template | ||
358 | * | ||
359 | * This can be used by software iscsi_transports that allocate | ||
360 | * a session per scsi host. | ||
361 | **/ | ||
362 | struct Scsi_Host * | ||
363 | iscsi_transport_create_session(struct scsi_transport_template *scsit, | ||
364 | struct iscsi_transport *transport) | ||
365 | { | ||
366 | struct iscsi_cls_session *session; | ||
367 | struct Scsi_Host *shost; | ||
368 | |||
369 | shost = scsi_host_alloc(transport->host_template, | ||
370 | hostdata_privsize(transport)); | ||
371 | if (!shost) { | ||
372 | printk(KERN_ERR "iscsi: can not allocate SCSI host for " | ||
373 | "session\n"); | ||
374 | return NULL; | ||
375 | } | ||
376 | |||
377 | shost->max_id = 1; | ||
378 | shost->max_channel = 0; | ||
379 | shost->max_lun = transport->max_lun; | ||
380 | shost->max_cmd_len = transport->max_cmd_len; | ||
381 | shost->transportt = scsit; | ||
382 | shost->transportt->create_work_queue = 1; | ||
383 | |||
384 | if (scsi_add_host(shost, NULL)) | ||
385 | goto free_host; | ||
386 | |||
387 | session = iscsi_create_session(shost, transport); | ||
388 | if (!session) | ||
389 | goto remove_host; | ||
203 | 390 | ||
204 | #define iscsi_dev_to_if_session(_dev) \ | 391 | *(unsigned long*)shost->hostdata = (unsigned long)session; |
205 | container_of(_dev, struct iscsi_if_session, dev) | 392 | return shost; |
393 | |||
394 | remove_host: | ||
395 | scsi_remove_host(shost); | ||
396 | free_host: | ||
397 | scsi_host_put(shost); | ||
398 | return NULL; | ||
399 | } | ||
206 | 400 | ||
207 | #define iscsi_cdev_to_if_session(_cdev) \ | 401 | EXPORT_SYMBOL_GPL(iscsi_transport_create_session); |
208 | iscsi_dev_to_if_session(_cdev->dev) | ||
209 | 402 | ||
210 | #define iscsi_if_session_to_shost(_session) \ | 403 | /** |
211 | dev_to_shost(_session->dev.parent) | 404 | * iscsi_transport_destroy_session - destroy session and scsi host |
405 | * shost: scsi host | ||
406 | * | ||
407 | * This can be used by software iscsi_transports that allocate | ||
408 | * a session per scsi host. | ||
409 | **/ | ||
410 | int iscsi_transport_destroy_session(struct Scsi_Host *shost) | ||
411 | { | ||
412 | struct iscsi_cls_session *session; | ||
212 | 413 | ||
213 | static struct iscsi_if_conn* | 414 | scsi_remove_host(shost); |
415 | session = hostdata_session(shost->hostdata); | ||
416 | iscsi_destroy_session(session); | ||
417 | /* ref from host alloc */ | ||
418 | scsi_host_put(shost); | ||
419 | return 0; | ||
420 | } | ||
421 | |||
422 | EXPORT_SYMBOL_GPL(iscsi_transport_destroy_session); | ||
423 | |||
424 | /* | ||
425 | * iscsi interface functions | ||
426 | */ | ||
427 | static struct iscsi_cls_conn* | ||
214 | iscsi_if_find_conn(uint64_t key) | 428 | iscsi_if_find_conn(uint64_t key) |
215 | { | 429 | { |
216 | unsigned long flags; | 430 | unsigned long flags; |
217 | struct iscsi_if_conn *conn; | 431 | struct iscsi_cls_conn *conn; |
218 | 432 | ||
219 | spin_lock_irqsave(&connlock, flags); | 433 | spin_lock_irqsave(&connlock, flags); |
220 | list_for_each_entry(conn, &connlist, conn_list) | 434 | list_for_each_entry(conn, &connlist, conn_list) |
@@ -249,7 +463,7 @@ static inline struct list_head *skb_to_lh(struct sk_buff *skb) | |||
249 | } | 463 | } |
250 | 464 | ||
251 | static void* | 465 | static void* |
252 | mempool_zone_alloc_skb(gfp_t gfp_mask, void *pool_data) | 466 | mempool_zone_alloc_skb(unsigned int gfp_mask, void *pool_data) |
253 | { | 467 | { |
254 | struct mempool_zone *zone = pool_data; | 468 | struct mempool_zone *zone = pool_data; |
255 | 469 | ||
@@ -281,14 +495,21 @@ mempool_zone_complete(struct mempool_zone *zone) | |||
281 | spin_unlock_irqrestore(&zone->freelock, flags); | 495 | spin_unlock_irqrestore(&zone->freelock, flags); |
282 | } | 496 | } |
283 | 497 | ||
284 | static int | 498 | static struct mempool_zone * |
285 | mempool_zone_init(struct mempool_zone *zp, unsigned max, unsigned size, | 499 | mempool_zone_init(unsigned max, unsigned size, unsigned hiwat) |
286 | unsigned hiwat) | ||
287 | { | 500 | { |
501 | struct mempool_zone *zp; | ||
502 | |||
503 | zp = kzalloc(sizeof(*zp), GFP_KERNEL); | ||
504 | if (!zp) | ||
505 | return NULL; | ||
506 | |||
288 | zp->pool = mempool_create(max, mempool_zone_alloc_skb, | 507 | zp->pool = mempool_create(max, mempool_zone_alloc_skb, |
289 | mempool_zone_free_skb, zp); | 508 | mempool_zone_free_skb, zp); |
290 | if (!zp->pool) | 509 | if (!zp->pool) { |
291 | return -ENOMEM; | 510 | kfree(zp); |
511 | return NULL; | ||
512 | } | ||
292 | 513 | ||
293 | zp->size = size; | 514 | zp->size = size; |
294 | zp->hiwat = hiwat; | 515 | zp->hiwat = hiwat; |
@@ -297,9 +518,14 @@ mempool_zone_init(struct mempool_zone *zp, unsigned max, unsigned size, | |||
297 | spin_lock_init(&zp->freelock); | 518 | spin_lock_init(&zp->freelock); |
298 | atomic_set(&zp->allocated, 0); | 519 | atomic_set(&zp->allocated, 0); |
299 | 520 | ||
300 | return 0; | 521 | return zp; |
301 | } | 522 | } |
302 | 523 | ||
524 | static void mempool_zone_destroy(struct mempool_zone *zp) | ||
525 | { | ||
526 | mempool_destroy(zp->pool); | ||
527 | kfree(zp); | ||
528 | } | ||
303 | 529 | ||
304 | static struct sk_buff* | 530 | static struct sk_buff* |
305 | mempool_zone_get_skb(struct mempool_zone *zone) | 531 | mempool_zone_get_skb(struct mempool_zone *zone) |
@@ -339,7 +565,7 @@ int iscsi_recv_pdu(iscsi_connh_t connh, struct iscsi_hdr *hdr, | |||
339 | struct nlmsghdr *nlh; | 565 | struct nlmsghdr *nlh; |
340 | struct sk_buff *skb; | 566 | struct sk_buff *skb; |
341 | struct iscsi_uevent *ev; | 567 | struct iscsi_uevent *ev; |
342 | struct iscsi_if_conn *conn; | 568 | struct iscsi_cls_conn *conn; |
343 | char *pdu; | 569 | char *pdu; |
344 | int len = NLMSG_SPACE(sizeof(*ev) + sizeof(struct iscsi_hdr) + | 570 | int len = NLMSG_SPACE(sizeof(*ev) + sizeof(struct iscsi_hdr) + |
345 | data_size); | 571 | data_size); |
@@ -347,13 +573,13 @@ int iscsi_recv_pdu(iscsi_connh_t connh, struct iscsi_hdr *hdr, | |||
347 | conn = iscsi_if_find_conn(connh); | 573 | conn = iscsi_if_find_conn(connh); |
348 | BUG_ON(!conn); | 574 | BUG_ON(!conn); |
349 | 575 | ||
350 | mempool_zone_complete(&conn->z_pdu); | 576 | mempool_zone_complete(conn->z_pdu); |
351 | 577 | ||
352 | skb = mempool_zone_get_skb(&conn->z_pdu); | 578 | skb = mempool_zone_get_skb(conn->z_pdu); |
353 | if (!skb) { | 579 | if (!skb) { |
354 | iscsi_conn_error(connh, ISCSI_ERR_CONN_FAILED); | 580 | iscsi_conn_error(connh, ISCSI_ERR_CONN_FAILED); |
355 | printk(KERN_ERR "iscsi%d: can not deliver control PDU: OOM\n", | 581 | dev_printk(KERN_ERR, &conn->dev, "iscsi: can not deliver " |
356 | conn->host->host_no); | 582 | "control PDU: OOM\n"); |
357 | return -ENOMEM; | 583 | return -ENOMEM; |
358 | } | 584 | } |
359 | 585 | ||
@@ -362,14 +588,14 @@ int iscsi_recv_pdu(iscsi_connh_t connh, struct iscsi_hdr *hdr, | |||
362 | memset(ev, 0, sizeof(*ev)); | 588 | memset(ev, 0, sizeof(*ev)); |
363 | ev->transport_handle = iscsi_handle(conn->transport); | 589 | ev->transport_handle = iscsi_handle(conn->transport); |
364 | ev->type = ISCSI_KEVENT_RECV_PDU; | 590 | ev->type = ISCSI_KEVENT_RECV_PDU; |
365 | if (atomic_read(&conn->z_pdu.allocated) >= conn->z_pdu.hiwat) | 591 | if (atomic_read(&conn->z_pdu->allocated) >= conn->z_pdu->hiwat) |
366 | ev->iferror = -ENOMEM; | 592 | ev->iferror = -ENOMEM; |
367 | ev->r.recv_req.conn_handle = connh; | 593 | ev->r.recv_req.conn_handle = connh; |
368 | pdu = (char*)ev + sizeof(*ev); | 594 | pdu = (char*)ev + sizeof(*ev); |
369 | memcpy(pdu, hdr, sizeof(struct iscsi_hdr)); | 595 | memcpy(pdu, hdr, sizeof(struct iscsi_hdr)); |
370 | memcpy(pdu + sizeof(struct iscsi_hdr), data, data_size); | 596 | memcpy(pdu + sizeof(struct iscsi_hdr), data, data_size); |
371 | 597 | ||
372 | return iscsi_unicast_skb(&conn->z_pdu, skb); | 598 | return iscsi_unicast_skb(conn->z_pdu, skb); |
373 | } | 599 | } |
374 | EXPORT_SYMBOL_GPL(iscsi_recv_pdu); | 600 | EXPORT_SYMBOL_GPL(iscsi_recv_pdu); |
375 | 601 | ||
@@ -378,18 +604,18 @@ void iscsi_conn_error(iscsi_connh_t connh, enum iscsi_err error) | |||
378 | struct nlmsghdr *nlh; | 604 | struct nlmsghdr *nlh; |
379 | struct sk_buff *skb; | 605 | struct sk_buff *skb; |
380 | struct iscsi_uevent *ev; | 606 | struct iscsi_uevent *ev; |
381 | struct iscsi_if_conn *conn; | 607 | struct iscsi_cls_conn *conn; |
382 | int len = NLMSG_SPACE(sizeof(*ev)); | 608 | int len = NLMSG_SPACE(sizeof(*ev)); |
383 | 609 | ||
384 | conn = iscsi_if_find_conn(connh); | 610 | conn = iscsi_if_find_conn(connh); |
385 | BUG_ON(!conn); | 611 | BUG_ON(!conn); |
386 | 612 | ||
387 | mempool_zone_complete(&conn->z_error); | 613 | mempool_zone_complete(conn->z_error); |
388 | 614 | ||
389 | skb = mempool_zone_get_skb(&conn->z_error); | 615 | skb = mempool_zone_get_skb(conn->z_error); |
390 | if (!skb) { | 616 | if (!skb) { |
391 | printk(KERN_ERR "iscsi%d: gracefully ignored conn error (%d)\n", | 617 | dev_printk(KERN_ERR, &conn->dev, "iscsi: gracefully ignored " |
392 | conn->host->host_no, error); | 618 | "conn error (%d)\n", error); |
393 | return; | 619 | return; |
394 | } | 620 | } |
395 | 621 | ||
@@ -397,15 +623,15 @@ void iscsi_conn_error(iscsi_connh_t connh, enum iscsi_err error) | |||
397 | ev = NLMSG_DATA(nlh); | 623 | ev = NLMSG_DATA(nlh); |
398 | ev->transport_handle = iscsi_handle(conn->transport); | 624 | ev->transport_handle = iscsi_handle(conn->transport); |
399 | ev->type = ISCSI_KEVENT_CONN_ERROR; | 625 | ev->type = ISCSI_KEVENT_CONN_ERROR; |
400 | if (atomic_read(&conn->z_error.allocated) >= conn->z_error.hiwat) | 626 | if (atomic_read(&conn->z_error->allocated) >= conn->z_error->hiwat) |
401 | ev->iferror = -ENOMEM; | 627 | ev->iferror = -ENOMEM; |
402 | ev->r.connerror.error = error; | 628 | ev->r.connerror.error = error; |
403 | ev->r.connerror.conn_handle = connh; | 629 | ev->r.connerror.conn_handle = connh; |
404 | 630 | ||
405 | iscsi_unicast_skb(&conn->z_error, skb); | 631 | iscsi_unicast_skb(conn->z_error, skb); |
406 | 632 | ||
407 | printk(KERN_INFO "iscsi%d: detected conn error (%d)\n", | 633 | dev_printk(KERN_INFO, &conn->dev, "iscsi: detected conn error (%d)\n", |
408 | conn->host->host_no, error); | 634 | error); |
409 | } | 635 | } |
410 | EXPORT_SYMBOL_GPL(iscsi_conn_error); | 636 | EXPORT_SYMBOL_GPL(iscsi_conn_error); |
411 | 637 | ||
@@ -419,9 +645,9 @@ iscsi_if_send_reply(int pid, int seq, int type, int done, int multi, | |||
419 | int flags = multi ? NLM_F_MULTI : 0; | 645 | int flags = multi ? NLM_F_MULTI : 0; |
420 | int t = done ? NLMSG_DONE : type; | 646 | int t = done ? NLMSG_DONE : type; |
421 | 647 | ||
422 | mempool_zone_complete(&z_reply); | 648 | mempool_zone_complete(z_reply); |
423 | 649 | ||
424 | skb = mempool_zone_get_skb(&z_reply); | 650 | skb = mempool_zone_get_skb(z_reply); |
425 | /* | 651 | /* |
426 | * FIXME: | 652 | * FIXME: |
427 | * user is supposed to react on iferror == -ENOMEM; | 653 | * user is supposed to react on iferror == -ENOMEM; |
@@ -432,366 +658,197 @@ iscsi_if_send_reply(int pid, int seq, int type, int done, int multi, | |||
432 | nlh = __nlmsg_put(skb, pid, seq, t, (len - sizeof(*nlh)), 0); | 658 | nlh = __nlmsg_put(skb, pid, seq, t, (len - sizeof(*nlh)), 0); |
433 | nlh->nlmsg_flags = flags; | 659 | nlh->nlmsg_flags = flags; |
434 | memcpy(NLMSG_DATA(nlh), payload, size); | 660 | memcpy(NLMSG_DATA(nlh), payload, size); |
435 | return iscsi_unicast_skb(&z_reply, skb); | 661 | return iscsi_unicast_skb(z_reply, skb); |
436 | } | 662 | } |
437 | 663 | ||
438 | /* | 664 | static int |
439 | * iSCSI Session's hostdata organization: | 665 | iscsi_if_get_stats(struct iscsi_transport *transport, struct sk_buff *skb, |
440 | * | 666 | struct nlmsghdr *nlh) |
441 | * *------------------* <== host->hostdata | 667 | { |
442 | * | transport | | 668 | struct iscsi_uevent *ev = NLMSG_DATA(nlh); |
443 | * |------------------| <== iscsi_hostdata(host->hostdata) | 669 | struct iscsi_stats *stats; |
444 | * | transport's data | | 670 | struct sk_buff *skbstat; |
445 | * |------------------| <== hostdata_session(host->hostdata) | 671 | struct iscsi_cls_conn *conn; |
446 | * | interface's data | | 672 | struct nlmsghdr *nlhstat; |
447 | * *------------------* | 673 | struct iscsi_uevent *evstat; |
448 | */ | 674 | int len = NLMSG_SPACE(sizeof(*ev) + |
675 | sizeof(struct iscsi_stats) + | ||
676 | sizeof(struct iscsi_stats_custom) * | ||
677 | ISCSI_STATS_CUSTOM_MAX); | ||
678 | int err = 0; | ||
449 | 679 | ||
450 | #define hostdata_privsize(_t) (sizeof(unsigned long) + _t->hostdata_size + \ | 680 | conn = iscsi_if_find_conn(ev->u.get_stats.conn_handle); |
451 | _t->hostdata_size % sizeof(unsigned long) + \ | 681 | if (!conn) |
452 | sizeof(struct iscsi_if_session)) | 682 | return -EEXIST; |
453 | 683 | ||
454 | #define hostdata_session(_hostdata) ((void*)_hostdata + sizeof(unsigned long) + \ | 684 | do { |
455 | ((struct iscsi_transport *) \ | 685 | int actual_size; |
456 | iscsi_ptr(*(uint64_t *)_hostdata))->hostdata_size) | ||
457 | 686 | ||
458 | static void iscsi_if_session_dev_release(struct device *dev) | 687 | mempool_zone_complete(conn->z_pdu); |
459 | { | ||
460 | struct iscsi_if_session *session = iscsi_dev_to_if_session(dev); | ||
461 | struct iscsi_transport *transport = session->transport; | ||
462 | struct Scsi_Host *shost = iscsi_if_session_to_shost(session); | ||
463 | struct iscsi_if_conn *conn, *tmp; | ||
464 | unsigned long flags; | ||
465 | 688 | ||
466 | /* now free connections */ | 689 | skbstat = mempool_zone_get_skb(conn->z_pdu); |
467 | spin_lock_irqsave(&connlock, flags); | 690 | if (!skbstat) { |
468 | list_for_each_entry_safe(conn, tmp, &session->connections, | 691 | dev_printk(KERN_ERR, &conn->dev, "iscsi: can not " |
469 | session_list) { | 692 | "deliver stats: OOM\n"); |
470 | list_del(&conn->session_list); | 693 | return -ENOMEM; |
471 | mempool_destroy(conn->z_pdu.pool); | 694 | } |
472 | mempool_destroy(conn->z_error.pool); | 695 | |
473 | kfree(conn); | 696 | nlhstat = __nlmsg_put(skbstat, daemon_pid, 0, 0, |
474 | } | 697 | (len - sizeof(*nlhstat)), 0); |
475 | spin_unlock_irqrestore(&connlock, flags); | 698 | evstat = NLMSG_DATA(nlhstat); |
476 | scsi_host_put(shost); | 699 | memset(evstat, 0, sizeof(*evstat)); |
477 | module_put(transport->owner); | 700 | evstat->transport_handle = iscsi_handle(conn->transport); |
701 | evstat->type = nlh->nlmsg_type; | ||
702 | if (atomic_read(&conn->z_pdu->allocated) >= conn->z_pdu->hiwat) | ||
703 | evstat->iferror = -ENOMEM; | ||
704 | evstat->u.get_stats.conn_handle = | ||
705 | ev->u.get_stats.conn_handle; | ||
706 | stats = (struct iscsi_stats *) | ||
707 | ((char*)evstat + sizeof(*evstat)); | ||
708 | memset(stats, 0, sizeof(*stats)); | ||
709 | |||
710 | transport->get_stats(ev->u.get_stats.conn_handle, stats); | ||
711 | actual_size = NLMSG_SPACE(sizeof(struct iscsi_uevent) + | ||
712 | sizeof(struct iscsi_stats) + | ||
713 | sizeof(struct iscsi_stats_custom) * | ||
714 | stats->custom_length); | ||
715 | actual_size -= sizeof(*nlhstat); | ||
716 | actual_size = NLMSG_LENGTH(actual_size); | ||
717 | skb_trim(skb, NLMSG_ALIGN(actual_size)); | ||
718 | nlhstat->nlmsg_len = actual_size; | ||
719 | |||
720 | err = iscsi_unicast_skb(conn->z_pdu, skbstat); | ||
721 | } while (err < 0 && err != -ECONNREFUSED); | ||
722 | |||
723 | return err; | ||
478 | } | 724 | } |
479 | 725 | ||
480 | static int | 726 | static int |
481 | iscsi_if_create_session(struct iscsi_internal *priv, struct iscsi_uevent *ev) | 727 | iscsi_if_create_session(struct iscsi_internal *priv, struct iscsi_uevent *ev) |
482 | { | 728 | { |
483 | struct iscsi_transport *transport = priv->iscsi_transport; | 729 | struct iscsi_transport *transport = priv->iscsi_transport; |
484 | struct iscsi_if_session *session; | ||
485 | struct Scsi_Host *shost; | 730 | struct Scsi_Host *shost; |
486 | unsigned long flags; | ||
487 | int error; | ||
488 | |||
489 | if (!try_module_get(transport->owner)) | ||
490 | return -EPERM; | ||
491 | 731 | ||
492 | shost = scsi_host_alloc(transport->host_template, | 732 | if (!transport->create_session) |
493 | hostdata_privsize(transport)); | 733 | return -EINVAL; |
494 | if (!shost) { | ||
495 | ev->r.c_session_ret.session_handle = iscsi_handle(NULL); | ||
496 | printk(KERN_ERR "iscsi: can not allocate SCSI host for " | ||
497 | "session\n"); | ||
498 | error = -ENOMEM; | ||
499 | goto out_module_put; | ||
500 | } | ||
501 | shost->max_id = 1; | ||
502 | shost->max_channel = 0; | ||
503 | shost->max_lun = transport->max_lun; | ||
504 | shost->max_cmd_len = transport->max_cmd_len; | ||
505 | shost->transportt = &priv->t; | ||
506 | |||
507 | /* store struct iscsi_transport in hostdata */ | ||
508 | *(uint64_t*)shost->hostdata = ev->transport_handle; | ||
509 | 734 | ||
510 | ev->r.c_session_ret.session_handle = transport->create_session( | 735 | shost = transport->create_session(&priv->t, |
511 | ev->u.c_session.initial_cmdsn, shost); | 736 | ev->u.c_session.initial_cmdsn); |
512 | if (ev->r.c_session_ret.session_handle == iscsi_handle(NULL)) { | 737 | if (!shost) |
513 | error = 0; | 738 | return -ENOMEM; |
514 | goto out_host_put; | ||
515 | } | ||
516 | 739 | ||
517 | /* host_no becomes assigned SID */ | 740 | ev->r.c_session_ret.session_handle = iscsi_handle(iscsi_hostdata(shost->hostdata)); |
518 | ev->r.c_session_ret.sid = shost->host_no; | 741 | ev->r.c_session_ret.sid = shost->host_no; |
519 | /* initialize session */ | ||
520 | session = hostdata_session(shost->hostdata); | ||
521 | INIT_LIST_HEAD(&session->connections); | ||
522 | INIT_LIST_HEAD(&session->list); | ||
523 | session->sessionh = ev->r.c_session_ret.session_handle; | ||
524 | session->transport = transport; | ||
525 | |||
526 | error = scsi_add_host(shost, NULL); | ||
527 | if (error) | ||
528 | goto out_destroy_session; | ||
529 | |||
530 | /* | ||
531 | * this is released in the dev's release function) | ||
532 | */ | ||
533 | scsi_host_get(shost); | ||
534 | snprintf(session->dev.bus_id, BUS_ID_SIZE, "session%u", shost->host_no); | ||
535 | session->dev.parent = &shost->shost_gendev; | ||
536 | session->dev.release = iscsi_if_session_dev_release; | ||
537 | error = device_register(&session->dev); | ||
538 | if (error) { | ||
539 | printk(KERN_ERR "iscsi: could not register session%d's dev\n", | ||
540 | shost->host_no); | ||
541 | goto out_remove_host; | ||
542 | } | ||
543 | transport_register_device(&session->dev); | ||
544 | |||
545 | /* add this session to the list of active sessions */ | ||
546 | spin_lock_irqsave(&priv->session_lock, flags); | ||
547 | list_add(&session->list, &priv->sessions); | ||
548 | spin_unlock_irqrestore(&priv->session_lock, flags); | ||
549 | |||
550 | return 0; | 742 | return 0; |
551 | |||
552 | out_remove_host: | ||
553 | scsi_remove_host(shost); | ||
554 | out_destroy_session: | ||
555 | transport->destroy_session(ev->r.c_session_ret.session_handle); | ||
556 | ev->r.c_session_ret.session_handle = iscsi_handle(NULL); | ||
557 | out_host_put: | ||
558 | scsi_host_put(shost); | ||
559 | out_module_put: | ||
560 | module_put(transport->owner); | ||
561 | return error; | ||
562 | } | 743 | } |
563 | 744 | ||
564 | static int | 745 | static int |
565 | iscsi_if_destroy_session(struct iscsi_internal *priv, struct iscsi_uevent *ev) | 746 | iscsi_if_destroy_session(struct iscsi_internal *priv, struct iscsi_uevent *ev) |
566 | { | 747 | { |
567 | struct iscsi_transport *transport = priv->iscsi_transport; | 748 | struct iscsi_transport *transport = priv->iscsi_transport; |
749 | |||
568 | struct Scsi_Host *shost; | 750 | struct Scsi_Host *shost; |
569 | struct iscsi_if_session *session; | 751 | |
570 | unsigned long flags; | 752 | if (!transport->destroy_session) |
571 | struct iscsi_if_conn *conn; | 753 | return -EINVAL; |
572 | int error = 0; | ||
573 | 754 | ||
574 | shost = scsi_host_lookup(ev->u.d_session.sid); | 755 | shost = scsi_host_lookup(ev->u.d_session.sid); |
575 | if (shost == ERR_PTR(-ENXIO)) | 756 | if (shost == ERR_PTR(-ENXIO)) |
576 | return -EEXIST; | 757 | return -EEXIST; |
577 | session = hostdata_session(shost->hostdata); | ||
578 | 758 | ||
579 | /* check if we have active connections */ | 759 | if (transport->destroy_session) |
580 | spin_lock_irqsave(&connlock, flags); | 760 | transport->destroy_session(shost); |
581 | list_for_each_entry(conn, &session->connections, session_list) { | 761 | /* ref from host lookup */ |
582 | if (conn->active) { | 762 | scsi_host_put(shost); |
583 | printk(KERN_ERR "iscsi%d: can not destroy session: " | 763 | return 0; |
584 | "has active connection (%p)\n", | ||
585 | shost->host_no, iscsi_ptr(conn->connh)); | ||
586 | spin_unlock_irqrestore(&connlock, flags); | ||
587 | error = EIO; | ||
588 | goto out_release_ref; | ||
589 | } | ||
590 | } | ||
591 | spin_unlock_irqrestore(&connlock, flags); | ||
592 | |||
593 | scsi_remove_host(shost); | ||
594 | transport->destroy_session(ev->u.d_session.session_handle); | ||
595 | transport_unregister_device(&session->dev); | ||
596 | device_unregister(&session->dev); | ||
597 | |||
598 | /* remove this session from the list of active sessions */ | ||
599 | spin_lock_irqsave(&priv->session_lock, flags); | ||
600 | list_del(&session->list); | ||
601 | spin_unlock_irqrestore(&priv->session_lock, flags); | ||
602 | |||
603 | /* ref from host alloc */ | ||
604 | scsi_host_put(shost); | ||
605 | out_release_ref: | ||
606 | /* ref from host lookup */ | ||
607 | scsi_host_put(shost); | ||
608 | return error; | ||
609 | } | ||
610 | |||
611 | static void iscsi_if_conn_dev_release(struct device *dev) | ||
612 | { | ||
613 | struct iscsi_if_conn *conn = iscsi_dev_to_if_conn(dev); | ||
614 | struct Scsi_Host *shost = conn->host; | ||
615 | |||
616 | scsi_host_put(shost); | ||
617 | } | 764 | } |
618 | 765 | ||
619 | static int | 766 | static int |
620 | iscsi_if_create_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev) | 767 | iscsi_if_create_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev){ |
621 | { | ||
622 | struct iscsi_if_session *session; | ||
623 | struct Scsi_Host *shost; | 768 | struct Scsi_Host *shost; |
624 | struct iscsi_if_conn *conn; | 769 | struct iscsi_cls_conn *conn; |
625 | unsigned long flags; | 770 | unsigned long flags; |
626 | int error; | 771 | |
772 | if (!transport->create_conn) | ||
773 | return -EINVAL; | ||
627 | 774 | ||
628 | shost = scsi_host_lookup(ev->u.c_conn.sid); | 775 | shost = scsi_host_lookup(ev->u.c_conn.sid); |
629 | if (shost == ERR_PTR(-ENXIO)) | 776 | if (shost == ERR_PTR(-ENXIO)) |
630 | return -EEXIST; | 777 | return -EEXIST; |
631 | session = hostdata_session(shost->hostdata); | ||
632 | 778 | ||
633 | conn = kmalloc(sizeof(struct iscsi_if_conn), GFP_KERNEL); | 779 | conn = transport->create_conn(shost, ev->u.c_conn.cid); |
634 | if (!conn) { | 780 | if (!conn) |
635 | error = -ENOMEM; | 781 | goto release_ref; |
636 | goto out_release_ref; | ||
637 | } | ||
638 | memset(conn, 0, sizeof(struct iscsi_if_conn)); | ||
639 | INIT_LIST_HEAD(&conn->session_list); | ||
640 | INIT_LIST_HEAD(&conn->conn_list); | ||
641 | conn->host = shost; | ||
642 | conn->transport = transport; | ||
643 | 782 | ||
644 | error = mempool_zone_init(&conn->z_pdu, Z_MAX_PDU, | 783 | conn->z_pdu = mempool_zone_init(Z_MAX_PDU, |
645 | NLMSG_SPACE(sizeof(struct iscsi_uevent) + | 784 | NLMSG_SPACE(sizeof(struct iscsi_uevent) + |
646 | sizeof(struct iscsi_hdr) + | 785 | sizeof(struct iscsi_hdr) + |
647 | DEFAULT_MAX_RECV_DATA_SEGMENT_LENGTH), | 786 | DEFAULT_MAX_RECV_DATA_SEGMENT_LENGTH), |
648 | Z_HIWAT_PDU); | 787 | Z_HIWAT_PDU); |
649 | if (error) { | 788 | if (!conn->z_pdu) { |
650 | printk(KERN_ERR "iscsi%d: can not allocate pdu zone for new " | 789 | dev_printk(KERN_ERR, &conn->dev, "iscsi: can not allocate " |
651 | "conn\n", shost->host_no); | 790 | "pdu zone for new conn\n"); |
652 | goto out_free_conn; | 791 | goto destroy_conn; |
653 | } | 792 | } |
654 | error = mempool_zone_init(&conn->z_error, Z_MAX_ERROR, | 793 | |
794 | conn->z_error = mempool_zone_init(Z_MAX_ERROR, | ||
655 | NLMSG_SPACE(sizeof(struct iscsi_uevent)), | 795 | NLMSG_SPACE(sizeof(struct iscsi_uevent)), |
656 | Z_HIWAT_ERROR); | 796 | Z_HIWAT_ERROR); |
657 | if (error) { | 797 | if (!conn->z_error) { |
658 | printk(KERN_ERR "iscsi%d: can not allocate error zone for " | 798 | dev_printk(KERN_ERR, &conn->dev, "iscsi: can not allocate " |
659 | "new conn\n", shost->host_no); | 799 | "error zone for new conn\n"); |
660 | goto out_free_pdu_pool; | 800 | goto free_pdu_pool; |
661 | } | ||
662 | |||
663 | ev->r.handle = transport->create_conn(ev->u.c_conn.session_handle, | ||
664 | ev->u.c_conn.cid); | ||
665 | if (!ev->r.handle) { | ||
666 | error = -ENODEV; | ||
667 | goto out_free_error_pool; | ||
668 | } | 801 | } |
669 | 802 | ||
670 | conn->connh = ev->r.handle; | 803 | ev->r.handle = conn->connh = iscsi_handle(conn->dd_data); |
671 | |||
672 | /* | ||
673 | * this is released in the dev's release function | ||
674 | */ | ||
675 | if (!scsi_host_get(shost)) | ||
676 | goto out_destroy_conn; | ||
677 | snprintf(conn->dev.bus_id, BUS_ID_SIZE, "connection%d:%u", | ||
678 | shost->host_no, ev->u.c_conn.cid); | ||
679 | conn->dev.parent = &session->dev; | ||
680 | conn->dev.release = iscsi_if_conn_dev_release; | ||
681 | error = device_register(&conn->dev); | ||
682 | if (error) { | ||
683 | printk(KERN_ERR "iscsi%d: could not register connections%u " | ||
684 | "dev\n", shost->host_no, ev->u.c_conn.cid); | ||
685 | goto out_release_parent_ref; | ||
686 | } | ||
687 | transport_register_device(&conn->dev); | ||
688 | 804 | ||
689 | spin_lock_irqsave(&connlock, flags); | 805 | spin_lock_irqsave(&connlock, flags); |
690 | list_add(&conn->conn_list, &connlist); | 806 | list_add(&conn->conn_list, &connlist); |
691 | list_add(&conn->session_list, &session->connections); | ||
692 | conn->active = 1; | 807 | conn->active = 1; |
693 | spin_unlock_irqrestore(&connlock, flags); | 808 | spin_unlock_irqrestore(&connlock, flags); |
694 | 809 | ||
695 | scsi_host_put(shost); | 810 | scsi_host_put(shost); |
696 | return 0; | 811 | return 0; |
697 | 812 | ||
698 | out_release_parent_ref: | 813 | free_pdu_pool: |
814 | mempool_zone_destroy(conn->z_pdu); | ||
815 | destroy_conn: | ||
816 | if (transport->destroy_conn) | ||
817 | transport->destroy_conn(conn->dd_data); | ||
818 | release_ref: | ||
699 | scsi_host_put(shost); | 819 | scsi_host_put(shost); |
700 | out_destroy_conn: | 820 | return -ENOMEM; |
701 | transport->destroy_conn(ev->r.handle); | ||
702 | out_free_error_pool: | ||
703 | mempool_destroy(conn->z_error.pool); | ||
704 | out_free_pdu_pool: | ||
705 | mempool_destroy(conn->z_pdu.pool); | ||
706 | out_free_conn: | ||
707 | kfree(conn); | ||
708 | out_release_ref: | ||
709 | scsi_host_put(shost); | ||
710 | return error; | ||
711 | } | 821 | } |
712 | 822 | ||
713 | static int | 823 | static int |
714 | iscsi_if_destroy_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev) | 824 | iscsi_if_destroy_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev) |
715 | { | 825 | { |
716 | unsigned long flags; | 826 | unsigned long flags; |
717 | struct iscsi_if_conn *conn; | 827 | struct iscsi_cls_conn *conn; |
828 | struct mempool_zone *z_error, *z_pdu; | ||
718 | 829 | ||
719 | conn = iscsi_if_find_conn(ev->u.d_conn.conn_handle); | 830 | conn = iscsi_if_find_conn(ev->u.d_conn.conn_handle); |
720 | if (!conn) | 831 | if (!conn) |
721 | return -EEXIST; | 832 | return -EEXIST; |
722 | 833 | ||
723 | transport->destroy_conn(ev->u.d_conn.conn_handle); | 834 | if (!transport->destroy_conn) |
835 | return -EINVAL; | ||
724 | 836 | ||
725 | spin_lock_irqsave(&connlock, flags); | 837 | spin_lock_irqsave(&connlock, flags); |
726 | conn->active = 0; | 838 | conn->active = 0; |
727 | list_del(&conn->conn_list); | 839 | list_del(&conn->conn_list); |
728 | spin_unlock_irqrestore(&connlock, flags); | 840 | spin_unlock_irqrestore(&connlock, flags); |
729 | 841 | ||
730 | transport_unregister_device(&conn->dev); | 842 | z_pdu = conn->z_pdu; |
731 | device_unregister(&conn->dev); | 843 | z_error = conn->z_error; |
732 | return 0; | ||
733 | } | ||
734 | |||
735 | static int | ||
736 | iscsi_if_get_stats(struct iscsi_transport *transport, struct sk_buff *skb, | ||
737 | struct nlmsghdr *nlh) | ||
738 | { | ||
739 | struct iscsi_uevent *ev = NLMSG_DATA(nlh); | ||
740 | struct iscsi_stats *stats; | ||
741 | struct sk_buff *skbstat; | ||
742 | struct iscsi_if_conn *conn; | ||
743 | struct nlmsghdr *nlhstat; | ||
744 | struct iscsi_uevent *evstat; | ||
745 | int len = NLMSG_SPACE(sizeof(*ev) + | ||
746 | sizeof(struct iscsi_stats) + | ||
747 | sizeof(struct iscsi_stats_custom) * | ||
748 | ISCSI_STATS_CUSTOM_MAX); | ||
749 | int err = 0; | ||
750 | |||
751 | conn = iscsi_if_find_conn(ev->u.get_stats.conn_handle); | ||
752 | if (!conn) | ||
753 | return -EEXIST; | ||
754 | |||
755 | do { | ||
756 | int actual_size; | ||
757 | |||
758 | mempool_zone_complete(&conn->z_pdu); | ||
759 | |||
760 | skbstat = mempool_zone_get_skb(&conn->z_pdu); | ||
761 | if (!skbstat) { | ||
762 | printk(KERN_ERR "iscsi%d: can not deliver stats: OOM\n", | ||
763 | conn->host->host_no); | ||
764 | return -ENOMEM; | ||
765 | } | ||
766 | |||
767 | nlhstat = __nlmsg_put(skbstat, daemon_pid, 0, 0, | ||
768 | (len - sizeof(*nlhstat)), 0); | ||
769 | evstat = NLMSG_DATA(nlhstat); | ||
770 | memset(evstat, 0, sizeof(*evstat)); | ||
771 | evstat->transport_handle = iscsi_handle(conn->transport); | ||
772 | evstat->type = nlh->nlmsg_type; | ||
773 | if (atomic_read(&conn->z_pdu.allocated) >= conn->z_pdu.hiwat) | ||
774 | evstat->iferror = -ENOMEM; | ||
775 | evstat->u.get_stats.conn_handle = | ||
776 | ev->u.get_stats.conn_handle; | ||
777 | stats = (struct iscsi_stats *) | ||
778 | ((char*)evstat + sizeof(*evstat)); | ||
779 | memset(stats, 0, sizeof(*stats)); | ||
780 | 844 | ||
781 | transport->get_stats(ev->u.get_stats.conn_handle, stats); | 845 | if (transport->destroy_conn) |
782 | actual_size = NLMSG_SPACE(sizeof(struct iscsi_uevent) + | 846 | transport->destroy_conn(conn); |
783 | sizeof(struct iscsi_stats) + | ||
784 | sizeof(struct iscsi_stats_custom) * | ||
785 | stats->custom_length); | ||
786 | actual_size -= sizeof(*nlhstat); | ||
787 | actual_size = NLMSG_LENGTH(actual_size); | ||
788 | skb_trim(skb, NLMSG_ALIGN(actual_size)); | ||
789 | nlhstat->nlmsg_len = actual_size; | ||
790 | 847 | ||
791 | err = iscsi_unicast_skb(&conn->z_pdu, skbstat); | 848 | mempool_zone_destroy(z_pdu); |
792 | } while (err < 0 && err != -ECONNREFUSED); | 849 | mempool_zone_destroy(z_error); |
793 | 850 | ||
794 | return err; | 851 | return 0; |
795 | } | 852 | } |
796 | 853 | ||
797 | static int | 854 | static int |
@@ -881,7 +938,7 @@ iscsi_if_rx(struct sock *sk, int len) | |||
881 | { | 938 | { |
882 | struct sk_buff *skb; | 939 | struct sk_buff *skb; |
883 | 940 | ||
884 | down(&rx_queue_sema); | 941 | mutex_lock(&rx_queue_mutex); |
885 | while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { | 942 | while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { |
886 | while (skb->len >= NLMSG_SPACE(0)) { | 943 | while (skb->len >= NLMSG_SPACE(0)) { |
887 | int err; | 944 | int err; |
@@ -915,17 +972,20 @@ iscsi_if_rx(struct sock *sk, int len) | |||
915 | err = iscsi_if_send_reply( | 972 | err = iscsi_if_send_reply( |
916 | NETLINK_CREDS(skb)->pid, nlh->nlmsg_seq, | 973 | NETLINK_CREDS(skb)->pid, nlh->nlmsg_seq, |
917 | nlh->nlmsg_type, 0, 0, ev, sizeof(*ev)); | 974 | nlh->nlmsg_type, 0, 0, ev, sizeof(*ev)); |
918 | if (atomic_read(&z_reply.allocated) >= | 975 | if (atomic_read(&z_reply->allocated) >= |
919 | z_reply.hiwat) | 976 | z_reply->hiwat) |
920 | ev->iferror = -ENOMEM; | 977 | ev->iferror = -ENOMEM; |
921 | } while (err < 0 && err != -ECONNREFUSED); | 978 | } while (err < 0 && err != -ECONNREFUSED); |
922 | skb_pull(skb, rlen); | 979 | skb_pull(skb, rlen); |
923 | } | 980 | } |
924 | kfree_skb(skb); | 981 | kfree_skb(skb); |
925 | } | 982 | } |
926 | up(&rx_queue_sema); | 983 | mutex_unlock(&rx_queue_mutex); |
927 | } | 984 | } |
928 | 985 | ||
986 | #define iscsi_cdev_to_conn(_cdev) \ | ||
987 | iscsi_dev_to_conn(_cdev->dev) | ||
988 | |||
929 | /* | 989 | /* |
930 | * iSCSI connection attrs | 990 | * iSCSI connection attrs |
931 | */ | 991 | */ |
@@ -934,12 +994,10 @@ static ssize_t \ | |||
934 | show_conn_int_param_##param(struct class_device *cdev, char *buf) \ | 994 | show_conn_int_param_##param(struct class_device *cdev, char *buf) \ |
935 | { \ | 995 | { \ |
936 | uint32_t value = 0; \ | 996 | uint32_t value = 0; \ |
937 | struct iscsi_if_conn *conn = iscsi_cdev_to_if_conn(cdev); \ | 997 | struct iscsi_cls_conn *conn = iscsi_cdev_to_conn(cdev); \ |
938 | struct iscsi_internal *priv; \ | 998 | struct iscsi_transport *t = conn->transport; \ |
939 | \ | 999 | \ |
940 | priv = to_iscsi_internal(conn->host->transportt); \ | 1000 | t->get_conn_param(conn->dd_data, param, &value); \ |
941 | if (priv->param_mask & (1 << param)) \ | ||
942 | priv->iscsi_transport->get_param(conn->connh, param, &value); \ | ||
943 | return snprintf(buf, 20, format"\n", value); \ | 1001 | return snprintf(buf, 20, format"\n", value); \ |
944 | } | 1002 | } |
945 | 1003 | ||
@@ -954,6 +1012,9 @@ iscsi_conn_int_attr(data_digest, ISCSI_PARAM_DATADGST_EN, "%d"); | |||
954 | iscsi_conn_int_attr(ifmarker, ISCSI_PARAM_IFMARKER_EN, "%d"); | 1012 | iscsi_conn_int_attr(ifmarker, ISCSI_PARAM_IFMARKER_EN, "%d"); |
955 | iscsi_conn_int_attr(ofmarker, ISCSI_PARAM_OFMARKER_EN, "%d"); | 1013 | iscsi_conn_int_attr(ofmarker, ISCSI_PARAM_OFMARKER_EN, "%d"); |
956 | 1014 | ||
1015 | #define iscsi_cdev_to_session(_cdev) \ | ||
1016 | iscsi_dev_to_session(_cdev->dev) | ||
1017 | |||
957 | /* | 1018 | /* |
958 | * iSCSI session attrs | 1019 | * iSCSI session attrs |
959 | */ | 1020 | */ |
@@ -962,20 +1023,11 @@ static ssize_t \ | |||
962 | show_session_int_param_##param(struct class_device *cdev, char *buf) \ | 1023 | show_session_int_param_##param(struct class_device *cdev, char *buf) \ |
963 | { \ | 1024 | { \ |
964 | uint32_t value = 0; \ | 1025 | uint32_t value = 0; \ |
965 | struct iscsi_if_session *session = iscsi_cdev_to_if_session(cdev); \ | 1026 | struct iscsi_cls_session *session = iscsi_cdev_to_session(cdev); \ |
966 | struct Scsi_Host *shost = iscsi_if_session_to_shost(session); \ | 1027 | struct Scsi_Host *shost = iscsi_session_to_shost(session); \ |
967 | struct iscsi_internal *priv = to_iscsi_internal(shost->transportt); \ | 1028 | struct iscsi_transport *t = session->transport; \ |
968 | struct iscsi_if_conn *conn = NULL; \ | ||
969 | unsigned long flags; \ | ||
970 | \ | ||
971 | spin_lock_irqsave(&connlock, flags); \ | ||
972 | if (!list_empty(&session->connections)) \ | ||
973 | conn = list_entry(session->connections.next, \ | ||
974 | struct iscsi_if_conn, session_list); \ | ||
975 | spin_unlock_irqrestore(&connlock, flags); \ | ||
976 | \ | 1029 | \ |
977 | if (conn && (priv->param_mask & (1 << param))) \ | 1030 | t->get_session_param(shost, param, &value); \ |
978 | priv->iscsi_transport->get_param(conn->connh, param, &value);\ | ||
979 | return snprintf(buf, 20, format"\n", value); \ | 1031 | return snprintf(buf, 20, format"\n", value); \ |
980 | } | 1032 | } |
981 | 1033 | ||
@@ -1004,23 +1056,18 @@ iscsi_session_int_attr(erl, ISCSI_PARAM_ERL, "%d"); | |||
1004 | count++; \ | 1056 | count++; \ |
1005 | } | 1057 | } |
1006 | 1058 | ||
1007 | static int iscsi_is_session_dev(const struct device *dev) | ||
1008 | { | ||
1009 | return dev->release == iscsi_if_session_dev_release; | ||
1010 | } | ||
1011 | |||
1012 | static int iscsi_session_match(struct attribute_container *cont, | 1059 | static int iscsi_session_match(struct attribute_container *cont, |
1013 | struct device *dev) | 1060 | struct device *dev) |
1014 | { | 1061 | { |
1015 | struct iscsi_if_session *session; | 1062 | struct iscsi_cls_session *session; |
1016 | struct Scsi_Host *shost; | 1063 | struct Scsi_Host *shost; |
1017 | struct iscsi_internal *priv; | 1064 | struct iscsi_internal *priv; |
1018 | 1065 | ||
1019 | if (!iscsi_is_session_dev(dev)) | 1066 | if (!iscsi_is_session_dev(dev)) |
1020 | return 0; | 1067 | return 0; |
1021 | 1068 | ||
1022 | session = iscsi_dev_to_if_session(dev); | 1069 | session = iscsi_dev_to_session(dev); |
1023 | shost = iscsi_if_session_to_shost(session); | 1070 | shost = iscsi_session_to_shost(session); |
1024 | if (!shost->transportt) | 1071 | if (!shost->transportt) |
1025 | return 0; | 1072 | return 0; |
1026 | 1073 | ||
@@ -1031,23 +1078,21 @@ static int iscsi_session_match(struct attribute_container *cont, | |||
1031 | return &priv->session_cont.ac == cont; | 1078 | return &priv->session_cont.ac == cont; |
1032 | } | 1079 | } |
1033 | 1080 | ||
1034 | static int iscsi_is_conn_dev(const struct device *dev) | ||
1035 | { | ||
1036 | return dev->release == iscsi_if_conn_dev_release; | ||
1037 | } | ||
1038 | |||
1039 | static int iscsi_conn_match(struct attribute_container *cont, | 1081 | static int iscsi_conn_match(struct attribute_container *cont, |
1040 | struct device *dev) | 1082 | struct device *dev) |
1041 | { | 1083 | { |
1042 | struct iscsi_if_conn *conn; | 1084 | struct iscsi_cls_session *session; |
1085 | struct iscsi_cls_conn *conn; | ||
1043 | struct Scsi_Host *shost; | 1086 | struct Scsi_Host *shost; |
1044 | struct iscsi_internal *priv; | 1087 | struct iscsi_internal *priv; |
1045 | 1088 | ||
1046 | if (!iscsi_is_conn_dev(dev)) | 1089 | if (!iscsi_is_conn_dev(dev)) |
1047 | return 0; | 1090 | return 0; |
1048 | 1091 | ||
1049 | conn = iscsi_dev_to_if_conn(dev); | 1092 | conn = iscsi_dev_to_conn(dev); |
1050 | shost = conn->host; | 1093 | session = iscsi_dev_to_session(conn->dev.parent); |
1094 | shost = iscsi_session_to_shost(session); | ||
1095 | |||
1051 | if (!shost->transportt) | 1096 | if (!shost->transportt) |
1052 | return 0; | 1097 | return 0; |
1053 | 1098 | ||
@@ -1058,7 +1103,8 @@ static int iscsi_conn_match(struct attribute_container *cont, | |||
1058 | return &priv->conn_cont.ac == cont; | 1103 | return &priv->conn_cont.ac == cont; |
1059 | } | 1104 | } |
1060 | 1105 | ||
1061 | int iscsi_register_transport(struct iscsi_transport *tt) | 1106 | struct scsi_transport_template * |
1107 | iscsi_register_transport(struct iscsi_transport *tt) | ||
1062 | { | 1108 | { |
1063 | struct iscsi_internal *priv; | 1109 | struct iscsi_internal *priv; |
1064 | unsigned long flags; | 1110 | unsigned long flags; |
@@ -1068,15 +1114,14 @@ int iscsi_register_transport(struct iscsi_transport *tt) | |||
1068 | 1114 | ||
1069 | priv = iscsi_if_transport_lookup(tt); | 1115 | priv = iscsi_if_transport_lookup(tt); |
1070 | if (priv) | 1116 | if (priv) |
1071 | return -EEXIST; | 1117 | return NULL; |
1072 | 1118 | ||
1073 | priv = kmalloc(sizeof(*priv), GFP_KERNEL); | 1119 | priv = kmalloc(sizeof(*priv), GFP_KERNEL); |
1074 | if (!priv) | 1120 | if (!priv) |
1075 | return -ENOMEM; | 1121 | return NULL; |
1076 | memset(priv, 0, sizeof(*priv)); | 1122 | memset(priv, 0, sizeof(*priv)); |
1077 | INIT_LIST_HEAD(&priv->list); | 1123 | INIT_LIST_HEAD(&priv->list); |
1078 | INIT_LIST_HEAD(&priv->sessions); | 1124 | INIT_LIST_HEAD(&priv->sessions); |
1079 | spin_lock_init(&priv->session_lock); | ||
1080 | priv->iscsi_transport = tt; | 1125 | priv->iscsi_transport = tt; |
1081 | 1126 | ||
1082 | priv->cdev.class = &iscsi_transport_class; | 1127 | priv->cdev.class = &iscsi_transport_class; |
@@ -1142,13 +1187,13 @@ int iscsi_register_transport(struct iscsi_transport *tt) | |||
1142 | spin_unlock_irqrestore(&iscsi_transport_lock, flags); | 1187 | spin_unlock_irqrestore(&iscsi_transport_lock, flags); |
1143 | 1188 | ||
1144 | printk(KERN_NOTICE "iscsi: registered transport (%s)\n", tt->name); | 1189 | printk(KERN_NOTICE "iscsi: registered transport (%s)\n", tt->name); |
1145 | return 0; | 1190 | return &priv->t; |
1146 | 1191 | ||
1147 | unregister_cdev: | 1192 | unregister_cdev: |
1148 | class_device_unregister(&priv->cdev); | 1193 | class_device_unregister(&priv->cdev); |
1149 | free_priv: | 1194 | free_priv: |
1150 | kfree(priv); | 1195 | kfree(priv); |
1151 | return err; | 1196 | return NULL; |
1152 | } | 1197 | } |
1153 | EXPORT_SYMBOL_GPL(iscsi_register_transport); | 1198 | EXPORT_SYMBOL_GPL(iscsi_register_transport); |
1154 | 1199 | ||
@@ -1159,19 +1204,11 @@ int iscsi_unregister_transport(struct iscsi_transport *tt) | |||
1159 | 1204 | ||
1160 | BUG_ON(!tt); | 1205 | BUG_ON(!tt); |
1161 | 1206 | ||
1162 | down(&rx_queue_sema); | 1207 | mutex_lock(&rx_queue_mutex); |
1163 | 1208 | ||
1164 | priv = iscsi_if_transport_lookup(tt); | 1209 | priv = iscsi_if_transport_lookup(tt); |
1165 | BUG_ON (!priv); | 1210 | BUG_ON (!priv); |
1166 | 1211 | ||
1167 | spin_lock_irqsave(&priv->session_lock, flags); | ||
1168 | if (!list_empty(&priv->sessions)) { | ||
1169 | spin_unlock_irqrestore(&priv->session_lock, flags); | ||
1170 | up(&rx_queue_sema); | ||
1171 | return -EPERM; | ||
1172 | } | ||
1173 | spin_unlock_irqrestore(&priv->session_lock, flags); | ||
1174 | |||
1175 | spin_lock_irqsave(&iscsi_transport_lock, flags); | 1212 | spin_lock_irqsave(&iscsi_transport_lock, flags); |
1176 | list_del(&priv->list); | 1213 | list_del(&priv->list); |
1177 | spin_unlock_irqrestore(&iscsi_transport_lock, flags); | 1214 | spin_unlock_irqrestore(&iscsi_transport_lock, flags); |
@@ -1181,7 +1218,7 @@ int iscsi_unregister_transport(struct iscsi_transport *tt) | |||
1181 | 1218 | ||
1182 | sysfs_remove_group(&priv->cdev.kobj, &iscsi_transport_group); | 1219 | sysfs_remove_group(&priv->cdev.kobj, &iscsi_transport_group); |
1183 | class_device_unregister(&priv->cdev); | 1220 | class_device_unregister(&priv->cdev); |
1184 | up(&rx_queue_sema); | 1221 | mutex_unlock(&rx_queue_mutex); |
1185 | 1222 | ||
1186 | return 0; | 1223 | return 0; |
1187 | } | 1224 | } |
@@ -1194,14 +1231,14 @@ iscsi_rcv_nl_event(struct notifier_block *this, unsigned long event, void *ptr) | |||
1194 | 1231 | ||
1195 | if (event == NETLINK_URELEASE && | 1232 | if (event == NETLINK_URELEASE && |
1196 | n->protocol == NETLINK_ISCSI && n->pid) { | 1233 | n->protocol == NETLINK_ISCSI && n->pid) { |
1197 | struct iscsi_if_conn *conn; | 1234 | struct iscsi_cls_conn *conn; |
1198 | unsigned long flags; | 1235 | unsigned long flags; |
1199 | 1236 | ||
1200 | mempool_zone_complete(&z_reply); | 1237 | mempool_zone_complete(z_reply); |
1201 | spin_lock_irqsave(&connlock, flags); | 1238 | spin_lock_irqsave(&connlock, flags); |
1202 | list_for_each_entry(conn, &connlist, conn_list) { | 1239 | list_for_each_entry(conn, &connlist, conn_list) { |
1203 | mempool_zone_complete(&conn->z_error); | 1240 | mempool_zone_complete(conn->z_error); |
1204 | mempool_zone_complete(&conn->z_pdu); | 1241 | mempool_zone_complete(conn->z_pdu); |
1205 | } | 1242 | } |
1206 | spin_unlock_irqrestore(&connlock, flags); | 1243 | spin_unlock_irqrestore(&connlock, flags); |
1207 | } | 1244 | } |
@@ -1234,15 +1271,15 @@ static __init int iscsi_transport_init(void) | |||
1234 | goto unregister_session_class; | 1271 | goto unregister_session_class; |
1235 | 1272 | ||
1236 | nls = netlink_kernel_create(NETLINK_ISCSI, 1, iscsi_if_rx, | 1273 | nls = netlink_kernel_create(NETLINK_ISCSI, 1, iscsi_if_rx, |
1237 | THIS_MODULE); | 1274 | THIS_MODULE); |
1238 | if (!nls) { | 1275 | if (!nls) { |
1239 | err = -ENOBUFS; | 1276 | err = -ENOBUFS; |
1240 | goto unregister_notifier; | 1277 | goto unregister_notifier; |
1241 | } | 1278 | } |
1242 | 1279 | ||
1243 | err = mempool_zone_init(&z_reply, Z_MAX_REPLY, | 1280 | z_reply = mempool_zone_init(Z_MAX_REPLY, |
1244 | NLMSG_SPACE(sizeof(struct iscsi_uevent)), Z_HIWAT_REPLY); | 1281 | NLMSG_SPACE(sizeof(struct iscsi_uevent)), Z_HIWAT_REPLY); |
1245 | if (!err) | 1282 | if (z_reply) |
1246 | return 0; | 1283 | return 0; |
1247 | 1284 | ||
1248 | sock_release(nls->sk_socket); | 1285 | sock_release(nls->sk_socket); |
@@ -1259,7 +1296,7 @@ unregister_transport_class: | |||
1259 | 1296 | ||
1260 | static void __exit iscsi_transport_exit(void) | 1297 | static void __exit iscsi_transport_exit(void) |
1261 | { | 1298 | { |
1262 | mempool_destroy(z_reply.pool); | 1299 | mempool_zone_destroy(z_reply); |
1263 | sock_release(nls->sk_socket); | 1300 | sock_release(nls->sk_socket); |
1264 | netlink_unregister_notifier(&iscsi_nl_notifier); | 1301 | netlink_unregister_notifier(&iscsi_nl_notifier); |
1265 | transport_class_unregister(&iscsi_connection_class); | 1302 | transport_class_unregister(&iscsi_connection_class); |
diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c index edabbd05d258..a3e0b7bc2d7b 100644 --- a/drivers/scsi/scsi_transport_sas.c +++ b/drivers/scsi/scsi_transport_sas.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
30 | #include <linux/string.h> | 30 | #include <linux/string.h> |
31 | 31 | ||
32 | #include <scsi/scsi.h> | ||
32 | #include <scsi/scsi_device.h> | 33 | #include <scsi/scsi_device.h> |
33 | #include <scsi/scsi_host.h> | 34 | #include <scsi/scsi_host.h> |
34 | #include <scsi/scsi_transport.h> | 35 | #include <scsi/scsi_transport.h> |
@@ -62,7 +63,7 @@ struct sas_internal { | |||
62 | 63 | ||
63 | struct sas_host_attrs { | 64 | struct sas_host_attrs { |
64 | struct list_head rphy_list; | 65 | struct list_head rphy_list; |
65 | spinlock_t lock; | 66 | struct mutex lock; |
66 | u32 next_target_id; | 67 | u32 next_target_id; |
67 | }; | 68 | }; |
68 | #define to_sas_host_attrs(host) ((struct sas_host_attrs *)(host)->shost_data) | 69 | #define to_sas_host_attrs(host) ((struct sas_host_attrs *)(host)->shost_data) |
@@ -165,7 +166,7 @@ static int sas_host_setup(struct transport_container *tc, struct device *dev, | |||
165 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); | 166 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); |
166 | 167 | ||
167 | INIT_LIST_HEAD(&sas_host->rphy_list); | 168 | INIT_LIST_HEAD(&sas_host->rphy_list); |
168 | spin_lock_init(&sas_host->lock); | 169 | mutex_init(&sas_host->lock); |
169 | sas_host->next_target_id = 0; | 170 | sas_host->next_target_id = 0; |
170 | return 0; | 171 | return 0; |
171 | } | 172 | } |
@@ -626,7 +627,7 @@ int sas_rphy_add(struct sas_rphy *rphy) | |||
626 | transport_add_device(&rphy->dev); | 627 | transport_add_device(&rphy->dev); |
627 | transport_configure_device(&rphy->dev); | 628 | transport_configure_device(&rphy->dev); |
628 | 629 | ||
629 | spin_lock(&sas_host->lock); | 630 | mutex_lock(&sas_host->lock); |
630 | list_add_tail(&rphy->list, &sas_host->rphy_list); | 631 | list_add_tail(&rphy->list, &sas_host->rphy_list); |
631 | if (identify->device_type == SAS_END_DEVICE && | 632 | if (identify->device_type == SAS_END_DEVICE && |
632 | (identify->target_port_protocols & | 633 | (identify->target_port_protocols & |
@@ -634,10 +635,10 @@ int sas_rphy_add(struct sas_rphy *rphy) | |||
634 | rphy->scsi_target_id = sas_host->next_target_id++; | 635 | rphy->scsi_target_id = sas_host->next_target_id++; |
635 | else | 636 | else |
636 | rphy->scsi_target_id = -1; | 637 | rphy->scsi_target_id = -1; |
637 | spin_unlock(&sas_host->lock); | 638 | mutex_unlock(&sas_host->lock); |
638 | 639 | ||
639 | if (rphy->scsi_target_id != -1) { | 640 | if (rphy->scsi_target_id != -1) { |
640 | scsi_scan_target(&rphy->dev, parent->number, | 641 | scsi_scan_target(&rphy->dev, parent->port_identifier, |
641 | rphy->scsi_target_id, ~0, 0); | 642 | rphy->scsi_target_id, ~0, 0); |
642 | } | 643 | } |
643 | 644 | ||
@@ -661,9 +662,9 @@ void sas_rphy_free(struct sas_rphy *rphy) | |||
661 | struct Scsi_Host *shost = dev_to_shost(rphy->dev.parent->parent); | 662 | struct Scsi_Host *shost = dev_to_shost(rphy->dev.parent->parent); |
662 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); | 663 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); |
663 | 664 | ||
664 | spin_lock(&sas_host->lock); | 665 | mutex_lock(&sas_host->lock); |
665 | list_del(&rphy->list); | 666 | list_del(&rphy->list); |
666 | spin_unlock(&sas_host->lock); | 667 | mutex_unlock(&sas_host->lock); |
667 | 668 | ||
668 | transport_destroy_device(&rphy->dev); | 669 | transport_destroy_device(&rphy->dev); |
669 | put_device(rphy->dev.parent); | 670 | put_device(rphy->dev.parent); |
@@ -687,15 +688,27 @@ sas_rphy_delete(struct sas_rphy *rphy) | |||
687 | struct Scsi_Host *shost = dev_to_shost(parent->dev.parent); | 688 | struct Scsi_Host *shost = dev_to_shost(parent->dev.parent); |
688 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); | 689 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); |
689 | 690 | ||
690 | scsi_remove_target(dev); | 691 | switch (rphy->identify.device_type) { |
692 | case SAS_END_DEVICE: | ||
693 | scsi_remove_target(dev); | ||
694 | break; | ||
695 | case SAS_EDGE_EXPANDER_DEVICE: | ||
696 | case SAS_FANOUT_EXPANDER_DEVICE: | ||
697 | device_for_each_child(dev, NULL, do_sas_phy_delete); | ||
698 | break; | ||
699 | default: | ||
700 | break; | ||
701 | } | ||
691 | 702 | ||
692 | transport_remove_device(dev); | 703 | transport_remove_device(dev); |
693 | device_del(dev); | 704 | device_del(dev); |
694 | transport_destroy_device(dev); | 705 | transport_destroy_device(dev); |
695 | 706 | ||
696 | spin_lock(&sas_host->lock); | 707 | mutex_lock(&sas_host->lock); |
697 | list_del(&rphy->list); | 708 | list_del(&rphy->list); |
698 | spin_unlock(&sas_host->lock); | 709 | mutex_unlock(&sas_host->lock); |
710 | |||
711 | parent->rphy = NULL; | ||
699 | 712 | ||
700 | put_device(&parent->dev); | 713 | put_device(&parent->dev); |
701 | } | 714 | } |
@@ -719,23 +732,28 @@ EXPORT_SYMBOL(scsi_is_sas_rphy); | |||
719 | * SCSI scan helper | 732 | * SCSI scan helper |
720 | */ | 733 | */ |
721 | 734 | ||
722 | static struct device *sas_target_parent(struct Scsi_Host *shost, | 735 | static int sas_user_scan(struct Scsi_Host *shost, uint channel, |
723 | int channel, uint id) | 736 | uint id, uint lun) |
724 | { | 737 | { |
725 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); | 738 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); |
726 | struct sas_rphy *rphy; | 739 | struct sas_rphy *rphy; |
727 | struct device *dev = NULL; | ||
728 | 740 | ||
729 | spin_lock(&sas_host->lock); | 741 | mutex_lock(&sas_host->lock); |
730 | list_for_each_entry(rphy, &sas_host->rphy_list, list) { | 742 | list_for_each_entry(rphy, &sas_host->rphy_list, list) { |
731 | struct sas_phy *parent = dev_to_phy(rphy->dev.parent); | 743 | struct sas_phy *parent = dev_to_phy(rphy->dev.parent); |
732 | if (parent->number == channel && | 744 | |
733 | rphy->scsi_target_id == id) | 745 | if (rphy->scsi_target_id == -1) |
734 | dev = &rphy->dev; | 746 | continue; |
747 | |||
748 | if ((channel == SCAN_WILD_CARD || channel == parent->port_identifier) && | ||
749 | (id == SCAN_WILD_CARD || id == rphy->scsi_target_id)) { | ||
750 | scsi_scan_target(&rphy->dev, parent->port_identifier, | ||
751 | rphy->scsi_target_id, lun, 1); | ||
752 | } | ||
735 | } | 753 | } |
736 | spin_unlock(&sas_host->lock); | 754 | mutex_unlock(&sas_host->lock); |
737 | 755 | ||
738 | return dev; | 756 | return 0; |
739 | } | 757 | } |
740 | 758 | ||
741 | 759 | ||
@@ -780,7 +798,7 @@ sas_attach_transport(struct sas_function_template *ft) | |||
780 | return NULL; | 798 | return NULL; |
781 | memset(i, 0, sizeof(struct sas_internal)); | 799 | memset(i, 0, sizeof(struct sas_internal)); |
782 | 800 | ||
783 | i->t.target_parent = sas_target_parent; | 801 | i->t.user_scan = sas_user_scan; |
784 | 802 | ||
785 | i->t.host_attrs.ac.attrs = &i->host_attrs[0]; | 803 | i->t.host_attrs.ac.attrs = &i->host_attrs[0]; |
786 | i->t.host_attrs.ac.class = &sas_host_class.class; | 804 | i->t.host_attrs.ac.class = &sas_host_class.class; |
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c index 38a53b5f9e9a..7ee95eb83dda 100644 --- a/drivers/scsi/scsi_transport_spi.c +++ b/drivers/scsi/scsi_transport_spi.c | |||
@@ -18,12 +18,13 @@ | |||
18 | * along with this program; if not, write to the Free Software | 18 | * along with this program; if not, write to the Free Software |
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | */ | 20 | */ |
21 | #include <linux/config.h> | ||
21 | #include <linux/ctype.h> | 22 | #include <linux/ctype.h> |
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | #include <linux/module.h> | 24 | #include <linux/module.h> |
24 | #include <linux/workqueue.h> | 25 | #include <linux/workqueue.h> |
25 | #include <linux/blkdev.h> | 26 | #include <linux/blkdev.h> |
26 | #include <asm/semaphore.h> | 27 | #include <linux/mutex.h> |
27 | #include <scsi/scsi.h> | 28 | #include <scsi/scsi.h> |
28 | #include "scsi_priv.h" | 29 | #include "scsi_priv.h" |
29 | #include <scsi/scsi_device.h> | 30 | #include <scsi/scsi_device.h> |
@@ -47,7 +48,7 @@ | |||
47 | 48 | ||
48 | /* Private data accessors (keep these out of the header file) */ | 49 | /* Private data accessors (keep these out of the header file) */ |
49 | #define spi_dv_pending(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_pending) | 50 | #define spi_dv_pending(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_pending) |
50 | #define spi_dv_sem(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_sem) | 51 | #define spi_dv_mutex(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_mutex) |
51 | 52 | ||
52 | struct spi_internal { | 53 | struct spi_internal { |
53 | struct scsi_transport_template t; | 54 | struct scsi_transport_template t; |
@@ -241,7 +242,7 @@ static int spi_setup_transport_attrs(struct transport_container *tc, | |||
241 | spi_hold_mcs(starget) = 0; | 242 | spi_hold_mcs(starget) = 0; |
242 | spi_dv_pending(starget) = 0; | 243 | spi_dv_pending(starget) = 0; |
243 | spi_initial_dv(starget) = 0; | 244 | spi_initial_dv(starget) = 0; |
244 | init_MUTEX(&spi_dv_sem(starget)); | 245 | mutex_init(&spi_dv_mutex(starget)); |
245 | 246 | ||
246 | return 0; | 247 | return 0; |
247 | } | 248 | } |
@@ -378,9 +379,7 @@ static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate); | |||
378 | 379 | ||
379 | /* Translate the period into ns according to the current spec | 380 | /* Translate the period into ns according to the current spec |
380 | * for SDTR/PPR messages */ | 381 | * for SDTR/PPR messages */ |
381 | static ssize_t | 382 | static int period_to_str(char *buf, int period) |
382 | show_spi_transport_period_helper(struct class_device *cdev, char *buf, | ||
383 | int period) | ||
384 | { | 383 | { |
385 | int len, picosec; | 384 | int len, picosec; |
386 | 385 | ||
@@ -398,6 +397,14 @@ show_spi_transport_period_helper(struct class_device *cdev, char *buf, | |||
398 | len = sprint_frac(buf, picosec, 1000); | 397 | len = sprint_frac(buf, picosec, 1000); |
399 | } | 398 | } |
400 | 399 | ||
400 | return len; | ||
401 | } | ||
402 | |||
403 | static ssize_t | ||
404 | show_spi_transport_period_helper(struct class_device *cdev, char *buf, | ||
405 | int period) | ||
406 | { | ||
407 | int len = period_to_str(buf, period); | ||
401 | buf[len++] = '\n'; | 408 | buf[len++] = '\n'; |
402 | buf[len] = '\0'; | 409 | buf[len] = '\0'; |
403 | return len; | 410 | return len; |
@@ -908,7 +915,7 @@ spi_dv_device(struct scsi_device *sdev) | |||
908 | scsi_target_quiesce(starget); | 915 | scsi_target_quiesce(starget); |
909 | 916 | ||
910 | spi_dv_pending(starget) = 1; | 917 | spi_dv_pending(starget) = 1; |
911 | down(&spi_dv_sem(starget)); | 918 | mutex_lock(&spi_dv_mutex(starget)); |
912 | 919 | ||
913 | starget_printk(KERN_INFO, starget, "Beginning Domain Validation\n"); | 920 | starget_printk(KERN_INFO, starget, "Beginning Domain Validation\n"); |
914 | 921 | ||
@@ -916,7 +923,7 @@ spi_dv_device(struct scsi_device *sdev) | |||
916 | 923 | ||
917 | starget_printk(KERN_INFO, starget, "Ending Domain Validation\n"); | 924 | starget_printk(KERN_INFO, starget, "Ending Domain Validation\n"); |
918 | 925 | ||
919 | up(&spi_dv_sem(starget)); | 926 | mutex_unlock(&spi_dv_mutex(starget)); |
920 | spi_dv_pending(starget) = 0; | 927 | spi_dv_pending(starget) = 0; |
921 | 928 | ||
922 | scsi_target_resume(starget); | 929 | scsi_target_resume(starget); |
@@ -1041,12 +1048,133 @@ void spi_display_xfer_agreement(struct scsi_target *starget) | |||
1041 | tp->hold_mcs ? " HMCS" : "", | 1048 | tp->hold_mcs ? " HMCS" : "", |
1042 | tmp, tp->offset); | 1049 | tmp, tp->offset); |
1043 | } else { | 1050 | } else { |
1044 | dev_info(&starget->dev, "%sasynchronous.\n", | 1051 | dev_info(&starget->dev, "%sasynchronous\n", |
1045 | tp->width ? "wide " : ""); | 1052 | tp->width ? "wide " : ""); |
1046 | } | 1053 | } |
1047 | } | 1054 | } |
1048 | EXPORT_SYMBOL(spi_display_xfer_agreement); | 1055 | EXPORT_SYMBOL(spi_display_xfer_agreement); |
1049 | 1056 | ||
1057 | #ifdef CONFIG_SCSI_CONSTANTS | ||
1058 | static const char * const one_byte_msgs[] = { | ||
1059 | /* 0x00 */ "Command Complete", NULL, "Save Pointers", | ||
1060 | /* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error", | ||
1061 | /* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error", | ||
1062 | /* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag", | ||
1063 | /* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue", | ||
1064 | /* 0x0f */ "Initiate Recovery", "Release Recovery" | ||
1065 | }; | ||
1066 | |||
1067 | static const char * const two_byte_msgs[] = { | ||
1068 | /* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag", | ||
1069 | /* 0x23 */ "Ignore Wide Residue" | ||
1070 | }; | ||
1071 | |||
1072 | static const char * const extended_msgs[] = { | ||
1073 | /* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request", | ||
1074 | /* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request", | ||
1075 | /* 0x04 */ "Parallel Protocol Request" | ||
1076 | }; | ||
1077 | |||
1078 | static void print_nego(const unsigned char *msg, int per, int off, int width) | ||
1079 | { | ||
1080 | if (per) { | ||
1081 | char buf[20]; | ||
1082 | period_to_str(buf, msg[per]); | ||
1083 | printk("period = %s ns ", buf); | ||
1084 | } | ||
1085 | |||
1086 | if (off) | ||
1087 | printk("offset = %d ", msg[off]); | ||
1088 | if (width) | ||
1089 | printk("width = %d ", 8 << msg[width]); | ||
1090 | } | ||
1091 | |||
1092 | int spi_print_msg(const unsigned char *msg) | ||
1093 | { | ||
1094 | int len = 0, i; | ||
1095 | if (msg[0] == EXTENDED_MESSAGE) { | ||
1096 | len = 3 + msg[1]; | ||
1097 | if (msg[2] < ARRAY_SIZE(extended_msgs)) | ||
1098 | printk ("%s ", extended_msgs[msg[2]]); | ||
1099 | else | ||
1100 | printk ("Extended Message, reserved code (0x%02x) ", | ||
1101 | (int) msg[2]); | ||
1102 | switch (msg[2]) { | ||
1103 | case EXTENDED_MODIFY_DATA_POINTER: | ||
1104 | printk("pointer = %d", (int) (msg[3] << 24) | | ||
1105 | (msg[4] << 16) | (msg[5] << 8) | msg[6]); | ||
1106 | break; | ||
1107 | case EXTENDED_SDTR: | ||
1108 | print_nego(msg, 3, 4, 0); | ||
1109 | break; | ||
1110 | case EXTENDED_WDTR: | ||
1111 | print_nego(msg, 0, 0, 3); | ||
1112 | break; | ||
1113 | case EXTENDED_PPR: | ||
1114 | print_nego(msg, 3, 5, 6); | ||
1115 | break; | ||
1116 | default: | ||
1117 | for (i = 2; i < len; ++i) | ||
1118 | printk("%02x ", msg[i]); | ||
1119 | } | ||
1120 | /* Identify */ | ||
1121 | } else if (msg[0] & 0x80) { | ||
1122 | printk("Identify disconnect %sallowed %s %d ", | ||
1123 | (msg[0] & 0x40) ? "" : "not ", | ||
1124 | (msg[0] & 0x20) ? "target routine" : "lun", | ||
1125 | msg[0] & 0x7); | ||
1126 | len = 1; | ||
1127 | /* Normal One byte */ | ||
1128 | } else if (msg[0] < 0x1f) { | ||
1129 | if (msg[0] < ARRAY_SIZE(one_byte_msgs)) | ||
1130 | printk(one_byte_msgs[msg[0]]); | ||
1131 | else | ||
1132 | printk("reserved (%02x) ", msg[0]); | ||
1133 | len = 1; | ||
1134 | /* Two byte */ | ||
1135 | } else if (msg[0] <= 0x2f) { | ||
1136 | if ((msg[0] - 0x20) < ARRAY_SIZE(two_byte_msgs)) | ||
1137 | printk("%s %02x ", two_byte_msgs[msg[0] - 0x20], | ||
1138 | msg[1]); | ||
1139 | else | ||
1140 | printk("reserved two byte (%02x %02x) ", | ||
1141 | msg[0], msg[1]); | ||
1142 | len = 2; | ||
1143 | } else | ||
1144 | printk("reserved"); | ||
1145 | return len; | ||
1146 | } | ||
1147 | EXPORT_SYMBOL(spi_print_msg); | ||
1148 | |||
1149 | #else /* ifndef CONFIG_SCSI_CONSTANTS */ | ||
1150 | |||
1151 | int spi_print_msg(const unsigned char *msg) | ||
1152 | { | ||
1153 | int len = 0, i; | ||
1154 | |||
1155 | if (msg[0] == EXTENDED_MESSAGE) { | ||
1156 | len = 3 + msg[1]; | ||
1157 | for (i = 0; i < len; ++i) | ||
1158 | printk("%02x ", msg[i]); | ||
1159 | /* Identify */ | ||
1160 | } else if (msg[0] & 0x80) { | ||
1161 | printk("%02x ", msg[0]); | ||
1162 | len = 1; | ||
1163 | /* Normal One byte */ | ||
1164 | } else if (msg[0] < 0x1f) { | ||
1165 | printk("%02x ", msg[0]); | ||
1166 | len = 1; | ||
1167 | /* Two byte */ | ||
1168 | } else if (msg[0] <= 0x2f) { | ||
1169 | printk("%02x %02x", msg[0], msg[1]); | ||
1170 | len = 2; | ||
1171 | } else | ||
1172 | printk("%02x ", msg[0]); | ||
1173 | return len; | ||
1174 | } | ||
1175 | EXPORT_SYMBOL(spi_print_msg); | ||
1176 | #endif /* ! CONFIG_SCSI_CONSTANTS */ | ||
1177 | |||
1050 | #define SETUP_ATTRIBUTE(field) \ | 1178 | #define SETUP_ATTRIBUTE(field) \ |
1051 | i->private_attrs[count] = class_device_attr_##field; \ | 1179 | i->private_attrs[count] = class_device_attr_##field; \ |
1052 | if (!i->f->set_##field) { \ | 1180 | if (!i->f->set_##field) { \ |
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 03fcbab30033..930db398d107 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <linux/blkpg.h> | 49 | #include <linux/blkpg.h> |
50 | #include <linux/kref.h> | 50 | #include <linux/kref.h> |
51 | #include <linux/delay.h> | 51 | #include <linux/delay.h> |
52 | #include <linux/mutex.h> | ||
52 | #include <asm/uaccess.h> | 53 | #include <asm/uaccess.h> |
53 | 54 | ||
54 | #include <scsi/scsi.h> | 55 | #include <scsi/scsi.h> |
@@ -102,6 +103,7 @@ struct scsi_disk { | |||
102 | u8 write_prot; | 103 | u8 write_prot; |
103 | unsigned WCE : 1; /* state of disk WCE bit */ | 104 | unsigned WCE : 1; /* state of disk WCE bit */ |
104 | unsigned RCD : 1; /* state of disk RCD bit, unused */ | 105 | unsigned RCD : 1; /* state of disk RCD bit, unused */ |
106 | unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ | ||
105 | }; | 107 | }; |
106 | 108 | ||
107 | static DEFINE_IDR(sd_index_idr); | 109 | static DEFINE_IDR(sd_index_idr); |
@@ -110,7 +112,7 @@ static DEFINE_SPINLOCK(sd_index_lock); | |||
110 | /* This semaphore is used to mediate the 0->1 reference get in the | 112 | /* This semaphore is used to mediate the 0->1 reference get in the |
111 | * face of object destruction (i.e. we can't allow a get on an | 113 | * face of object destruction (i.e. we can't allow a get on an |
112 | * object after last put) */ | 114 | * object after last put) */ |
113 | static DECLARE_MUTEX(sd_ref_sem); | 115 | static DEFINE_MUTEX(sd_ref_mutex); |
114 | 116 | ||
115 | static int sd_revalidate_disk(struct gendisk *disk); | 117 | static int sd_revalidate_disk(struct gendisk *disk); |
116 | static void sd_rw_intr(struct scsi_cmnd * SCpnt); | 118 | static void sd_rw_intr(struct scsi_cmnd * SCpnt); |
@@ -121,8 +123,7 @@ static void sd_shutdown(struct device *dev); | |||
121 | static void sd_rescan(struct device *); | 123 | static void sd_rescan(struct device *); |
122 | static int sd_init_command(struct scsi_cmnd *); | 124 | static int sd_init_command(struct scsi_cmnd *); |
123 | static int sd_issue_flush(struct device *, sector_t *); | 125 | static int sd_issue_flush(struct device *, sector_t *); |
124 | static void sd_end_flush(request_queue_t *, struct request *); | 126 | static void sd_prepare_flush(request_queue_t *, struct request *); |
125 | static int sd_prepare_flush(request_queue_t *, struct request *); | ||
126 | static void sd_read_capacity(struct scsi_disk *sdkp, char *diskname, | 127 | static void sd_read_capacity(struct scsi_disk *sdkp, char *diskname, |
127 | unsigned char *buffer); | 128 | unsigned char *buffer); |
128 | 129 | ||
@@ -137,8 +138,6 @@ static struct scsi_driver sd_template = { | |||
137 | .rescan = sd_rescan, | 138 | .rescan = sd_rescan, |
138 | .init_command = sd_init_command, | 139 | .init_command = sd_init_command, |
139 | .issue_flush = sd_issue_flush, | 140 | .issue_flush = sd_issue_flush, |
140 | .prepare_flush = sd_prepare_flush, | ||
141 | .end_flush = sd_end_flush, | ||
142 | }; | 141 | }; |
143 | 142 | ||
144 | /* | 143 | /* |
@@ -195,9 +194,9 @@ static struct scsi_disk *scsi_disk_get(struct gendisk *disk) | |||
195 | { | 194 | { |
196 | struct scsi_disk *sdkp; | 195 | struct scsi_disk *sdkp; |
197 | 196 | ||
198 | down(&sd_ref_sem); | 197 | mutex_lock(&sd_ref_mutex); |
199 | sdkp = __scsi_disk_get(disk); | 198 | sdkp = __scsi_disk_get(disk); |
200 | up(&sd_ref_sem); | 199 | mutex_unlock(&sd_ref_mutex); |
201 | return sdkp; | 200 | return sdkp; |
202 | } | 201 | } |
203 | 202 | ||
@@ -205,11 +204,11 @@ static struct scsi_disk *scsi_disk_get_from_dev(struct device *dev) | |||
205 | { | 204 | { |
206 | struct scsi_disk *sdkp; | 205 | struct scsi_disk *sdkp; |
207 | 206 | ||
208 | down(&sd_ref_sem); | 207 | mutex_lock(&sd_ref_mutex); |
209 | sdkp = dev_get_drvdata(dev); | 208 | sdkp = dev_get_drvdata(dev); |
210 | if (sdkp) | 209 | if (sdkp) |
211 | sdkp = __scsi_disk_get(sdkp->disk); | 210 | sdkp = __scsi_disk_get(sdkp->disk); |
212 | up(&sd_ref_sem); | 211 | mutex_unlock(&sd_ref_mutex); |
213 | return sdkp; | 212 | return sdkp; |
214 | } | 213 | } |
215 | 214 | ||
@@ -217,10 +216,10 @@ static void scsi_disk_put(struct scsi_disk *sdkp) | |||
217 | { | 216 | { |
218 | struct scsi_device *sdev = sdkp->device; | 217 | struct scsi_device *sdev = sdkp->device; |
219 | 218 | ||
220 | down(&sd_ref_sem); | 219 | mutex_lock(&sd_ref_mutex); |
221 | kref_put(&sdkp->kref, scsi_disk_release); | 220 | kref_put(&sdkp->kref, scsi_disk_release); |
222 | scsi_device_put(sdev); | 221 | scsi_device_put(sdev); |
223 | up(&sd_ref_sem); | 222 | mutex_unlock(&sd_ref_mutex); |
224 | } | 223 | } |
225 | 224 | ||
226 | /** | 225 | /** |
@@ -233,34 +232,12 @@ static void scsi_disk_put(struct scsi_disk *sdkp) | |||
233 | **/ | 232 | **/ |
234 | static int sd_init_command(struct scsi_cmnd * SCpnt) | 233 | static int sd_init_command(struct scsi_cmnd * SCpnt) |
235 | { | 234 | { |
236 | unsigned int this_count, timeout; | ||
237 | struct gendisk *disk; | ||
238 | sector_t block; | ||
239 | struct scsi_device *sdp = SCpnt->device; | 235 | struct scsi_device *sdp = SCpnt->device; |
240 | struct request *rq = SCpnt->request; | 236 | struct request *rq = SCpnt->request; |
241 | 237 | struct gendisk *disk = rq->rq_disk; | |
242 | timeout = sdp->timeout; | 238 | sector_t block = rq->sector; |
243 | 239 | unsigned int this_count = SCpnt->request_bufflen >> 9; | |
244 | /* | 240 | unsigned int timeout = sdp->timeout; |
245 | * SG_IO from block layer already setup, just copy cdb basically | ||
246 | */ | ||
247 | if (blk_pc_request(rq)) { | ||
248 | scsi_setup_blk_pc_cmnd(SCpnt, SD_PASSTHROUGH_RETRIES); | ||
249 | if (rq->timeout) | ||
250 | timeout = rq->timeout; | ||
251 | |||
252 | goto queue; | ||
253 | } | ||
254 | |||
255 | /* | ||
256 | * we only do REQ_CMD and REQ_BLOCK_PC | ||
257 | */ | ||
258 | if (!blk_fs_request(rq)) | ||
259 | return 0; | ||
260 | |||
261 | disk = rq->rq_disk; | ||
262 | block = rq->sector; | ||
263 | this_count = SCpnt->request_bufflen >> 9; | ||
264 | 241 | ||
265 | SCSI_LOG_HLQUEUE(1, printk("sd_init_command: disk=%s, block=%llu, " | 242 | SCSI_LOG_HLQUEUE(1, printk("sd_init_command: disk=%s, block=%llu, " |
266 | "count=%d\n", disk->disk_name, | 243 | "count=%d\n", disk->disk_name, |
@@ -346,6 +323,7 @@ static int sd_init_command(struct scsi_cmnd * SCpnt) | |||
346 | 323 | ||
347 | if (block > 0xffffffff) { | 324 | if (block > 0xffffffff) { |
348 | SCpnt->cmnd[0] += READ_16 - READ_6; | 325 | SCpnt->cmnd[0] += READ_16 - READ_6; |
326 | SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; | ||
349 | SCpnt->cmnd[2] = sizeof(block) > 4 ? (unsigned char) (block >> 56) & 0xff : 0; | 327 | SCpnt->cmnd[2] = sizeof(block) > 4 ? (unsigned char) (block >> 56) & 0xff : 0; |
350 | SCpnt->cmnd[3] = sizeof(block) > 4 ? (unsigned char) (block >> 48) & 0xff : 0; | 328 | SCpnt->cmnd[3] = sizeof(block) > 4 ? (unsigned char) (block >> 48) & 0xff : 0; |
351 | SCpnt->cmnd[4] = sizeof(block) > 4 ? (unsigned char) (block >> 40) & 0xff : 0; | 329 | SCpnt->cmnd[4] = sizeof(block) > 4 ? (unsigned char) (block >> 40) & 0xff : 0; |
@@ -365,6 +343,7 @@ static int sd_init_command(struct scsi_cmnd * SCpnt) | |||
365 | this_count = 0xffff; | 343 | this_count = 0xffff; |
366 | 344 | ||
367 | SCpnt->cmnd[0] += READ_10 - READ_6; | 345 | SCpnt->cmnd[0] += READ_10 - READ_6; |
346 | SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; | ||
368 | SCpnt->cmnd[2] = (unsigned char) (block >> 24) & 0xff; | 347 | SCpnt->cmnd[2] = (unsigned char) (block >> 24) & 0xff; |
369 | SCpnt->cmnd[3] = (unsigned char) (block >> 16) & 0xff; | 348 | SCpnt->cmnd[3] = (unsigned char) (block >> 16) & 0xff; |
370 | SCpnt->cmnd[4] = (unsigned char) (block >> 8) & 0xff; | 349 | SCpnt->cmnd[4] = (unsigned char) (block >> 8) & 0xff; |
@@ -373,6 +352,17 @@ static int sd_init_command(struct scsi_cmnd * SCpnt) | |||
373 | SCpnt->cmnd[7] = (unsigned char) (this_count >> 8) & 0xff; | 352 | SCpnt->cmnd[7] = (unsigned char) (this_count >> 8) & 0xff; |
374 | SCpnt->cmnd[8] = (unsigned char) this_count & 0xff; | 353 | SCpnt->cmnd[8] = (unsigned char) this_count & 0xff; |
375 | } else { | 354 | } else { |
355 | if (unlikely(blk_fua_rq(rq))) { | ||
356 | /* | ||
357 | * This happens only if this drive failed | ||
358 | * 10byte rw command with ILLEGAL_REQUEST | ||
359 | * during operation and thus turned off | ||
360 | * use_10_for_rw. | ||
361 | */ | ||
362 | printk(KERN_ERR "sd: FUA write on READ/WRITE(6) drive\n"); | ||
363 | return 0; | ||
364 | } | ||
365 | |||
376 | SCpnt->cmnd[1] |= (unsigned char) ((block >> 16) & 0x1f); | 366 | SCpnt->cmnd[1] |= (unsigned char) ((block >> 16) & 0x1f); |
377 | SCpnt->cmnd[2] = (unsigned char) ((block >> 8) & 0xff); | 367 | SCpnt->cmnd[2] = (unsigned char) ((block >> 8) & 0xff); |
378 | SCpnt->cmnd[3] = (unsigned char) block & 0xff; | 368 | SCpnt->cmnd[3] = (unsigned char) block & 0xff; |
@@ -390,8 +380,6 @@ static int sd_init_command(struct scsi_cmnd * SCpnt) | |||
390 | SCpnt->transfersize = sdp->sector_size; | 380 | SCpnt->transfersize = sdp->sector_size; |
391 | SCpnt->underflow = this_count << 9; | 381 | SCpnt->underflow = this_count << 9; |
392 | SCpnt->allowed = SD_MAX_RETRIES; | 382 | SCpnt->allowed = SD_MAX_RETRIES; |
393 | |||
394 | queue: | ||
395 | SCpnt->timeout_per_command = timeout; | 383 | SCpnt->timeout_per_command = timeout; |
396 | 384 | ||
397 | /* | 385 | /* |
@@ -516,7 +504,7 @@ static int sd_release(struct inode *inode, struct file *filp) | |||
516 | return 0; | 504 | return 0; |
517 | } | 505 | } |
518 | 506 | ||
519 | static int sd_hdio_getgeo(struct block_device *bdev, struct hd_geometry __user *loc) | 507 | static int sd_getgeo(struct block_device *bdev, struct hd_geometry *geo) |
520 | { | 508 | { |
521 | struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk); | 509 | struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk); |
522 | struct scsi_device *sdp = sdkp->device; | 510 | struct scsi_device *sdp = sdkp->device; |
@@ -534,15 +522,9 @@ static int sd_hdio_getgeo(struct block_device *bdev, struct hd_geometry __user * | |||
534 | else | 522 | else |
535 | scsicam_bios_param(bdev, sdkp->capacity, diskinfo); | 523 | scsicam_bios_param(bdev, sdkp->capacity, diskinfo); |
536 | 524 | ||
537 | if (put_user(diskinfo[0], &loc->heads)) | 525 | geo->heads = diskinfo[0]; |
538 | return -EFAULT; | 526 | geo->sectors = diskinfo[1]; |
539 | if (put_user(diskinfo[1], &loc->sectors)) | 527 | geo->cylinders = diskinfo[2]; |
540 | return -EFAULT; | ||
541 | if (put_user(diskinfo[2], &loc->cylinders)) | ||
542 | return -EFAULT; | ||
543 | if (put_user((unsigned)get_start_sect(bdev), | ||
544 | (unsigned long __user *)&loc->start)) | ||
545 | return -EFAULT; | ||
546 | return 0; | 528 | return 0; |
547 | } | 529 | } |
548 | 530 | ||
@@ -582,12 +564,6 @@ static int sd_ioctl(struct inode * inode, struct file * filp, | |||
582 | if (!scsi_block_when_processing_errors(sdp) || !error) | 564 | if (!scsi_block_when_processing_errors(sdp) || !error) |
583 | return error; | 565 | return error; |
584 | 566 | ||
585 | if (cmd == HDIO_GETGEO) { | ||
586 | if (!arg) | ||
587 | return -EINVAL; | ||
588 | return sd_hdio_getgeo(bdev, p); | ||
589 | } | ||
590 | |||
591 | /* | 567 | /* |
592 | * Send SCSI addressing ioctls directly to mid level, send other | 568 | * Send SCSI addressing ioctls directly to mid level, send other |
593 | * ioctls to block level and then onto mid level if they can't be | 569 | * ioctls to block level and then onto mid level if they can't be |
@@ -729,42 +705,13 @@ static int sd_issue_flush(struct device *dev, sector_t *error_sector) | |||
729 | return ret; | 705 | return ret; |
730 | } | 706 | } |
731 | 707 | ||
732 | static void sd_end_flush(request_queue_t *q, struct request *flush_rq) | 708 | static void sd_prepare_flush(request_queue_t *q, struct request *rq) |
733 | { | 709 | { |
734 | struct request *rq = flush_rq->end_io_data; | ||
735 | struct scsi_cmnd *cmd = rq->special; | ||
736 | unsigned int bytes = rq->hard_nr_sectors << 9; | ||
737 | |||
738 | if (!flush_rq->errors) { | ||
739 | spin_unlock(q->queue_lock); | ||
740 | scsi_io_completion(cmd, bytes, 0); | ||
741 | spin_lock(q->queue_lock); | ||
742 | } else if (blk_barrier_postflush(rq)) { | ||
743 | spin_unlock(q->queue_lock); | ||
744 | scsi_io_completion(cmd, 0, bytes); | ||
745 | spin_lock(q->queue_lock); | ||
746 | } else { | ||
747 | /* | ||
748 | * force journal abort of barriers | ||
749 | */ | ||
750 | end_that_request_first(rq, -EOPNOTSUPP, rq->hard_nr_sectors); | ||
751 | end_that_request_last(rq); | ||
752 | } | ||
753 | } | ||
754 | |||
755 | static int sd_prepare_flush(request_queue_t *q, struct request *rq) | ||
756 | { | ||
757 | struct scsi_device *sdev = q->queuedata; | ||
758 | struct scsi_disk *sdkp = dev_get_drvdata(&sdev->sdev_gendev); | ||
759 | |||
760 | if (!sdkp || !sdkp->WCE) | ||
761 | return 0; | ||
762 | |||
763 | memset(rq->cmd, 0, sizeof(rq->cmd)); | 710 | memset(rq->cmd, 0, sizeof(rq->cmd)); |
764 | rq->flags |= REQ_BLOCK_PC | REQ_SOFTBARRIER; | 711 | rq->flags |= REQ_BLOCK_PC; |
765 | rq->timeout = SD_TIMEOUT; | 712 | rq->timeout = SD_TIMEOUT; |
766 | rq->cmd[0] = SYNCHRONIZE_CACHE; | 713 | rq->cmd[0] = SYNCHRONIZE_CACHE; |
767 | return 1; | 714 | rq->cmd_len = 10; |
768 | } | 715 | } |
769 | 716 | ||
770 | static void sd_rescan(struct device *dev) | 717 | static void sd_rescan(struct device *dev) |
@@ -818,6 +765,7 @@ static struct block_device_operations sd_fops = { | |||
818 | .open = sd_open, | 765 | .open = sd_open, |
819 | .release = sd_release, | 766 | .release = sd_release, |
820 | .ioctl = sd_ioctl, | 767 | .ioctl = sd_ioctl, |
768 | .getgeo = sd_getgeo, | ||
821 | #ifdef CONFIG_COMPAT | 769 | #ifdef CONFIG_COMPAT |
822 | .compat_ioctl = sd_compat_ioctl, | 770 | .compat_ioctl = sd_compat_ioctl, |
823 | #endif | 771 | #endif |
@@ -865,15 +813,7 @@ static void sd_rw_intr(struct scsi_cmnd * SCpnt) | |||
865 | relatively rare error condition, no care is taken to avoid | 813 | relatively rare error condition, no care is taken to avoid |
866 | unnecessary additional work such as memcpy's that could be avoided. | 814 | unnecessary additional work such as memcpy's that could be avoided. |
867 | */ | 815 | */ |
868 | 816 | if (driver_byte(result) != 0 && | |
869 | /* | ||
870 | * If SG_IO from block layer then set good_bytes to stop retries; | ||
871 | * else if errors, check them, and if necessary prepare for | ||
872 | * (partial) retries. | ||
873 | */ | ||
874 | if (blk_pc_request(SCpnt->request)) | ||
875 | good_bytes = this_count; | ||
876 | else if (driver_byte(result) != 0 && | ||
877 | sense_valid && !sense_deferred) { | 817 | sense_valid && !sense_deferred) { |
878 | switch (sshdr.sense_key) { | 818 | switch (sshdr.sense_key) { |
879 | case MEDIUM_ERROR: | 819 | case MEDIUM_ERROR: |
@@ -1427,10 +1367,18 @@ sd_read_cache_type(struct scsi_disk *sdkp, char *diskname, | |||
1427 | sdkp->RCD = 0; | 1367 | sdkp->RCD = 0; |
1428 | } | 1368 | } |
1429 | 1369 | ||
1370 | sdkp->DPOFUA = (data.device_specific & 0x10) != 0; | ||
1371 | if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw) { | ||
1372 | printk(KERN_NOTICE "SCSI device %s: uses " | ||
1373 | "READ/WRITE(6), disabling FUA\n", diskname); | ||
1374 | sdkp->DPOFUA = 0; | ||
1375 | } | ||
1376 | |||
1430 | ct = sdkp->RCD + 2*sdkp->WCE; | 1377 | ct = sdkp->RCD + 2*sdkp->WCE; |
1431 | 1378 | ||
1432 | printk(KERN_NOTICE "SCSI device %s: drive cache: %s\n", | 1379 | printk(KERN_NOTICE "SCSI device %s: drive cache: %s%s\n", |
1433 | diskname, types[ct]); | 1380 | diskname, types[ct], |
1381 | sdkp->DPOFUA ? " w/ FUA" : ""); | ||
1434 | 1382 | ||
1435 | return; | 1383 | return; |
1436 | } | 1384 | } |
@@ -1462,6 +1410,7 @@ static int sd_revalidate_disk(struct gendisk *disk) | |||
1462 | struct scsi_disk *sdkp = scsi_disk(disk); | 1410 | struct scsi_disk *sdkp = scsi_disk(disk); |
1463 | struct scsi_device *sdp = sdkp->device; | 1411 | struct scsi_device *sdp = sdkp->device; |
1464 | unsigned char *buffer; | 1412 | unsigned char *buffer; |
1413 | unsigned ordered; | ||
1465 | 1414 | ||
1466 | SCSI_LOG_HLQUEUE(3, printk("sd_revalidate_disk: disk=%s\n", disk->disk_name)); | 1415 | SCSI_LOG_HLQUEUE(3, printk("sd_revalidate_disk: disk=%s\n", disk->disk_name)); |
1467 | 1416 | ||
@@ -1495,12 +1444,24 @@ static int sd_revalidate_disk(struct gendisk *disk) | |||
1495 | */ | 1444 | */ |
1496 | if (sdkp->media_present) { | 1445 | if (sdkp->media_present) { |
1497 | sd_read_capacity(sdkp, disk->disk_name, buffer); | 1446 | sd_read_capacity(sdkp, disk->disk_name, buffer); |
1498 | if (sdp->removable) | 1447 | sd_read_write_protect_flag(sdkp, disk->disk_name, buffer); |
1499 | sd_read_write_protect_flag(sdkp, disk->disk_name, | ||
1500 | buffer); | ||
1501 | sd_read_cache_type(sdkp, disk->disk_name, buffer); | 1448 | sd_read_cache_type(sdkp, disk->disk_name, buffer); |
1502 | } | 1449 | } |
1503 | 1450 | ||
1451 | /* | ||
1452 | * We now have all cache related info, determine how we deal | ||
1453 | * with ordered requests. Note that as the current SCSI | ||
1454 | * dispatch function can alter request order, we cannot use | ||
1455 | * QUEUE_ORDERED_TAG_* even when ordered tag is supported. | ||
1456 | */ | ||
1457 | if (sdkp->WCE) | ||
1458 | ordered = sdkp->DPOFUA | ||
1459 | ? QUEUE_ORDERED_DRAIN_FUA : QUEUE_ORDERED_DRAIN_FLUSH; | ||
1460 | else | ||
1461 | ordered = QUEUE_ORDERED_DRAIN; | ||
1462 | |||
1463 | blk_queue_ordered(sdkp->disk->queue, ordered, sd_prepare_flush); | ||
1464 | |||
1504 | set_capacity(disk, sdkp->capacity); | 1465 | set_capacity(disk, sdkp->capacity); |
1505 | kfree(buffer); | 1466 | kfree(buffer); |
1506 | 1467 | ||
@@ -1600,6 +1561,7 @@ static int sd_probe(struct device *dev) | |||
1600 | strcpy(gd->devfs_name, sdp->devfs_name); | 1561 | strcpy(gd->devfs_name, sdp->devfs_name); |
1601 | 1562 | ||
1602 | gd->private_data = &sdkp->driver; | 1563 | gd->private_data = &sdkp->driver; |
1564 | gd->queue = sdkp->device->request_queue; | ||
1603 | 1565 | ||
1604 | sd_revalidate_disk(gd); | 1566 | sd_revalidate_disk(gd); |
1605 | 1567 | ||
@@ -1607,7 +1569,6 @@ static int sd_probe(struct device *dev) | |||
1607 | gd->flags = GENHD_FL_DRIVERFS; | 1569 | gd->flags = GENHD_FL_DRIVERFS; |
1608 | if (sdp->removable) | 1570 | if (sdp->removable) |
1609 | gd->flags |= GENHD_FL_REMOVABLE; | 1571 | gd->flags |= GENHD_FL_REMOVABLE; |
1610 | gd->queue = sdkp->device->request_queue; | ||
1611 | 1572 | ||
1612 | dev_set_drvdata(dev, sdkp); | 1573 | dev_set_drvdata(dev, sdkp); |
1613 | add_disk(gd); | 1574 | add_disk(gd); |
@@ -1643,10 +1604,10 @@ static int sd_remove(struct device *dev) | |||
1643 | del_gendisk(sdkp->disk); | 1604 | del_gendisk(sdkp->disk); |
1644 | sd_shutdown(dev); | 1605 | sd_shutdown(dev); |
1645 | 1606 | ||
1646 | down(&sd_ref_sem); | 1607 | mutex_lock(&sd_ref_mutex); |
1647 | dev_set_drvdata(dev, NULL); | 1608 | dev_set_drvdata(dev, NULL); |
1648 | kref_put(&sdkp->kref, scsi_disk_release); | 1609 | kref_put(&sdkp->kref, scsi_disk_release); |
1649 | up(&sd_ref_sem); | 1610 | mutex_unlock(&sd_ref_mutex); |
1650 | 1611 | ||
1651 | return 0; | 1612 | return 0; |
1652 | } | 1613 | } |
@@ -1655,7 +1616,7 @@ static int sd_remove(struct device *dev) | |||
1655 | * scsi_disk_release - Called to free the scsi_disk structure | 1616 | * scsi_disk_release - Called to free the scsi_disk structure |
1656 | * @kref: pointer to embedded kref | 1617 | * @kref: pointer to embedded kref |
1657 | * | 1618 | * |
1658 | * sd_ref_sem must be held entering this routine. Because it is | 1619 | * sd_ref_mutex must be held entering this routine. Because it is |
1659 | * called on last put, you should always use the scsi_disk_get() | 1620 | * called on last put, you should always use the scsi_disk_get() |
1660 | * scsi_disk_put() helpers which manipulate the semaphore directly | 1621 | * scsi_disk_put() helpers which manipulate the semaphore directly |
1661 | * and never do a direct kref_put(). | 1622 | * and never do a direct kref_put(). |
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index b55c2a8a547c..78aad9582bcf 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -104,8 +104,6 @@ static int sg_allow_dio = SG_ALLOW_DIO_DEF; | |||
104 | static int sg_add(struct class_device *, struct class_interface *); | 104 | static int sg_add(struct class_device *, struct class_interface *); |
105 | static void sg_remove(struct class_device *, struct class_interface *); | 105 | static void sg_remove(struct class_device *, struct class_interface *); |
106 | 106 | ||
107 | static Scsi_Request *dummy_cmdp; /* only used for sizeof */ | ||
108 | |||
109 | static DEFINE_RWLOCK(sg_dev_arr_lock); /* Also used to lock | 107 | static DEFINE_RWLOCK(sg_dev_arr_lock); /* Also used to lock |
110 | file descriptor list for device */ | 108 | file descriptor list for device */ |
111 | 109 | ||
@@ -119,7 +117,7 @@ typedef struct sg_scatter_hold { /* holding area for scsi scatter gather info */ | |||
119 | unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */ | 117 | unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */ |
120 | unsigned bufflen; /* Size of (aggregate) data buffer */ | 118 | unsigned bufflen; /* Size of (aggregate) data buffer */ |
121 | unsigned b_malloc_len; /* actual len malloc'ed in buffer */ | 119 | unsigned b_malloc_len; /* actual len malloc'ed in buffer */ |
122 | void *buffer; /* Data buffer or scatter list (k_use_sg>0) */ | 120 | struct scatterlist *buffer;/* scatter list */ |
123 | char dio_in_use; /* 0->indirect IO (or mmap), 1->dio */ | 121 | char dio_in_use; /* 0->indirect IO (or mmap), 1->dio */ |
124 | unsigned char cmd_opcode; /* first byte of command */ | 122 | unsigned char cmd_opcode; /* first byte of command */ |
125 | } Sg_scatter_hold; | 123 | } Sg_scatter_hold; |
@@ -128,12 +126,11 @@ struct sg_device; /* forward declarations */ | |||
128 | struct sg_fd; | 126 | struct sg_fd; |
129 | 127 | ||
130 | typedef struct sg_request { /* SG_MAX_QUEUE requests outstanding per file */ | 128 | typedef struct sg_request { /* SG_MAX_QUEUE requests outstanding per file */ |
131 | Scsi_Request *my_cmdp; /* != 0 when request with lower levels */ | ||
132 | struct sg_request *nextrp; /* NULL -> tail request (slist) */ | 129 | struct sg_request *nextrp; /* NULL -> tail request (slist) */ |
133 | struct sg_fd *parentfp; /* NULL -> not in use */ | 130 | struct sg_fd *parentfp; /* NULL -> not in use */ |
134 | Sg_scatter_hold data; /* hold buffer, perhaps scatter list */ | 131 | Sg_scatter_hold data; /* hold buffer, perhaps scatter list */ |
135 | sg_io_hdr_t header; /* scsi command+info, see <scsi/sg.h> */ | 132 | sg_io_hdr_t header; /* scsi command+info, see <scsi/sg.h> */ |
136 | unsigned char sense_b[sizeof (dummy_cmdp->sr_sense_buffer)]; | 133 | unsigned char sense_b[SCSI_SENSE_BUFFERSIZE]; |
137 | char res_used; /* 1 -> using reserve buffer, 0 -> not ... */ | 134 | char res_used; /* 1 -> using reserve buffer, 0 -> not ... */ |
138 | char orphan; /* 1 -> drop on sight, 0 -> normal */ | 135 | char orphan; /* 1 -> drop on sight, 0 -> normal */ |
139 | char sg_io_owned; /* 1 -> packet belongs to SG_IO */ | 136 | char sg_io_owned; /* 1 -> packet belongs to SG_IO */ |
@@ -174,7 +171,8 @@ typedef struct sg_device { /* holds the state of each scsi generic device */ | |||
174 | } Sg_device; | 171 | } Sg_device; |
175 | 172 | ||
176 | static int sg_fasync(int fd, struct file *filp, int mode); | 173 | static int sg_fasync(int fd, struct file *filp, int mode); |
177 | static void sg_cmd_done(Scsi_Cmnd * SCpnt); /* tasklet or soft irq callback */ | 174 | /* tasklet or soft irq callback */ |
175 | static void sg_cmd_done(void *data, char *sense, int result, int resid); | ||
178 | static int sg_start_req(Sg_request * srp); | 176 | static int sg_start_req(Sg_request * srp); |
179 | static void sg_finish_rem_req(Sg_request * srp); | 177 | static void sg_finish_rem_req(Sg_request * srp); |
180 | static int sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size); | 178 | static int sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size); |
@@ -195,8 +193,8 @@ static void sg_remove_scat(Sg_scatter_hold * schp); | |||
195 | static void sg_build_reserve(Sg_fd * sfp, int req_size); | 193 | static void sg_build_reserve(Sg_fd * sfp, int req_size); |
196 | static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size); | 194 | static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size); |
197 | static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp); | 195 | static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp); |
198 | static char *sg_page_malloc(int rqSz, int lowDma, int *retSzp); | 196 | static struct page *sg_page_malloc(int rqSz, int lowDma, int *retSzp); |
199 | static void sg_page_free(char *buff, int size); | 197 | static void sg_page_free(struct page *page, int size); |
200 | static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev); | 198 | static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev); |
201 | static int sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp); | 199 | static int sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp); |
202 | static void __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp); | 200 | static void __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp); |
@@ -207,7 +205,6 @@ static int sg_res_in_use(Sg_fd * sfp); | |||
207 | static int sg_allow_access(unsigned char opcode, char dev_type); | 205 | static int sg_allow_access(unsigned char opcode, char dev_type); |
208 | static int sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len); | 206 | static int sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len); |
209 | static Sg_device *sg_get_dev(int dev); | 207 | static Sg_device *sg_get_dev(int dev); |
210 | static inline unsigned char *sg_scatg2virt(const struct scatterlist *sclp); | ||
211 | #ifdef CONFIG_SCSI_PROC_FS | 208 | #ifdef CONFIG_SCSI_PROC_FS |
212 | static int sg_last_dev(void); | 209 | static int sg_last_dev(void); |
213 | #endif | 210 | #endif |
@@ -226,6 +223,7 @@ sg_open(struct inode *inode, struct file *filp) | |||
226 | { | 223 | { |
227 | int dev = iminor(inode); | 224 | int dev = iminor(inode); |
228 | int flags = filp->f_flags; | 225 | int flags = filp->f_flags; |
226 | struct request_queue *q; | ||
229 | Sg_device *sdp; | 227 | Sg_device *sdp; |
230 | Sg_fd *sfp; | 228 | Sg_fd *sfp; |
231 | int res; | 229 | int res; |
@@ -287,7 +285,9 @@ sg_open(struct inode *inode, struct file *filp) | |||
287 | } | 285 | } |
288 | if (!sdp->headfp) { /* no existing opens on this device */ | 286 | if (!sdp->headfp) { /* no existing opens on this device */ |
289 | sdp->sgdebug = 0; | 287 | sdp->sgdebug = 0; |
290 | sdp->sg_tablesize = sdp->device->host->sg_tablesize; | 288 | q = sdp->device->request_queue; |
289 | sdp->sg_tablesize = min(q->max_hw_segments, | ||
290 | q->max_phys_segments); | ||
291 | } | 291 | } |
292 | if ((sfp = sg_add_sfp(sdp, dev))) | 292 | if ((sfp = sg_add_sfp(sdp, dev))) |
293 | filp->private_data = sfp; | 293 | filp->private_data = sfp; |
@@ -340,6 +340,7 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos) | |||
340 | return -ENXIO; | 340 | return -ENXIO; |
341 | SCSI_LOG_TIMEOUT(3, printk("sg_read: %s, count=%d\n", | 341 | SCSI_LOG_TIMEOUT(3, printk("sg_read: %s, count=%d\n", |
342 | sdp->disk->disk_name, (int) count)); | 342 | sdp->disk->disk_name, (int) count)); |
343 | |||
343 | if (!access_ok(VERIFY_WRITE, buf, count)) | 344 | if (!access_ok(VERIFY_WRITE, buf, count)) |
344 | return -EFAULT; | 345 | return -EFAULT; |
345 | if (sfp->force_packid && (count >= SZ_SG_HEADER)) { | 346 | if (sfp->force_packid && (count >= SZ_SG_HEADER)) { |
@@ -491,7 +492,7 @@ sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp) | |||
491 | if ((hp->mx_sb_len > 0) && hp->sbp) { | 492 | if ((hp->mx_sb_len > 0) && hp->sbp) { |
492 | if ((CHECK_CONDITION & hp->masked_status) || | 493 | if ((CHECK_CONDITION & hp->masked_status) || |
493 | (DRIVER_SENSE & hp->driver_status)) { | 494 | (DRIVER_SENSE & hp->driver_status)) { |
494 | int sb_len = sizeof (dummy_cmdp->sr_sense_buffer); | 495 | int sb_len = SCSI_SENSE_BUFFERSIZE; |
495 | sb_len = (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len; | 496 | sb_len = (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len; |
496 | len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */ | 497 | len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */ |
497 | len = (len > sb_len) ? sb_len : len; | 498 | len = (len > sb_len) ? sb_len : len; |
@@ -525,7 +526,7 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
525 | Sg_request *srp; | 526 | Sg_request *srp; |
526 | struct sg_header old_hdr; | 527 | struct sg_header old_hdr; |
527 | sg_io_hdr_t *hp; | 528 | sg_io_hdr_t *hp; |
528 | unsigned char cmnd[sizeof (dummy_cmdp->sr_cmnd)]; | 529 | unsigned char cmnd[MAX_COMMAND_SIZE]; |
529 | 530 | ||
530 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) | 531 | if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) |
531 | return -ENXIO; | 532 | return -ENXIO; |
@@ -624,7 +625,7 @@ sg_new_write(Sg_fd * sfp, const char __user *buf, size_t count, | |||
624 | int k; | 625 | int k; |
625 | Sg_request *srp; | 626 | Sg_request *srp; |
626 | sg_io_hdr_t *hp; | 627 | sg_io_hdr_t *hp; |
627 | unsigned char cmnd[sizeof (dummy_cmdp->sr_cmnd)]; | 628 | unsigned char cmnd[MAX_COMMAND_SIZE]; |
628 | int timeout; | 629 | int timeout; |
629 | unsigned long ul_timeout; | 630 | unsigned long ul_timeout; |
630 | 631 | ||
@@ -692,11 +693,9 @@ static int | |||
692 | sg_common_write(Sg_fd * sfp, Sg_request * srp, | 693 | sg_common_write(Sg_fd * sfp, Sg_request * srp, |
693 | unsigned char *cmnd, int timeout, int blocking) | 694 | unsigned char *cmnd, int timeout, int blocking) |
694 | { | 695 | { |
695 | int k; | 696 | int k, data_dir; |
696 | Scsi_Request *SRpnt; | ||
697 | Sg_device *sdp = sfp->parentdp; | 697 | Sg_device *sdp = sfp->parentdp; |
698 | sg_io_hdr_t *hp = &srp->header; | 698 | sg_io_hdr_t *hp = &srp->header; |
699 | request_queue_t *q; | ||
700 | 699 | ||
701 | srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */ | 700 | srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */ |
702 | hp->status = 0; | 701 | hp->status = 0; |
@@ -723,51 +722,36 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp, | |||
723 | sg_finish_rem_req(srp); | 722 | sg_finish_rem_req(srp); |
724 | return -ENODEV; | 723 | return -ENODEV; |
725 | } | 724 | } |
726 | SRpnt = scsi_allocate_request(sdp->device, GFP_ATOMIC); | ||
727 | if (SRpnt == NULL) { | ||
728 | SCSI_LOG_TIMEOUT(1, printk("sg_write: no mem\n")); | ||
729 | sg_finish_rem_req(srp); | ||
730 | return -ENOMEM; | ||
731 | } | ||
732 | 725 | ||
733 | srp->my_cmdp = SRpnt; | ||
734 | q = SRpnt->sr_device->request_queue; | ||
735 | SRpnt->sr_request->rq_disk = sdp->disk; | ||
736 | SRpnt->sr_sense_buffer[0] = 0; | ||
737 | SRpnt->sr_cmd_len = hp->cmd_len; | ||
738 | SRpnt->sr_use_sg = srp->data.k_use_sg; | ||
739 | SRpnt->sr_sglist_len = srp->data.sglist_len; | ||
740 | SRpnt->sr_bufflen = srp->data.bufflen; | ||
741 | SRpnt->sr_underflow = 0; | ||
742 | SRpnt->sr_buffer = srp->data.buffer; | ||
743 | switch (hp->dxfer_direction) { | 726 | switch (hp->dxfer_direction) { |
744 | case SG_DXFER_TO_FROM_DEV: | 727 | case SG_DXFER_TO_FROM_DEV: |
745 | case SG_DXFER_FROM_DEV: | 728 | case SG_DXFER_FROM_DEV: |
746 | SRpnt->sr_data_direction = DMA_FROM_DEVICE; | 729 | data_dir = DMA_FROM_DEVICE; |
747 | break; | 730 | break; |
748 | case SG_DXFER_TO_DEV: | 731 | case SG_DXFER_TO_DEV: |
749 | SRpnt->sr_data_direction = DMA_TO_DEVICE; | 732 | data_dir = DMA_TO_DEVICE; |
750 | break; | 733 | break; |
751 | case SG_DXFER_UNKNOWN: | 734 | case SG_DXFER_UNKNOWN: |
752 | SRpnt->sr_data_direction = DMA_BIDIRECTIONAL; | 735 | data_dir = DMA_BIDIRECTIONAL; |
753 | break; | 736 | break; |
754 | default: | 737 | default: |
755 | SRpnt->sr_data_direction = DMA_NONE; | 738 | data_dir = DMA_NONE; |
756 | break; | 739 | break; |
757 | } | 740 | } |
758 | SRpnt->upper_private_data = srp; | ||
759 | srp->data.k_use_sg = 0; | ||
760 | srp->data.sglist_len = 0; | ||
761 | srp->data.bufflen = 0; | ||
762 | srp->data.buffer = NULL; | ||
763 | hp->duration = jiffies_to_msecs(jiffies); | 741 | hp->duration = jiffies_to_msecs(jiffies); |
764 | /* Now send everything of to mid-level. The next time we hear about this | 742 | /* Now send everything of to mid-level. The next time we hear about this |
765 | packet is when sg_cmd_done() is called (i.e. a callback). */ | 743 | packet is when sg_cmd_done() is called (i.e. a callback). */ |
766 | scsi_do_req(SRpnt, (void *) cmnd, | 744 | if (scsi_execute_async(sdp->device, cmnd, data_dir, srp->data.buffer, |
767 | (void *) SRpnt->sr_buffer, hp->dxfer_len, | 745 | hp->dxfer_len, srp->data.k_use_sg, timeout, |
768 | sg_cmd_done, timeout, SG_DEFAULT_RETRIES); | 746 | SG_DEFAULT_RETRIES, srp, sg_cmd_done, |
769 | /* dxfer_len overwrites SRpnt->sr_bufflen, hence need for b_malloc_len */ | 747 | GFP_ATOMIC)) { |
770 | return 0; | 748 | SCSI_LOG_TIMEOUT(1, printk("sg_write: scsi_execute_async failed\n")); |
749 | /* | ||
750 | * most likely out of mem, but could also be a bad map | ||
751 | */ | ||
752 | return -ENOMEM; | ||
753 | } else | ||
754 | return 0; | ||
771 | } | 755 | } |
772 | 756 | ||
773 | static int | 757 | static int |
@@ -1156,45 +1140,22 @@ sg_fasync(int fd, struct file *filp, int mode) | |||
1156 | return (retval < 0) ? retval : 0; | 1140 | return (retval < 0) ? retval : 0; |
1157 | } | 1141 | } |
1158 | 1142 | ||
1159 | static inline unsigned char * | ||
1160 | sg_scatg2virt(const struct scatterlist *sclp) | ||
1161 | { | ||
1162 | return (sclp && sclp->page) ? | ||
1163 | (unsigned char *) page_address(sclp->page) + sclp->offset : NULL; | ||
1164 | } | ||
1165 | |||
1166 | /* When startFinish==1 increments page counts for pages other than the | 1143 | /* When startFinish==1 increments page counts for pages other than the |
1167 | first of scatter gather elements obtained from __get_free_pages(). | 1144 | first of scatter gather elements obtained from alloc_pages(). |
1168 | When startFinish==0 decrements ... */ | 1145 | When startFinish==0 decrements ... */ |
1169 | static void | 1146 | static void |
1170 | sg_rb_correct4mmap(Sg_scatter_hold * rsv_schp, int startFinish) | 1147 | sg_rb_correct4mmap(Sg_scatter_hold * rsv_schp, int startFinish) |
1171 | { | 1148 | { |
1172 | void *page_ptr; | 1149 | struct scatterlist *sg = rsv_schp->buffer; |
1173 | struct page *page; | 1150 | struct page *page; |
1174 | int k, m; | 1151 | int k, m; |
1175 | 1152 | ||
1176 | SCSI_LOG_TIMEOUT(3, printk("sg_rb_correct4mmap: startFinish=%d, scatg=%d\n", | 1153 | SCSI_LOG_TIMEOUT(3, printk("sg_rb_correct4mmap: startFinish=%d, scatg=%d\n", |
1177 | startFinish, rsv_schp->k_use_sg)); | 1154 | startFinish, rsv_schp->k_use_sg)); |
1178 | /* N.B. correction _not_ applied to base page of each allocation */ | 1155 | /* N.B. correction _not_ applied to base page of each allocation */ |
1179 | if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */ | 1156 | for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) { |
1180 | struct scatterlist *sclp = rsv_schp->buffer; | 1157 | for (m = PAGE_SIZE; m < sg->length; m += PAGE_SIZE) { |
1181 | 1158 | page = sg->page; | |
1182 | for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sclp) { | ||
1183 | for (m = PAGE_SIZE; m < sclp->length; m += PAGE_SIZE) { | ||
1184 | page_ptr = sg_scatg2virt(sclp) + m; | ||
1185 | page = virt_to_page(page_ptr); | ||
1186 | if (startFinish) | ||
1187 | get_page(page); | ||
1188 | else { | ||
1189 | if (page_count(page) > 0) | ||
1190 | __put_page(page); | ||
1191 | } | ||
1192 | } | ||
1193 | } | ||
1194 | } else { /* reserve buffer is just a single allocation */ | ||
1195 | for (m = PAGE_SIZE; m < rsv_schp->bufflen; m += PAGE_SIZE) { | ||
1196 | page_ptr = (unsigned char *) rsv_schp->buffer + m; | ||
1197 | page = virt_to_page(page_ptr); | ||
1198 | if (startFinish) | 1159 | if (startFinish) |
1199 | get_page(page); | 1160 | get_page(page); |
1200 | else { | 1161 | else { |
@@ -1210,9 +1171,10 @@ sg_vma_nopage(struct vm_area_struct *vma, unsigned long addr, int *type) | |||
1210 | { | 1171 | { |
1211 | Sg_fd *sfp; | 1172 | Sg_fd *sfp; |
1212 | struct page *page = NOPAGE_SIGBUS; | 1173 | struct page *page = NOPAGE_SIGBUS; |
1213 | void *page_ptr = NULL; | 1174 | unsigned long offset, len, sa; |
1214 | unsigned long offset; | ||
1215 | Sg_scatter_hold *rsv_schp; | 1175 | Sg_scatter_hold *rsv_schp; |
1176 | struct scatterlist *sg; | ||
1177 | int k; | ||
1216 | 1178 | ||
1217 | if ((NULL == vma) || (!(sfp = (Sg_fd *) vma->vm_private_data))) | 1179 | if ((NULL == vma) || (!(sfp = (Sg_fd *) vma->vm_private_data))) |
1218 | return page; | 1180 | return page; |
@@ -1222,30 +1184,21 @@ sg_vma_nopage(struct vm_area_struct *vma, unsigned long addr, int *type) | |||
1222 | return page; | 1184 | return page; |
1223 | SCSI_LOG_TIMEOUT(3, printk("sg_vma_nopage: offset=%lu, scatg=%d\n", | 1185 | SCSI_LOG_TIMEOUT(3, printk("sg_vma_nopage: offset=%lu, scatg=%d\n", |
1224 | offset, rsv_schp->k_use_sg)); | 1186 | offset, rsv_schp->k_use_sg)); |
1225 | if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */ | 1187 | sg = rsv_schp->buffer; |
1226 | int k; | 1188 | sa = vma->vm_start; |
1227 | unsigned long sa = vma->vm_start; | 1189 | for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end); |
1228 | unsigned long len; | 1190 | ++k, ++sg) { |
1229 | struct scatterlist *sclp = rsv_schp->buffer; | 1191 | len = vma->vm_end - sa; |
1230 | 1192 | len = (len < sg->length) ? len : sg->length; | |
1231 | for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end); | 1193 | if (offset < len) { |
1232 | ++k, ++sclp) { | 1194 | page = sg->page; |
1233 | len = vma->vm_end - sa; | 1195 | get_page(page); /* increment page count */ |
1234 | len = (len < sclp->length) ? len : sclp->length; | 1196 | break; |
1235 | if (offset < len) { | ||
1236 | page_ptr = sg_scatg2virt(sclp) + offset; | ||
1237 | page = virt_to_page(page_ptr); | ||
1238 | get_page(page); /* increment page count */ | ||
1239 | break; | ||
1240 | } | ||
1241 | sa += len; | ||
1242 | offset -= len; | ||
1243 | } | 1197 | } |
1244 | } else { /* reserve buffer is just a single allocation */ | 1198 | sa += len; |
1245 | page_ptr = (unsigned char *) rsv_schp->buffer + offset; | 1199 | offset -= len; |
1246 | page = virt_to_page(page_ptr); | ||
1247 | get_page(page); /* increment page count */ | ||
1248 | } | 1200 | } |
1201 | |||
1249 | if (type) | 1202 | if (type) |
1250 | *type = VM_FAULT_MINOR; | 1203 | *type = VM_FAULT_MINOR; |
1251 | return page; | 1204 | return page; |
@@ -1259,8 +1212,10 @@ static int | |||
1259 | sg_mmap(struct file *filp, struct vm_area_struct *vma) | 1212 | sg_mmap(struct file *filp, struct vm_area_struct *vma) |
1260 | { | 1213 | { |
1261 | Sg_fd *sfp; | 1214 | Sg_fd *sfp; |
1262 | unsigned long req_sz; | 1215 | unsigned long req_sz, len, sa; |
1263 | Sg_scatter_hold *rsv_schp; | 1216 | Sg_scatter_hold *rsv_schp; |
1217 | int k; | ||
1218 | struct scatterlist *sg; | ||
1264 | 1219 | ||
1265 | if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data))) | 1220 | if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data))) |
1266 | return -ENXIO; | 1221 | return -ENXIO; |
@@ -1273,24 +1228,15 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma) | |||
1273 | if (req_sz > rsv_schp->bufflen) | 1228 | if (req_sz > rsv_schp->bufflen) |
1274 | return -ENOMEM; /* cannot map more than reserved buffer */ | 1229 | return -ENOMEM; /* cannot map more than reserved buffer */ |
1275 | 1230 | ||
1276 | if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */ | 1231 | sa = vma->vm_start; |
1277 | int k; | 1232 | sg = rsv_schp->buffer; |
1278 | unsigned long sa = vma->vm_start; | 1233 | for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end); |
1279 | unsigned long len; | 1234 | ++k, ++sg) { |
1280 | struct scatterlist *sclp = rsv_schp->buffer; | 1235 | len = vma->vm_end - sa; |
1281 | 1236 | len = (len < sg->length) ? len : sg->length; | |
1282 | for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end); | 1237 | sa += len; |
1283 | ++k, ++sclp) { | ||
1284 | if (0 != sclp->offset) | ||
1285 | return -EFAULT; /* non page aligned memory ?? */ | ||
1286 | len = vma->vm_end - sa; | ||
1287 | len = (len < sclp->length) ? len : sclp->length; | ||
1288 | sa += len; | ||
1289 | } | ||
1290 | } else { /* reserve buffer is just a single allocation */ | ||
1291 | if ((unsigned long) rsv_schp->buffer & (PAGE_SIZE - 1)) | ||
1292 | return -EFAULT; /* non page aligned memory ?? */ | ||
1293 | } | 1238 | } |
1239 | |||
1294 | if (0 == sfp->mmap_called) { | 1240 | if (0 == sfp->mmap_called) { |
1295 | sg_rb_correct4mmap(rsv_schp, 1); /* do only once per fd lifetime */ | 1241 | sg_rb_correct4mmap(rsv_schp, 1); /* do only once per fd lifetime */ |
1296 | sfp->mmap_called = 1; | 1242 | sfp->mmap_called = 1; |
@@ -1304,21 +1250,16 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma) | |||
1304 | /* This function is a "bottom half" handler that is called by the | 1250 | /* This function is a "bottom half" handler that is called by the |
1305 | * mid level when a command is completed (or has failed). */ | 1251 | * mid level when a command is completed (or has failed). */ |
1306 | static void | 1252 | static void |
1307 | sg_cmd_done(Scsi_Cmnd * SCpnt) | 1253 | sg_cmd_done(void *data, char *sense, int result, int resid) |
1308 | { | 1254 | { |
1309 | Scsi_Request *SRpnt = NULL; | 1255 | Sg_request *srp = data; |
1310 | Sg_device *sdp = NULL; | 1256 | Sg_device *sdp = NULL; |
1311 | Sg_fd *sfp; | 1257 | Sg_fd *sfp; |
1312 | Sg_request *srp = NULL; | ||
1313 | unsigned long iflags; | 1258 | unsigned long iflags; |
1314 | unsigned int ms; | 1259 | unsigned int ms; |
1315 | 1260 | ||
1316 | if (SCpnt && (SRpnt = SCpnt->sc_request)) | ||
1317 | srp = (Sg_request *) SRpnt->upper_private_data; | ||
1318 | if (NULL == srp) { | 1261 | if (NULL == srp) { |
1319 | printk(KERN_ERR "sg_cmd_done: NULL request\n"); | 1262 | printk(KERN_ERR "sg_cmd_done: NULL request\n"); |
1320 | if (SRpnt) | ||
1321 | scsi_release_request(SRpnt); | ||
1322 | return; | 1263 | return; |
1323 | } | 1264 | } |
1324 | sfp = srp->parentfp; | 1265 | sfp = srp->parentfp; |
@@ -1326,49 +1267,34 @@ sg_cmd_done(Scsi_Cmnd * SCpnt) | |||
1326 | sdp = sfp->parentdp; | 1267 | sdp = sfp->parentdp; |
1327 | if ((NULL == sdp) || sdp->detached) { | 1268 | if ((NULL == sdp) || sdp->detached) { |
1328 | printk(KERN_INFO "sg_cmd_done: device detached\n"); | 1269 | printk(KERN_INFO "sg_cmd_done: device detached\n"); |
1329 | scsi_release_request(SRpnt); | ||
1330 | return; | 1270 | return; |
1331 | } | 1271 | } |
1332 | 1272 | ||
1333 | /* First transfer ownership of data buffers to sg_device object. */ | ||
1334 | srp->data.k_use_sg = SRpnt->sr_use_sg; | ||
1335 | srp->data.sglist_len = SRpnt->sr_sglist_len; | ||
1336 | srp->data.bufflen = SRpnt->sr_bufflen; | ||
1337 | srp->data.buffer = SRpnt->sr_buffer; | ||
1338 | /* now clear out request structure */ | ||
1339 | SRpnt->sr_use_sg = 0; | ||
1340 | SRpnt->sr_sglist_len = 0; | ||
1341 | SRpnt->sr_bufflen = 0; | ||
1342 | SRpnt->sr_buffer = NULL; | ||
1343 | SRpnt->sr_underflow = 0; | ||
1344 | SRpnt->sr_request->rq_disk = NULL; /* "sg" _disowns_ request blk */ | ||
1345 | |||
1346 | srp->my_cmdp = NULL; | ||
1347 | 1273 | ||
1348 | SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n", | 1274 | SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n", |
1349 | sdp->disk->disk_name, srp->header.pack_id, (int) SRpnt->sr_result)); | 1275 | sdp->disk->disk_name, srp->header.pack_id, result)); |
1350 | srp->header.resid = SCpnt->resid; | 1276 | srp->header.resid = resid; |
1351 | ms = jiffies_to_msecs(jiffies); | 1277 | ms = jiffies_to_msecs(jiffies); |
1352 | srp->header.duration = (ms > srp->header.duration) ? | 1278 | srp->header.duration = (ms > srp->header.duration) ? |
1353 | (ms - srp->header.duration) : 0; | 1279 | (ms - srp->header.duration) : 0; |
1354 | if (0 != SRpnt->sr_result) { | 1280 | if (0 != result) { |
1355 | struct scsi_sense_hdr sshdr; | 1281 | struct scsi_sense_hdr sshdr; |
1356 | 1282 | ||
1357 | memcpy(srp->sense_b, SRpnt->sr_sense_buffer, | 1283 | memcpy(srp->sense_b, sense, sizeof (srp->sense_b)); |
1358 | sizeof (srp->sense_b)); | 1284 | srp->header.status = 0xff & result; |
1359 | srp->header.status = 0xff & SRpnt->sr_result; | 1285 | srp->header.masked_status = status_byte(result); |
1360 | srp->header.masked_status = status_byte(SRpnt->sr_result); | 1286 | srp->header.msg_status = msg_byte(result); |
1361 | srp->header.msg_status = msg_byte(SRpnt->sr_result); | 1287 | srp->header.host_status = host_byte(result); |
1362 | srp->header.host_status = host_byte(SRpnt->sr_result); | 1288 | srp->header.driver_status = driver_byte(result); |
1363 | srp->header.driver_status = driver_byte(SRpnt->sr_result); | ||
1364 | if ((sdp->sgdebug > 0) && | 1289 | if ((sdp->sgdebug > 0) && |
1365 | ((CHECK_CONDITION == srp->header.masked_status) || | 1290 | ((CHECK_CONDITION == srp->header.masked_status) || |
1366 | (COMMAND_TERMINATED == srp->header.masked_status))) | 1291 | (COMMAND_TERMINATED == srp->header.masked_status))) |
1367 | scsi_print_req_sense("sg_cmd_done", SRpnt); | 1292 | __scsi_print_sense("sg_cmd_done", sense, |
1293 | SCSI_SENSE_BUFFERSIZE); | ||
1368 | 1294 | ||
1369 | /* Following if statement is a patch supplied by Eric Youngdale */ | 1295 | /* Following if statement is a patch supplied by Eric Youngdale */ |
1370 | if (driver_byte(SRpnt->sr_result) != 0 | 1296 | if (driver_byte(result) != 0 |
1371 | && scsi_command_normalize_sense(SCpnt, &sshdr) | 1297 | && scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE, &sshdr) |
1372 | && !scsi_sense_is_deferred(&sshdr) | 1298 | && !scsi_sense_is_deferred(&sshdr) |
1373 | && sshdr.sense_key == UNIT_ATTENTION | 1299 | && sshdr.sense_key == UNIT_ATTENTION |
1374 | && sdp->device->removable) { | 1300 | && sdp->device->removable) { |
@@ -1379,8 +1305,6 @@ sg_cmd_done(Scsi_Cmnd * SCpnt) | |||
1379 | } | 1305 | } |
1380 | /* Rely on write phase to clean out srp status values, so no "else" */ | 1306 | /* Rely on write phase to clean out srp status values, so no "else" */ |
1381 | 1307 | ||
1382 | scsi_release_request(SRpnt); | ||
1383 | SRpnt = NULL; | ||
1384 | if (sfp->closed) { /* whoops this fd already released, cleanup */ | 1308 | if (sfp->closed) { /* whoops this fd already released, cleanup */ |
1385 | SCSI_LOG_TIMEOUT(1, printk("sg_cmd_done: already closed, freeing ...\n")); | 1309 | SCSI_LOG_TIMEOUT(1, printk("sg_cmd_done: already closed, freeing ...\n")); |
1386 | sg_finish_rem_req(srp); | 1310 | sg_finish_rem_req(srp); |
@@ -1431,6 +1355,7 @@ static int sg_sysfs_valid = 0; | |||
1431 | 1355 | ||
1432 | static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp) | 1356 | static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp) |
1433 | { | 1357 | { |
1358 | struct request_queue *q = scsidp->request_queue; | ||
1434 | Sg_device *sdp; | 1359 | Sg_device *sdp; |
1435 | unsigned long iflags; | 1360 | unsigned long iflags; |
1436 | void *old_sg_dev_arr = NULL; | 1361 | void *old_sg_dev_arr = NULL; |
@@ -1473,7 +1398,7 @@ static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp) | |||
1473 | sdp->disk = disk; | 1398 | sdp->disk = disk; |
1474 | sdp->device = scsidp; | 1399 | sdp->device = scsidp; |
1475 | init_waitqueue_head(&sdp->o_excl_wait); | 1400 | init_waitqueue_head(&sdp->o_excl_wait); |
1476 | sdp->sg_tablesize = scsidp->host ? scsidp->host->sg_tablesize : 0; | 1401 | sdp->sg_tablesize = min(q->max_hw_segments, q->max_phys_segments); |
1477 | 1402 | ||
1478 | sg_nr_dev++; | 1403 | sg_nr_dev++; |
1479 | sg_dev_arr[k] = sdp; | 1404 | sg_dev_arr[k] = sdp; |
@@ -1753,36 +1678,35 @@ sg_finish_rem_req(Sg_request * srp) | |||
1753 | static int | 1678 | static int |
1754 | sg_build_sgat(Sg_scatter_hold * schp, const Sg_fd * sfp, int tablesize) | 1679 | sg_build_sgat(Sg_scatter_hold * schp, const Sg_fd * sfp, int tablesize) |
1755 | { | 1680 | { |
1756 | int ret_sz; | 1681 | int sg_bufflen = tablesize * sizeof(struct scatterlist); |
1757 | int elem_sz = sizeof (struct scatterlist); | 1682 | unsigned int gfp_flags = GFP_ATOMIC | __GFP_NOWARN; |
1758 | int sg_bufflen = tablesize * elem_sz; | ||
1759 | int mx_sc_elems = tablesize; | ||
1760 | 1683 | ||
1761 | schp->buffer = sg_page_malloc(sg_bufflen, sfp->low_dma, &ret_sz); | 1684 | /* |
1685 | * TODO: test without low_dma, we should not need it since | ||
1686 | * the block layer will bounce the buffer for us | ||
1687 | * | ||
1688 | * XXX(hch): we shouldn't need GFP_DMA for the actual S/G list. | ||
1689 | */ | ||
1690 | if (sfp->low_dma) | ||
1691 | gfp_flags |= GFP_DMA; | ||
1692 | schp->buffer = kzalloc(sg_bufflen, gfp_flags); | ||
1762 | if (!schp->buffer) | 1693 | if (!schp->buffer) |
1763 | return -ENOMEM; | 1694 | return -ENOMEM; |
1764 | else if (ret_sz != sg_bufflen) { | ||
1765 | sg_bufflen = ret_sz; | ||
1766 | mx_sc_elems = sg_bufflen / elem_sz; | ||
1767 | } | ||
1768 | schp->sglist_len = sg_bufflen; | 1695 | schp->sglist_len = sg_bufflen; |
1769 | memset(schp->buffer, 0, sg_bufflen); | 1696 | return tablesize; /* number of scat_gath elements allocated */ |
1770 | return mx_sc_elems; /* number of scat_gath elements allocated */ | ||
1771 | } | 1697 | } |
1772 | 1698 | ||
1773 | #ifdef SG_ALLOW_DIO_CODE | 1699 | #ifdef SG_ALLOW_DIO_CODE |
1774 | /* vvvvvvvv following code borrowed from st driver's direct IO vvvvvvvvv */ | 1700 | /* vvvvvvvv following code borrowed from st driver's direct IO vvvvvvvvv */ |
1775 | /* hopefully this generic code will moved to a library */ | 1701 | /* TODO: hopefully we can use the generic block layer code */ |
1776 | 1702 | ||
1777 | /* Pin down user pages and put them into a scatter gather list. Returns <= 0 if | 1703 | /* Pin down user pages and put them into a scatter gather list. Returns <= 0 if |
1778 | - mapping of all pages not successful | 1704 | - mapping of all pages not successful |
1779 | - any page is above max_pfn | ||
1780 | (i.e., either completely successful or fails) | 1705 | (i.e., either completely successful or fails) |
1781 | */ | 1706 | */ |
1782 | static int | 1707 | static int |
1783 | st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, | 1708 | st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, |
1784 | unsigned long uaddr, size_t count, int rw, | 1709 | unsigned long uaddr, size_t count, int rw) |
1785 | unsigned long max_pfn) | ||
1786 | { | 1710 | { |
1787 | unsigned long end = (uaddr + count + PAGE_SIZE - 1) >> PAGE_SHIFT; | 1711 | unsigned long end = (uaddr + count + PAGE_SIZE - 1) >> PAGE_SHIFT; |
1788 | unsigned long start = uaddr >> PAGE_SHIFT; | 1712 | unsigned long start = uaddr >> PAGE_SHIFT; |
@@ -1828,21 +1752,17 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, | |||
1828 | * probably wrong function for rw==WRITE | 1752 | * probably wrong function for rw==WRITE |
1829 | */ | 1753 | */ |
1830 | flush_dcache_page(pages[i]); | 1754 | flush_dcache_page(pages[i]); |
1831 | if (page_to_pfn(pages[i]) > max_pfn) | ||
1832 | goto out_unlock; | ||
1833 | /* ?? Is locking needed? I don't think so */ | 1755 | /* ?? Is locking needed? I don't think so */ |
1834 | /* if (TestSetPageLocked(pages[i])) | 1756 | /* if (TestSetPageLocked(pages[i])) |
1835 | goto out_unlock; */ | 1757 | goto out_unlock; */ |
1836 | } | 1758 | } |
1837 | 1759 | ||
1838 | /* Populate the scatter/gather list */ | 1760 | sgl[0].page = pages[0]; |
1839 | sgl[0].page = pages[0]; | ||
1840 | sgl[0].offset = uaddr & ~PAGE_MASK; | 1761 | sgl[0].offset = uaddr & ~PAGE_MASK; |
1841 | if (nr_pages > 1) { | 1762 | if (nr_pages > 1) { |
1842 | sgl[0].length = PAGE_SIZE - sgl[0].offset; | 1763 | sgl[0].length = PAGE_SIZE - sgl[0].offset; |
1843 | count -= sgl[0].length; | 1764 | count -= sgl[0].length; |
1844 | for (i=1; i < nr_pages ; i++) { | 1765 | for (i=1; i < nr_pages ; i++) { |
1845 | sgl[i].offset = 0; | ||
1846 | sgl[i].page = pages[i]; | 1766 | sgl[i].page = pages[i]; |
1847 | sgl[i].length = count < PAGE_SIZE ? count : PAGE_SIZE; | 1767 | sgl[i].length = count < PAGE_SIZE ? count : PAGE_SIZE; |
1848 | count -= PAGE_SIZE; | 1768 | count -= PAGE_SIZE; |
@@ -1855,10 +1775,6 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, | |||
1855 | kfree(pages); | 1775 | kfree(pages); |
1856 | return nr_pages; | 1776 | return nr_pages; |
1857 | 1777 | ||
1858 | out_unlock: | ||
1859 | /* for (j=0; j < i; j++) | ||
1860 | unlock_page(pages[j]); */ | ||
1861 | res = 0; | ||
1862 | out_unmap: | 1778 | out_unmap: |
1863 | if (res > 0) { | 1779 | if (res > 0) { |
1864 | for (j=0; j < res; j++) | 1780 | for (j=0; j < res; j++) |
@@ -1904,20 +1820,20 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len) | |||
1904 | sg_io_hdr_t *hp = &srp->header; | 1820 | sg_io_hdr_t *hp = &srp->header; |
1905 | Sg_scatter_hold *schp = &srp->data; | 1821 | Sg_scatter_hold *schp = &srp->data; |
1906 | int sg_tablesize = sfp->parentdp->sg_tablesize; | 1822 | int sg_tablesize = sfp->parentdp->sg_tablesize; |
1907 | struct scatterlist *sgl; | ||
1908 | int mx_sc_elems, res; | 1823 | int mx_sc_elems, res; |
1909 | struct scsi_device *sdev = sfp->parentdp->device; | 1824 | struct scsi_device *sdev = sfp->parentdp->device; |
1910 | 1825 | ||
1911 | if (((unsigned long)hp->dxferp & | 1826 | if (((unsigned long)hp->dxferp & |
1912 | queue_dma_alignment(sdev->request_queue)) != 0) | 1827 | queue_dma_alignment(sdev->request_queue)) != 0) |
1913 | return 1; | 1828 | return 1; |
1829 | |||
1914 | mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); | 1830 | mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); |
1915 | if (mx_sc_elems <= 0) { | 1831 | if (mx_sc_elems <= 0) { |
1916 | return 1; | 1832 | return 1; |
1917 | } | 1833 | } |
1918 | sgl = (struct scatterlist *)schp->buffer; | 1834 | res = st_map_user_pages(schp->buffer, mx_sc_elems, |
1919 | res = st_map_user_pages(sgl, mx_sc_elems, (unsigned long)hp->dxferp, dxfer_len, | 1835 | (unsigned long)hp->dxferp, dxfer_len, |
1920 | (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0, ULONG_MAX); | 1836 | (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0); |
1921 | if (res <= 0) | 1837 | if (res <= 0) |
1922 | return 1; | 1838 | return 1; |
1923 | schp->k_use_sg = res; | 1839 | schp->k_use_sg = res; |
@@ -1932,9 +1848,11 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len) | |||
1932 | static int | 1848 | static int |
1933 | sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size) | 1849 | sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size) |
1934 | { | 1850 | { |
1935 | int ret_sz; | 1851 | struct scatterlist *sg; |
1852 | int ret_sz = 0, k, rem_sz, num, mx_sc_elems; | ||
1853 | int sg_tablesize = sfp->parentdp->sg_tablesize; | ||
1936 | int blk_size = buff_size; | 1854 | int blk_size = buff_size; |
1937 | unsigned char *p = NULL; | 1855 | struct page *p = NULL; |
1938 | 1856 | ||
1939 | if ((blk_size < 0) || (!sfp)) | 1857 | if ((blk_size < 0) || (!sfp)) |
1940 | return -EFAULT; | 1858 | return -EFAULT; |
@@ -1944,59 +1862,35 @@ sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size) | |||
1944 | blk_size = (blk_size + SG_SECTOR_MSK) & (~SG_SECTOR_MSK); | 1862 | blk_size = (blk_size + SG_SECTOR_MSK) & (~SG_SECTOR_MSK); |
1945 | SCSI_LOG_TIMEOUT(4, printk("sg_build_indirect: buff_size=%d, blk_size=%d\n", | 1863 | SCSI_LOG_TIMEOUT(4, printk("sg_build_indirect: buff_size=%d, blk_size=%d\n", |
1946 | buff_size, blk_size)); | 1864 | buff_size, blk_size)); |
1947 | if (blk_size <= SG_SCATTER_SZ) { | 1865 | |
1948 | p = sg_page_malloc(blk_size, sfp->low_dma, &ret_sz); | 1866 | /* N.B. ret_sz carried into this block ... */ |
1949 | if (!p) | 1867 | mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); |
1950 | return -ENOMEM; | 1868 | if (mx_sc_elems < 0) |
1951 | if (blk_size == ret_sz) { /* got it on the first attempt */ | 1869 | return mx_sc_elems; /* most likely -ENOMEM */ |
1952 | schp->k_use_sg = 0; | 1870 | |
1953 | schp->buffer = p; | 1871 | for (k = 0, sg = schp->buffer, rem_sz = blk_size; |
1954 | schp->bufflen = blk_size; | 1872 | (rem_sz > 0) && (k < mx_sc_elems); |
1955 | schp->b_malloc_len = blk_size; | 1873 | ++k, rem_sz -= ret_sz, ++sg) { |
1956 | return 0; | 1874 | |
1957 | } | 1875 | num = (rem_sz > SG_SCATTER_SZ) ? SG_SCATTER_SZ : rem_sz; |
1958 | } else { | 1876 | p = sg_page_malloc(num, sfp->low_dma, &ret_sz); |
1959 | p = sg_page_malloc(SG_SCATTER_SZ, sfp->low_dma, &ret_sz); | ||
1960 | if (!p) | 1877 | if (!p) |
1961 | return -ENOMEM; | 1878 | return -ENOMEM; |
1962 | } | 1879 | |
1963 | /* Want some local declarations, so start new block ... */ | 1880 | sg->page = p; |
1964 | { /* lets try and build a scatter gather list */ | 1881 | sg->length = ret_sz; |
1965 | struct scatterlist *sclp; | 1882 | |
1966 | int k, rem_sz, num; | 1883 | SCSI_LOG_TIMEOUT(5, printk("sg_build_build: k=%d, a=0x%p, len=%d\n", |
1967 | int mx_sc_elems; | 1884 | k, p, ret_sz)); |
1968 | int sg_tablesize = sfp->parentdp->sg_tablesize; | 1885 | } /* end of for loop */ |
1969 | int first = 1; | 1886 | |
1970 | 1887 | schp->k_use_sg = k; | |
1971 | /* N.B. ret_sz carried into this block ... */ | 1888 | SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", k, rem_sz)); |
1972 | mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); | 1889 | |
1973 | if (mx_sc_elems < 0) | 1890 | schp->bufflen = blk_size; |
1974 | return mx_sc_elems; /* most likely -ENOMEM */ | 1891 | if (rem_sz > 0) /* must have failed */ |
1975 | 1892 | return -ENOMEM; | |
1976 | for (k = 0, sclp = schp->buffer, rem_sz = blk_size; | 1893 | |
1977 | (rem_sz > 0) && (k < mx_sc_elems); | ||
1978 | ++k, rem_sz -= ret_sz, ++sclp) { | ||
1979 | if (first) | ||
1980 | first = 0; | ||
1981 | else { | ||
1982 | num = | ||
1983 | (rem_sz > | ||
1984 | SG_SCATTER_SZ) ? SG_SCATTER_SZ : rem_sz; | ||
1985 | p = sg_page_malloc(num, sfp->low_dma, &ret_sz); | ||
1986 | if (!p) | ||
1987 | break; | ||
1988 | } | ||
1989 | sg_set_buf(sclp, p, ret_sz); | ||
1990 | |||
1991 | SCSI_LOG_TIMEOUT(5, printk("sg_build_build: k=%d, a=0x%p, len=%d\n", | ||
1992 | k, sg_scatg2virt(sclp), ret_sz)); | ||
1993 | } /* end of for loop */ | ||
1994 | schp->k_use_sg = k; | ||
1995 | SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", k, rem_sz)); | ||
1996 | schp->bufflen = blk_size; | ||
1997 | if (rem_sz > 0) /* must have failed */ | ||
1998 | return -ENOMEM; | ||
1999 | } | ||
2000 | return 0; | 1894 | return 0; |
2001 | } | 1895 | } |
2002 | 1896 | ||
@@ -2005,6 +1899,7 @@ sg_write_xfer(Sg_request * srp) | |||
2005 | { | 1899 | { |
2006 | sg_io_hdr_t *hp = &srp->header; | 1900 | sg_io_hdr_t *hp = &srp->header; |
2007 | Sg_scatter_hold *schp = &srp->data; | 1901 | Sg_scatter_hold *schp = &srp->data; |
1902 | struct scatterlist *sg = schp->buffer; | ||
2008 | int num_xfer = 0; | 1903 | int num_xfer = 0; |
2009 | int j, k, onum, usglen, ksglen, res; | 1904 | int j, k, onum, usglen, ksglen, res; |
2010 | int iovec_count = (int) hp->iovec_count; | 1905 | int iovec_count = (int) hp->iovec_count; |
@@ -2033,63 +1928,45 @@ sg_write_xfer(Sg_request * srp) | |||
2033 | } else | 1928 | } else |
2034 | onum = 1; | 1929 | onum = 1; |
2035 | 1930 | ||
2036 | if (0 == schp->k_use_sg) { /* kernel has single buffer */ | 1931 | ksglen = sg->length; |
2037 | for (j = 0, p = schp->buffer; j < onum; ++j) { | 1932 | p = page_address(sg->page); |
2038 | res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up); | 1933 | for (j = 0, k = 0; j < onum; ++j) { |
2039 | if (res) | 1934 | res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up); |
2040 | return res; | 1935 | if (res) |
2041 | usglen = (num_xfer > usglen) ? usglen : num_xfer; | 1936 | return res; |
2042 | if (__copy_from_user(p, up, usglen)) | 1937 | |
2043 | return -EFAULT; | 1938 | for (; p; ++sg, ksglen = sg->length, |
2044 | p += usglen; | 1939 | p = page_address(sg->page)) { |
2045 | num_xfer -= usglen; | 1940 | if (usglen <= 0) |
2046 | if (num_xfer <= 0) | 1941 | break; |
2047 | return 0; | 1942 | if (ksglen > usglen) { |
2048 | } | 1943 | if (usglen >= num_xfer) { |
2049 | } else { /* kernel using scatter gather list */ | 1944 | if (__copy_from_user(p, up, num_xfer)) |
2050 | struct scatterlist *sclp = (struct scatterlist *) schp->buffer; | ||
2051 | |||
2052 | ksglen = (int) sclp->length; | ||
2053 | p = sg_scatg2virt(sclp); | ||
2054 | for (j = 0, k = 0; j < onum; ++j) { | ||
2055 | res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up); | ||
2056 | if (res) | ||
2057 | return res; | ||
2058 | |||
2059 | for (; p; ++sclp, ksglen = (int) sclp->length, | ||
2060 | p = sg_scatg2virt(sclp)) { | ||
2061 | if (usglen <= 0) | ||
2062 | break; | ||
2063 | if (ksglen > usglen) { | ||
2064 | if (usglen >= num_xfer) { | ||
2065 | if (__copy_from_user | ||
2066 | (p, up, num_xfer)) | ||
2067 | return -EFAULT; | ||
2068 | return 0; | ||
2069 | } | ||
2070 | if (__copy_from_user(p, up, usglen)) | ||
2071 | return -EFAULT; | ||
2072 | p += usglen; | ||
2073 | ksglen -= usglen; | ||
2074 | break; | ||
2075 | } else { | ||
2076 | if (ksglen >= num_xfer) { | ||
2077 | if (__copy_from_user | ||
2078 | (p, up, num_xfer)) | ||
2079 | return -EFAULT; | ||
2080 | return 0; | ||
2081 | } | ||
2082 | if (__copy_from_user(p, up, ksglen)) | ||
2083 | return -EFAULT; | 1945 | return -EFAULT; |
2084 | up += ksglen; | 1946 | return 0; |
2085 | usglen -= ksglen; | ||
2086 | } | 1947 | } |
2087 | ++k; | 1948 | if (__copy_from_user(p, up, usglen)) |
2088 | if (k >= schp->k_use_sg) | 1949 | return -EFAULT; |
1950 | p += usglen; | ||
1951 | ksglen -= usglen; | ||
1952 | break; | ||
1953 | } else { | ||
1954 | if (ksglen >= num_xfer) { | ||
1955 | if (__copy_from_user(p, up, num_xfer)) | ||
1956 | return -EFAULT; | ||
2089 | return 0; | 1957 | return 0; |
1958 | } | ||
1959 | if (__copy_from_user(p, up, ksglen)) | ||
1960 | return -EFAULT; | ||
1961 | up += ksglen; | ||
1962 | usglen -= ksglen; | ||
2090 | } | 1963 | } |
1964 | ++k; | ||
1965 | if (k >= schp->k_use_sg) | ||
1966 | return 0; | ||
2091 | } | 1967 | } |
2092 | } | 1968 | } |
1969 | |||
2093 | return 0; | 1970 | return 0; |
2094 | } | 1971 | } |
2095 | 1972 | ||
@@ -2127,29 +2004,25 @@ sg_remove_scat(Sg_scatter_hold * schp) | |||
2127 | { | 2004 | { |
2128 | SCSI_LOG_TIMEOUT(4, printk("sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg)); | 2005 | SCSI_LOG_TIMEOUT(4, printk("sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg)); |
2129 | if (schp->buffer && (schp->sglist_len > 0)) { | 2006 | if (schp->buffer && (schp->sglist_len > 0)) { |
2130 | struct scatterlist *sclp = (struct scatterlist *) schp->buffer; | 2007 | struct scatterlist *sg = schp->buffer; |
2131 | 2008 | ||
2132 | if (schp->dio_in_use) { | 2009 | if (schp->dio_in_use) { |
2133 | #ifdef SG_ALLOW_DIO_CODE | 2010 | #ifdef SG_ALLOW_DIO_CODE |
2134 | st_unmap_user_pages(sclp, schp->k_use_sg, TRUE); | 2011 | st_unmap_user_pages(sg, schp->k_use_sg, TRUE); |
2135 | #endif | 2012 | #endif |
2136 | } else { | 2013 | } else { |
2137 | int k; | 2014 | int k; |
2138 | 2015 | ||
2139 | for (k = 0; (k < schp->k_use_sg) && sg_scatg2virt(sclp); | 2016 | for (k = 0; (k < schp->k_use_sg) && sg->page; |
2140 | ++k, ++sclp) { | 2017 | ++k, ++sg) { |
2141 | SCSI_LOG_TIMEOUT(5, printk( | 2018 | SCSI_LOG_TIMEOUT(5, printk( |
2142 | "sg_remove_scat: k=%d, a=0x%p, len=%d\n", | 2019 | "sg_remove_scat: k=%d, a=0x%p, len=%d\n", |
2143 | k, sg_scatg2virt(sclp), sclp->length)); | 2020 | k, sg->page, sg->length)); |
2144 | sg_page_free(sg_scatg2virt(sclp), sclp->length); | 2021 | sg_page_free(sg->page, sg->length); |
2145 | sclp->page = NULL; | ||
2146 | sclp->offset = 0; | ||
2147 | sclp->length = 0; | ||
2148 | } | 2022 | } |
2149 | } | 2023 | } |
2150 | sg_page_free(schp->buffer, schp->sglist_len); | 2024 | kfree(schp->buffer); |
2151 | } else if (schp->buffer) | 2025 | } |
2152 | sg_page_free(schp->buffer, schp->b_malloc_len); | ||
2153 | memset(schp, 0, sizeof (*schp)); | 2026 | memset(schp, 0, sizeof (*schp)); |
2154 | } | 2027 | } |
2155 | 2028 | ||
@@ -2158,6 +2031,7 @@ sg_read_xfer(Sg_request * srp) | |||
2158 | { | 2031 | { |
2159 | sg_io_hdr_t *hp = &srp->header; | 2032 | sg_io_hdr_t *hp = &srp->header; |
2160 | Sg_scatter_hold *schp = &srp->data; | 2033 | Sg_scatter_hold *schp = &srp->data; |
2034 | struct scatterlist *sg = schp->buffer; | ||
2161 | int num_xfer = 0; | 2035 | int num_xfer = 0; |
2162 | int j, k, onum, usglen, ksglen, res; | 2036 | int j, k, onum, usglen, ksglen, res; |
2163 | int iovec_count = (int) hp->iovec_count; | 2037 | int iovec_count = (int) hp->iovec_count; |
@@ -2186,63 +2060,45 @@ sg_read_xfer(Sg_request * srp) | |||
2186 | } else | 2060 | } else |
2187 | onum = 1; | 2061 | onum = 1; |
2188 | 2062 | ||
2189 | if (0 == schp->k_use_sg) { /* kernel has single buffer */ | 2063 | p = page_address(sg->page); |
2190 | for (j = 0, p = schp->buffer; j < onum; ++j) { | 2064 | ksglen = sg->length; |
2191 | res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up); | 2065 | for (j = 0, k = 0; j < onum; ++j) { |
2192 | if (res) | 2066 | res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up); |
2193 | return res; | 2067 | if (res) |
2194 | usglen = (num_xfer > usglen) ? usglen : num_xfer; | 2068 | return res; |
2195 | if (__copy_to_user(up, p, usglen)) | 2069 | |
2196 | return -EFAULT; | 2070 | for (; p; ++sg, ksglen = sg->length, |
2197 | p += usglen; | 2071 | p = page_address(sg->page)) { |
2198 | num_xfer -= usglen; | 2072 | if (usglen <= 0) |
2199 | if (num_xfer <= 0) | 2073 | break; |
2200 | return 0; | 2074 | if (ksglen > usglen) { |
2201 | } | 2075 | if (usglen >= num_xfer) { |
2202 | } else { /* kernel using scatter gather list */ | 2076 | if (__copy_to_user(up, p, num_xfer)) |
2203 | struct scatterlist *sclp = (struct scatterlist *) schp->buffer; | ||
2204 | |||
2205 | ksglen = (int) sclp->length; | ||
2206 | p = sg_scatg2virt(sclp); | ||
2207 | for (j = 0, k = 0; j < onum; ++j) { | ||
2208 | res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up); | ||
2209 | if (res) | ||
2210 | return res; | ||
2211 | |||
2212 | for (; p; ++sclp, ksglen = (int) sclp->length, | ||
2213 | p = sg_scatg2virt(sclp)) { | ||
2214 | if (usglen <= 0) | ||
2215 | break; | ||
2216 | if (ksglen > usglen) { | ||
2217 | if (usglen >= num_xfer) { | ||
2218 | if (__copy_to_user | ||
2219 | (up, p, num_xfer)) | ||
2220 | return -EFAULT; | ||
2221 | return 0; | ||
2222 | } | ||
2223 | if (__copy_to_user(up, p, usglen)) | ||
2224 | return -EFAULT; | ||
2225 | p += usglen; | ||
2226 | ksglen -= usglen; | ||
2227 | break; | ||
2228 | } else { | ||
2229 | if (ksglen >= num_xfer) { | ||
2230 | if (__copy_to_user | ||
2231 | (up, p, num_xfer)) | ||
2232 | return -EFAULT; | ||
2233 | return 0; | ||
2234 | } | ||
2235 | if (__copy_to_user(up, p, ksglen)) | ||
2236 | return -EFAULT; | 2077 | return -EFAULT; |
2237 | up += ksglen; | 2078 | return 0; |
2238 | usglen -= ksglen; | ||
2239 | } | 2079 | } |
2240 | ++k; | 2080 | if (__copy_to_user(up, p, usglen)) |
2241 | if (k >= schp->k_use_sg) | 2081 | return -EFAULT; |
2082 | p += usglen; | ||
2083 | ksglen -= usglen; | ||
2084 | break; | ||
2085 | } else { | ||
2086 | if (ksglen >= num_xfer) { | ||
2087 | if (__copy_to_user(up, p, num_xfer)) | ||
2088 | return -EFAULT; | ||
2242 | return 0; | 2089 | return 0; |
2090 | } | ||
2091 | if (__copy_to_user(up, p, ksglen)) | ||
2092 | return -EFAULT; | ||
2093 | up += ksglen; | ||
2094 | usglen -= ksglen; | ||
2243 | } | 2095 | } |
2096 | ++k; | ||
2097 | if (k >= schp->k_use_sg) | ||
2098 | return 0; | ||
2244 | } | 2099 | } |
2245 | } | 2100 | } |
2101 | |||
2246 | return 0; | 2102 | return 0; |
2247 | } | 2103 | } |
2248 | 2104 | ||
@@ -2250,37 +2106,32 @@ static int | |||
2250 | sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer) | 2106 | sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer) |
2251 | { | 2107 | { |
2252 | Sg_scatter_hold *schp = &srp->data; | 2108 | Sg_scatter_hold *schp = &srp->data; |
2109 | struct scatterlist *sg = schp->buffer; | ||
2110 | int k, num; | ||
2253 | 2111 | ||
2254 | SCSI_LOG_TIMEOUT(4, printk("sg_read_oxfer: num_read_xfer=%d\n", | 2112 | SCSI_LOG_TIMEOUT(4, printk("sg_read_oxfer: num_read_xfer=%d\n", |
2255 | num_read_xfer)); | 2113 | num_read_xfer)); |
2256 | if ((!outp) || (num_read_xfer <= 0)) | 2114 | if ((!outp) || (num_read_xfer <= 0)) |
2257 | return 0; | 2115 | return 0; |
2258 | if (schp->k_use_sg > 0) { | 2116 | |
2259 | int k, num; | 2117 | for (k = 0; (k < schp->k_use_sg) && sg->page; ++k, ++sg) { |
2260 | struct scatterlist *sclp = (struct scatterlist *) schp->buffer; | 2118 | num = sg->length; |
2261 | 2119 | if (num > num_read_xfer) { | |
2262 | for (k = 0; (k < schp->k_use_sg) && sg_scatg2virt(sclp); | 2120 | if (__copy_to_user(outp, page_address(sg->page), |
2263 | ++k, ++sclp) { | 2121 | num_read_xfer)) |
2264 | num = (int) sclp->length; | 2122 | return -EFAULT; |
2265 | if (num > num_read_xfer) { | 2123 | break; |
2266 | if (__copy_to_user | 2124 | } else { |
2267 | (outp, sg_scatg2virt(sclp), num_read_xfer)) | 2125 | if (__copy_to_user(outp, page_address(sg->page), |
2268 | return -EFAULT; | 2126 | num)) |
2127 | return -EFAULT; | ||
2128 | num_read_xfer -= num; | ||
2129 | if (num_read_xfer <= 0) | ||
2269 | break; | 2130 | break; |
2270 | } else { | 2131 | outp += num; |
2271 | if (__copy_to_user | ||
2272 | (outp, sg_scatg2virt(sclp), num)) | ||
2273 | return -EFAULT; | ||
2274 | num_read_xfer -= num; | ||
2275 | if (num_read_xfer <= 0) | ||
2276 | break; | ||
2277 | outp += num; | ||
2278 | } | ||
2279 | } | 2132 | } |
2280 | } else { | ||
2281 | if (__copy_to_user(outp, schp->buffer, num_read_xfer)) | ||
2282 | return -EFAULT; | ||
2283 | } | 2133 | } |
2134 | |||
2284 | return 0; | 2135 | return 0; |
2285 | } | 2136 | } |
2286 | 2137 | ||
@@ -2306,44 +2157,31 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size) | |||
2306 | { | 2157 | { |
2307 | Sg_scatter_hold *req_schp = &srp->data; | 2158 | Sg_scatter_hold *req_schp = &srp->data; |
2308 | Sg_scatter_hold *rsv_schp = &sfp->reserve; | 2159 | Sg_scatter_hold *rsv_schp = &sfp->reserve; |
2160 | struct scatterlist *sg = rsv_schp->buffer; | ||
2161 | int k, num, rem; | ||
2309 | 2162 | ||
2310 | srp->res_used = 1; | 2163 | srp->res_used = 1; |
2311 | SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); | 2164 | SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); |
2312 | size = (size + 1) & (~1); /* round to even for aha1542 */ | 2165 | rem = size = (size + 1) & (~1); /* round to even for aha1542 */ |
2313 | if (rsv_schp->k_use_sg > 0) { | 2166 | |
2314 | int k, num; | 2167 | for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) { |
2315 | int rem = size; | 2168 | num = sg->length; |
2316 | struct scatterlist *sclp = | 2169 | if (rem <= num) { |
2317 | (struct scatterlist *) rsv_schp->buffer; | 2170 | sfp->save_scat_len = num; |
2318 | 2171 | sg->length = rem; | |
2319 | for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sclp) { | 2172 | req_schp->k_use_sg = k + 1; |
2320 | num = (int) sclp->length; | 2173 | req_schp->sglist_len = rsv_schp->sglist_len; |
2321 | if (rem <= num) { | 2174 | req_schp->buffer = rsv_schp->buffer; |
2322 | if (0 == k) { | 2175 | |
2323 | req_schp->k_use_sg = 0; | 2176 | req_schp->bufflen = size; |
2324 | req_schp->buffer = sg_scatg2virt(sclp); | 2177 | req_schp->b_malloc_len = rsv_schp->b_malloc_len; |
2325 | } else { | 2178 | break; |
2326 | sfp->save_scat_len = num; | 2179 | } else |
2327 | sclp->length = (unsigned) rem; | 2180 | rem -= num; |
2328 | req_schp->k_use_sg = k + 1; | ||
2329 | req_schp->sglist_len = | ||
2330 | rsv_schp->sglist_len; | ||
2331 | req_schp->buffer = rsv_schp->buffer; | ||
2332 | } | ||
2333 | req_schp->bufflen = size; | ||
2334 | req_schp->b_malloc_len = rsv_schp->b_malloc_len; | ||
2335 | break; | ||
2336 | } else | ||
2337 | rem -= num; | ||
2338 | } | ||
2339 | if (k >= rsv_schp->k_use_sg) | ||
2340 | SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n")); | ||
2341 | } else { | ||
2342 | req_schp->k_use_sg = 0; | ||
2343 | req_schp->bufflen = size; | ||
2344 | req_schp->buffer = rsv_schp->buffer; | ||
2345 | req_schp->b_malloc_len = rsv_schp->b_malloc_len; | ||
2346 | } | 2181 | } |
2182 | |||
2183 | if (k >= rsv_schp->k_use_sg) | ||
2184 | SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n")); | ||
2347 | } | 2185 | } |
2348 | 2186 | ||
2349 | static void | 2187 | static void |
@@ -2355,11 +2193,10 @@ sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp) | |||
2355 | SCSI_LOG_TIMEOUT(4, printk("sg_unlink_reserve: req->k_use_sg=%d\n", | 2193 | SCSI_LOG_TIMEOUT(4, printk("sg_unlink_reserve: req->k_use_sg=%d\n", |
2356 | (int) req_schp->k_use_sg)); | 2194 | (int) req_schp->k_use_sg)); |
2357 | if ((rsv_schp->k_use_sg > 0) && (req_schp->k_use_sg > 0)) { | 2195 | if ((rsv_schp->k_use_sg > 0) && (req_schp->k_use_sg > 0)) { |
2358 | struct scatterlist *sclp = | 2196 | struct scatterlist *sg = rsv_schp->buffer; |
2359 | (struct scatterlist *) rsv_schp->buffer; | ||
2360 | 2197 | ||
2361 | if (sfp->save_scat_len > 0) | 2198 | if (sfp->save_scat_len > 0) |
2362 | (sclp + (req_schp->k_use_sg - 1))->length = | 2199 | (sg + (req_schp->k_use_sg - 1))->length = |
2363 | (unsigned) sfp->save_scat_len; | 2200 | (unsigned) sfp->save_scat_len; |
2364 | else | 2201 | else |
2365 | SCSI_LOG_TIMEOUT(1, printk ("sg_unlink_reserve: BAD save_scat_len\n")); | 2202 | SCSI_LOG_TIMEOUT(1, printk ("sg_unlink_reserve: BAD save_scat_len\n")); |
@@ -2445,7 +2282,6 @@ sg_add_request(Sg_fd * sfp) | |||
2445 | if (resp) { | 2282 | if (resp) { |
2446 | resp->nextrp = NULL; | 2283 | resp->nextrp = NULL; |
2447 | resp->header.duration = jiffies_to_msecs(jiffies); | 2284 | resp->header.duration = jiffies_to_msecs(jiffies); |
2448 | resp->my_cmdp = NULL; | ||
2449 | } | 2285 | } |
2450 | write_unlock_irqrestore(&sfp->rq_list_lock, iflags); | 2286 | write_unlock_irqrestore(&sfp->rq_list_lock, iflags); |
2451 | return resp; | 2287 | return resp; |
@@ -2463,8 +2299,6 @@ sg_remove_request(Sg_fd * sfp, Sg_request * srp) | |||
2463 | if ((!sfp) || (!srp) || (!sfp->headrp)) | 2299 | if ((!sfp) || (!srp) || (!sfp->headrp)) |
2464 | return res; | 2300 | return res; |
2465 | write_lock_irqsave(&sfp->rq_list_lock, iflags); | 2301 | write_lock_irqsave(&sfp->rq_list_lock, iflags); |
2466 | if (srp->my_cmdp) | ||
2467 | srp->my_cmdp->upper_private_data = NULL; | ||
2468 | prev_rp = sfp->headrp; | 2302 | prev_rp = sfp->headrp; |
2469 | if (srp == prev_rp) { | 2303 | if (srp == prev_rp) { |
2470 | sfp->headrp = prev_rp->nextrp; | 2304 | sfp->headrp = prev_rp->nextrp; |
@@ -2507,10 +2341,10 @@ sg_add_sfp(Sg_device * sdp, int dev) | |||
2507 | Sg_fd *sfp; | 2341 | Sg_fd *sfp; |
2508 | unsigned long iflags; | 2342 | unsigned long iflags; |
2509 | 2343 | ||
2510 | sfp = (Sg_fd *) sg_page_malloc(sizeof (Sg_fd), 0, NULL); | 2344 | sfp = kzalloc(sizeof(*sfp), GFP_ATOMIC | __GFP_NOWARN); |
2511 | if (!sfp) | 2345 | if (!sfp) |
2512 | return NULL; | 2346 | return NULL; |
2513 | memset(sfp, 0, sizeof (Sg_fd)); | 2347 | |
2514 | init_waitqueue_head(&sfp->read_wait); | 2348 | init_waitqueue_head(&sfp->read_wait); |
2515 | rwlock_init(&sfp->rq_list_lock); | 2349 | rwlock_init(&sfp->rq_list_lock); |
2516 | 2350 | ||
@@ -2567,7 +2401,7 @@ __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp) | |||
2567 | } | 2401 | } |
2568 | sfp->parentdp = NULL; | 2402 | sfp->parentdp = NULL; |
2569 | SCSI_LOG_TIMEOUT(6, printk("__sg_remove_sfp: sfp=0x%p\n", sfp)); | 2403 | SCSI_LOG_TIMEOUT(6, printk("__sg_remove_sfp: sfp=0x%p\n", sfp)); |
2570 | sg_page_free((char *) sfp, sizeof (Sg_fd)); | 2404 | kfree(sfp); |
2571 | } | 2405 | } |
2572 | 2406 | ||
2573 | /* Returns 0 in normal case, 1 when detached and sdp object removed */ | 2407 | /* Returns 0 in normal case, 1 when detached and sdp object removed */ |
@@ -2632,10 +2466,10 @@ sg_res_in_use(Sg_fd * sfp) | |||
2632 | } | 2466 | } |
2633 | 2467 | ||
2634 | /* If retSzp==NULL want exact size or fail */ | 2468 | /* If retSzp==NULL want exact size or fail */ |
2635 | static char * | 2469 | static struct page * |
2636 | sg_page_malloc(int rqSz, int lowDma, int *retSzp) | 2470 | sg_page_malloc(int rqSz, int lowDma, int *retSzp) |
2637 | { | 2471 | { |
2638 | char *resp = NULL; | 2472 | struct page *resp = NULL; |
2639 | gfp_t page_mask; | 2473 | gfp_t page_mask; |
2640 | int order, a_size; | 2474 | int order, a_size; |
2641 | int resSz = rqSz; | 2475 | int resSz = rqSz; |
@@ -2650,16 +2484,16 @@ sg_page_malloc(int rqSz, int lowDma, int *retSzp) | |||
2650 | 2484 | ||
2651 | for (order = 0, a_size = PAGE_SIZE; a_size < rqSz; | 2485 | for (order = 0, a_size = PAGE_SIZE; a_size < rqSz; |
2652 | order++, a_size <<= 1) ; | 2486 | order++, a_size <<= 1) ; |
2653 | resp = (char *) __get_free_pages(page_mask, order); | 2487 | resp = alloc_pages(page_mask, order); |
2654 | while ((!resp) && order && retSzp) { | 2488 | while ((!resp) && order && retSzp) { |
2655 | --order; | 2489 | --order; |
2656 | a_size >>= 1; /* divide by 2, until PAGE_SIZE */ | 2490 | a_size >>= 1; /* divide by 2, until PAGE_SIZE */ |
2657 | resp = (char *) __get_free_pages(page_mask, order); /* try half */ | 2491 | resp = alloc_pages(page_mask, order); /* try half */ |
2658 | resSz = a_size; | 2492 | resSz = a_size; |
2659 | } | 2493 | } |
2660 | if (resp) { | 2494 | if (resp) { |
2661 | if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) | 2495 | if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) |
2662 | memset(resp, 0, resSz); | 2496 | memset(page_address(resp), 0, resSz); |
2663 | if (retSzp) | 2497 | if (retSzp) |
2664 | *retSzp = resSz; | 2498 | *retSzp = resSz; |
2665 | } | 2499 | } |
@@ -2667,15 +2501,15 @@ sg_page_malloc(int rqSz, int lowDma, int *retSzp) | |||
2667 | } | 2501 | } |
2668 | 2502 | ||
2669 | static void | 2503 | static void |
2670 | sg_page_free(char *buff, int size) | 2504 | sg_page_free(struct page *page, int size) |
2671 | { | 2505 | { |
2672 | int order, a_size; | 2506 | int order, a_size; |
2673 | 2507 | ||
2674 | if (!buff) | 2508 | if (!page) |
2675 | return; | 2509 | return; |
2676 | for (order = 0, a_size = PAGE_SIZE; a_size < size; | 2510 | for (order = 0, a_size = PAGE_SIZE; a_size < size; |
2677 | order++, a_size <<= 1) ; | 2511 | order++, a_size <<= 1) ; |
2678 | free_pages((unsigned long) buff, order); | 2512 | __free_pages(page, order); |
2679 | } | 2513 | } |
2680 | 2514 | ||
2681 | #ifndef MAINTENANCE_IN_CMD | 2515 | #ifndef MAINTENANCE_IN_CMD |
@@ -3067,13 +2901,11 @@ static void sg_proc_debug_helper(struct seq_file *s, Sg_device * sdp) | |||
3067 | cp = " "; | 2901 | cp = " "; |
3068 | } | 2902 | } |
3069 | seq_printf(s, cp); | 2903 | seq_printf(s, cp); |
3070 | blen = srp->my_cmdp ? | 2904 | blen = srp->data.bufflen; |
3071 | srp->my_cmdp->sr_bufflen : srp->data.bufflen; | 2905 | usg = srp->data.k_use_sg; |
3072 | usg = srp->my_cmdp ? | ||
3073 | srp->my_cmdp->sr_use_sg : srp->data.k_use_sg; | ||
3074 | seq_printf(s, srp->done ? | 2906 | seq_printf(s, srp->done ? |
3075 | ((1 == srp->done) ? "rcv:" : "fin:") | 2907 | ((1 == srp->done) ? "rcv:" : "fin:") |
3076 | : (srp->my_cmdp ? "act:" : "prior:")); | 2908 | : "act:"); |
3077 | seq_printf(s, " id=%d blen=%d", | 2909 | seq_printf(s, " id=%d blen=%d", |
3078 | srp->header.pack_id, blen); | 2910 | srp->header.pack_id, blen); |
3079 | if (srp->done) | 2911 | if (srp->done) |
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index fb4012b5c188..997f8e30509b 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <linux/interrupt.h> | 44 | #include <linux/interrupt.h> |
45 | #include <linux/init.h> | 45 | #include <linux/init.h> |
46 | #include <linux/blkdev.h> | 46 | #include <linux/blkdev.h> |
47 | #include <linux/mutex.h> | ||
47 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
48 | 49 | ||
49 | #include <scsi/scsi.h> | 50 | #include <scsi/scsi.h> |
@@ -90,7 +91,7 @@ static DEFINE_SPINLOCK(sr_index_lock); | |||
90 | /* This semaphore is used to mediate the 0->1 reference get in the | 91 | /* This semaphore is used to mediate the 0->1 reference get in the |
91 | * face of object destruction (i.e. we can't allow a get on an | 92 | * face of object destruction (i.e. we can't allow a get on an |
92 | * object after last put) */ | 93 | * object after last put) */ |
93 | static DECLARE_MUTEX(sr_ref_sem); | 94 | static DEFINE_MUTEX(sr_ref_mutex); |
94 | 95 | ||
95 | static int sr_open(struct cdrom_device_info *, int); | 96 | static int sr_open(struct cdrom_device_info *, int); |
96 | static void sr_release(struct cdrom_device_info *); | 97 | static void sr_release(struct cdrom_device_info *); |
@@ -133,7 +134,7 @@ static inline struct scsi_cd *scsi_cd_get(struct gendisk *disk) | |||
133 | { | 134 | { |
134 | struct scsi_cd *cd = NULL; | 135 | struct scsi_cd *cd = NULL; |
135 | 136 | ||
136 | down(&sr_ref_sem); | 137 | mutex_lock(&sr_ref_mutex); |
137 | if (disk->private_data == NULL) | 138 | if (disk->private_data == NULL) |
138 | goto out; | 139 | goto out; |
139 | cd = scsi_cd(disk); | 140 | cd = scsi_cd(disk); |
@@ -146,18 +147,18 @@ static inline struct scsi_cd *scsi_cd_get(struct gendisk *disk) | |||
146 | kref_put(&cd->kref, sr_kref_release); | 147 | kref_put(&cd->kref, sr_kref_release); |
147 | cd = NULL; | 148 | cd = NULL; |
148 | out: | 149 | out: |
149 | up(&sr_ref_sem); | 150 | mutex_unlock(&sr_ref_mutex); |
150 | return cd; | 151 | return cd; |
151 | } | 152 | } |
152 | 153 | ||
153 | static inline void scsi_cd_put(struct scsi_cd *cd) | 154 | static void scsi_cd_put(struct scsi_cd *cd) |
154 | { | 155 | { |
155 | struct scsi_device *sdev = cd->device; | 156 | struct scsi_device *sdev = cd->device; |
156 | 157 | ||
157 | down(&sr_ref_sem); | 158 | mutex_lock(&sr_ref_mutex); |
158 | kref_put(&cd->kref, sr_kref_release); | 159 | kref_put(&cd->kref, sr_kref_release); |
159 | scsi_device_put(sdev); | 160 | scsi_device_put(sdev); |
160 | up(&sr_ref_sem); | 161 | mutex_unlock(&sr_ref_mutex); |
161 | } | 162 | } |
162 | 163 | ||
163 | /* | 164 | /* |
@@ -237,8 +238,6 @@ static void rw_intr(struct scsi_cmnd * SCpnt) | |||
237 | case ILLEGAL_REQUEST: | 238 | case ILLEGAL_REQUEST: |
238 | if (!(SCpnt->sense_buffer[0] & 0x90)) | 239 | if (!(SCpnt->sense_buffer[0] & 0x90)) |
239 | break; | 240 | break; |
240 | if (!blk_fs_request(SCpnt->request)) | ||
241 | break; | ||
242 | error_sector = (SCpnt->sense_buffer[3] << 24) | | 241 | error_sector = (SCpnt->sense_buffer[3] << 24) | |
243 | (SCpnt->sense_buffer[4] << 16) | | 242 | (SCpnt->sense_buffer[4] << 16) | |
244 | (SCpnt->sense_buffer[5] << 8) | | 243 | (SCpnt->sense_buffer[5] << 8) | |
@@ -317,23 +316,6 @@ static int sr_init_command(struct scsi_cmnd * SCpnt) | |||
317 | } | 316 | } |
318 | 317 | ||
319 | /* | 318 | /* |
320 | * these are already setup, just copy cdb basically | ||
321 | */ | ||
322 | if (SCpnt->request->flags & REQ_BLOCK_PC) { | ||
323 | scsi_setup_blk_pc_cmnd(SCpnt, MAX_RETRIES); | ||
324 | |||
325 | if (SCpnt->timeout_per_command) | ||
326 | timeout = SCpnt->timeout_per_command; | ||
327 | |||
328 | goto queue; | ||
329 | } | ||
330 | |||
331 | if (!(SCpnt->request->flags & REQ_CMD)) { | ||
332 | blk_dump_rq_flags(SCpnt->request, "sr unsup command"); | ||
333 | return 0; | ||
334 | } | ||
335 | |||
336 | /* | ||
337 | * we do lazy blocksize switching (when reading XA sectors, | 319 | * we do lazy blocksize switching (when reading XA sectors, |
338 | * see CDROMREADMODE2 ioctl) | 320 | * see CDROMREADMODE2 ioctl) |
339 | */ | 321 | */ |
@@ -421,8 +403,6 @@ static int sr_init_command(struct scsi_cmnd * SCpnt) | |||
421 | */ | 403 | */ |
422 | SCpnt->transfersize = cd->device->sector_size; | 404 | SCpnt->transfersize = cd->device->sector_size; |
423 | SCpnt->underflow = this_count << 9; | 405 | SCpnt->underflow = this_count << 9; |
424 | |||
425 | queue: | ||
426 | SCpnt->allowed = MAX_RETRIES; | 406 | SCpnt->allowed = MAX_RETRIES; |
427 | SCpnt->timeout_per_command = timeout; | 407 | SCpnt->timeout_per_command = timeout; |
428 | 408 | ||
@@ -716,7 +696,7 @@ static void get_capabilities(struct scsi_cd *cd) | |||
716 | unsigned int the_result; | 696 | unsigned int the_result; |
717 | int retries, rc, n; | 697 | int retries, rc, n; |
718 | 698 | ||
719 | static char *loadmech[] = | 699 | static const char *loadmech[] = |
720 | { | 700 | { |
721 | "caddy", | 701 | "caddy", |
722 | "tray", | 702 | "tray", |
@@ -762,8 +742,9 @@ static void get_capabilities(struct scsi_cd *cd) | |||
762 | /* failed, drive doesn't have capabilities mode page */ | 742 | /* failed, drive doesn't have capabilities mode page */ |
763 | cd->cdi.speed = 1; | 743 | cd->cdi.speed = 1; |
764 | cd->cdi.mask |= (CDC_CD_R | CDC_CD_RW | CDC_DVD_R | | 744 | cd->cdi.mask |= (CDC_CD_R | CDC_CD_RW | CDC_DVD_R | |
765 | CDC_DVD | CDC_DVD_RAM | | 745 | CDC_DVD | CDC_DVD_RAM | |
766 | CDC_SELECT_DISC | CDC_SELECT_SPEED); | 746 | CDC_SELECT_DISC | CDC_SELECT_SPEED | |
747 | CDC_MRW | CDC_MRW_W | CDC_RAM); | ||
767 | kfree(buffer); | 748 | kfree(buffer); |
768 | printk("%s: scsi-1 drive\n", cd->cdi.name); | 749 | printk("%s: scsi-1 drive\n", cd->cdi.name); |
769 | return; | 750 | return; |
@@ -845,7 +826,7 @@ static int sr_packet(struct cdrom_device_info *cdi, | |||
845 | * sr_kref_release - Called to free the scsi_cd structure | 826 | * sr_kref_release - Called to free the scsi_cd structure |
846 | * @kref: pointer to embedded kref | 827 | * @kref: pointer to embedded kref |
847 | * | 828 | * |
848 | * sr_ref_sem must be held entering this routine. Because it is | 829 | * sr_ref_mutex must be held entering this routine. Because it is |
849 | * called on last put, you should always use the scsi_cd_get() | 830 | * called on last put, you should always use the scsi_cd_get() |
850 | * scsi_cd_put() helpers which manipulate the semaphore directly | 831 | * scsi_cd_put() helpers which manipulate the semaphore directly |
851 | * and never do a direct kref_put(). | 832 | * and never do a direct kref_put(). |
@@ -874,9 +855,9 @@ static int sr_remove(struct device *dev) | |||
874 | 855 | ||
875 | del_gendisk(cd->disk); | 856 | del_gendisk(cd->disk); |
876 | 857 | ||
877 | down(&sr_ref_sem); | 858 | mutex_lock(&sr_ref_mutex); |
878 | kref_put(&cd->kref, sr_kref_release); | 859 | kref_put(&cd->kref, sr_kref_release); |
879 | up(&sr_ref_sem); | 860 | mutex_unlock(&sr_ref_mutex); |
880 | 861 | ||
881 | return 0; | 862 | return 0; |
882 | } | 863 | } |
diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c index 6e45ac3c43c5..5d02ff4db6cc 100644 --- a/drivers/scsi/sr_ioctl.c +++ b/drivers/scsi/sr_ioctl.c | |||
@@ -31,6 +31,79 @@ static int xa_test = 0; | |||
31 | 31 | ||
32 | module_param(xa_test, int, S_IRUGO | S_IWUSR); | 32 | module_param(xa_test, int, S_IRUGO | S_IWUSR); |
33 | 33 | ||
34 | /* primitive to determine whether we need to have GFP_DMA set based on | ||
35 | * the status of the unchecked_isa_dma flag in the host structure */ | ||
36 | #define SR_GFP_DMA(cd) (((cd)->device->host->unchecked_isa_dma) ? GFP_DMA : 0) | ||
37 | |||
38 | |||
39 | static int sr_read_tochdr(struct cdrom_device_info *cdi, | ||
40 | struct cdrom_tochdr *tochdr) | ||
41 | { | ||
42 | struct scsi_cd *cd = cdi->handle; | ||
43 | struct packet_command cgc; | ||
44 | int result; | ||
45 | unsigned char *buffer; | ||
46 | |||
47 | buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd)); | ||
48 | if (!buffer) | ||
49 | return -ENOMEM; | ||
50 | |||
51 | memset(&cgc, 0, sizeof(struct packet_command)); | ||
52 | cgc.timeout = IOCTL_TIMEOUT; | ||
53 | cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP; | ||
54 | cgc.cmd[8] = 12; /* LSB of length */ | ||
55 | cgc.buffer = buffer; | ||
56 | cgc.buflen = 12; | ||
57 | cgc.quiet = 1; | ||
58 | cgc.data_direction = DMA_FROM_DEVICE; | ||
59 | |||
60 | result = sr_do_ioctl(cd, &cgc); | ||
61 | |||
62 | tochdr->cdth_trk0 = buffer[2]; | ||
63 | tochdr->cdth_trk1 = buffer[3]; | ||
64 | |||
65 | kfree(buffer); | ||
66 | return result; | ||
67 | } | ||
68 | |||
69 | static int sr_read_tocentry(struct cdrom_device_info *cdi, | ||
70 | struct cdrom_tocentry *tocentry) | ||
71 | { | ||
72 | struct scsi_cd *cd = cdi->handle; | ||
73 | struct packet_command cgc; | ||
74 | int result; | ||
75 | unsigned char *buffer; | ||
76 | |||
77 | buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd)); | ||
78 | if (!buffer) | ||
79 | return -ENOMEM; | ||
80 | |||
81 | memset(&cgc, 0, sizeof(struct packet_command)); | ||
82 | cgc.timeout = IOCTL_TIMEOUT; | ||
83 | cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP; | ||
84 | cgc.cmd[1] |= (tocentry->cdte_format == CDROM_MSF) ? 0x02 : 0; | ||
85 | cgc.cmd[6] = tocentry->cdte_track; | ||
86 | cgc.cmd[8] = 12; /* LSB of length */ | ||
87 | cgc.buffer = buffer; | ||
88 | cgc.buflen = 12; | ||
89 | cgc.data_direction = DMA_FROM_DEVICE; | ||
90 | |||
91 | result = sr_do_ioctl(cd, &cgc); | ||
92 | |||
93 | tocentry->cdte_ctrl = buffer[5] & 0xf; | ||
94 | tocentry->cdte_adr = buffer[5] >> 4; | ||
95 | tocentry->cdte_datamode = (tocentry->cdte_ctrl & 0x04) ? 1 : 0; | ||
96 | if (tocentry->cdte_format == CDROM_MSF) { | ||
97 | tocentry->cdte_addr.msf.minute = buffer[9]; | ||
98 | tocentry->cdte_addr.msf.second = buffer[10]; | ||
99 | tocentry->cdte_addr.msf.frame = buffer[11]; | ||
100 | } else | ||
101 | tocentry->cdte_addr.lba = (((((buffer[8] << 8) + buffer[9]) << 8) | ||
102 | + buffer[10]) << 8) + buffer[11]; | ||
103 | |||
104 | kfree(buffer); | ||
105 | return result; | ||
106 | } | ||
34 | 107 | ||
35 | #define IOCTL_RETRIES 3 | 108 | #define IOCTL_RETRIES 3 |
36 | 109 | ||
@@ -45,7 +118,8 @@ static int sr_fake_playtrkind(struct cdrom_device_info *cdi, struct cdrom_ti *ti | |||
45 | struct packet_command cgc; | 118 | struct packet_command cgc; |
46 | int ntracks, ret; | 119 | int ntracks, ret; |
47 | 120 | ||
48 | if ((ret = sr_audio_ioctl(cdi, CDROMREADTOCHDR, &tochdr))) | 121 | ret = sr_read_tochdr(cdi, &tochdr); |
122 | if (ret) | ||
49 | return ret; | 123 | return ret; |
50 | 124 | ||
51 | ntracks = tochdr.cdth_trk1 - tochdr.cdth_trk0 + 1; | 125 | ntracks = tochdr.cdth_trk1 - tochdr.cdth_trk0 + 1; |
@@ -60,9 +134,11 @@ static int sr_fake_playtrkind(struct cdrom_device_info *cdi, struct cdrom_ti *ti | |||
60 | trk1_te.cdte_track = ti->cdti_trk1; | 134 | trk1_te.cdte_track = ti->cdti_trk1; |
61 | trk1_te.cdte_format = CDROM_MSF; | 135 | trk1_te.cdte_format = CDROM_MSF; |
62 | 136 | ||
63 | if ((ret = sr_audio_ioctl(cdi, CDROMREADTOCENTRY, &trk0_te))) | 137 | ret = sr_read_tocentry(cdi, &trk0_te); |
138 | if (ret) | ||
64 | return ret; | 139 | return ret; |
65 | if ((ret = sr_audio_ioctl(cdi, CDROMREADTOCENTRY, &trk1_te))) | 140 | ret = sr_read_tocentry(cdi, &trk1_te); |
141 | if (ret) | ||
66 | return ret; | 142 | return ret; |
67 | 143 | ||
68 | memset(&cgc, 0, sizeof(struct packet_command)); | 144 | memset(&cgc, 0, sizeof(struct packet_command)); |
@@ -78,6 +154,30 @@ static int sr_fake_playtrkind(struct cdrom_device_info *cdi, struct cdrom_ti *ti | |||
78 | return sr_do_ioctl(cdi->handle, &cgc); | 154 | return sr_do_ioctl(cdi->handle, &cgc); |
79 | } | 155 | } |
80 | 156 | ||
157 | static int sr_play_trkind(struct cdrom_device_info *cdi, | ||
158 | struct cdrom_ti *ti) | ||
159 | |||
160 | { | ||
161 | struct scsi_cd *cd = cdi->handle; | ||
162 | struct packet_command cgc; | ||
163 | int result; | ||
164 | |||
165 | memset(&cgc, 0, sizeof(struct packet_command)); | ||
166 | cgc.timeout = IOCTL_TIMEOUT; | ||
167 | cgc.cmd[0] = GPCMD_PLAYAUDIO_TI; | ||
168 | cgc.cmd[4] = ti->cdti_trk0; | ||
169 | cgc.cmd[5] = ti->cdti_ind0; | ||
170 | cgc.cmd[7] = ti->cdti_trk1; | ||
171 | cgc.cmd[8] = ti->cdti_ind1; | ||
172 | cgc.data_direction = DMA_NONE; | ||
173 | |||
174 | result = sr_do_ioctl(cd, &cgc); | ||
175 | if (result == -EDRIVE_CANT_DO_THIS) | ||
176 | result = sr_fake_playtrkind(cdi, ti); | ||
177 | |||
178 | return result; | ||
179 | } | ||
180 | |||
81 | /* We do our own retries because we want to know what the specific | 181 | /* We do our own retries because we want to know what the specific |
82 | error code is. Normally the UNIT_ATTENTION code will automatically | 182 | error code is. Normally the UNIT_ATTENTION code will automatically |
83 | clear after one error */ | 183 | clear after one error */ |
@@ -229,13 +329,14 @@ int sr_disk_status(struct cdrom_device_info *cdi) | |||
229 | int i, rc, have_datatracks = 0; | 329 | int i, rc, have_datatracks = 0; |
230 | 330 | ||
231 | /* look for data tracks */ | 331 | /* look for data tracks */ |
232 | if (0 != (rc = sr_audio_ioctl(cdi, CDROMREADTOCHDR, &toc_h))) | 332 | rc = sr_read_tochdr(cdi, &toc_h); |
333 | if (rc) | ||
233 | return (rc == -ENOMEDIUM) ? CDS_NO_DISC : CDS_NO_INFO; | 334 | return (rc == -ENOMEDIUM) ? CDS_NO_DISC : CDS_NO_INFO; |
234 | 335 | ||
235 | for (i = toc_h.cdth_trk0; i <= toc_h.cdth_trk1; i++) { | 336 | for (i = toc_h.cdth_trk0; i <= toc_h.cdth_trk1; i++) { |
236 | toc_e.cdte_track = i; | 337 | toc_e.cdte_track = i; |
237 | toc_e.cdte_format = CDROM_LBA; | 338 | toc_e.cdte_format = CDROM_LBA; |
238 | if (sr_audio_ioctl(cdi, CDROMREADTOCENTRY, &toc_e)) | 339 | if (sr_read_tocentry(cdi, &toc_e)) |
239 | return CDS_NO_INFO; | 340 | return CDS_NO_INFO; |
240 | if (toc_e.cdte_ctrl & CDROM_DATA_TRACK) { | 341 | if (toc_e.cdte_ctrl & CDROM_DATA_TRACK) { |
241 | have_datatracks = 1; | 342 | have_datatracks = 1; |
@@ -262,10 +363,6 @@ int sr_get_last_session(struct cdrom_device_info *cdi, | |||
262 | return 0; | 363 | return 0; |
263 | } | 364 | } |
264 | 365 | ||
265 | /* primitive to determine whether we need to have GFP_DMA set based on | ||
266 | * the status of the unchecked_isa_dma flag in the host structure */ | ||
267 | #define SR_GFP_DMA(cd) (((cd)->device->host->unchecked_isa_dma) ? GFP_DMA : 0) | ||
268 | |||
269 | int sr_get_mcn(struct cdrom_device_info *cdi, struct cdrom_mcn *mcn) | 366 | int sr_get_mcn(struct cdrom_device_info *cdi, struct cdrom_mcn *mcn) |
270 | { | 367 | { |
271 | Scsi_CD *cd = cdi->handle; | 368 | Scsi_CD *cd = cdi->handle; |
@@ -329,93 +426,16 @@ int sr_select_speed(struct cdrom_device_info *cdi, int speed) | |||
329 | 426 | ||
330 | int sr_audio_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, void *arg) | 427 | int sr_audio_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, void *arg) |
331 | { | 428 | { |
332 | Scsi_CD *cd = cdi->handle; | ||
333 | struct packet_command cgc; | ||
334 | int result; | ||
335 | unsigned char *buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd)); | ||
336 | |||
337 | if (!buffer) | ||
338 | return -ENOMEM; | ||
339 | |||
340 | memset(&cgc, 0, sizeof(struct packet_command)); | ||
341 | cgc.timeout = IOCTL_TIMEOUT; | ||
342 | |||
343 | switch (cmd) { | 429 | switch (cmd) { |
344 | case CDROMREADTOCHDR: | 430 | case CDROMREADTOCHDR: |
345 | { | 431 | return sr_read_tochdr(cdi, arg); |
346 | struct cdrom_tochdr *tochdr = (struct cdrom_tochdr *) arg; | ||
347 | |||
348 | cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP; | ||
349 | cgc.cmd[8] = 12; /* LSB of length */ | ||
350 | cgc.buffer = buffer; | ||
351 | cgc.buflen = 12; | ||
352 | cgc.quiet = 1; | ||
353 | cgc.data_direction = DMA_FROM_DEVICE; | ||
354 | |||
355 | result = sr_do_ioctl(cd, &cgc); | ||
356 | |||
357 | tochdr->cdth_trk0 = buffer[2]; | ||
358 | tochdr->cdth_trk1 = buffer[3]; | ||
359 | |||
360 | break; | ||
361 | } | ||
362 | |||
363 | case CDROMREADTOCENTRY: | 432 | case CDROMREADTOCENTRY: |
364 | { | 433 | return sr_read_tocentry(cdi, arg); |
365 | struct cdrom_tocentry *tocentry = (struct cdrom_tocentry *) arg; | 434 | case CDROMPLAYTRKIND: |
366 | 435 | return sr_play_trkind(cdi, arg); | |
367 | cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP; | ||
368 | cgc.cmd[1] |= (tocentry->cdte_format == CDROM_MSF) ? 0x02 : 0; | ||
369 | cgc.cmd[6] = tocentry->cdte_track; | ||
370 | cgc.cmd[8] = 12; /* LSB of length */ | ||
371 | cgc.buffer = buffer; | ||
372 | cgc.buflen = 12; | ||
373 | cgc.data_direction = DMA_FROM_DEVICE; | ||
374 | |||
375 | result = sr_do_ioctl(cd, &cgc); | ||
376 | |||
377 | tocentry->cdte_ctrl = buffer[5] & 0xf; | ||
378 | tocentry->cdte_adr = buffer[5] >> 4; | ||
379 | tocentry->cdte_datamode = (tocentry->cdte_ctrl & 0x04) ? 1 : 0; | ||
380 | if (tocentry->cdte_format == CDROM_MSF) { | ||
381 | tocentry->cdte_addr.msf.minute = buffer[9]; | ||
382 | tocentry->cdte_addr.msf.second = buffer[10]; | ||
383 | tocentry->cdte_addr.msf.frame = buffer[11]; | ||
384 | } else | ||
385 | tocentry->cdte_addr.lba = (((((buffer[8] << 8) + buffer[9]) << 8) | ||
386 | + buffer[10]) << 8) + buffer[11]; | ||
387 | |||
388 | break; | ||
389 | } | ||
390 | |||
391 | case CDROMPLAYTRKIND: { | ||
392 | struct cdrom_ti* ti = (struct cdrom_ti*)arg; | ||
393 | |||
394 | cgc.cmd[0] = GPCMD_PLAYAUDIO_TI; | ||
395 | cgc.cmd[4] = ti->cdti_trk0; | ||
396 | cgc.cmd[5] = ti->cdti_ind0; | ||
397 | cgc.cmd[7] = ti->cdti_trk1; | ||
398 | cgc.cmd[8] = ti->cdti_ind1; | ||
399 | cgc.data_direction = DMA_NONE; | ||
400 | |||
401 | result = sr_do_ioctl(cd, &cgc); | ||
402 | if (result == -EDRIVE_CANT_DO_THIS) | ||
403 | result = sr_fake_playtrkind(cdi, ti); | ||
404 | |||
405 | break; | ||
406 | } | ||
407 | |||
408 | default: | 436 | default: |
409 | result = -EINVAL; | 437 | return -EINVAL; |
410 | } | 438 | } |
411 | |||
412 | #if 0 | ||
413 | if (result) | ||
414 | printk("DEBUG: sr_audio: result for ioctl %x: %x\n", cmd, result); | ||
415 | #endif | ||
416 | |||
417 | kfree(buffer); | ||
418 | return result; | ||
419 | } | 439 | } |
420 | 440 | ||
421 | /* ----------------------------------------------------------------------- | 441 | /* ----------------------------------------------------------------------- |
diff --git a/drivers/scsi/sr_vendor.c b/drivers/scsi/sr_vendor.c index 78274dc91f5c..9dde8df2f5c9 100644 --- a/drivers/scsi/sr_vendor.c +++ b/drivers/scsi/sr_vendor.c | |||
@@ -68,8 +68,8 @@ void sr_vendor_init(Scsi_CD *cd) | |||
68 | #ifndef CONFIG_BLK_DEV_SR_VENDOR | 68 | #ifndef CONFIG_BLK_DEV_SR_VENDOR |
69 | cd->vendor = VENDOR_SCSI3; | 69 | cd->vendor = VENDOR_SCSI3; |
70 | #else | 70 | #else |
71 | char *vendor = cd->device->vendor; | 71 | const char *vendor = cd->device->vendor; |
72 | char *model = cd->device->model; | 72 | const char *model = cd->device->model; |
73 | 73 | ||
74 | /* default */ | 74 | /* default */ |
75 | cd->vendor = VENDOR_SCSI3; | 75 | cd->vendor = VENDOR_SCSI3; |
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index dd592f6a2529..13b1d3aac265 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c | |||
@@ -17,7 +17,7 @@ | |||
17 | Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support | 17 | Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support |
18 | */ | 18 | */ |
19 | 19 | ||
20 | static char *verstr = "20050830"; | 20 | static const char *verstr = "20050830"; |
21 | 21 | ||
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | 23 | ||
@@ -38,6 +38,7 @@ static char *verstr = "20050830"; | |||
38 | #include <linux/devfs_fs_kernel.h> | 38 | #include <linux/devfs_fs_kernel.h> |
39 | #include <linux/cdev.h> | 39 | #include <linux/cdev.h> |
40 | #include <linux/delay.h> | 40 | #include <linux/delay.h> |
41 | #include <linux/mutex.h> | ||
41 | 42 | ||
42 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
43 | #include <asm/dma.h> | 44 | #include <asm/dma.h> |
@@ -50,7 +51,6 @@ static char *verstr = "20050830"; | |||
50 | #include <scsi/scsi_eh.h> | 51 | #include <scsi/scsi_eh.h> |
51 | #include <scsi/scsi_host.h> | 52 | #include <scsi/scsi_host.h> |
52 | #include <scsi/scsi_ioctl.h> | 53 | #include <scsi/scsi_ioctl.h> |
53 | #include <scsi/scsi_request.h> | ||
54 | #include <scsi/sg.h> | 54 | #include <scsi/sg.h> |
55 | 55 | ||
56 | 56 | ||
@@ -134,7 +134,7 @@ static struct st_dev_parm { | |||
134 | #endif | 134 | #endif |
135 | /* Bit reversed order to get same names for same minors with all | 135 | /* Bit reversed order to get same names for same minors with all |
136 | mode counts */ | 136 | mode counts */ |
137 | static char *st_formats[] = { | 137 | static const char *st_formats[] = { |
138 | "", "r", "k", "s", "l", "t", "o", "u", | 138 | "", "r", "k", "s", "l", "t", "o", "u", |
139 | "m", "v", "p", "x", "a", "y", "q", "z"}; | 139 | "m", "v", "p", "x", "a", "y", "q", "z"}; |
140 | 140 | ||
@@ -188,15 +188,12 @@ static int from_buffer(struct st_buffer *, char __user *, int); | |||
188 | static void move_buffer_data(struct st_buffer *, int); | 188 | static void move_buffer_data(struct st_buffer *, int); |
189 | static void buf_to_sg(struct st_buffer *, unsigned int); | 189 | static void buf_to_sg(struct st_buffer *, unsigned int); |
190 | 190 | ||
191 | static int st_map_user_pages(struct scatterlist *, const unsigned int, | ||
192 | unsigned long, size_t, int, unsigned long); | ||
193 | static int sgl_map_user_pages(struct scatterlist *, const unsigned int, | 191 | static int sgl_map_user_pages(struct scatterlist *, const unsigned int, |
194 | unsigned long, size_t, int); | 192 | unsigned long, size_t, int); |
195 | static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, int); | 193 | static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, int); |
196 | 194 | ||
197 | static int st_probe(struct device *); | 195 | static int st_probe(struct device *); |
198 | static int st_remove(struct device *); | 196 | static int st_remove(struct device *); |
199 | static int st_init_command(struct scsi_cmnd *); | ||
200 | 197 | ||
201 | static void do_create_driverfs_files(void); | 198 | static void do_create_driverfs_files(void); |
202 | static void do_remove_driverfs_files(void); | 199 | static void do_remove_driverfs_files(void); |
@@ -209,7 +206,6 @@ static struct scsi_driver st_template = { | |||
209 | .probe = st_probe, | 206 | .probe = st_probe, |
210 | .remove = st_remove, | 207 | .remove = st_remove, |
211 | }, | 208 | }, |
212 | .init_command = st_init_command, | ||
213 | }; | 209 | }; |
214 | 210 | ||
215 | static int st_compression(struct scsi_tape *, int); | 211 | static int st_compression(struct scsi_tape *, int); |
@@ -223,7 +219,7 @@ static void scsi_tape_release(struct kref *); | |||
223 | 219 | ||
224 | #define to_scsi_tape(obj) container_of(obj, struct scsi_tape, kref) | 220 | #define to_scsi_tape(obj) container_of(obj, struct scsi_tape, kref) |
225 | 221 | ||
226 | static DECLARE_MUTEX(st_ref_sem); | 222 | static DEFINE_MUTEX(st_ref_mutex); |
227 | 223 | ||
228 | 224 | ||
229 | #include "osst_detect.h" | 225 | #include "osst_detect.h" |
@@ -240,7 +236,7 @@ static struct scsi_tape *scsi_tape_get(int dev) | |||
240 | { | 236 | { |
241 | struct scsi_tape *STp = NULL; | 237 | struct scsi_tape *STp = NULL; |
242 | 238 | ||
243 | down(&st_ref_sem); | 239 | mutex_lock(&st_ref_mutex); |
244 | write_lock(&st_dev_arr_lock); | 240 | write_lock(&st_dev_arr_lock); |
245 | 241 | ||
246 | if (dev < st_dev_max && scsi_tapes != NULL) | 242 | if (dev < st_dev_max && scsi_tapes != NULL) |
@@ -262,7 +258,7 @@ out_put: | |||
262 | STp = NULL; | 258 | STp = NULL; |
263 | out: | 259 | out: |
264 | write_unlock(&st_dev_arr_lock); | 260 | write_unlock(&st_dev_arr_lock); |
265 | up(&st_ref_sem); | 261 | mutex_unlock(&st_ref_mutex); |
266 | return STp; | 262 | return STp; |
267 | } | 263 | } |
268 | 264 | ||
@@ -270,10 +266,10 @@ static void scsi_tape_put(struct scsi_tape *STp) | |||
270 | { | 266 | { |
271 | struct scsi_device *sdev = STp->device; | 267 | struct scsi_device *sdev = STp->device; |
272 | 268 | ||
273 | down(&st_ref_sem); | 269 | mutex_lock(&st_ref_mutex); |
274 | kref_put(&STp->kref, scsi_tape_release); | 270 | kref_put(&STp->kref, scsi_tape_release); |
275 | scsi_device_put(sdev); | 271 | scsi_device_put(sdev); |
276 | up(&st_ref_sem); | 272 | mutex_unlock(&st_ref_mutex); |
277 | } | 273 | } |
278 | 274 | ||
279 | struct st_reject_data { | 275 | struct st_reject_data { |
@@ -313,12 +309,13 @@ static inline char *tape_name(struct scsi_tape *tape) | |||
313 | } | 309 | } |
314 | 310 | ||
315 | 311 | ||
316 | static void st_analyze_sense(struct scsi_request *SRpnt, struct st_cmdstatus *s) | 312 | static void st_analyze_sense(struct st_request *SRpnt, struct st_cmdstatus *s) |
317 | { | 313 | { |
318 | const u8 *ucp; | 314 | const u8 *ucp; |
319 | const u8 *sense = SRpnt->sr_sense_buffer; | 315 | const u8 *sense = SRpnt->sense; |
320 | 316 | ||
321 | s->have_sense = scsi_request_normalize_sense(SRpnt, &s->sense_hdr); | 317 | s->have_sense = scsi_normalize_sense(SRpnt->sense, |
318 | SCSI_SENSE_BUFFERSIZE, &s->sense_hdr); | ||
322 | s->flags = 0; | 319 | s->flags = 0; |
323 | 320 | ||
324 | if (s->have_sense) { | 321 | if (s->have_sense) { |
@@ -345,9 +342,9 @@ static void st_analyze_sense(struct scsi_request *SRpnt, struct st_cmdstatus *s) | |||
345 | 342 | ||
346 | 343 | ||
347 | /* Convert the result to success code */ | 344 | /* Convert the result to success code */ |
348 | static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) | 345 | static int st_chk_result(struct scsi_tape *STp, struct st_request * SRpnt) |
349 | { | 346 | { |
350 | int result = SRpnt->sr_result; | 347 | int result = SRpnt->result; |
351 | u8 scode; | 348 | u8 scode; |
352 | DEB(const char *stp;) | 349 | DEB(const char *stp;) |
353 | char *name = tape_name(STp); | 350 | char *name = tape_name(STp); |
@@ -366,13 +363,12 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) | |||
366 | 363 | ||
367 | DEB( | 364 | DEB( |
368 | if (debugging) { | 365 | if (debugging) { |
369 | printk(ST_DEB_MSG "%s: Error: %x, cmd: %x %x %x %x %x %x Len: %d\n", | 366 | printk(ST_DEB_MSG "%s: Error: %x, cmd: %x %x %x %x %x %x\n", |
370 | name, result, | 367 | name, result, |
371 | SRpnt->sr_cmnd[0], SRpnt->sr_cmnd[1], SRpnt->sr_cmnd[2], | 368 | SRpnt->cmd[0], SRpnt->cmd[1], SRpnt->cmd[2], |
372 | SRpnt->sr_cmnd[3], SRpnt->sr_cmnd[4], SRpnt->sr_cmnd[5], | 369 | SRpnt->cmd[3], SRpnt->cmd[4], SRpnt->cmd[5]); |
373 | SRpnt->sr_bufflen); | ||
374 | if (cmdstatp->have_sense) | 370 | if (cmdstatp->have_sense) |
375 | scsi_print_req_sense("st", SRpnt); | 371 | __scsi_print_sense("st", SRpnt->sense, SCSI_SENSE_BUFFERSIZE); |
376 | } ) /* end DEB */ | 372 | } ) /* end DEB */ |
377 | if (!debugging) { /* Abnormal conditions for tape */ | 373 | if (!debugging) { /* Abnormal conditions for tape */ |
378 | if (!cmdstatp->have_sense) | 374 | if (!cmdstatp->have_sense) |
@@ -386,20 +382,21 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) | |||
386 | /* scode != UNIT_ATTENTION && */ | 382 | /* scode != UNIT_ATTENTION && */ |
387 | scode != BLANK_CHECK && | 383 | scode != BLANK_CHECK && |
388 | scode != VOLUME_OVERFLOW && | 384 | scode != VOLUME_OVERFLOW && |
389 | SRpnt->sr_cmnd[0] != MODE_SENSE && | 385 | SRpnt->cmd[0] != MODE_SENSE && |
390 | SRpnt->sr_cmnd[0] != TEST_UNIT_READY) { | 386 | SRpnt->cmd[0] != TEST_UNIT_READY) { |
391 | printk(KERN_WARNING "%s: Error with sense data: ", name); | 387 | printk(KERN_WARNING "%s: Error with sense data: ", name); |
392 | scsi_print_req_sense("st", SRpnt); | 388 | __scsi_print_sense("st", SRpnt->sense, |
389 | SCSI_SENSE_BUFFERSIZE); | ||
393 | } | 390 | } |
394 | } | 391 | } |
395 | 392 | ||
396 | if (cmdstatp->fixed_format && | 393 | if (cmdstatp->fixed_format && |
397 | STp->cln_mode >= EXTENDED_SENSE_START) { /* Only fixed format sense */ | 394 | STp->cln_mode >= EXTENDED_SENSE_START) { /* Only fixed format sense */ |
398 | if (STp->cln_sense_value) | 395 | if (STp->cln_sense_value) |
399 | STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] & | 396 | STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] & |
400 | STp->cln_sense_mask) == STp->cln_sense_value); | 397 | STp->cln_sense_mask) == STp->cln_sense_value); |
401 | else | 398 | else |
402 | STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] & | 399 | STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] & |
403 | STp->cln_sense_mask) != 0); | 400 | STp->cln_sense_mask) != 0); |
404 | } | 401 | } |
405 | if (cmdstatp->have_sense && | 402 | if (cmdstatp->have_sense && |
@@ -411,8 +408,8 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) | |||
411 | if (cmdstatp->have_sense && | 408 | if (cmdstatp->have_sense && |
412 | scode == RECOVERED_ERROR | 409 | scode == RECOVERED_ERROR |
413 | #if ST_RECOVERED_WRITE_FATAL | 410 | #if ST_RECOVERED_WRITE_FATAL |
414 | && SRpnt->sr_cmnd[0] != WRITE_6 | 411 | && SRpnt->cmd[0] != WRITE_6 |
415 | && SRpnt->sr_cmnd[0] != WRITE_FILEMARKS | 412 | && SRpnt->cmd[0] != WRITE_FILEMARKS |
416 | #endif | 413 | #endif |
417 | ) { | 414 | ) { |
418 | STp->recover_count++; | 415 | STp->recover_count++; |
@@ -420,9 +417,9 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) | |||
420 | 417 | ||
421 | DEB( | 418 | DEB( |
422 | if (debugging) { | 419 | if (debugging) { |
423 | if (SRpnt->sr_cmnd[0] == READ_6) | 420 | if (SRpnt->cmd[0] == READ_6) |
424 | stp = "read"; | 421 | stp = "read"; |
425 | else if (SRpnt->sr_cmnd[0] == WRITE_6) | 422 | else if (SRpnt->cmd[0] == WRITE_6) |
426 | stp = "write"; | 423 | stp = "write"; |
427 | else | 424 | else |
428 | stp = "ioctl"; | 425 | stp = "ioctl"; |
@@ -438,28 +435,37 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) | |||
438 | 435 | ||
439 | 436 | ||
440 | /* Wakeup from interrupt */ | 437 | /* Wakeup from interrupt */ |
441 | static void st_sleep_done(struct scsi_cmnd * SCpnt) | 438 | static void st_sleep_done(void *data, char *sense, int result, int resid) |
442 | { | 439 | { |
443 | struct scsi_tape *STp = container_of(SCpnt->request->rq_disk->private_data, | 440 | struct st_request *SRpnt = data; |
444 | struct scsi_tape, driver); | 441 | struct scsi_tape *STp = SRpnt->stp; |
445 | 442 | ||
446 | (STp->buffer)->cmdstat.midlevel_result = SCpnt->result; | 443 | memcpy(SRpnt->sense, sense, SCSI_SENSE_BUFFERSIZE); |
447 | SCpnt->request->rq_status = RQ_SCSI_DONE; | 444 | (STp->buffer)->cmdstat.midlevel_result = SRpnt->result = result; |
448 | DEB( STp->write_pending = 0; ) | 445 | DEB( STp->write_pending = 0; ) |
449 | 446 | ||
450 | if (SCpnt->request->waiting) | 447 | if (SRpnt->waiting) |
451 | complete(SCpnt->request->waiting); | 448 | complete(SRpnt->waiting); |
449 | } | ||
450 | |||
451 | static struct st_request *st_allocate_request(void) | ||
452 | { | ||
453 | return kzalloc(sizeof(struct st_request), GFP_KERNEL); | ||
454 | } | ||
455 | |||
456 | static void st_release_request(struct st_request *streq) | ||
457 | { | ||
458 | kfree(streq); | ||
452 | } | 459 | } |
453 | 460 | ||
454 | /* Do the scsi command. Waits until command performed if do_wait is true. | 461 | /* Do the scsi command. Waits until command performed if do_wait is true. |
455 | Otherwise write_behind_check() is used to check that the command | 462 | Otherwise write_behind_check() is used to check that the command |
456 | has finished. */ | 463 | has finished. */ |
457 | static struct scsi_request * | 464 | static struct st_request * |
458 | st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd, | 465 | st_do_scsi(struct st_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd, |
459 | int bytes, int direction, int timeout, int retries, int do_wait) | 466 | int bytes, int direction, int timeout, int retries, int do_wait) |
460 | { | 467 | { |
461 | struct completion *waiting; | 468 | struct completion *waiting; |
462 | unsigned char *bp; | ||
463 | 469 | ||
464 | /* if async, make sure there's no command outstanding */ | 470 | /* if async, make sure there's no command outstanding */ |
465 | if (!do_wait && ((STp->buffer)->last_SRpnt)) { | 471 | if (!do_wait && ((STp->buffer)->last_SRpnt)) { |
@@ -473,7 +479,7 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c | |||
473 | } | 479 | } |
474 | 480 | ||
475 | if (SRpnt == NULL) { | 481 | if (SRpnt == NULL) { |
476 | SRpnt = scsi_allocate_request(STp->device, GFP_ATOMIC); | 482 | SRpnt = st_allocate_request(); |
477 | if (SRpnt == NULL) { | 483 | if (SRpnt == NULL) { |
478 | DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n", | 484 | DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n", |
479 | tape_name(STp)); ); | 485 | tape_name(STp)); ); |
@@ -483,6 +489,7 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c | |||
483 | (STp->buffer)->syscall_result = (-EBUSY); | 489 | (STp->buffer)->syscall_result = (-EBUSY); |
484 | return NULL; | 490 | return NULL; |
485 | } | 491 | } |
492 | SRpnt->stp = STp; | ||
486 | } | 493 | } |
487 | 494 | ||
488 | /* If async IO, set last_SRpnt. This ptr tells write_behind_check | 495 | /* If async IO, set last_SRpnt. This ptr tells write_behind_check |
@@ -492,32 +499,28 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c | |||
492 | 499 | ||
493 | waiting = &STp->wait; | 500 | waiting = &STp->wait; |
494 | init_completion(waiting); | 501 | init_completion(waiting); |
495 | SRpnt->sr_use_sg = STp->buffer->do_dio || (bytes > (STp->buffer)->frp[0].length); | 502 | SRpnt->waiting = waiting; |
496 | if (SRpnt->sr_use_sg) { | ||
497 | if (!STp->buffer->do_dio) | ||
498 | buf_to_sg(STp->buffer, bytes); | ||
499 | SRpnt->sr_use_sg = (STp->buffer)->sg_segs; | ||
500 | bp = (char *) &((STp->buffer)->sg[0]); | ||
501 | } else | ||
502 | bp = (STp->buffer)->b_data; | ||
503 | SRpnt->sr_data_direction = direction; | ||
504 | SRpnt->sr_cmd_len = 0; | ||
505 | SRpnt->sr_request->waiting = waiting; | ||
506 | SRpnt->sr_request->rq_status = RQ_SCSI_BUSY; | ||
507 | SRpnt->sr_request->rq_disk = STp->disk; | ||
508 | SRpnt->sr_request->end_io = blk_end_sync_rq; | ||
509 | STp->buffer->cmdstat.have_sense = 0; | ||
510 | 503 | ||
511 | scsi_do_req(SRpnt, (void *) cmd, bp, bytes, | 504 | if (!STp->buffer->do_dio) |
512 | st_sleep_done, timeout, retries); | 505 | buf_to_sg(STp->buffer, bytes); |
513 | 506 | ||
514 | if (do_wait) { | 507 | memcpy(SRpnt->cmd, cmd, sizeof(SRpnt->cmd)); |
508 | STp->buffer->cmdstat.have_sense = 0; | ||
509 | STp->buffer->syscall_result = 0; | ||
510 | |||
511 | if (scsi_execute_async(STp->device, cmd, direction, | ||
512 | &((STp->buffer)->sg[0]), bytes, (STp->buffer)->sg_segs, | ||
513 | timeout, retries, SRpnt, st_sleep_done, GFP_KERNEL)) { | ||
514 | /* could not allocate the buffer or request was too large */ | ||
515 | (STp->buffer)->syscall_result = (-EBUSY); | ||
516 | (STp->buffer)->last_SRpnt = NULL; | ||
517 | } | ||
518 | else if (do_wait) { | ||
515 | wait_for_completion(waiting); | 519 | wait_for_completion(waiting); |
516 | SRpnt->sr_request->waiting = NULL; | 520 | SRpnt->waiting = NULL; |
517 | if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE) | ||
518 | SRpnt->sr_result |= (DRIVER_ERROR << 24); | ||
519 | (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt); | 521 | (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt); |
520 | } | 522 | } |
523 | |||
521 | return SRpnt; | 524 | return SRpnt; |
522 | } | 525 | } |
523 | 526 | ||
@@ -532,7 +535,7 @@ static int write_behind_check(struct scsi_tape * STp) | |||
532 | struct st_buffer *STbuffer; | 535 | struct st_buffer *STbuffer; |
533 | struct st_partstat *STps; | 536 | struct st_partstat *STps; |
534 | struct st_cmdstatus *cmdstatp; | 537 | struct st_cmdstatus *cmdstatp; |
535 | struct scsi_request *SRpnt; | 538 | struct st_request *SRpnt; |
536 | 539 | ||
537 | STbuffer = STp->buffer; | 540 | STbuffer = STp->buffer; |
538 | if (!STbuffer->writing) | 541 | if (!STbuffer->writing) |
@@ -548,12 +551,10 @@ static int write_behind_check(struct scsi_tape * STp) | |||
548 | wait_for_completion(&(STp->wait)); | 551 | wait_for_completion(&(STp->wait)); |
549 | SRpnt = STbuffer->last_SRpnt; | 552 | SRpnt = STbuffer->last_SRpnt; |
550 | STbuffer->last_SRpnt = NULL; | 553 | STbuffer->last_SRpnt = NULL; |
551 | SRpnt->sr_request->waiting = NULL; | 554 | SRpnt->waiting = NULL; |
552 | if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE) | ||
553 | SRpnt->sr_result |= (DRIVER_ERROR << 24); | ||
554 | 555 | ||
555 | (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt); | 556 | (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt); |
556 | scsi_release_request(SRpnt); | 557 | st_release_request(SRpnt); |
557 | 558 | ||
558 | STbuffer->buffer_bytes -= STbuffer->writing; | 559 | STbuffer->buffer_bytes -= STbuffer->writing; |
559 | STps = &(STp->ps[STp->partition]); | 560 | STps = &(STp->ps[STp->partition]); |
@@ -593,7 +594,7 @@ static int write_behind_check(struct scsi_tape * STp) | |||
593 | it messes up the block number). */ | 594 | it messes up the block number). */ |
594 | static int cross_eof(struct scsi_tape * STp, int forward) | 595 | static int cross_eof(struct scsi_tape * STp, int forward) |
595 | { | 596 | { |
596 | struct scsi_request *SRpnt; | 597 | struct st_request *SRpnt; |
597 | unsigned char cmd[MAX_COMMAND_SIZE]; | 598 | unsigned char cmd[MAX_COMMAND_SIZE]; |
598 | 599 | ||
599 | cmd[0] = SPACE; | 600 | cmd[0] = SPACE; |
@@ -613,7 +614,7 @@ static int cross_eof(struct scsi_tape * STp, int forward) | |||
613 | if (!SRpnt) | 614 | if (!SRpnt) |
614 | return (STp->buffer)->syscall_result; | 615 | return (STp->buffer)->syscall_result; |
615 | 616 | ||
616 | scsi_release_request(SRpnt); | 617 | st_release_request(SRpnt); |
617 | SRpnt = NULL; | 618 | SRpnt = NULL; |
618 | 619 | ||
619 | if ((STp->buffer)->cmdstat.midlevel_result != 0) | 620 | if ((STp->buffer)->cmdstat.midlevel_result != 0) |
@@ -630,7 +631,7 @@ static int flush_write_buffer(struct scsi_tape * STp) | |||
630 | int offset, transfer, blks; | 631 | int offset, transfer, blks; |
631 | int result; | 632 | int result; |
632 | unsigned char cmd[MAX_COMMAND_SIZE]; | 633 | unsigned char cmd[MAX_COMMAND_SIZE]; |
633 | struct scsi_request *SRpnt; | 634 | struct st_request *SRpnt; |
634 | struct st_partstat *STps; | 635 | struct st_partstat *STps; |
635 | 636 | ||
636 | result = write_behind_check(STp); | 637 | result = write_behind_check(STp); |
@@ -688,7 +689,7 @@ static int flush_write_buffer(struct scsi_tape * STp) | |||
688 | STp->dirty = 0; | 689 | STp->dirty = 0; |
689 | (STp->buffer)->buffer_bytes = 0; | 690 | (STp->buffer)->buffer_bytes = 0; |
690 | } | 691 | } |
691 | scsi_release_request(SRpnt); | 692 | st_release_request(SRpnt); |
692 | SRpnt = NULL; | 693 | SRpnt = NULL; |
693 | } | 694 | } |
694 | return result; | 695 | return result; |
@@ -785,7 +786,7 @@ static int set_mode_densblk(struct scsi_tape * STp, struct st_modedef * STm) | |||
785 | } | 786 | } |
786 | 787 | ||
787 | 788 | ||
788 | /* Lock or unlock the drive door. Don't use when scsi_request allocated. */ | 789 | /* Lock or unlock the drive door. Don't use when st_request allocated. */ |
789 | static int do_door_lock(struct scsi_tape * STp, int do_lock) | 790 | static int do_door_lock(struct scsi_tape * STp, int do_lock) |
790 | { | 791 | { |
791 | int retval, cmd; | 792 | int retval, cmd; |
@@ -844,7 +845,7 @@ static int test_ready(struct scsi_tape *STp, int do_wait) | |||
844 | int attentions, waits, max_wait, scode; | 845 | int attentions, waits, max_wait, scode; |
845 | int retval = CHKRES_READY, new_session = 0; | 846 | int retval = CHKRES_READY, new_session = 0; |
846 | unsigned char cmd[MAX_COMMAND_SIZE]; | 847 | unsigned char cmd[MAX_COMMAND_SIZE]; |
847 | struct scsi_request *SRpnt = NULL; | 848 | struct st_request *SRpnt = NULL; |
848 | struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat; | 849 | struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat; |
849 | 850 | ||
850 | max_wait = do_wait ? ST_BLOCK_SECONDS : 0; | 851 | max_wait = do_wait ? ST_BLOCK_SECONDS : 0; |
@@ -903,7 +904,7 @@ static int test_ready(struct scsi_tape *STp, int do_wait) | |||
903 | } | 904 | } |
904 | 905 | ||
905 | if (SRpnt != NULL) | 906 | if (SRpnt != NULL) |
906 | scsi_release_request(SRpnt); | 907 | st_release_request(SRpnt); |
907 | return retval; | 908 | return retval; |
908 | } | 909 | } |
909 | 910 | ||
@@ -918,7 +919,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp) | |||
918 | int i, retval, new_session = 0, do_wait; | 919 | int i, retval, new_session = 0, do_wait; |
919 | unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning; | 920 | unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning; |
920 | unsigned short st_flags = filp->f_flags; | 921 | unsigned short st_flags = filp->f_flags; |
921 | struct scsi_request *SRpnt = NULL; | 922 | struct st_request *SRpnt = NULL; |
922 | struct st_modedef *STm; | 923 | struct st_modedef *STm; |
923 | struct st_partstat *STps; | 924 | struct st_partstat *STps; |
924 | char *name = tape_name(STp); | 925 | char *name = tape_name(STp); |
@@ -993,7 +994,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp) | |||
993 | goto err_out; | 994 | goto err_out; |
994 | } | 995 | } |
995 | 996 | ||
996 | if (!SRpnt->sr_result && !STp->buffer->cmdstat.have_sense) { | 997 | if (!SRpnt->result && !STp->buffer->cmdstat.have_sense) { |
997 | STp->max_block = ((STp->buffer)->b_data[1] << 16) | | 998 | STp->max_block = ((STp->buffer)->b_data[1] << 16) | |
998 | ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3]; | 999 | ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3]; |
999 | STp->min_block = ((STp->buffer)->b_data[4] << 8) | | 1000 | STp->min_block = ((STp->buffer)->b_data[4] << 8) | |
@@ -1045,7 +1046,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp) | |||
1045 | } | 1046 | } |
1046 | STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0; | 1047 | STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0; |
1047 | } | 1048 | } |
1048 | scsi_release_request(SRpnt); | 1049 | st_release_request(SRpnt); |
1049 | SRpnt = NULL; | 1050 | SRpnt = NULL; |
1050 | STp->inited = 1; | 1051 | STp->inited = 1; |
1051 | 1052 | ||
@@ -1196,7 +1197,7 @@ static int st_flush(struct file *filp) | |||
1196 | { | 1197 | { |
1197 | int result = 0, result2; | 1198 | int result = 0, result2; |
1198 | unsigned char cmd[MAX_COMMAND_SIZE]; | 1199 | unsigned char cmd[MAX_COMMAND_SIZE]; |
1199 | struct scsi_request *SRpnt; | 1200 | struct st_request *SRpnt; |
1200 | struct scsi_tape *STp = filp->private_data; | 1201 | struct scsi_tape *STp = filp->private_data; |
1201 | struct st_modedef *STm = &(STp->modes[STp->current_mode]); | 1202 | struct st_modedef *STm = &(STp->modes[STp->current_mode]); |
1202 | struct st_partstat *STps = &(STp->ps[STp->partition]); | 1203 | struct st_partstat *STps = &(STp->ps[STp->partition]); |
@@ -1249,7 +1250,7 @@ static int st_flush(struct file *filp) | |||
1249 | cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) && | 1250 | cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) && |
1250 | (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) { | 1251 | (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) { |
1251 | /* Write successful at EOM */ | 1252 | /* Write successful at EOM */ |
1252 | scsi_release_request(SRpnt); | 1253 | st_release_request(SRpnt); |
1253 | SRpnt = NULL; | 1254 | SRpnt = NULL; |
1254 | if (STps->drv_file >= 0) | 1255 | if (STps->drv_file >= 0) |
1255 | STps->drv_file++; | 1256 | STps->drv_file++; |
@@ -1259,7 +1260,7 @@ static int st_flush(struct file *filp) | |||
1259 | STps->eof = ST_FM; | 1260 | STps->eof = ST_FM; |
1260 | } | 1261 | } |
1261 | else { /* Write error */ | 1262 | else { /* Write error */ |
1262 | scsi_release_request(SRpnt); | 1263 | st_release_request(SRpnt); |
1263 | SRpnt = NULL; | 1264 | SRpnt = NULL; |
1264 | printk(KERN_ERR "%s: Error on write filemark.\n", name); | 1265 | printk(KERN_ERR "%s: Error on write filemark.\n", name); |
1265 | if (result == 0) | 1266 | if (result == 0) |
@@ -1400,11 +1401,11 @@ static int setup_buffering(struct scsi_tape *STp, const char __user *buf, | |||
1400 | i = STp->try_dio && try_rdio; | 1401 | i = STp->try_dio && try_rdio; |
1401 | else | 1402 | else |
1402 | i = STp->try_dio && try_wdio; | 1403 | i = STp->try_dio && try_wdio; |
1404 | |||
1403 | if (i && ((unsigned long)buf & queue_dma_alignment( | 1405 | if (i && ((unsigned long)buf & queue_dma_alignment( |
1404 | STp->device->request_queue)) == 0) { | 1406 | STp->device->request_queue)) == 0) { |
1405 | i = st_map_user_pages(&(STbp->sg[0]), STbp->use_sg, | 1407 | i = sgl_map_user_pages(&(STbp->sg[0]), STbp->use_sg, |
1406 | (unsigned long)buf, count, (is_read ? READ : WRITE), | 1408 | (unsigned long)buf, count, (is_read ? READ : WRITE)); |
1407 | STp->max_pfn); | ||
1408 | if (i > 0) { | 1409 | if (i > 0) { |
1409 | STbp->do_dio = i; | 1410 | STbp->do_dio = i; |
1410 | STbp->buffer_bytes = 0; /* can be used as transfer counter */ | 1411 | STbp->buffer_bytes = 0; /* can be used as transfer counter */ |
@@ -1449,14 +1450,15 @@ static int setup_buffering(struct scsi_tape *STp, const char __user *buf, | |||
1449 | 1450 | ||
1450 | 1451 | ||
1451 | /* Can be called more than once after each setup_buffer() */ | 1452 | /* Can be called more than once after each setup_buffer() */ |
1452 | static void release_buffering(struct scsi_tape *STp) | 1453 | static void release_buffering(struct scsi_tape *STp, int is_read) |
1453 | { | 1454 | { |
1454 | struct st_buffer *STbp; | 1455 | struct st_buffer *STbp; |
1455 | 1456 | ||
1456 | STbp = STp->buffer; | 1457 | STbp = STp->buffer; |
1457 | if (STbp->do_dio) { | 1458 | if (STbp->do_dio) { |
1458 | sgl_unmap_user_pages(&(STbp->sg[0]), STbp->do_dio, 0); | 1459 | sgl_unmap_user_pages(&(STbp->sg[0]), STbp->do_dio, is_read); |
1459 | STbp->do_dio = 0; | 1460 | STbp->do_dio = 0; |
1461 | STbp->sg_segs = 0; | ||
1460 | } | 1462 | } |
1461 | } | 1463 | } |
1462 | 1464 | ||
@@ -1472,7 +1474,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
1472 | int async_write; | 1474 | int async_write; |
1473 | unsigned char cmd[MAX_COMMAND_SIZE]; | 1475 | unsigned char cmd[MAX_COMMAND_SIZE]; |
1474 | const char __user *b_point; | 1476 | const char __user *b_point; |
1475 | struct scsi_request *SRpnt = NULL; | 1477 | struct st_request *SRpnt = NULL; |
1476 | struct scsi_tape *STp = filp->private_data; | 1478 | struct scsi_tape *STp = filp->private_data; |
1477 | struct st_modedef *STm; | 1479 | struct st_modedef *STm; |
1478 | struct st_partstat *STps; | 1480 | struct st_partstat *STps; |
@@ -1624,7 +1626,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
1624 | retval = STbp->syscall_result; | 1626 | retval = STbp->syscall_result; |
1625 | goto out; | 1627 | goto out; |
1626 | } | 1628 | } |
1627 | if (async_write) { | 1629 | if (async_write && !STbp->syscall_result) { |
1628 | STbp->writing = transfer; | 1630 | STbp->writing = transfer; |
1629 | STp->dirty = !(STbp->writing == | 1631 | STp->dirty = !(STbp->writing == |
1630 | STbp->buffer_bytes); | 1632 | STbp->buffer_bytes); |
@@ -1698,7 +1700,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
1698 | } else { | 1700 | } else { |
1699 | count += do_count; | 1701 | count += do_count; |
1700 | STps->drv_block = (-1); /* Too cautious? */ | 1702 | STps->drv_block = (-1); /* Too cautious? */ |
1701 | retval = (-EIO); | 1703 | retval = STbp->syscall_result; |
1702 | } | 1704 | } |
1703 | 1705 | ||
1704 | } | 1706 | } |
@@ -1728,8 +1730,8 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
1728 | 1730 | ||
1729 | out: | 1731 | out: |
1730 | if (SRpnt != NULL) | 1732 | if (SRpnt != NULL) |
1731 | scsi_release_request(SRpnt); | 1733 | st_release_request(SRpnt); |
1732 | release_buffering(STp); | 1734 | release_buffering(STp, 0); |
1733 | up(&STp->lock); | 1735 | up(&STp->lock); |
1734 | 1736 | ||
1735 | return retval; | 1737 | return retval; |
@@ -1742,11 +1744,11 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
1742 | Does release user buffer mapping if it is set. | 1744 | Does release user buffer mapping if it is set. |
1743 | */ | 1745 | */ |
1744 | static long read_tape(struct scsi_tape *STp, long count, | 1746 | static long read_tape(struct scsi_tape *STp, long count, |
1745 | struct scsi_request ** aSRpnt) | 1747 | struct st_request ** aSRpnt) |
1746 | { | 1748 | { |
1747 | int transfer, blks, bytes; | 1749 | int transfer, blks, bytes; |
1748 | unsigned char cmd[MAX_COMMAND_SIZE]; | 1750 | unsigned char cmd[MAX_COMMAND_SIZE]; |
1749 | struct scsi_request *SRpnt; | 1751 | struct st_request *SRpnt; |
1750 | struct st_modedef *STm; | 1752 | struct st_modedef *STm; |
1751 | struct st_partstat *STps; | 1753 | struct st_partstat *STps; |
1752 | struct st_buffer *STbp; | 1754 | struct st_buffer *STbp; |
@@ -1787,7 +1789,7 @@ static long read_tape(struct scsi_tape *STp, long count, | |||
1787 | SRpnt = *aSRpnt; | 1789 | SRpnt = *aSRpnt; |
1788 | SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE, | 1790 | SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE, |
1789 | STp->device->timeout, MAX_RETRIES, 1); | 1791 | STp->device->timeout, MAX_RETRIES, 1); |
1790 | release_buffering(STp); | 1792 | release_buffering(STp, 1); |
1791 | *aSRpnt = SRpnt; | 1793 | *aSRpnt = SRpnt; |
1792 | if (!SRpnt) | 1794 | if (!SRpnt) |
1793 | return STbp->syscall_result; | 1795 | return STbp->syscall_result; |
@@ -1802,10 +1804,10 @@ static long read_tape(struct scsi_tape *STp, long count, | |||
1802 | retval = 1; | 1804 | retval = 1; |
1803 | DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n", | 1805 | DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n", |
1804 | name, | 1806 | name, |
1805 | SRpnt->sr_sense_buffer[0], SRpnt->sr_sense_buffer[1], | 1807 | SRpnt->sense[0], SRpnt->sense[1], |
1806 | SRpnt->sr_sense_buffer[2], SRpnt->sr_sense_buffer[3], | 1808 | SRpnt->sense[2], SRpnt->sense[3], |
1807 | SRpnt->sr_sense_buffer[4], SRpnt->sr_sense_buffer[5], | 1809 | SRpnt->sense[4], SRpnt->sense[5], |
1808 | SRpnt->sr_sense_buffer[6], SRpnt->sr_sense_buffer[7])); | 1810 | SRpnt->sense[6], SRpnt->sense[7])); |
1809 | if (cmdstatp->have_sense) { | 1811 | if (cmdstatp->have_sense) { |
1810 | 1812 | ||
1811 | if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK) | 1813 | if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK) |
@@ -1835,7 +1837,7 @@ static long read_tape(struct scsi_tape *STp, long count, | |||
1835 | } | 1837 | } |
1836 | STbp->buffer_bytes = bytes - transfer; | 1838 | STbp->buffer_bytes = bytes - transfer; |
1837 | } else { | 1839 | } else { |
1838 | scsi_release_request(SRpnt); | 1840 | st_release_request(SRpnt); |
1839 | SRpnt = *aSRpnt = NULL; | 1841 | SRpnt = *aSRpnt = NULL; |
1840 | if (transfer == blks) { /* We did not get anything, error */ | 1842 | if (transfer == blks) { /* We did not get anything, error */ |
1841 | printk(KERN_NOTICE "%s: Incorrect block size.\n", name); | 1843 | printk(KERN_NOTICE "%s: Incorrect block size.\n", name); |
@@ -1929,7 +1931,7 @@ st_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos) | |||
1929 | ssize_t retval = 0; | 1931 | ssize_t retval = 0; |
1930 | ssize_t i, transfer; | 1932 | ssize_t i, transfer; |
1931 | int special, do_dio = 0; | 1933 | int special, do_dio = 0; |
1932 | struct scsi_request *SRpnt = NULL; | 1934 | struct st_request *SRpnt = NULL; |
1933 | struct scsi_tape *STp = filp->private_data; | 1935 | struct scsi_tape *STp = filp->private_data; |
1934 | struct st_modedef *STm; | 1936 | struct st_modedef *STm; |
1935 | struct st_partstat *STps; | 1937 | struct st_partstat *STps; |
@@ -2054,11 +2056,11 @@ st_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos) | |||
2054 | 2056 | ||
2055 | out: | 2057 | out: |
2056 | if (SRpnt != NULL) { | 2058 | if (SRpnt != NULL) { |
2057 | scsi_release_request(SRpnt); | 2059 | st_release_request(SRpnt); |
2058 | SRpnt = NULL; | 2060 | SRpnt = NULL; |
2059 | } | 2061 | } |
2060 | if (do_dio) { | 2062 | if (do_dio) { |
2061 | release_buffering(STp); | 2063 | release_buffering(STp, 1); |
2062 | STbp->buffer_bytes = 0; | 2064 | STbp->buffer_bytes = 0; |
2063 | } | 2065 | } |
2064 | up(&STp->lock); | 2066 | up(&STp->lock); |
@@ -2284,7 +2286,7 @@ static int st_set_options(struct scsi_tape *STp, long options) | |||
2284 | static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs) | 2286 | static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs) |
2285 | { | 2287 | { |
2286 | unsigned char cmd[MAX_COMMAND_SIZE]; | 2288 | unsigned char cmd[MAX_COMMAND_SIZE]; |
2287 | struct scsi_request *SRpnt = NULL; | 2289 | struct st_request *SRpnt = NULL; |
2288 | 2290 | ||
2289 | memset(cmd, 0, MAX_COMMAND_SIZE); | 2291 | memset(cmd, 0, MAX_COMMAND_SIZE); |
2290 | cmd[0] = MODE_SENSE; | 2292 | cmd[0] = MODE_SENSE; |
@@ -2298,7 +2300,7 @@ static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs) | |||
2298 | if (SRpnt == NULL) | 2300 | if (SRpnt == NULL) |
2299 | return (STp->buffer)->syscall_result; | 2301 | return (STp->buffer)->syscall_result; |
2300 | 2302 | ||
2301 | scsi_release_request(SRpnt); | 2303 | st_release_request(SRpnt); |
2302 | 2304 | ||
2303 | return (STp->buffer)->syscall_result; | 2305 | return (STp->buffer)->syscall_result; |
2304 | } | 2306 | } |
@@ -2310,7 +2312,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow) | |||
2310 | { | 2312 | { |
2311 | int pgo; | 2313 | int pgo; |
2312 | unsigned char cmd[MAX_COMMAND_SIZE]; | 2314 | unsigned char cmd[MAX_COMMAND_SIZE]; |
2313 | struct scsi_request *SRpnt = NULL; | 2315 | struct st_request *SRpnt = NULL; |
2314 | 2316 | ||
2315 | memset(cmd, 0, MAX_COMMAND_SIZE); | 2317 | memset(cmd, 0, MAX_COMMAND_SIZE); |
2316 | cmd[0] = MODE_SELECT; | 2318 | cmd[0] = MODE_SELECT; |
@@ -2329,7 +2331,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow) | |||
2329 | if (SRpnt == NULL) | 2331 | if (SRpnt == NULL) |
2330 | return (STp->buffer)->syscall_result; | 2332 | return (STp->buffer)->syscall_result; |
2331 | 2333 | ||
2332 | scsi_release_request(SRpnt); | 2334 | st_release_request(SRpnt); |
2333 | 2335 | ||
2334 | return (STp->buffer)->syscall_result; | 2336 | return (STp->buffer)->syscall_result; |
2335 | } | 2337 | } |
@@ -2412,7 +2414,7 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod | |||
2412 | DEB( char *name = tape_name(STp); ) | 2414 | DEB( char *name = tape_name(STp); ) |
2413 | unsigned char cmd[MAX_COMMAND_SIZE]; | 2415 | unsigned char cmd[MAX_COMMAND_SIZE]; |
2414 | struct st_partstat *STps; | 2416 | struct st_partstat *STps; |
2415 | struct scsi_request *SRpnt; | 2417 | struct st_request *SRpnt; |
2416 | 2418 | ||
2417 | if (STp->ready != ST_READY && !load_code) { | 2419 | if (STp->ready != ST_READY && !load_code) { |
2418 | if (STp->ready == ST_NO_TAPE) | 2420 | if (STp->ready == ST_NO_TAPE) |
@@ -2455,7 +2457,7 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod | |||
2455 | return (STp->buffer)->syscall_result; | 2457 | return (STp->buffer)->syscall_result; |
2456 | 2458 | ||
2457 | retval = (STp->buffer)->syscall_result; | 2459 | retval = (STp->buffer)->syscall_result; |
2458 | scsi_release_request(SRpnt); | 2460 | st_release_request(SRpnt); |
2459 | 2461 | ||
2460 | if (!retval) { /* SCSI command successful */ | 2462 | if (!retval) { /* SCSI command successful */ |
2461 | 2463 | ||
@@ -2503,7 +2505,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon | |||
2503 | int ioctl_result; | 2505 | int ioctl_result; |
2504 | int chg_eof = 1; | 2506 | int chg_eof = 1; |
2505 | unsigned char cmd[MAX_COMMAND_SIZE]; | 2507 | unsigned char cmd[MAX_COMMAND_SIZE]; |
2506 | struct scsi_request *SRpnt; | 2508 | struct st_request *SRpnt; |
2507 | struct st_partstat *STps; | 2509 | struct st_partstat *STps; |
2508 | int fileno, blkno, at_sm, undone; | 2510 | int fileno, blkno, at_sm, undone; |
2509 | int datalen = 0, direction = DMA_NONE; | 2511 | int datalen = 0, direction = DMA_NONE; |
@@ -2757,7 +2759,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon | |||
2757 | ioctl_result = (STp->buffer)->syscall_result; | 2759 | ioctl_result = (STp->buffer)->syscall_result; |
2758 | 2760 | ||
2759 | if (!ioctl_result) { /* SCSI command successful */ | 2761 | if (!ioctl_result) { /* SCSI command successful */ |
2760 | scsi_release_request(SRpnt); | 2762 | st_release_request(SRpnt); |
2761 | SRpnt = NULL; | 2763 | SRpnt = NULL; |
2762 | STps->drv_block = blkno; | 2764 | STps->drv_block = blkno; |
2763 | STps->drv_file = fileno; | 2765 | STps->drv_file = fileno; |
@@ -2872,7 +2874,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon | |||
2872 | /* Try the other possible state of Page Format if not | 2874 | /* Try the other possible state of Page Format if not |
2873 | already tried */ | 2875 | already tried */ |
2874 | STp->use_pf = !STp->use_pf | PF_TESTED; | 2876 | STp->use_pf = !STp->use_pf | PF_TESTED; |
2875 | scsi_release_request(SRpnt); | 2877 | st_release_request(SRpnt); |
2876 | SRpnt = NULL; | 2878 | SRpnt = NULL; |
2877 | return st_int_ioctl(STp, cmd_in, arg); | 2879 | return st_int_ioctl(STp, cmd_in, arg); |
2878 | } | 2880 | } |
@@ -2882,7 +2884,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon | |||
2882 | if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK) | 2884 | if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK) |
2883 | STps->eof = ST_EOD; | 2885 | STps->eof = ST_EOD; |
2884 | 2886 | ||
2885 | scsi_release_request(SRpnt); | 2887 | st_release_request(SRpnt); |
2886 | SRpnt = NULL; | 2888 | SRpnt = NULL; |
2887 | } | 2889 | } |
2888 | 2890 | ||
@@ -2898,7 +2900,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti | |||
2898 | { | 2900 | { |
2899 | int result; | 2901 | int result; |
2900 | unsigned char scmd[MAX_COMMAND_SIZE]; | 2902 | unsigned char scmd[MAX_COMMAND_SIZE]; |
2901 | struct scsi_request *SRpnt; | 2903 | struct st_request *SRpnt; |
2902 | DEB( char *name = tape_name(STp); ) | 2904 | DEB( char *name = tape_name(STp); ) |
2903 | 2905 | ||
2904 | if (STp->ready != ST_READY) | 2906 | if (STp->ready != ST_READY) |
@@ -2944,7 +2946,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti | |||
2944 | DEBC(printk(ST_DEB_MSG "%s: Got tape pos. blk %d part %d.\n", name, | 2946 | DEBC(printk(ST_DEB_MSG "%s: Got tape pos. blk %d part %d.\n", name, |
2945 | *block, *partition)); | 2947 | *block, *partition)); |
2946 | } | 2948 | } |
2947 | scsi_release_request(SRpnt); | 2949 | st_release_request(SRpnt); |
2948 | SRpnt = NULL; | 2950 | SRpnt = NULL; |
2949 | 2951 | ||
2950 | return result; | 2952 | return result; |
@@ -2961,7 +2963,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition | |||
2961 | unsigned int blk; | 2963 | unsigned int blk; |
2962 | int timeout; | 2964 | int timeout; |
2963 | unsigned char scmd[MAX_COMMAND_SIZE]; | 2965 | unsigned char scmd[MAX_COMMAND_SIZE]; |
2964 | struct scsi_request *SRpnt; | 2966 | struct st_request *SRpnt; |
2965 | DEB( char *name = tape_name(STp); ) | 2967 | DEB( char *name = tape_name(STp); ) |
2966 | 2968 | ||
2967 | if (STp->ready != ST_READY) | 2969 | if (STp->ready != ST_READY) |
@@ -3047,7 +3049,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition | |||
3047 | result = 0; | 3049 | result = 0; |
3048 | } | 3050 | } |
3049 | 3051 | ||
3050 | scsi_release_request(SRpnt); | 3052 | st_release_request(SRpnt); |
3051 | SRpnt = NULL; | 3053 | SRpnt = NULL; |
3052 | 3054 | ||
3053 | return result; | 3055 | return result; |
@@ -3577,7 +3579,7 @@ static long st_compat_ioctl(struct file *file, unsigned int cmd, unsigned long a | |||
3577 | static struct st_buffer * | 3579 | static struct st_buffer * |
3578 | new_tape_buffer(int from_initialization, int need_dma, int max_sg) | 3580 | new_tape_buffer(int from_initialization, int need_dma, int max_sg) |
3579 | { | 3581 | { |
3580 | int i, got = 0, segs = 0; | 3582 | int i, got = 0; |
3581 | gfp_t priority; | 3583 | gfp_t priority; |
3582 | struct st_buffer *tb; | 3584 | struct st_buffer *tb; |
3583 | 3585 | ||
@@ -3594,10 +3596,8 @@ static struct st_buffer * | |||
3594 | return NULL; | 3596 | return NULL; |
3595 | } | 3597 | } |
3596 | memset(tb, 0, i); | 3598 | memset(tb, 0, i); |
3597 | tb->frp_segs = tb->orig_frp_segs = segs; | 3599 | tb->frp_segs = tb->orig_frp_segs = 0; |
3598 | tb->use_sg = max_sg; | 3600 | tb->use_sg = max_sg; |
3599 | if (segs > 0) | ||
3600 | tb->b_data = page_address(tb->sg[0].page); | ||
3601 | tb->frp = (struct st_buf_fragment *)(&(tb->sg[0]) + max_sg); | 3601 | tb->frp = (struct st_buf_fragment *)(&(tb->sg[0]) + max_sg); |
3602 | 3602 | ||
3603 | tb->in_use = 1; | 3603 | tb->in_use = 1; |
@@ -3628,7 +3628,7 @@ static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dm | |||
3628 | priority = GFP_KERNEL | __GFP_NOWARN; | 3628 | priority = GFP_KERNEL | __GFP_NOWARN; |
3629 | if (need_dma) | 3629 | if (need_dma) |
3630 | priority |= GFP_DMA; | 3630 | priority |= GFP_DMA; |
3631 | for (b_size = PAGE_SIZE, order=0; | 3631 | for (b_size = PAGE_SIZE, order=0; order <= 6 && |
3632 | b_size < new_size - STbuffer->buffer_size; | 3632 | b_size < new_size - STbuffer->buffer_size; |
3633 | order++, b_size *= 2) | 3633 | order++, b_size *= 2) |
3634 | ; /* empty */ | 3634 | ; /* empty */ |
@@ -3670,6 +3670,7 @@ static void normalize_buffer(struct st_buffer * STbuffer) | |||
3670 | } | 3670 | } |
3671 | STbuffer->frp_segs = STbuffer->orig_frp_segs; | 3671 | STbuffer->frp_segs = STbuffer->orig_frp_segs; |
3672 | STbuffer->frp_sg_current = 0; | 3672 | STbuffer->frp_sg_current = 0; |
3673 | STbuffer->sg_segs = 0; | ||
3673 | } | 3674 | } |
3674 | 3675 | ||
3675 | 3676 | ||
@@ -3882,7 +3883,6 @@ static int st_probe(struct device *dev) | |||
3882 | struct st_buffer *buffer; | 3883 | struct st_buffer *buffer; |
3883 | int i, j, mode, dev_num, error; | 3884 | int i, j, mode, dev_num, error; |
3884 | char *stp; | 3885 | char *stp; |
3885 | u64 bounce_limit; | ||
3886 | 3886 | ||
3887 | if (SDp->type != TYPE_TAPE) | 3887 | if (SDp->type != TYPE_TAPE) |
3888 | return -ENODEV; | 3888 | return -ENODEV; |
@@ -3892,7 +3892,8 @@ static int st_probe(struct device *dev) | |||
3892 | return -ENODEV; | 3892 | return -ENODEV; |
3893 | } | 3893 | } |
3894 | 3894 | ||
3895 | i = SDp->host->sg_tablesize; | 3895 | i = min(SDp->request_queue->max_hw_segments, |
3896 | SDp->request_queue->max_phys_segments); | ||
3896 | if (st_max_sg_segs < i) | 3897 | if (st_max_sg_segs < i) |
3897 | i = st_max_sg_segs; | 3898 | i = st_max_sg_segs; |
3898 | buffer = new_tape_buffer(1, (SDp->host)->unchecked_isa_dma, i); | 3899 | buffer = new_tape_buffer(1, (SDp->host)->unchecked_isa_dma, i); |
@@ -3994,11 +3995,6 @@ static int st_probe(struct device *dev) | |||
3994 | tpnt->long_timeout = ST_LONG_TIMEOUT; | 3995 | tpnt->long_timeout = ST_LONG_TIMEOUT; |
3995 | tpnt->try_dio = try_direct_io && !SDp->host->unchecked_isa_dma; | 3996 | tpnt->try_dio = try_direct_io && !SDp->host->unchecked_isa_dma; |
3996 | 3997 | ||
3997 | bounce_limit = scsi_calculate_bounce_limit(SDp->host) >> PAGE_SHIFT; | ||
3998 | if (bounce_limit > ULONG_MAX) | ||
3999 | bounce_limit = ULONG_MAX; | ||
4000 | tpnt->max_pfn = bounce_limit; | ||
4001 | |||
4002 | for (i = 0; i < ST_NBR_MODES; i++) { | 3998 | for (i = 0; i < ST_NBR_MODES; i++) { |
4003 | STm = &(tpnt->modes[i]); | 3999 | STm = &(tpnt->modes[i]); |
4004 | STm->defined = 0; | 4000 | STm->defined = 0; |
@@ -4077,9 +4073,9 @@ static int st_probe(struct device *dev) | |||
4077 | 4073 | ||
4078 | sdev_printk(KERN_WARNING, SDp, | 4074 | sdev_printk(KERN_WARNING, SDp, |
4079 | "Attached scsi tape %s", tape_name(tpnt)); | 4075 | "Attached scsi tape %s", tape_name(tpnt)); |
4080 | printk(KERN_WARNING "%s: try direct i/o: %s (alignment %d B), max page reachable by HBA %lu\n", | 4076 | printk(KERN_WARNING "%s: try direct i/o: %s (alignment %d B)\n", |
4081 | tape_name(tpnt), tpnt->try_dio ? "yes" : "no", | 4077 | tape_name(tpnt), tpnt->try_dio ? "yes" : "no", |
4082 | queue_dma_alignment(SDp->request_queue) + 1, tpnt->max_pfn); | 4078 | queue_dma_alignment(SDp->request_queue) + 1); |
4083 | 4079 | ||
4084 | return 0; | 4080 | return 0; |
4085 | 4081 | ||
@@ -4144,9 +4140,9 @@ static int st_remove(struct device *dev) | |||
4144 | } | 4140 | } |
4145 | } | 4141 | } |
4146 | 4142 | ||
4147 | down(&st_ref_sem); | 4143 | mutex_lock(&st_ref_mutex); |
4148 | kref_put(&tpnt->kref, scsi_tape_release); | 4144 | kref_put(&tpnt->kref, scsi_tape_release); |
4149 | up(&st_ref_sem); | 4145 | mutex_unlock(&st_ref_mutex); |
4150 | return 0; | 4146 | return 0; |
4151 | } | 4147 | } |
4152 | } | 4148 | } |
@@ -4159,7 +4155,7 @@ static int st_remove(struct device *dev) | |||
4159 | * scsi_tape_release - Called to free the Scsi_Tape structure | 4155 | * scsi_tape_release - Called to free the Scsi_Tape structure |
4160 | * @kref: pointer to embedded kref | 4156 | * @kref: pointer to embedded kref |
4161 | * | 4157 | * |
4162 | * st_ref_sem must be held entering this routine. Because it is | 4158 | * st_ref_mutex must be held entering this routine. Because it is |
4163 | * called on last put, you should always use the scsi_tape_get() | 4159 | * called on last put, you should always use the scsi_tape_get() |
4164 | * scsi_tape_put() helpers which manipulate the semaphore directly | 4160 | * scsi_tape_put() helpers which manipulate the semaphore directly |
4165 | * and never do a direct kref_put(). | 4161 | * and never do a direct kref_put(). |
@@ -4183,25 +4179,6 @@ static void scsi_tape_release(struct kref *kref) | |||
4183 | return; | 4179 | return; |
4184 | } | 4180 | } |
4185 | 4181 | ||
4186 | static void st_intr(struct scsi_cmnd *SCpnt) | ||
4187 | { | ||
4188 | scsi_io_completion(SCpnt, (SCpnt->result ? 0: SCpnt->bufflen), 1); | ||
4189 | } | ||
4190 | |||
4191 | /* | ||
4192 | * st_init_command: only called via the scsi_cmd_ioctl (block SG_IO) | ||
4193 | * interface for REQ_BLOCK_PC commands. | ||
4194 | */ | ||
4195 | static int st_init_command(struct scsi_cmnd *SCpnt) | ||
4196 | { | ||
4197 | if (!(SCpnt->request->flags & REQ_BLOCK_PC)) | ||
4198 | return 0; | ||
4199 | |||
4200 | scsi_setup_blk_pc_cmnd(SCpnt, 0); | ||
4201 | SCpnt->done = st_intr; | ||
4202 | return 1; | ||
4203 | } | ||
4204 | |||
4205 | static int __init init_st(void) | 4182 | static int __init init_st(void) |
4206 | { | 4183 | { |
4207 | validate_options(); | 4184 | validate_options(); |
@@ -4390,34 +4367,6 @@ static void do_create_class_files(struct scsi_tape *STp, int dev_num, int mode) | |||
4390 | return; | 4367 | return; |
4391 | } | 4368 | } |
4392 | 4369 | ||
4393 | |||
4394 | /* Pin down user pages and put them into a scatter gather list. Returns <= 0 if | ||
4395 | - mapping of all pages not successful | ||
4396 | - any page is above max_pfn | ||
4397 | (i.e., either completely successful or fails) | ||
4398 | */ | ||
4399 | static int st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, | ||
4400 | unsigned long uaddr, size_t count, int rw, | ||
4401 | unsigned long max_pfn) | ||
4402 | { | ||
4403 | int i, nr_pages; | ||
4404 | |||
4405 | nr_pages = sgl_map_user_pages(sgl, max_pages, uaddr, count, rw); | ||
4406 | if (nr_pages <= 0) | ||
4407 | return nr_pages; | ||
4408 | |||
4409 | for (i=0; i < nr_pages; i++) { | ||
4410 | if (page_to_pfn(sgl[i].page) > max_pfn) | ||
4411 | goto out_unmap; | ||
4412 | } | ||
4413 | return nr_pages; | ||
4414 | |||
4415 | out_unmap: | ||
4416 | sgl_unmap_user_pages(sgl, nr_pages, 0); | ||
4417 | return 0; | ||
4418 | } | ||
4419 | |||
4420 | |||
4421 | /* The following functions may be useful for a larger audience. */ | 4370 | /* The following functions may be useful for a larger audience. */ |
4422 | static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, | 4371 | static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, |
4423 | unsigned long uaddr, size_t count, int rw) | 4372 | unsigned long uaddr, size_t count, int rw) |
diff --git a/drivers/scsi/st.h b/drivers/scsi/st.h index 790acac160bc..411209048d74 100644 --- a/drivers/scsi/st.h +++ b/drivers/scsi/st.h | |||
@@ -4,6 +4,7 @@ | |||
4 | 4 | ||
5 | #include <linux/completion.h> | 5 | #include <linux/completion.h> |
6 | #include <linux/kref.h> | 6 | #include <linux/kref.h> |
7 | #include <scsi/scsi_cmnd.h> | ||
7 | 8 | ||
8 | /* Descriptor for analyzed sense data */ | 9 | /* Descriptor for analyzed sense data */ |
9 | struct st_cmdstatus { | 10 | struct st_cmdstatus { |
@@ -17,6 +18,17 @@ struct st_cmdstatus { | |||
17 | u8 deferred; | 18 | u8 deferred; |
18 | }; | 19 | }; |
19 | 20 | ||
21 | struct scsi_tape; | ||
22 | |||
23 | /* scsi tape command */ | ||
24 | struct st_request { | ||
25 | unsigned char cmd[MAX_COMMAND_SIZE]; | ||
26 | unsigned char sense[SCSI_SENSE_BUFFERSIZE]; | ||
27 | int result; | ||
28 | struct scsi_tape *stp; | ||
29 | struct completion *waiting; | ||
30 | }; | ||
31 | |||
20 | /* The tape buffer descriptor. */ | 32 | /* The tape buffer descriptor. */ |
21 | struct st_buffer { | 33 | struct st_buffer { |
22 | unsigned char in_use; | 34 | unsigned char in_use; |
@@ -28,7 +40,7 @@ struct st_buffer { | |||
28 | int read_pointer; | 40 | int read_pointer; |
29 | int writing; | 41 | int writing; |
30 | int syscall_result; | 42 | int syscall_result; |
31 | struct scsi_request *last_SRpnt; | 43 | struct st_request *last_SRpnt; |
32 | struct st_cmdstatus cmdstat; | 44 | struct st_cmdstatus cmdstat; |
33 | unsigned char *b_data; | 45 | unsigned char *b_data; |
34 | unsigned short use_sg; /* zero or max number of s/g segments for this adapter */ | 46 | unsigned short use_sg; /* zero or max number of s/g segments for this adapter */ |
diff --git a/drivers/scsi/sun3_NCR5380.c b/drivers/scsi/sun3_NCR5380.c index c041bfd56e12..25cced91c8a6 100644 --- a/drivers/scsi/sun3_NCR5380.c +++ b/drivers/scsi/sun3_NCR5380.c | |||
@@ -70,6 +70,7 @@ | |||
70 | * | 70 | * |
71 | */ | 71 | */ |
72 | #include <scsi/scsi_dbg.h> | 72 | #include <scsi/scsi_dbg.h> |
73 | #include <scsi/scsi_transport_spi.h> | ||
73 | 74 | ||
74 | /* | 75 | /* |
75 | * Further development / testing that should be done : | 76 | * Further development / testing that should be done : |
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance) | |||
2378 | * 3..length+1 arguments | 2379 | * 3..length+1 arguments |
2379 | * | 2380 | * |
2380 | * Start the extended message buffer with the EXTENDED_MESSAGE | 2381 | * Start the extended message buffer with the EXTENDED_MESSAGE |
2381 | * byte, since scsi_print_msg() wants the whole thing. | 2382 | * byte, since spi_print_msg() wants the whole thing. |
2382 | */ | 2383 | */ |
2383 | extended_msg[0] = EXTENDED_MESSAGE; | 2384 | extended_msg[0] = EXTENDED_MESSAGE; |
2384 | /* Accept first byte by clearing ACK */ | 2385 | /* Accept first byte by clearing ACK */ |
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance) | |||
2431 | default: | 2432 | default: |
2432 | if (!tmp) { | 2433 | if (!tmp) { |
2433 | printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO); | 2434 | printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO); |
2434 | scsi_print_msg (extended_msg); | 2435 | spi_print_msg(extended_msg); |
2435 | printk("\n"); | 2436 | printk("\n"); |
2436 | } else if (tmp != EXTENDED_MESSAGE) | 2437 | } else if (tmp != EXTENDED_MESSAGE) |
2437 | printk(KERN_DEBUG "scsi%d: rejecting unknown " | 2438 | printk(KERN_DEBUG "scsi%d: rejecting unknown " |
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance) | |||
2566 | 2567 | ||
2567 | if (!(msg[0] & 0x80)) { | 2568 | if (!(msg[0] & 0x80)) { |
2568 | printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO); | 2569 | printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO); |
2569 | scsi_print_msg(msg); | 2570 | spi_print_msg(msg); |
2570 | do_abort(instance); | 2571 | do_abort(instance); |
2571 | return; | 2572 | return; |
2572 | } | 2573 | } |
diff --git a/drivers/scsi/sym53c8xx_2/sym_defs.h b/drivers/scsi/sym53c8xx_2/sym_defs.h index 2d9437d7242b..3659dd7b9d76 100644 --- a/drivers/scsi/sym53c8xx_2/sym_defs.h +++ b/drivers/scsi/sym53c8xx_2/sym_defs.h | |||
@@ -40,7 +40,7 @@ | |||
40 | #ifndef SYM_DEFS_H | 40 | #ifndef SYM_DEFS_H |
41 | #define SYM_DEFS_H | 41 | #define SYM_DEFS_H |
42 | 42 | ||
43 | #define SYM_VERSION "2.2.1" | 43 | #define SYM_VERSION "2.2.2" |
44 | #define SYM_DRIVER_NAME "sym-" SYM_VERSION | 44 | #define SYM_DRIVER_NAME "sym-" SYM_VERSION |
45 | 45 | ||
46 | /* | 46 | /* |
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw.c b/drivers/scsi/sym53c8xx_2/sym_fw.c index fd36cf9858cb..9916a2a22558 100644 --- a/drivers/scsi/sym53c8xx_2/sym_fw.c +++ b/drivers/scsi/sym53c8xx_2/sym_fw.c | |||
@@ -37,11 +37,7 @@ | |||
37 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 37 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
38 | */ | 38 | */ |
39 | 39 | ||
40 | #ifdef __FreeBSD__ | ||
41 | #include <dev/sym/sym_glue.h> | ||
42 | #else | ||
43 | #include "sym_glue.h" | 40 | #include "sym_glue.h" |
44 | #endif | ||
45 | 41 | ||
46 | /* | 42 | /* |
47 | * Macros used for all firmwares. | 43 | * Macros used for all firmwares. |
@@ -60,19 +56,12 @@ | |||
60 | #define SYM_FWA_SCR sym_fw1a_scr | 56 | #define SYM_FWA_SCR sym_fw1a_scr |
61 | #define SYM_FWB_SCR sym_fw1b_scr | 57 | #define SYM_FWB_SCR sym_fw1b_scr |
62 | #define SYM_FWZ_SCR sym_fw1z_scr | 58 | #define SYM_FWZ_SCR sym_fw1z_scr |
63 | #ifdef __FreeBSD__ | ||
64 | #include <dev/sym/sym_fw1.h> | ||
65 | #else | ||
66 | #include "sym_fw1.h" | 59 | #include "sym_fw1.h" |
67 | #endif | ||
68 | static struct sym_fwa_ofs sym_fw1a_ofs = { | 60 | static struct sym_fwa_ofs sym_fw1a_ofs = { |
69 | SYM_GEN_FW_A(struct SYM_FWA_SCR) | 61 | SYM_GEN_FW_A(struct SYM_FWA_SCR) |
70 | }; | 62 | }; |
71 | static struct sym_fwb_ofs sym_fw1b_ofs = { | 63 | static struct sym_fwb_ofs sym_fw1b_ofs = { |
72 | SYM_GEN_FW_B(struct SYM_FWB_SCR) | 64 | SYM_GEN_FW_B(struct SYM_FWB_SCR) |
73 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
74 | SYM_GEN_B(struct SYM_FWB_SCR, data_io) | ||
75 | #endif | ||
76 | }; | 65 | }; |
77 | static struct sym_fwz_ofs sym_fw1z_ofs = { | 66 | static struct sym_fwz_ofs sym_fw1z_ofs = { |
78 | SYM_GEN_FW_Z(struct SYM_FWZ_SCR) | 67 | SYM_GEN_FW_Z(struct SYM_FWZ_SCR) |
@@ -88,19 +77,12 @@ static struct sym_fwz_ofs sym_fw1z_ofs = { | |||
88 | #define SYM_FWA_SCR sym_fw2a_scr | 77 | #define SYM_FWA_SCR sym_fw2a_scr |
89 | #define SYM_FWB_SCR sym_fw2b_scr | 78 | #define SYM_FWB_SCR sym_fw2b_scr |
90 | #define SYM_FWZ_SCR sym_fw2z_scr | 79 | #define SYM_FWZ_SCR sym_fw2z_scr |
91 | #ifdef __FreeBSD__ | ||
92 | #include <dev/sym/sym_fw2.h> | ||
93 | #else | ||
94 | #include "sym_fw2.h" | 80 | #include "sym_fw2.h" |
95 | #endif | ||
96 | static struct sym_fwa_ofs sym_fw2a_ofs = { | 81 | static struct sym_fwa_ofs sym_fw2a_ofs = { |
97 | SYM_GEN_FW_A(struct SYM_FWA_SCR) | 82 | SYM_GEN_FW_A(struct SYM_FWA_SCR) |
98 | }; | 83 | }; |
99 | static struct sym_fwb_ofs sym_fw2b_ofs = { | 84 | static struct sym_fwb_ofs sym_fw2b_ofs = { |
100 | SYM_GEN_FW_B(struct SYM_FWB_SCR) | 85 | SYM_GEN_FW_B(struct SYM_FWB_SCR) |
101 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
102 | SYM_GEN_B(struct SYM_FWB_SCR, data_io) | ||
103 | #endif | ||
104 | SYM_GEN_B(struct SYM_FWB_SCR, start64) | 86 | SYM_GEN_B(struct SYM_FWB_SCR, start64) |
105 | SYM_GEN_B(struct SYM_FWB_SCR, pm_handle) | 87 | SYM_GEN_B(struct SYM_FWB_SCR, pm_handle) |
106 | }; | 88 | }; |
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw.h b/drivers/scsi/sym53c8xx_2/sym_fw.h index 43f6810a4045..66ec35beab5b 100644 --- a/drivers/scsi/sym53c8xx_2/sym_fw.h +++ b/drivers/scsi/sym53c8xx_2/sym_fw.h | |||
@@ -92,9 +92,6 @@ struct sym_fwa_ofs { | |||
92 | }; | 92 | }; |
93 | struct sym_fwb_ofs { | 93 | struct sym_fwb_ofs { |
94 | SYM_GEN_FW_B(u_short) | 94 | SYM_GEN_FW_B(u_short) |
95 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
96 | SYM_GEN_B(u_short, data_io) | ||
97 | #endif | ||
98 | SYM_GEN_B(u_short, start64) | 95 | SYM_GEN_B(u_short, start64) |
99 | SYM_GEN_B(u_short, pm_handle) | 96 | SYM_GEN_B(u_short, pm_handle) |
100 | }; | 97 | }; |
@@ -111,9 +108,6 @@ struct sym_fwa_ba { | |||
111 | }; | 108 | }; |
112 | struct sym_fwb_ba { | 109 | struct sym_fwb_ba { |
113 | SYM_GEN_FW_B(u32) | 110 | SYM_GEN_FW_B(u32) |
114 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
115 | SYM_GEN_B(u32, data_io) | ||
116 | #endif | ||
117 | SYM_GEN_B(u32, start64); | 111 | SYM_GEN_B(u32, start64); |
118 | SYM_GEN_B(u32, pm_handle); | 112 | SYM_GEN_B(u32, pm_handle); |
119 | }; | 113 | }; |
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw1.h b/drivers/scsi/sym53c8xx_2/sym_fw1.h index cdd92d82f4b2..7b39f4a35e98 100644 --- a/drivers/scsi/sym53c8xx_2/sym_fw1.h +++ b/drivers/scsi/sym53c8xx_2/sym_fw1.h | |||
@@ -197,12 +197,6 @@ struct SYM_FWB_SCR { | |||
197 | u32 bad_status [ 7]; | 197 | u32 bad_status [ 7]; |
198 | u32 wsr_ma_helper [ 4]; | 198 | u32 wsr_ma_helper [ 4]; |
199 | 199 | ||
200 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
201 | /* Unknown direction handling */ | ||
202 | u32 data_io [ 2]; | ||
203 | u32 data_io_com [ 8]; | ||
204 | u32 data_io_out [ 7]; | ||
205 | #endif | ||
206 | /* Data area */ | 200 | /* Data area */ |
207 | u32 zero [ 1]; | 201 | u32 zero [ 1]; |
208 | u32 scratch [ 1]; | 202 | u32 scratch [ 1]; |
@@ -1747,48 +1741,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = { | |||
1747 | SCR_JUMP, | 1741 | SCR_JUMP, |
1748 | PADDR_A (dispatch), | 1742 | PADDR_A (dispatch), |
1749 | 1743 | ||
1750 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
1751 | }/*-------------------------< DATA_IO >--------------------------*/,{ | ||
1752 | /* | ||
1753 | * We jump here if the data direction was unknown at the | ||
1754 | * time we had to queue the command to the scripts processor. | ||
1755 | * Pointers had been set as follow in this situation: | ||
1756 | * savep --> DATA_IO | ||
1757 | * lastp --> start pointer when DATA_IN | ||
1758 | * wlastp --> start pointer when DATA_OUT | ||
1759 | * This script sets savep and lastp according to the | ||
1760 | * direction chosen by the target. | ||
1761 | */ | ||
1762 | SCR_JUMP ^ IFTRUE (WHEN (SCR_DATA_OUT)), | ||
1763 | PADDR_B (data_io_out), | ||
1764 | }/*-------------------------< DATA_IO_COM >----------------------*/,{ | ||
1765 | /* | ||
1766 | * Direction is DATA IN. | ||
1767 | */ | ||
1768 | SCR_COPY (4), | ||
1769 | HADDR_1 (ccb_head.lastp), | ||
1770 | HADDR_1 (ccb_head.savep), | ||
1771 | /* | ||
1772 | * Jump to the SCRIPTS according to actual direction. | ||
1773 | */ | ||
1774 | SCR_COPY (4), | ||
1775 | HADDR_1 (ccb_head.savep), | ||
1776 | RADDR_1 (temp), | ||
1777 | SCR_RETURN, | ||
1778 | 0, | ||
1779 | }/*-------------------------< DATA_IO_OUT >----------------------*/,{ | ||
1780 | /* | ||
1781 | * Direction is DATA OUT. | ||
1782 | */ | ||
1783 | SCR_REG_REG (HF_REG, SCR_AND, (~HF_DATA_IN)), | ||
1784 | 0, | ||
1785 | SCR_COPY (4), | ||
1786 | HADDR_1 (ccb_head.wlastp), | ||
1787 | HADDR_1 (ccb_head.lastp), | ||
1788 | SCR_JUMP, | ||
1789 | PADDR_B(data_io_com), | ||
1790 | #endif /* SYM_OPT_HANDLE_DIR_UNKNOWN */ | ||
1791 | |||
1792 | }/*-------------------------< ZERO >-----------------------------*/,{ | 1744 | }/*-------------------------< ZERO >-----------------------------*/,{ |
1793 | SCR_DATA_ZERO, | 1745 | SCR_DATA_ZERO, |
1794 | }/*-------------------------< SCRATCH >--------------------------*/,{ | 1746 | }/*-------------------------< SCRATCH >--------------------------*/,{ |
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw2.h b/drivers/scsi/sym53c8xx_2/sym_fw2.h index 7ea7151f5d1d..851f2706f220 100644 --- a/drivers/scsi/sym53c8xx_2/sym_fw2.h +++ b/drivers/scsi/sym53c8xx_2/sym_fw2.h | |||
@@ -191,13 +191,6 @@ struct SYM_FWB_SCR { | |||
191 | u32 pm_wsr_handle [ 38]; | 191 | u32 pm_wsr_handle [ 38]; |
192 | u32 wsr_ma_helper [ 4]; | 192 | u32 wsr_ma_helper [ 4]; |
193 | 193 | ||
194 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
195 | /* Unknown direction handling */ | ||
196 | u32 data_io [ 2]; | ||
197 | u32 data_io_in [ 2]; | ||
198 | u32 data_io_com [ 6]; | ||
199 | u32 data_io_out [ 8]; | ||
200 | #endif | ||
201 | /* Data area */ | 194 | /* Data area */ |
202 | u32 zero [ 1]; | 195 | u32 zero [ 1]; |
203 | u32 scratch [ 1]; | 196 | u32 scratch [ 1]; |
@@ -1838,51 +1831,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = { | |||
1838 | SCR_JUMP, | 1831 | SCR_JUMP, |
1839 | PADDR_A (dispatch), | 1832 | PADDR_A (dispatch), |
1840 | 1833 | ||
1841 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
1842 | }/*-------------------------< DATA_IO >--------------------------*/,{ | ||
1843 | /* | ||
1844 | * We jump here if the data direction was unknown at the | ||
1845 | * time we had to queue the command to the scripts processor. | ||
1846 | * Pointers had been set as follow in this situation: | ||
1847 | * savep --> DATA_IO | ||
1848 | * lastp --> start pointer when DATA_IN | ||
1849 | * wlastp --> start pointer when DATA_OUT | ||
1850 | * This script sets savep and lastp according to the | ||
1851 | * direction chosen by the target. | ||
1852 | */ | ||
1853 | SCR_JUMP ^ IFTRUE (WHEN (SCR_DATA_OUT)), | ||
1854 | PADDR_B (data_io_out), | ||
1855 | }/*-------------------------< DATA_IO_IN >-----------------------*/,{ | ||
1856 | /* | ||
1857 | * Direction is DATA IN. | ||
1858 | */ | ||
1859 | SCR_LOAD_REL (scratcha, 4), | ||
1860 | offsetof (struct sym_ccb, phys.head.lastp), | ||
1861 | }/*-------------------------< DATA_IO_COM >----------------------*/,{ | ||
1862 | SCR_STORE_REL (scratcha, 4), | ||
1863 | offsetof (struct sym_ccb, phys.head.savep), | ||
1864 | |||
1865 | /* | ||
1866 | * Jump to the SCRIPTS according to actual direction. | ||
1867 | */ | ||
1868 | SCR_LOAD_REL (temp, 4), | ||
1869 | offsetof (struct sym_ccb, phys.head.savep), | ||
1870 | SCR_RETURN, | ||
1871 | 0, | ||
1872 | }/*-------------------------< DATA_IO_OUT >----------------------*/,{ | ||
1873 | /* | ||
1874 | * Direction is DATA OUT. | ||
1875 | */ | ||
1876 | SCR_REG_REG (HF_REG, SCR_AND, (~HF_DATA_IN)), | ||
1877 | 0, | ||
1878 | SCR_LOAD_REL (scratcha, 4), | ||
1879 | offsetof (struct sym_ccb, phys.head.wlastp), | ||
1880 | SCR_STORE_REL (scratcha, 4), | ||
1881 | offsetof (struct sym_ccb, phys.head.lastp), | ||
1882 | SCR_JUMP, | ||
1883 | PADDR_B(data_io_com), | ||
1884 | #endif /* SYM_OPT_HANDLE_DIR_UNKNOWN */ | ||
1885 | |||
1886 | }/*-------------------------< ZERO >-----------------------------*/,{ | 1834 | }/*-------------------------< ZERO >-----------------------------*/,{ |
1887 | SCR_DATA_ZERO, | 1835 | SCR_DATA_ZERO, |
1888 | }/*-------------------------< SCRATCH >--------------------------*/,{ | 1836 | }/*-------------------------< SCRATCH >--------------------------*/,{ |
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c index 7fc0b97173e1..1fffd2b3c654 100644 --- a/drivers/scsi/sym53c8xx_2/sym_glue.c +++ b/drivers/scsi/sym53c8xx_2/sym_glue.c | |||
@@ -514,9 +514,10 @@ static inline int sym_setup_cdb(struct sym_hcb *np, struct scsi_cmnd *cmd, struc | |||
514 | */ | 514 | */ |
515 | int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp) | 515 | int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp) |
516 | { | 516 | { |
517 | int dir; | ||
518 | struct sym_tcb *tp = &np->target[cp->target]; | 517 | struct sym_tcb *tp = &np->target[cp->target]; |
519 | struct sym_lcb *lp = sym_lp(tp, cp->lun); | 518 | struct sym_lcb *lp = sym_lp(tp, cp->lun); |
519 | u32 lastp, goalp; | ||
520 | int dir; | ||
520 | 521 | ||
521 | /* | 522 | /* |
522 | * Build the CDB. | 523 | * Build the CDB. |
@@ -534,15 +535,47 @@ int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct s | |||
534 | sym_set_cam_status(cmd, DID_ERROR); | 535 | sym_set_cam_status(cmd, DID_ERROR); |
535 | goto out_abort; | 536 | goto out_abort; |
536 | } | 537 | } |
538 | |||
539 | /* | ||
540 | * No segments means no data. | ||
541 | */ | ||
542 | if (!cp->segments) | ||
543 | dir = DMA_NONE; | ||
537 | } else { | 544 | } else { |
538 | cp->data_len = 0; | 545 | cp->data_len = 0; |
539 | cp->segments = 0; | 546 | cp->segments = 0; |
540 | } | 547 | } |
541 | 548 | ||
542 | /* | 549 | /* |
543 | * Set data pointers. | 550 | * Set the data pointer. |
544 | */ | 551 | */ |
545 | sym_setup_data_pointers(np, cp, dir); | 552 | switch (dir) { |
553 | case DMA_BIDIRECTIONAL: | ||
554 | printk("%s: got DMA_BIDIRECTIONAL command", sym_name(np)); | ||
555 | sym_set_cam_status(cmd, DID_ERROR); | ||
556 | goto out_abort; | ||
557 | case DMA_TO_DEVICE: | ||
558 | goalp = SCRIPTA_BA(np, data_out2) + 8; | ||
559 | lastp = goalp - 8 - (cp->segments * (2*4)); | ||
560 | break; | ||
561 | case DMA_FROM_DEVICE: | ||
562 | cp->host_flags |= HF_DATA_IN; | ||
563 | goalp = SCRIPTA_BA(np, data_in2) + 8; | ||
564 | lastp = goalp - 8 - (cp->segments * (2*4)); | ||
565 | break; | ||
566 | case DMA_NONE: | ||
567 | default: | ||
568 | lastp = goalp = SCRIPTB_BA(np, no_data); | ||
569 | break; | ||
570 | } | ||
571 | |||
572 | /* | ||
573 | * Set all pointers values needed by SCRIPTS. | ||
574 | */ | ||
575 | cp->phys.head.lastp = cpu_to_scr(lastp); | ||
576 | cp->phys.head.savep = cpu_to_scr(lastp); | ||
577 | cp->startp = cp->phys.head.savep; | ||
578 | cp->goalp = cpu_to_scr(goalp); | ||
546 | 579 | ||
547 | /* | 580 | /* |
548 | * When `#ifed 1', the code below makes the driver | 581 | * When `#ifed 1', the code below makes the driver |
@@ -563,10 +596,7 @@ int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct s | |||
563 | /* | 596 | /* |
564 | * activate this job. | 597 | * activate this job. |
565 | */ | 598 | */ |
566 | if (lp) | 599 | sym_start_next_ccbs(np, lp, 2); |
567 | sym_start_next_ccbs(np, lp, 2); | ||
568 | else | ||
569 | sym_put_start_queue(np, cp); | ||
570 | return 0; | 600 | return 0; |
571 | 601 | ||
572 | out_abort: | 602 | out_abort: |
@@ -981,15 +1011,14 @@ static int device_queue_depth(struct sym_hcb *np, int target, int lun) | |||
981 | 1011 | ||
982 | static int sym53c8xx_slave_alloc(struct scsi_device *sdev) | 1012 | static int sym53c8xx_slave_alloc(struct scsi_device *sdev) |
983 | { | 1013 | { |
984 | struct sym_hcb *np; | 1014 | struct sym_hcb *np = sym_get_hcb(sdev->host); |
985 | struct sym_tcb *tp; | 1015 | struct sym_tcb *tp = &np->target[sdev->id]; |
1016 | struct sym_lcb *lp; | ||
986 | 1017 | ||
987 | if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN) | 1018 | if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN) |
988 | return -ENXIO; | 1019 | return -ENXIO; |
989 | 1020 | ||
990 | np = sym_get_hcb(sdev->host); | 1021 | tp->starget = sdev->sdev_target; |
991 | tp = &np->target[sdev->id]; | ||
992 | |||
993 | /* | 1022 | /* |
994 | * Fail the device init if the device is flagged NOSCAN at BOOT in | 1023 | * Fail the device init if the device is flagged NOSCAN at BOOT in |
995 | * the NVRAM. This may speed up boot and maintain coherency with | 1024 | * the NVRAM. This may speed up boot and maintain coherency with |
@@ -999,35 +1028,41 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev) | |||
999 | * lun devices behave badly when asked for a non zero LUN. | 1028 | * lun devices behave badly when asked for a non zero LUN. |
1000 | */ | 1029 | */ |
1001 | 1030 | ||
1002 | if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) || | 1031 | if (tp->usrflags & SYM_SCAN_BOOT_DISABLED) { |
1003 | ((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && sdev->lun != 0)) { | ||
1004 | tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED; | 1032 | tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED; |
1033 | starget_printk(KERN_INFO, tp->starget, | ||
1034 | "Scan at boot disabled in NVRAM\n"); | ||
1005 | return -ENXIO; | 1035 | return -ENXIO; |
1006 | } | 1036 | } |
1007 | 1037 | ||
1008 | tp->starget = sdev->sdev_target; | 1038 | if (tp->usrflags & SYM_SCAN_LUNS_DISABLED) { |
1039 | if (sdev->lun != 0) | ||
1040 | return -ENXIO; | ||
1041 | starget_printk(KERN_INFO, tp->starget, | ||
1042 | "Multiple LUNs disabled in NVRAM\n"); | ||
1043 | } | ||
1044 | |||
1045 | lp = sym_alloc_lcb(np, sdev->id, sdev->lun); | ||
1046 | if (!lp) | ||
1047 | return -ENOMEM; | ||
1048 | |||
1049 | spi_min_period(tp->starget) = tp->usr_period; | ||
1050 | spi_max_width(tp->starget) = tp->usr_width; | ||
1051 | |||
1009 | return 0; | 1052 | return 0; |
1010 | } | 1053 | } |
1011 | 1054 | ||
1012 | /* | 1055 | /* |
1013 | * Linux entry point for device queue sizing. | 1056 | * Linux entry point for device queue sizing. |
1014 | */ | 1057 | */ |
1015 | static int sym53c8xx_slave_configure(struct scsi_device *device) | 1058 | static int sym53c8xx_slave_configure(struct scsi_device *sdev) |
1016 | { | 1059 | { |
1017 | struct sym_hcb *np = sym_get_hcb(device->host); | 1060 | struct sym_hcb *np = sym_get_hcb(sdev->host); |
1018 | struct sym_tcb *tp = &np->target[device->id]; | 1061 | struct sym_tcb *tp = &np->target[sdev->id]; |
1019 | struct sym_lcb *lp; | 1062 | struct sym_lcb *lp = sym_lp(tp, sdev->lun); |
1020 | int reqtags, depth_to_use; | 1063 | int reqtags, depth_to_use; |
1021 | 1064 | ||
1022 | /* | 1065 | /* |
1023 | * Allocate the LCB if not yet. | ||
1024 | * If it fail, we may well be in the sh*t. :) | ||
1025 | */ | ||
1026 | lp = sym_alloc_lcb(np, device->id, device->lun); | ||
1027 | if (!lp) | ||
1028 | return -ENOMEM; | ||
1029 | |||
1030 | /* | ||
1031 | * Get user flags. | 1066 | * Get user flags. |
1032 | */ | 1067 | */ |
1033 | lp->curr_flags = lp->user_flags; | 1068 | lp->curr_flags = lp->user_flags; |
@@ -1038,10 +1073,10 @@ static int sym53c8xx_slave_configure(struct scsi_device *device) | |||
1038 | * Use at least 2. | 1073 | * Use at least 2. |
1039 | * Donnot use more than our maximum. | 1074 | * Donnot use more than our maximum. |
1040 | */ | 1075 | */ |
1041 | reqtags = device_queue_depth(np, device->id, device->lun); | 1076 | reqtags = device_queue_depth(np, sdev->id, sdev->lun); |
1042 | if (reqtags > tp->usrtags) | 1077 | if (reqtags > tp->usrtags) |
1043 | reqtags = tp->usrtags; | 1078 | reqtags = tp->usrtags; |
1044 | if (!device->tagged_supported) | 1079 | if (!sdev->tagged_supported) |
1045 | reqtags = 0; | 1080 | reqtags = 0; |
1046 | #if 1 /* Avoid to locally queue commands for no good reasons */ | 1081 | #if 1 /* Avoid to locally queue commands for no good reasons */ |
1047 | if (reqtags > SYM_CONF_MAX_TAG) | 1082 | if (reqtags > SYM_CONF_MAX_TAG) |
@@ -1050,19 +1085,30 @@ static int sym53c8xx_slave_configure(struct scsi_device *device) | |||
1050 | #else | 1085 | #else |
1051 | depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2); | 1086 | depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2); |
1052 | #endif | 1087 | #endif |
1053 | scsi_adjust_queue_depth(device, | 1088 | scsi_adjust_queue_depth(sdev, |
1054 | (device->tagged_supported ? | 1089 | (sdev->tagged_supported ? |
1055 | MSG_SIMPLE_TAG : 0), | 1090 | MSG_SIMPLE_TAG : 0), |
1056 | depth_to_use); | 1091 | depth_to_use); |
1057 | lp->s.scdev_depth = depth_to_use; | 1092 | lp->s.scdev_depth = depth_to_use; |
1058 | sym_tune_dev_queuing(tp, device->lun, reqtags); | 1093 | sym_tune_dev_queuing(tp, sdev->lun, reqtags); |
1059 | 1094 | ||
1060 | if (!spi_initial_dv(device->sdev_target)) | 1095 | if (!spi_initial_dv(sdev->sdev_target)) |
1061 | spi_dv_device(device); | 1096 | spi_dv_device(sdev); |
1062 | 1097 | ||
1063 | return 0; | 1098 | return 0; |
1064 | } | 1099 | } |
1065 | 1100 | ||
1101 | static void sym53c8xx_slave_destroy(struct scsi_device *sdev) | ||
1102 | { | ||
1103 | struct sym_hcb *np = sym_get_hcb(sdev->host); | ||
1104 | struct sym_lcb *lp = sym_lp(&np->target[sdev->id], sdev->lun); | ||
1105 | |||
1106 | if (lp->itlq_tbl) | ||
1107 | sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK * 4, "ITLQ_TBL"); | ||
1108 | kfree(lp->cb_tags); | ||
1109 | sym_mfree_dma(lp, sizeof(*lp), "LCB"); | ||
1110 | } | ||
1111 | |||
1066 | /* | 1112 | /* |
1067 | * Linux entry point for info() function | 1113 | * Linux entry point for info() function |
1068 | */ | 1114 | */ |
@@ -1497,7 +1543,7 @@ static int sym_setup_bus_dma_mask(struct sym_hcb *np) | |||
1497 | { | 1543 | { |
1498 | #if SYM_CONF_DMA_ADDRESSING_MODE > 0 | 1544 | #if SYM_CONF_DMA_ADDRESSING_MODE > 0 |
1499 | #if SYM_CONF_DMA_ADDRESSING_MODE == 1 | 1545 | #if SYM_CONF_DMA_ADDRESSING_MODE == 1 |
1500 | #define DMA_DAC_MASK 0x000000ffffffffffULL /* 40-bit */ | 1546 | #define DMA_DAC_MASK DMA_40BIT_MASK |
1501 | #elif SYM_CONF_DMA_ADDRESSING_MODE == 2 | 1547 | #elif SYM_CONF_DMA_ADDRESSING_MODE == 2 |
1502 | #define DMA_DAC_MASK DMA_64BIT_MASK | 1548 | #define DMA_DAC_MASK DMA_64BIT_MASK |
1503 | #endif | 1549 | #endif |
@@ -1926,6 +1972,7 @@ static struct scsi_host_template sym2_template = { | |||
1926 | .queuecommand = sym53c8xx_queue_command, | 1972 | .queuecommand = sym53c8xx_queue_command, |
1927 | .slave_alloc = sym53c8xx_slave_alloc, | 1973 | .slave_alloc = sym53c8xx_slave_alloc, |
1928 | .slave_configure = sym53c8xx_slave_configure, | 1974 | .slave_configure = sym53c8xx_slave_configure, |
1975 | .slave_destroy = sym53c8xx_slave_destroy, | ||
1929 | .eh_abort_handler = sym53c8xx_eh_abort_handler, | 1976 | .eh_abort_handler = sym53c8xx_eh_abort_handler, |
1930 | .eh_device_reset_handler = sym53c8xx_eh_device_reset_handler, | 1977 | .eh_device_reset_handler = sym53c8xx_eh_device_reset_handler, |
1931 | .eh_bus_reset_handler = sym53c8xx_eh_bus_reset_handler, | 1978 | .eh_bus_reset_handler = sym53c8xx_eh_bus_reset_handler, |
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.h b/drivers/scsi/sym53c8xx_2/sym_glue.h index d3d52f14d7c0..cc92d0c70cd7 100644 --- a/drivers/scsi/sym53c8xx_2/sym_glue.h +++ b/drivers/scsi/sym53c8xx_2/sym_glue.h | |||
@@ -68,7 +68,6 @@ | |||
68 | */ | 68 | */ |
69 | #define SYM_CONF_TIMER_INTERVAL ((HZ+1)/2) | 69 | #define SYM_CONF_TIMER_INTERVAL ((HZ+1)/2) |
70 | 70 | ||
71 | #define SYM_OPT_HANDLE_DIR_UNKNOWN | ||
72 | #define SYM_OPT_HANDLE_DEVICE_QUEUEING | 71 | #define SYM_OPT_HANDLE_DEVICE_QUEUEING |
73 | #define SYM_OPT_LIMIT_COMMAND_REORDERING | 72 | #define SYM_OPT_LIMIT_COMMAND_REORDERING |
74 | 73 | ||
@@ -268,6 +267,5 @@ void sym_xpt_async_bus_reset(struct sym_hcb *np); | |||
268 | void sym_xpt_async_sent_bdr(struct sym_hcb *np, int target); | 267 | void sym_xpt_async_sent_bdr(struct sym_hcb *np, int target); |
269 | int sym_setup_data_and_start (struct sym_hcb *np, struct scsi_cmnd *csio, struct sym_ccb *cp); | 268 | int sym_setup_data_and_start (struct sym_hcb *np, struct scsi_cmnd *csio, struct sym_ccb *cp); |
270 | void sym_log_bus_error(struct sym_hcb *np); | 269 | void sym_log_bus_error(struct sym_hcb *np); |
271 | void sym_sniff_inquiry(struct sym_hcb *np, struct scsi_cmnd *cmd, int resid); | ||
272 | 270 | ||
273 | #endif /* SYM_GLUE_H */ | 271 | #endif /* SYM_GLUE_H */ |
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c index 1564ca203a3e..8260f040d39c 100644 --- a/drivers/scsi/sym53c8xx_2/sym_hipd.c +++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c | |||
@@ -40,6 +40,7 @@ | |||
40 | 40 | ||
41 | #include <linux/slab.h> | 41 | #include <linux/slab.h> |
42 | #include <asm/param.h> /* for timeouts in units of HZ */ | 42 | #include <asm/param.h> /* for timeouts in units of HZ */ |
43 | #include <scsi/scsi_dbg.h> | ||
43 | 44 | ||
44 | #include "sym_glue.h" | 45 | #include "sym_glue.h" |
45 | #include "sym_nvram.h" | 46 | #include "sym_nvram.h" |
@@ -70,32 +71,12 @@ static void sym_printl_hex(u_char *p, int n) | |||
70 | printf (".\n"); | 71 | printf (".\n"); |
71 | } | 72 | } |
72 | 73 | ||
73 | /* | ||
74 | * Print out the content of a SCSI message. | ||
75 | */ | ||
76 | static int sym_show_msg (u_char * msg) | ||
77 | { | ||
78 | u_char i; | ||
79 | printf ("%x",*msg); | ||
80 | if (*msg==M_EXTENDED) { | ||
81 | for (i=1;i<8;i++) { | ||
82 | if (i-1>msg[1]) break; | ||
83 | printf ("-%x",msg[i]); | ||
84 | } | ||
85 | return (i+1); | ||
86 | } else if ((*msg & 0xf0) == 0x20) { | ||
87 | printf ("-%x",msg[1]); | ||
88 | return (2); | ||
89 | } | ||
90 | return (1); | ||
91 | } | ||
92 | |||
93 | static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg) | 74 | static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg) |
94 | { | 75 | { |
95 | sym_print_addr(cp->cmd, "%s: ", label); | 76 | sym_print_addr(cp->cmd, "%s: ", label); |
96 | 77 | ||
97 | sym_show_msg(msg); | 78 | spi_print_msg(msg); |
98 | printf(".\n"); | 79 | printf("\n"); |
99 | } | 80 | } |
100 | 81 | ||
101 | static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_char *msg) | 82 | static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_char *msg) |
@@ -103,8 +84,8 @@ static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_ch | |||
103 | struct sym_tcb *tp = &np->target[target]; | 84 | struct sym_tcb *tp = &np->target[target]; |
104 | dev_info(&tp->starget->dev, "%s: ", label); | 85 | dev_info(&tp->starget->dev, "%s: ", label); |
105 | 86 | ||
106 | sym_show_msg(msg); | 87 | spi_print_msg(msg); |
107 | printf(".\n"); | 88 | printf("\n"); |
108 | } | 89 | } |
109 | 90 | ||
110 | /* | 91 | /* |
@@ -635,29 +616,6 @@ static __inline void sym_init_burst(struct sym_hcb *np, u_char bc) | |||
635 | } | 616 | } |
636 | } | 617 | } |
637 | 618 | ||
638 | |||
639 | /* | ||
640 | * Print out the list of targets that have some flag disabled by user. | ||
641 | */ | ||
642 | static void sym_print_targets_flag(struct sym_hcb *np, int mask, char *msg) | ||
643 | { | ||
644 | int cnt; | ||
645 | int i; | ||
646 | |||
647 | for (cnt = 0, i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) { | ||
648 | if (i == np->myaddr) | ||
649 | continue; | ||
650 | if (np->target[i].usrflags & mask) { | ||
651 | if (!cnt++) | ||
652 | printf("%s: %s disabled for targets", | ||
653 | sym_name(np), msg); | ||
654 | printf(" %d", i); | ||
655 | } | ||
656 | } | ||
657 | if (cnt) | ||
658 | printf(".\n"); | ||
659 | } | ||
660 | |||
661 | /* | 619 | /* |
662 | * Save initial settings of some IO registers. | 620 | * Save initial settings of some IO registers. |
663 | * Assumed to have been set by BIOS. | 621 | * Assumed to have been set by BIOS. |
@@ -962,7 +920,7 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru | |||
962 | tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED); | 920 | tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED); |
963 | tp->usrtags = SYM_SETUP_MAX_TAG; | 921 | tp->usrtags = SYM_SETUP_MAX_TAG; |
964 | 922 | ||
965 | sym_nvram_setup_target(np, i, nvram); | 923 | sym_nvram_setup_target(tp, i, nvram); |
966 | 924 | ||
967 | if (!tp->usrtags) | 925 | if (!tp->usrtags) |
968 | tp->usrflags &= ~SYM_TAGS_ENABLED; | 926 | tp->usrflags &= ~SYM_TAGS_ENABLED; |
@@ -1005,13 +963,6 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru | |||
1005 | sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl, | 963 | sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl, |
1006 | np->rv_ctest3, np->rv_ctest4, np->rv_ctest5); | 964 | np->rv_ctest3, np->rv_ctest4, np->rv_ctest5); |
1007 | } | 965 | } |
1008 | /* | ||
1009 | * Let user be aware of targets that have some disable flags set. | ||
1010 | */ | ||
1011 | sym_print_targets_flag(np, SYM_SCAN_BOOT_DISABLED, "SCAN AT BOOT"); | ||
1012 | if (sym_verbose) | ||
1013 | sym_print_targets_flag(np, SYM_SCAN_LUNS_DISABLED, | ||
1014 | "SCAN FOR LUNS"); | ||
1015 | 966 | ||
1016 | return 0; | 967 | return 0; |
1017 | } | 968 | } |
@@ -1523,7 +1474,7 @@ static int sym_prepare_nego(struct sym_hcb *np, struct sym_ccb *cp, u_char *msgp | |||
1523 | /* | 1474 | /* |
1524 | * Insert a job into the start queue. | 1475 | * Insert a job into the start queue. |
1525 | */ | 1476 | */ |
1526 | void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp) | 1477 | static void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp) |
1527 | { | 1478 | { |
1528 | u_short qidx; | 1479 | u_short qidx; |
1529 | 1480 | ||
@@ -3654,7 +3605,7 @@ static int sym_evaluate_dp(struct sym_hcb *np, struct sym_ccb *cp, u32 scr, int | |||
3654 | * If result is dp_sg = SYM_CONF_MAX_SG, then we are at the | 3605 | * If result is dp_sg = SYM_CONF_MAX_SG, then we are at the |
3655 | * end of the data. | 3606 | * end of the data. |
3656 | */ | 3607 | */ |
3657 | tmp = scr_to_cpu(sym_goalp(cp)); | 3608 | tmp = scr_to_cpu(cp->goalp); |
3658 | dp_sg = SYM_CONF_MAX_SG; | 3609 | dp_sg = SYM_CONF_MAX_SG; |
3659 | if (dp_scr != tmp) | 3610 | if (dp_scr != tmp) |
3660 | dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4); | 3611 | dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4); |
@@ -3761,7 +3712,7 @@ static void sym_modify_dp(struct sym_hcb *np, struct sym_tcb *tp, struct sym_ccb | |||
3761 | * And our alchemy:) allows to easily calculate the data | 3712 | * And our alchemy:) allows to easily calculate the data |
3762 | * script address we want to return for the next data phase. | 3713 | * script address we want to return for the next data phase. |
3763 | */ | 3714 | */ |
3764 | dp_ret = cpu_to_scr(sym_goalp(cp)); | 3715 | dp_ret = cpu_to_scr(cp->goalp); |
3765 | dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4); | 3716 | dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4); |
3766 | 3717 | ||
3767 | /* | 3718 | /* |
@@ -3857,7 +3808,7 @@ int sym_compute_residual(struct sym_hcb *np, struct sym_ccb *cp) | |||
3857 | * If all data has been transferred, | 3808 | * If all data has been transferred, |
3858 | * there is no residual. | 3809 | * there is no residual. |
3859 | */ | 3810 | */ |
3860 | if (cp->phys.head.lastp == sym_goalp(cp)) | 3811 | if (cp->phys.head.lastp == cp->goalp) |
3861 | return resid; | 3812 | return resid; |
3862 | 3813 | ||
3863 | /* | 3814 | /* |
@@ -4664,30 +4615,7 @@ struct sym_ccb *sym_get_ccb (struct sym_hcb *np, struct scsi_cmnd *cmd, u_char t | |||
4664 | goto out; | 4615 | goto out; |
4665 | cp = sym_que_entry(qp, struct sym_ccb, link_ccbq); | 4616 | cp = sym_que_entry(qp, struct sym_ccb, link_ccbq); |
4666 | 4617 | ||
4667 | #ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING | 4618 | { |
4668 | /* | ||
4669 | * If the LCB is not yet available and the LUN | ||
4670 | * has been probed ok, try to allocate the LCB. | ||
4671 | */ | ||
4672 | if (!lp && sym_is_bit(tp->lun_map, ln)) { | ||
4673 | lp = sym_alloc_lcb(np, tn, ln); | ||
4674 | if (!lp) | ||
4675 | goto out_free; | ||
4676 | } | ||
4677 | #endif | ||
4678 | |||
4679 | /* | ||
4680 | * If the LCB is not available here, then the | ||
4681 | * logical unit is not yet discovered. For those | ||
4682 | * ones only accept 1 SCSI IO per logical unit, | ||
4683 | * since we cannot allow disconnections. | ||
4684 | */ | ||
4685 | if (!lp) { | ||
4686 | if (!sym_is_bit(tp->busy0_map, ln)) | ||
4687 | sym_set_bit(tp->busy0_map, ln); | ||
4688 | else | ||
4689 | goto out_free; | ||
4690 | } else { | ||
4691 | /* | 4619 | /* |
4692 | * If we have been asked for a tagged command. | 4620 | * If we have been asked for a tagged command. |
4693 | */ | 4621 | */ |
@@ -4840,12 +4768,6 @@ void sym_free_ccb (struct sym_hcb *np, struct sym_ccb *cp) | |||
4840 | lp->head.resel_sa = | 4768 | lp->head.resel_sa = |
4841 | cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun)); | 4769 | cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun)); |
4842 | } | 4770 | } |
4843 | /* | ||
4844 | * Otherwise, we only accept 1 IO per LUN. | ||
4845 | * Clear the bit that keeps track of this IO. | ||
4846 | */ | ||
4847 | else | ||
4848 | sym_clr_bit(tp->busy0_map, cp->lun); | ||
4849 | 4771 | ||
4850 | /* | 4772 | /* |
4851 | * We donnot queue more than 1 ccb per target | 4773 | * We donnot queue more than 1 ccb per target |
@@ -4997,20 +4919,7 @@ static void sym_init_tcb (struct sym_hcb *np, u_char tn) | |||
4997 | struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln) | 4919 | struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln) |
4998 | { | 4920 | { |
4999 | struct sym_tcb *tp = &np->target[tn]; | 4921 | struct sym_tcb *tp = &np->target[tn]; |
5000 | struct sym_lcb *lp = sym_lp(tp, ln); | 4922 | struct sym_lcb *lp = NULL; |
5001 | |||
5002 | /* | ||
5003 | * Already done, just return. | ||
5004 | */ | ||
5005 | if (lp) | ||
5006 | return lp; | ||
5007 | |||
5008 | /* | ||
5009 | * Donnot allow LUN control block | ||
5010 | * allocation for not probed LUNs. | ||
5011 | */ | ||
5012 | if (!sym_is_bit(tp->lun_map, ln)) | ||
5013 | return NULL; | ||
5014 | 4923 | ||
5015 | /* | 4924 | /* |
5016 | * Initialize the target control block if not yet. | 4925 | * Initialize the target control block if not yet. |
@@ -5082,13 +4991,7 @@ struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln) | |||
5082 | lp->started_max = SYM_CONF_MAX_TASK; | 4991 | lp->started_max = SYM_CONF_MAX_TASK; |
5083 | lp->started_limit = SYM_CONF_MAX_TASK; | 4992 | lp->started_limit = SYM_CONF_MAX_TASK; |
5084 | #endif | 4993 | #endif |
5085 | /* | 4994 | |
5086 | * If we are busy, count the IO. | ||
5087 | */ | ||
5088 | if (sym_is_bit(tp->busy0_map, ln)) { | ||
5089 | lp->busy_itl = 1; | ||
5090 | sym_clr_bit(tp->busy0_map, ln); | ||
5091 | } | ||
5092 | fail: | 4995 | fail: |
5093 | return lp; | 4996 | return lp; |
5094 | } | 4997 | } |
@@ -5103,12 +5006,6 @@ static void sym_alloc_lcb_tags (struct sym_hcb *np, u_char tn, u_char ln) | |||
5103 | int i; | 5006 | int i; |
5104 | 5007 | ||
5105 | /* | 5008 | /* |
5106 | * If LCB not available, try to allocate it. | ||
5107 | */ | ||
5108 | if (!lp && !(lp = sym_alloc_lcb(np, tn, ln))) | ||
5109 | goto fail; | ||
5110 | |||
5111 | /* | ||
5112 | * Allocate the task table and and the tag allocation | 5009 | * Allocate the task table and and the tag allocation |
5113 | * circular buffer. We want both or none. | 5010 | * circular buffer. We want both or none. |
5114 | */ | 5011 | */ |
@@ -5481,8 +5378,7 @@ finish: | |||
5481 | /* | 5378 | /* |
5482 | * Donnot start more than 1 command after an error. | 5379 | * Donnot start more than 1 command after an error. |
5483 | */ | 5380 | */ |
5484 | if (lp) | 5381 | sym_start_next_ccbs(np, lp, 1); |
5485 | sym_start_next_ccbs(np, lp, 1); | ||
5486 | #endif | 5382 | #endif |
5487 | } | 5383 | } |
5488 | 5384 | ||
@@ -5521,17 +5417,11 @@ void sym_complete_ok (struct sym_hcb *np, struct sym_ccb *cp) | |||
5521 | lp = sym_lp(tp, cp->lun); | 5417 | lp = sym_lp(tp, cp->lun); |
5522 | 5418 | ||
5523 | /* | 5419 | /* |
5524 | * Assume device discovered on first success. | ||
5525 | */ | ||
5526 | if (!lp) | ||
5527 | sym_set_bit(tp->lun_map, cp->lun); | ||
5528 | |||
5529 | /* | ||
5530 | * If all data have been transferred, given than no | 5420 | * If all data have been transferred, given than no |
5531 | * extended error did occur, there is no residual. | 5421 | * extended error did occur, there is no residual. |
5532 | */ | 5422 | */ |
5533 | resid = 0; | 5423 | resid = 0; |
5534 | if (cp->phys.head.lastp != sym_goalp(cp)) | 5424 | if (cp->phys.head.lastp != cp->goalp) |
5535 | resid = sym_compute_residual(np, cp); | 5425 | resid = sym_compute_residual(np, cp); |
5536 | 5426 | ||
5537 | /* | 5427 | /* |
@@ -5551,15 +5441,6 @@ if (resid) | |||
5551 | */ | 5441 | */ |
5552 | sym_set_cam_result_ok(cp, cmd, resid); | 5442 | sym_set_cam_result_ok(cp, cmd, resid); |
5553 | 5443 | ||
5554 | #ifdef SYM_OPT_SNIFF_INQUIRY | ||
5555 | /* | ||
5556 | * On standard INQUIRY response (EVPD and CmDt | ||
5557 | * not set), sniff out device capabilities. | ||
5558 | */ | ||
5559 | if (cp->cdb_buf[0] == INQUIRY && !(cp->cdb_buf[1] & 0x3)) | ||
5560 | sym_sniff_inquiry(np, cmd, resid); | ||
5561 | #endif | ||
5562 | |||
5563 | #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING | 5444 | #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING |
5564 | /* | 5445 | /* |
5565 | * If max number of started ccbs had been reduced, | 5446 | * If max number of started ccbs had been reduced, |
@@ -5587,7 +5468,7 @@ if (resid) | |||
5587 | /* | 5468 | /* |
5588 | * Requeue a couple of awaiting scsi commands. | 5469 | * Requeue a couple of awaiting scsi commands. |
5589 | */ | 5470 | */ |
5590 | if (lp && !sym_que_empty(&lp->waiting_ccbq)) | 5471 | if (!sym_que_empty(&lp->waiting_ccbq)) |
5591 | sym_start_next_ccbs(np, lp, 2); | 5472 | sym_start_next_ccbs(np, lp, 2); |
5592 | #endif | 5473 | #endif |
5593 | /* | 5474 | /* |
@@ -5830,8 +5711,7 @@ void sym_hcb_free(struct sym_hcb *np) | |||
5830 | SYM_QUEHEAD *qp; | 5711 | SYM_QUEHEAD *qp; |
5831 | struct sym_ccb *cp; | 5712 | struct sym_ccb *cp; |
5832 | struct sym_tcb *tp; | 5713 | struct sym_tcb *tp; |
5833 | struct sym_lcb *lp; | 5714 | int target; |
5834 | int target, lun; | ||
5835 | 5715 | ||
5836 | if (np->scriptz0) | 5716 | if (np->scriptz0) |
5837 | sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0"); | 5717 | sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0"); |
@@ -5857,16 +5737,6 @@ void sym_hcb_free(struct sym_hcb *np) | |||
5857 | 5737 | ||
5858 | for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) { | 5738 | for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) { |
5859 | tp = &np->target[target]; | 5739 | tp = &np->target[target]; |
5860 | for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) { | ||
5861 | lp = sym_lp(tp, lun); | ||
5862 | if (!lp) | ||
5863 | continue; | ||
5864 | if (lp->itlq_tbl) | ||
5865 | sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4, | ||
5866 | "ITLQ_TBL"); | ||
5867 | kfree(lp->cb_tags); | ||
5868 | sym_mfree_dma(lp, sizeof(*lp), "LCB"); | ||
5869 | } | ||
5870 | #if SYM_CONF_MAX_LUN > 1 | 5740 | #if SYM_CONF_MAX_LUN > 1 |
5871 | kfree(tp->lunmp); | 5741 | kfree(tp->lunmp); |
5872 | #endif | 5742 | #endif |
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.h b/drivers/scsi/sym53c8xx_2/sym_hipd.h index 3a264a408216..2456090bb241 100644 --- a/drivers/scsi/sym53c8xx_2/sym_hipd.h +++ b/drivers/scsi/sym53c8xx_2/sym_hipd.h | |||
@@ -48,12 +48,6 @@ | |||
48 | * They may be defined in platform specific headers, if they | 48 | * They may be defined in platform specific headers, if they |
49 | * are useful. | 49 | * are useful. |
50 | * | 50 | * |
51 | * SYM_OPT_HANDLE_DIR_UNKNOWN | ||
52 | * When this option is set, the SCRIPTS used by the driver | ||
53 | * are able to handle SCSI transfers with direction not | ||
54 | * supplied by user. | ||
55 | * (set for Linux-2.0.X) | ||
56 | * | ||
57 | * SYM_OPT_HANDLE_DEVICE_QUEUEING | 51 | * SYM_OPT_HANDLE_DEVICE_QUEUEING |
58 | * When this option is set, the driver will use a queue per | 52 | * When this option is set, the driver will use a queue per |
59 | * device and handle QUEUE FULL status requeuing internally. | 53 | * device and handle QUEUE FULL status requeuing internally. |
@@ -64,7 +58,6 @@ | |||
64 | * (set for Linux) | 58 | * (set for Linux) |
65 | */ | 59 | */ |
66 | #if 0 | 60 | #if 0 |
67 | #define SYM_OPT_HANDLE_DIR_UNKNOWN | ||
68 | #define SYM_OPT_HANDLE_DEVICE_QUEUEING | 61 | #define SYM_OPT_HANDLE_DEVICE_QUEUEING |
69 | #define SYM_OPT_LIMIT_COMMAND_REORDERING | 62 | #define SYM_OPT_LIMIT_COMMAND_REORDERING |
70 | #endif | 63 | #endif |
@@ -416,19 +409,6 @@ struct sym_tcb { | |||
416 | struct sym_lcb **lunmp; /* Other LCBs [1..MAX_LUN] */ | 409 | struct sym_lcb **lunmp; /* Other LCBs [1..MAX_LUN] */ |
417 | #endif | 410 | #endif |
418 | 411 | ||
419 | /* | ||
420 | * Bitmap that tells about LUNs that succeeded at least | ||
421 | * 1 IO and therefore assumed to be a real device. | ||
422 | * Avoid useless allocation of the LCB structure. | ||
423 | */ | ||
424 | u32 lun_map[(SYM_CONF_MAX_LUN+31)/32]; | ||
425 | |||
426 | /* | ||
427 | * Bitmap that tells about LUNs that haven't yet an LCB | ||
428 | * allocated (not discovered or LCB allocation failed). | ||
429 | */ | ||
430 | u32 busy0_map[(SYM_CONF_MAX_LUN+31)/32]; | ||
431 | |||
432 | #ifdef SYM_HAVE_STCB | 412 | #ifdef SYM_HAVE_STCB |
433 | /* | 413 | /* |
434 | * O/S specific data structure. | 414 | * O/S specific data structure. |
@@ -454,8 +434,10 @@ struct sym_tcb { | |||
454 | * Other user settable limits and options. | 434 | * Other user settable limits and options. |
455 | * These limits are read from the NVRAM if present. | 435 | * These limits are read from the NVRAM if present. |
456 | */ | 436 | */ |
457 | u_char usrflags; | 437 | unsigned char usrflags; |
458 | u_short usrtags; | 438 | unsigned char usr_period; |
439 | unsigned char usr_width; | ||
440 | unsigned short usrtags; | ||
459 | struct scsi_target *starget; | 441 | struct scsi_target *starget; |
460 | }; | 442 | }; |
461 | 443 | ||
@@ -672,9 +654,6 @@ struct sym_ccbh { | |||
672 | */ | 654 | */ |
673 | u32 savep; /* Jump address to saved data pointer */ | 655 | u32 savep; /* Jump address to saved data pointer */ |
674 | u32 lastp; /* SCRIPTS address at end of data */ | 656 | u32 lastp; /* SCRIPTS address at end of data */ |
675 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
676 | u32 wlastp; | ||
677 | #endif | ||
678 | 657 | ||
679 | /* | 658 | /* |
680 | * Status fields. | 659 | * Status fields. |
@@ -804,9 +783,6 @@ struct sym_ccb { | |||
804 | SYM_QUEHEAD link_ccbq; /* Link to free/busy CCB queue */ | 783 | SYM_QUEHEAD link_ccbq; /* Link to free/busy CCB queue */ |
805 | u32 startp; /* Initial data pointer */ | 784 | u32 startp; /* Initial data pointer */ |
806 | u32 goalp; /* Expected last data pointer */ | 785 | u32 goalp; /* Expected last data pointer */ |
807 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
808 | u32 wgoalp; | ||
809 | #endif | ||
810 | int ext_sg; /* Extreme data pointer, used */ | 786 | int ext_sg; /* Extreme data pointer, used */ |
811 | int ext_ofs; /* to calculate the residual. */ | 787 | int ext_ofs; /* to calculate the residual. */ |
812 | #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING | 788 | #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING |
@@ -821,12 +797,6 @@ struct sym_ccb { | |||
821 | 797 | ||
822 | #define CCB_BA(cp,lbl) cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl)) | 798 | #define CCB_BA(cp,lbl) cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl)) |
823 | 799 | ||
824 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
825 | #define sym_goalp(cp) ((cp->host_flags & HF_DATA_IN) ? cp->goalp : cp->wgoalp) | ||
826 | #else | ||
827 | #define sym_goalp(cp) (cp->goalp) | ||
828 | #endif | ||
829 | |||
830 | typedef struct device *m_pool_ident_t; | 800 | typedef struct device *m_pool_ident_t; |
831 | 801 | ||
832 | /* | 802 | /* |
@@ -1077,7 +1047,6 @@ char *sym_driver_name(void); | |||
1077 | void sym_print_xerr(struct scsi_cmnd *cmd, int x_status); | 1047 | void sym_print_xerr(struct scsi_cmnd *cmd, int x_status); |
1078 | int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int); | 1048 | int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int); |
1079 | struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision); | 1049 | struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision); |
1080 | void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp); | ||
1081 | #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING | 1050 | #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING |
1082 | void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn); | 1051 | void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn); |
1083 | #endif | 1052 | #endif |
@@ -1136,71 +1105,6 @@ bad: | |||
1136 | #endif | 1105 | #endif |
1137 | 1106 | ||
1138 | /* | 1107 | /* |
1139 | * Set up data pointers used by SCRIPTS. | ||
1140 | * Called from O/S specific code. | ||
1141 | */ | ||
1142 | static inline void sym_setup_data_pointers(struct sym_hcb *np, | ||
1143 | struct sym_ccb *cp, int dir) | ||
1144 | { | ||
1145 | u32 lastp, goalp; | ||
1146 | |||
1147 | /* | ||
1148 | * No segments means no data. | ||
1149 | */ | ||
1150 | if (!cp->segments) | ||
1151 | dir = DMA_NONE; | ||
1152 | |||
1153 | /* | ||
1154 | * Set the data pointer. | ||
1155 | */ | ||
1156 | switch(dir) { | ||
1157 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
1158 | case DMA_BIDIRECTIONAL: | ||
1159 | #endif | ||
1160 | case DMA_TO_DEVICE: | ||
1161 | goalp = SCRIPTA_BA(np, data_out2) + 8; | ||
1162 | lastp = goalp - 8 - (cp->segments * (2*4)); | ||
1163 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
1164 | cp->wgoalp = cpu_to_scr(goalp); | ||
1165 | if (dir != DMA_BIDIRECTIONAL) | ||
1166 | break; | ||
1167 | cp->phys.head.wlastp = cpu_to_scr(lastp); | ||
1168 | /* fall through */ | ||
1169 | #else | ||
1170 | break; | ||
1171 | #endif | ||
1172 | case DMA_FROM_DEVICE: | ||
1173 | cp->host_flags |= HF_DATA_IN; | ||
1174 | goalp = SCRIPTA_BA(np, data_in2) + 8; | ||
1175 | lastp = goalp - 8 - (cp->segments * (2*4)); | ||
1176 | break; | ||
1177 | case DMA_NONE: | ||
1178 | default: | ||
1179 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
1180 | cp->host_flags |= HF_DATA_IN; | ||
1181 | #endif | ||
1182 | lastp = goalp = SCRIPTB_BA(np, no_data); | ||
1183 | break; | ||
1184 | } | ||
1185 | |||
1186 | /* | ||
1187 | * Set all pointers values needed by SCRIPTS. | ||
1188 | */ | ||
1189 | cp->phys.head.lastp = cpu_to_scr(lastp); | ||
1190 | cp->phys.head.savep = cpu_to_scr(lastp); | ||
1191 | cp->startp = cp->phys.head.savep; | ||
1192 | cp->goalp = cpu_to_scr(goalp); | ||
1193 | |||
1194 | #ifdef SYM_OPT_HANDLE_DIR_UNKNOWN | ||
1195 | /* | ||
1196 | * If direction is unknown, start at data_io. | ||
1197 | */ | ||
1198 | if (dir == DMA_BIDIRECTIONAL) | ||
1199 | cp->phys.head.savep = cpu_to_scr(SCRIPTB_BA(np, data_io)); | ||
1200 | #endif | ||
1201 | } | ||
1202 | |||
1203 | /* | ||
1204 | * MEMORY ALLOCATOR. | 1108 | * MEMORY ALLOCATOR. |
1205 | */ | 1109 | */ |
1206 | 1110 | ||
diff --git a/drivers/scsi/sym53c8xx_2/sym_malloc.c b/drivers/scsi/sym53c8xx_2/sym_malloc.c index a34d403ccc6c..92bf9b14a7a2 100644 --- a/drivers/scsi/sym53c8xx_2/sym_malloc.c +++ b/drivers/scsi/sym53c8xx_2/sym_malloc.c | |||
@@ -37,11 +37,7 @@ | |||
37 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 37 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
38 | */ | 38 | */ |
39 | 39 | ||
40 | #ifdef __FreeBSD__ | ||
41 | #include <dev/sym/sym_glue.h> | ||
42 | #else | ||
43 | #include "sym_glue.h" | 40 | #include "sym_glue.h" |
44 | #endif | ||
45 | 41 | ||
46 | /* | 42 | /* |
47 | * Simple power of two buddy-like generic allocator. | 43 | * Simple power of two buddy-like generic allocator. |
diff --git a/drivers/scsi/sym53c8xx_2/sym_nvram.c b/drivers/scsi/sym53c8xx_2/sym_nvram.c index 994b7566bcac..15d69298ab6e 100644 --- a/drivers/scsi/sym53c8xx_2/sym_nvram.c +++ b/drivers/scsi/sym53c8xx_2/sym_nvram.c | |||
@@ -92,29 +92,32 @@ void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sy | |||
92 | * Get target set-up from Symbios format NVRAM. | 92 | * Get target set-up from Symbios format NVRAM. |
93 | */ | 93 | */ |
94 | static void | 94 | static void |
95 | sym_Symbios_setup_target(struct sym_hcb *np, int target, Symbios_nvram *nvram) | 95 | sym_Symbios_setup_target(struct sym_tcb *tp, int target, Symbios_nvram *nvram) |
96 | { | 96 | { |
97 | struct sym_tcb *tp = &np->target[target]; | ||
98 | Symbios_target *tn = &nvram->target[target]; | 97 | Symbios_target *tn = &nvram->target[target]; |
99 | 98 | ||
100 | tp->usrtags = | 99 | if (!(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)) |
101 | (tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)? SYM_SETUP_MAX_TAG : 0; | 100 | tp->usrtags = 0; |
102 | |||
103 | if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE)) | 101 | if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE)) |
104 | tp->usrflags &= ~SYM_DISC_ENABLED; | 102 | tp->usrflags &= ~SYM_DISC_ENABLED; |
105 | if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME)) | 103 | if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME)) |
106 | tp->usrflags |= SYM_SCAN_BOOT_DISABLED; | 104 | tp->usrflags |= SYM_SCAN_BOOT_DISABLED; |
107 | if (!(tn->flags & SYMBIOS_SCAN_LUNS)) | 105 | if (!(tn->flags & SYMBIOS_SCAN_LUNS)) |
108 | tp->usrflags |= SYM_SCAN_LUNS_DISABLED; | 106 | tp->usrflags |= SYM_SCAN_LUNS_DISABLED; |
107 | tp->usr_period = (tn->sync_period + 3) / 4; | ||
108 | tp->usr_width = (tn->bus_width == 0x8) ? 0 : 1; | ||
109 | } | 109 | } |
110 | 110 | ||
111 | static const unsigned char Tekram_sync[16] = { | ||
112 | 25, 31, 37, 43, 50, 62, 75, 125, 12, 15, 18, 21, 6, 7, 9, 10 | ||
113 | }; | ||
114 | |||
111 | /* | 115 | /* |
112 | * Get target set-up from Tekram format NVRAM. | 116 | * Get target set-up from Tekram format NVRAM. |
113 | */ | 117 | */ |
114 | static void | 118 | static void |
115 | sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram) | 119 | sym_Tekram_setup_target(struct sym_tcb *tp, int target, Tekram_nvram *nvram) |
116 | { | 120 | { |
117 | struct sym_tcb *tp = &np->target[target]; | ||
118 | struct Tekram_target *tn = &nvram->target[target]; | 121 | struct Tekram_target *tn = &nvram->target[target]; |
119 | 122 | ||
120 | if (tn->flags & TEKRAM_TAGGED_COMMANDS) { | 123 | if (tn->flags & TEKRAM_TAGGED_COMMANDS) { |
@@ -124,22 +127,22 @@ sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram) | |||
124 | if (tn->flags & TEKRAM_DISCONNECT_ENABLE) | 127 | if (tn->flags & TEKRAM_DISCONNECT_ENABLE) |
125 | tp->usrflags |= SYM_DISC_ENABLED; | 128 | tp->usrflags |= SYM_DISC_ENABLED; |
126 | 129 | ||
127 | /* If any device does not support parity, we will not use this option */ | 130 | if (tn->flags & TEKRAM_SYNC_NEGO) |
128 | if (!(tn->flags & TEKRAM_PARITY_CHECK)) | 131 | tp->usr_period = Tekram_sync[tn->sync_index & 0xf]; |
129 | np->rv_scntl0 &= ~0x0a; /* SCSI parity checking disabled */ | 132 | tp->usr_width = (tn->flags & TEKRAM_WIDE_NEGO) ? 1 : 0; |
130 | } | 133 | } |
131 | 134 | ||
132 | /* | 135 | /* |
133 | * Get target setup from NVRAM. | 136 | * Get target setup from NVRAM. |
134 | */ | 137 | */ |
135 | void sym_nvram_setup_target(struct sym_hcb *np, int target, struct sym_nvram *nvp) | 138 | void sym_nvram_setup_target(struct sym_tcb *tp, int target, struct sym_nvram *nvp) |
136 | { | 139 | { |
137 | switch (nvp->type) { | 140 | switch (nvp->type) { |
138 | case SYM_SYMBIOS_NVRAM: | 141 | case SYM_SYMBIOS_NVRAM: |
139 | sym_Symbios_setup_target(np, target, &nvp->data.Symbios); | 142 | sym_Symbios_setup_target(tp, target, &nvp->data.Symbios); |
140 | break; | 143 | break; |
141 | case SYM_TEKRAM_NVRAM: | 144 | case SYM_TEKRAM_NVRAM: |
142 | sym_Tekram_setup_target(np, target, &nvp->data.Tekram); | 145 | sym_Tekram_setup_target(tp, target, &nvp->data.Tekram); |
143 | break; | 146 | break; |
144 | default: | 147 | default: |
145 | break; | 148 | break; |
diff --git a/drivers/scsi/sym53c8xx_2/sym_nvram.h b/drivers/scsi/sym53c8xx_2/sym_nvram.h index 1538bede5277..bdfbbb083b69 100644 --- a/drivers/scsi/sym53c8xx_2/sym_nvram.h +++ b/drivers/scsi/sym53c8xx_2/sym_nvram.h | |||
@@ -194,12 +194,12 @@ struct sym_nvram { | |||
194 | 194 | ||
195 | #if SYM_CONF_NVRAM_SUPPORT | 195 | #if SYM_CONF_NVRAM_SUPPORT |
196 | void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram); | 196 | void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram); |
197 | void sym_nvram_setup_target (struct sym_hcb *np, int target, struct sym_nvram *nvp); | 197 | void sym_nvram_setup_target (struct sym_tcb *tp, int target, struct sym_nvram *nvp); |
198 | int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp); | 198 | int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp); |
199 | char *sym_nvram_type(struct sym_nvram *nvp); | 199 | char *sym_nvram_type(struct sym_nvram *nvp); |
200 | #else | 200 | #else |
201 | static inline void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram) { } | 201 | static inline void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram) { } |
202 | static inline void sym_nvram_setup_target(struct sym_hcb *np, struct sym_nvram *nvram) { } | 202 | static inline void sym_nvram_setup_target(struct sym_tcb *tp, struct sym_nvram *nvram) { } |
203 | static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp) | 203 | static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp) |
204 | { | 204 | { |
205 | nvp->type = 0; | 205 | nvp->type = 0; |
diff --git a/drivers/scsi/sym53c8xx_comm.h b/drivers/scsi/sym53c8xx_comm.h deleted file mode 100644 index 20ae2b17df58..000000000000 --- a/drivers/scsi/sym53c8xx_comm.h +++ /dev/null | |||
@@ -1,792 +0,0 @@ | |||
1 | /****************************************************************************** | ||
2 | ** High Performance device driver for the Symbios 53C896 controller. | ||
3 | ** | ||
4 | ** Copyright (C) 1998-2001 Gerard Roudier <groudier@free.fr> | ||
5 | ** | ||
6 | ** This driver also supports all the Symbios 53C8XX controller family, | ||
7 | ** except 53C810 revisions < 16, 53C825 revisions < 16 and all | ||
8 | ** revisions of 53C815 controllers. | ||
9 | ** | ||
10 | ** This driver is based on the Linux port of the FreeBSD ncr driver. | ||
11 | ** | ||
12 | ** Copyright (C) 1994 Wolfgang Stanglmeier | ||
13 | ** | ||
14 | **----------------------------------------------------------------------------- | ||
15 | ** | ||
16 | ** This program is free software; you can redistribute it and/or modify | ||
17 | ** it under the terms of the GNU General Public License as published by | ||
18 | ** the Free Software Foundation; either version 2 of the License, or | ||
19 | ** (at your option) any later version. | ||
20 | ** | ||
21 | ** This program is distributed in the hope that it will be useful, | ||
22 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | ** GNU General Public License for more details. | ||
25 | ** | ||
26 | ** You should have received a copy of the GNU General Public License | ||
27 | ** along with this program; if not, write to the Free Software | ||
28 | ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
29 | ** | ||
30 | **----------------------------------------------------------------------------- | ||
31 | ** | ||
32 | ** The Linux port of the FreeBSD ncr driver has been achieved in | ||
33 | ** november 1995 by: | ||
34 | ** | ||
35 | ** Gerard Roudier <groudier@free.fr> | ||
36 | ** | ||
37 | ** Being given that this driver originates from the FreeBSD version, and | ||
38 | ** in order to keep synergy on both, any suggested enhancements and corrections | ||
39 | ** received on Linux are automatically a potential candidate for the FreeBSD | ||
40 | ** version. | ||
41 | ** | ||
42 | ** The original driver has been written for 386bsd and FreeBSD by | ||
43 | ** Wolfgang Stanglmeier <wolf@cologne.de> | ||
44 | ** Stefan Esser <se@mi.Uni-Koeln.de> | ||
45 | ** | ||
46 | **----------------------------------------------------------------------------- | ||
47 | ** | ||
48 | ** Major contributions: | ||
49 | ** -------------------- | ||
50 | ** | ||
51 | ** NVRAM detection and reading. | ||
52 | ** Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk> | ||
53 | ** | ||
54 | ******************************************************************************* | ||
55 | */ | ||
56 | |||
57 | /*========================================================== | ||
58 | ** | ||
59 | ** Debugging tags | ||
60 | ** | ||
61 | **========================================================== | ||
62 | */ | ||
63 | |||
64 | #define DEBUG_ALLOC (0x0001) | ||
65 | #define DEBUG_PHASE (0x0002) | ||
66 | #define DEBUG_QUEUE (0x0008) | ||
67 | #define DEBUG_RESULT (0x0010) | ||
68 | #define DEBUG_POINTER (0x0020) | ||
69 | #define DEBUG_SCRIPT (0x0040) | ||
70 | #define DEBUG_TINY (0x0080) | ||
71 | #define DEBUG_TIMING (0x0100) | ||
72 | #define DEBUG_NEGO (0x0200) | ||
73 | #define DEBUG_TAGS (0x0400) | ||
74 | #define DEBUG_SCATTER (0x0800) | ||
75 | #define DEBUG_IC (0x1000) | ||
76 | |||
77 | /* | ||
78 | ** Enable/Disable debug messages. | ||
79 | ** Can be changed at runtime too. | ||
80 | */ | ||
81 | |||
82 | #ifdef SCSI_NCR_DEBUG_INFO_SUPPORT | ||
83 | static int ncr_debug = SCSI_NCR_DEBUG_FLAGS; | ||
84 | #define DEBUG_FLAGS ncr_debug | ||
85 | #else | ||
86 | #define DEBUG_FLAGS SCSI_NCR_DEBUG_FLAGS | ||
87 | #endif | ||
88 | |||
89 | static inline struct list_head *ncr_list_pop(struct list_head *head) | ||
90 | { | ||
91 | if (!list_empty(head)) { | ||
92 | struct list_head *elem = head->next; | ||
93 | |||
94 | list_del(elem); | ||
95 | return elem; | ||
96 | } | ||
97 | |||
98 | return NULL; | ||
99 | } | ||
100 | |||
101 | #ifdef __sparc__ | ||
102 | #include <asm/irq.h> | ||
103 | #endif | ||
104 | |||
105 | /*========================================================== | ||
106 | ** | ||
107 | ** Simple power of two buddy-like allocator. | ||
108 | ** | ||
109 | ** This simple code is not intended to be fast, but to | ||
110 | ** provide power of 2 aligned memory allocations. | ||
111 | ** Since the SCRIPTS processor only supplies 8 bit | ||
112 | ** arithmetic, this allocator allows simple and fast | ||
113 | ** address calculations from the SCRIPTS code. | ||
114 | ** In addition, cache line alignment is guaranteed for | ||
115 | ** power of 2 cache line size. | ||
116 | ** Enhanced in linux-2.3.44 to provide a memory pool | ||
117 | ** per pcidev to support dynamic dma mapping. (I would | ||
118 | ** have preferred a real bus astraction, btw). | ||
119 | ** | ||
120 | **========================================================== | ||
121 | */ | ||
122 | |||
123 | #define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */ | ||
124 | #if PAGE_SIZE >= 8192 | ||
125 | #define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */ | ||
126 | #else | ||
127 | #define MEMO_PAGE_ORDER 1 /* 2 PAGES maximum */ | ||
128 | #endif | ||
129 | #define MEMO_FREE_UNUSED /* Free unused pages immediately */ | ||
130 | #define MEMO_WARN 1 | ||
131 | #define MEMO_GFP_FLAGS GFP_ATOMIC | ||
132 | #define MEMO_CLUSTER_SHIFT (PAGE_SHIFT+MEMO_PAGE_ORDER) | ||
133 | #define MEMO_CLUSTER_SIZE (1UL << MEMO_CLUSTER_SHIFT) | ||
134 | #define MEMO_CLUSTER_MASK (MEMO_CLUSTER_SIZE-1) | ||
135 | |||
136 | typedef u_long m_addr_t; /* Enough bits to bit-hack addresses */ | ||
137 | typedef struct device *m_bush_t; /* Something that addresses DMAable */ | ||
138 | |||
139 | typedef struct m_link { /* Link between free memory chunks */ | ||
140 | struct m_link *next; | ||
141 | } m_link_s; | ||
142 | |||
143 | typedef struct m_vtob { /* Virtual to Bus address translation */ | ||
144 | struct m_vtob *next; | ||
145 | m_addr_t vaddr; | ||
146 | m_addr_t baddr; | ||
147 | } m_vtob_s; | ||
148 | #define VTOB_HASH_SHIFT 5 | ||
149 | #define VTOB_HASH_SIZE (1UL << VTOB_HASH_SHIFT) | ||
150 | #define VTOB_HASH_MASK (VTOB_HASH_SIZE-1) | ||
151 | #define VTOB_HASH_CODE(m) \ | ||
152 | ((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK) | ||
153 | |||
154 | typedef struct m_pool { /* Memory pool of a given kind */ | ||
155 | m_bush_t bush; | ||
156 | m_addr_t (*getp)(struct m_pool *); | ||
157 | void (*freep)(struct m_pool *, m_addr_t); | ||
158 | int nump; | ||
159 | m_vtob_s *(vtob[VTOB_HASH_SIZE]); | ||
160 | struct m_pool *next; | ||
161 | struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1]; | ||
162 | } m_pool_s; | ||
163 | |||
164 | static void *___m_alloc(m_pool_s *mp, int size) | ||
165 | { | ||
166 | int i = 0; | ||
167 | int s = (1 << MEMO_SHIFT); | ||
168 | int j; | ||
169 | m_addr_t a; | ||
170 | m_link_s *h = mp->h; | ||
171 | |||
172 | if (size > (PAGE_SIZE << MEMO_PAGE_ORDER)) | ||
173 | return NULL; | ||
174 | |||
175 | while (size > s) { | ||
176 | s <<= 1; | ||
177 | ++i; | ||
178 | } | ||
179 | |||
180 | j = i; | ||
181 | while (!h[j].next) { | ||
182 | if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) { | ||
183 | h[j].next = (m_link_s *)mp->getp(mp); | ||
184 | if (h[j].next) | ||
185 | h[j].next->next = NULL; | ||
186 | break; | ||
187 | } | ||
188 | ++j; | ||
189 | s <<= 1; | ||
190 | } | ||
191 | a = (m_addr_t) h[j].next; | ||
192 | if (a) { | ||
193 | h[j].next = h[j].next->next; | ||
194 | while (j > i) { | ||
195 | j -= 1; | ||
196 | s >>= 1; | ||
197 | h[j].next = (m_link_s *) (a+s); | ||
198 | h[j].next->next = NULL; | ||
199 | } | ||
200 | } | ||
201 | #ifdef DEBUG | ||
202 | printk("___m_alloc(%d) = %p\n", size, (void *) a); | ||
203 | #endif | ||
204 | return (void *) a; | ||
205 | } | ||
206 | |||
207 | static void ___m_free(m_pool_s *mp, void *ptr, int size) | ||
208 | { | ||
209 | int i = 0; | ||
210 | int s = (1 << MEMO_SHIFT); | ||
211 | m_link_s *q; | ||
212 | m_addr_t a, b; | ||
213 | m_link_s *h = mp->h; | ||
214 | |||
215 | #ifdef DEBUG | ||
216 | printk("___m_free(%p, %d)\n", ptr, size); | ||
217 | #endif | ||
218 | |||
219 | if (size > (PAGE_SIZE << MEMO_PAGE_ORDER)) | ||
220 | return; | ||
221 | |||
222 | while (size > s) { | ||
223 | s <<= 1; | ||
224 | ++i; | ||
225 | } | ||
226 | |||
227 | a = (m_addr_t) ptr; | ||
228 | |||
229 | while (1) { | ||
230 | #ifdef MEMO_FREE_UNUSED | ||
231 | if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) { | ||
232 | mp->freep(mp, a); | ||
233 | break; | ||
234 | } | ||
235 | #endif | ||
236 | b = a ^ s; | ||
237 | q = &h[i]; | ||
238 | while (q->next && q->next != (m_link_s *) b) { | ||
239 | q = q->next; | ||
240 | } | ||
241 | if (!q->next) { | ||
242 | ((m_link_s *) a)->next = h[i].next; | ||
243 | h[i].next = (m_link_s *) a; | ||
244 | break; | ||
245 | } | ||
246 | q->next = q->next->next; | ||
247 | a = a & b; | ||
248 | s <<= 1; | ||
249 | ++i; | ||
250 | } | ||
251 | } | ||
252 | |||
253 | static DEFINE_SPINLOCK(ncr53c8xx_lock); | ||
254 | |||
255 | static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags) | ||
256 | { | ||
257 | void *p; | ||
258 | |||
259 | p = ___m_alloc(mp, size); | ||
260 | |||
261 | if (DEBUG_FLAGS & DEBUG_ALLOC) | ||
262 | printk ("new %-10s[%4d] @%p.\n", name, size, p); | ||
263 | |||
264 | if (p) | ||
265 | memset(p, 0, size); | ||
266 | else if (uflags & MEMO_WARN) | ||
267 | printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size); | ||
268 | |||
269 | return p; | ||
270 | } | ||
271 | |||
272 | #define __m_calloc(mp, s, n) __m_calloc2(mp, s, n, MEMO_WARN) | ||
273 | |||
274 | static void __m_free(m_pool_s *mp, void *ptr, int size, char *name) | ||
275 | { | ||
276 | if (DEBUG_FLAGS & DEBUG_ALLOC) | ||
277 | printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr); | ||
278 | |||
279 | ___m_free(mp, ptr, size); | ||
280 | |||
281 | } | ||
282 | |||
283 | /* | ||
284 | * With pci bus iommu support, we use a default pool of unmapped memory | ||
285 | * for memory we donnot need to DMA from/to and one pool per pcidev for | ||
286 | * memory accessed by the PCI chip. `mp0' is the default not DMAable pool. | ||
287 | */ | ||
288 | |||
289 | static m_addr_t ___mp0_getp(m_pool_s *mp) | ||
290 | { | ||
291 | m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER); | ||
292 | if (m) | ||
293 | ++mp->nump; | ||
294 | return m; | ||
295 | } | ||
296 | |||
297 | static void ___mp0_freep(m_pool_s *mp, m_addr_t m) | ||
298 | { | ||
299 | free_pages(m, MEMO_PAGE_ORDER); | ||
300 | --mp->nump; | ||
301 | } | ||
302 | |||
303 | static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep}; | ||
304 | |||
305 | /* | ||
306 | * DMAable pools. | ||
307 | */ | ||
308 | |||
309 | /* | ||
310 | * With pci bus iommu support, we maintain one pool per pcidev and a | ||
311 | * hashed reverse table for virtual to bus physical address translations. | ||
312 | */ | ||
313 | static m_addr_t ___dma_getp(m_pool_s *mp) | ||
314 | { | ||
315 | m_addr_t vp; | ||
316 | m_vtob_s *vbp; | ||
317 | |||
318 | vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB"); | ||
319 | if (vbp) { | ||
320 | dma_addr_t daddr; | ||
321 | vp = (m_addr_t) dma_alloc_coherent(mp->bush, | ||
322 | PAGE_SIZE<<MEMO_PAGE_ORDER, | ||
323 | &daddr, GFP_ATOMIC); | ||
324 | if (vp) { | ||
325 | int hc = VTOB_HASH_CODE(vp); | ||
326 | vbp->vaddr = vp; | ||
327 | vbp->baddr = daddr; | ||
328 | vbp->next = mp->vtob[hc]; | ||
329 | mp->vtob[hc] = vbp; | ||
330 | ++mp->nump; | ||
331 | return vp; | ||
332 | } | ||
333 | } | ||
334 | if (vbp) | ||
335 | __m_free(&mp0, vbp, sizeof(*vbp), "VTOB"); | ||
336 | return 0; | ||
337 | } | ||
338 | |||
339 | static void ___dma_freep(m_pool_s *mp, m_addr_t m) | ||
340 | { | ||
341 | m_vtob_s **vbpp, *vbp; | ||
342 | int hc = VTOB_HASH_CODE(m); | ||
343 | |||
344 | vbpp = &mp->vtob[hc]; | ||
345 | while (*vbpp && (*vbpp)->vaddr != m) | ||
346 | vbpp = &(*vbpp)->next; | ||
347 | if (*vbpp) { | ||
348 | vbp = *vbpp; | ||
349 | *vbpp = (*vbpp)->next; | ||
350 | dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER, | ||
351 | (void *)vbp->vaddr, (dma_addr_t)vbp->baddr); | ||
352 | __m_free(&mp0, vbp, sizeof(*vbp), "VTOB"); | ||
353 | --mp->nump; | ||
354 | } | ||
355 | } | ||
356 | |||
357 | static inline m_pool_s *___get_dma_pool(m_bush_t bush) | ||
358 | { | ||
359 | m_pool_s *mp; | ||
360 | for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next); | ||
361 | return mp; | ||
362 | } | ||
363 | |||
364 | static m_pool_s *___cre_dma_pool(m_bush_t bush) | ||
365 | { | ||
366 | m_pool_s *mp; | ||
367 | mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL"); | ||
368 | if (mp) { | ||
369 | memset(mp, 0, sizeof(*mp)); | ||
370 | mp->bush = bush; | ||
371 | mp->getp = ___dma_getp; | ||
372 | mp->freep = ___dma_freep; | ||
373 | mp->next = mp0.next; | ||
374 | mp0.next = mp; | ||
375 | } | ||
376 | return mp; | ||
377 | } | ||
378 | |||
379 | static void ___del_dma_pool(m_pool_s *p) | ||
380 | { | ||
381 | struct m_pool **pp = &mp0.next; | ||
382 | |||
383 | while (*pp && *pp != p) | ||
384 | pp = &(*pp)->next; | ||
385 | if (*pp) { | ||
386 | *pp = (*pp)->next; | ||
387 | __m_free(&mp0, p, sizeof(*p), "MPOOL"); | ||
388 | } | ||
389 | } | ||
390 | |||
391 | static void *__m_calloc_dma(m_bush_t bush, int size, char *name) | ||
392 | { | ||
393 | u_long flags; | ||
394 | struct m_pool *mp; | ||
395 | void *m = NULL; | ||
396 | |||
397 | spin_lock_irqsave(&ncr53c8xx_lock, flags); | ||
398 | mp = ___get_dma_pool(bush); | ||
399 | if (!mp) | ||
400 | mp = ___cre_dma_pool(bush); | ||
401 | if (mp) | ||
402 | m = __m_calloc(mp, size, name); | ||
403 | if (mp && !mp->nump) | ||
404 | ___del_dma_pool(mp); | ||
405 | spin_unlock_irqrestore(&ncr53c8xx_lock, flags); | ||
406 | |||
407 | return m; | ||
408 | } | ||
409 | |||
410 | static void __m_free_dma(m_bush_t bush, void *m, int size, char *name) | ||
411 | { | ||
412 | u_long flags; | ||
413 | struct m_pool *mp; | ||
414 | |||
415 | spin_lock_irqsave(&ncr53c8xx_lock, flags); | ||
416 | mp = ___get_dma_pool(bush); | ||
417 | if (mp) | ||
418 | __m_free(mp, m, size, name); | ||
419 | if (mp && !mp->nump) | ||
420 | ___del_dma_pool(mp); | ||
421 | spin_unlock_irqrestore(&ncr53c8xx_lock, flags); | ||
422 | } | ||
423 | |||
424 | static m_addr_t __vtobus(m_bush_t bush, void *m) | ||
425 | { | ||
426 | u_long flags; | ||
427 | m_pool_s *mp; | ||
428 | int hc = VTOB_HASH_CODE(m); | ||
429 | m_vtob_s *vp = NULL; | ||
430 | m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK; | ||
431 | |||
432 | spin_lock_irqsave(&ncr53c8xx_lock, flags); | ||
433 | mp = ___get_dma_pool(bush); | ||
434 | if (mp) { | ||
435 | vp = mp->vtob[hc]; | ||
436 | while (vp && (m_addr_t) vp->vaddr != a) | ||
437 | vp = vp->next; | ||
438 | } | ||
439 | spin_unlock_irqrestore(&ncr53c8xx_lock, flags); | ||
440 | return vp ? vp->baddr + (((m_addr_t) m) - a) : 0; | ||
441 | } | ||
442 | |||
443 | #define _m_calloc_dma(np, s, n) __m_calloc_dma(np->dev, s, n) | ||
444 | #define _m_free_dma(np, p, s, n) __m_free_dma(np->dev, p, s, n) | ||
445 | #define m_calloc_dma(s, n) _m_calloc_dma(np, s, n) | ||
446 | #define m_free_dma(p, s, n) _m_free_dma(np, p, s, n) | ||
447 | #define _vtobus(np, p) __vtobus(np->dev, p) | ||
448 | #define vtobus(p) _vtobus(np, p) | ||
449 | |||
450 | /* | ||
451 | * Deal with DMA mapping/unmapping. | ||
452 | */ | ||
453 | |||
454 | /* To keep track of the dma mapping (sg/single) that has been set */ | ||
455 | #define __data_mapped SCp.phase | ||
456 | #define __data_mapping SCp.have_data_in | ||
457 | |||
458 | static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd) | ||
459 | { | ||
460 | switch(cmd->__data_mapped) { | ||
461 | case 2: | ||
462 | dma_unmap_sg(dev, cmd->buffer, cmd->use_sg, | ||
463 | cmd->sc_data_direction); | ||
464 | break; | ||
465 | case 1: | ||
466 | dma_unmap_single(dev, cmd->__data_mapping, | ||
467 | cmd->request_bufflen, | ||
468 | cmd->sc_data_direction); | ||
469 | break; | ||
470 | } | ||
471 | cmd->__data_mapped = 0; | ||
472 | } | ||
473 | |||
474 | static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd) | ||
475 | { | ||
476 | dma_addr_t mapping; | ||
477 | |||
478 | if (cmd->request_bufflen == 0) | ||
479 | return 0; | ||
480 | |||
481 | mapping = dma_map_single(dev, cmd->request_buffer, | ||
482 | cmd->request_bufflen, | ||
483 | cmd->sc_data_direction); | ||
484 | cmd->__data_mapped = 1; | ||
485 | cmd->__data_mapping = mapping; | ||
486 | |||
487 | return mapping; | ||
488 | } | ||
489 | |||
490 | static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd) | ||
491 | { | ||
492 | int use_sg; | ||
493 | |||
494 | if (cmd->use_sg == 0) | ||
495 | return 0; | ||
496 | |||
497 | use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg, | ||
498 | cmd->sc_data_direction); | ||
499 | cmd->__data_mapped = 2; | ||
500 | cmd->__data_mapping = use_sg; | ||
501 | |||
502 | return use_sg; | ||
503 | } | ||
504 | |||
505 | #define unmap_scsi_data(np, cmd) __unmap_scsi_data(np->dev, cmd) | ||
506 | #define map_scsi_single_data(np, cmd) __map_scsi_single_data(np->dev, cmd) | ||
507 | #define map_scsi_sg_data(np, cmd) __map_scsi_sg_data(np->dev, cmd) | ||
508 | |||
509 | /*========================================================== | ||
510 | ** | ||
511 | ** Driver setup. | ||
512 | ** | ||
513 | ** This structure is initialized from linux config | ||
514 | ** options. It can be overridden at boot-up by the boot | ||
515 | ** command line. | ||
516 | ** | ||
517 | **========================================================== | ||
518 | */ | ||
519 | static struct ncr_driver_setup | ||
520 | driver_setup = SCSI_NCR_DRIVER_SETUP; | ||
521 | |||
522 | #ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT | ||
523 | static struct ncr_driver_setup | ||
524 | driver_safe_setup __initdata = SCSI_NCR_DRIVER_SAFE_SETUP; | ||
525 | #endif | ||
526 | |||
527 | #define initverbose (driver_setup.verbose) | ||
528 | #define bootverbose (np->verbose) | ||
529 | |||
530 | |||
531 | /*=================================================================== | ||
532 | ** | ||
533 | ** Driver setup from the boot command line | ||
534 | ** | ||
535 | **=================================================================== | ||
536 | */ | ||
537 | |||
538 | #ifdef MODULE | ||
539 | #define ARG_SEP ' ' | ||
540 | #else | ||
541 | #define ARG_SEP ',' | ||
542 | #endif | ||
543 | |||
544 | #define OPT_TAGS 1 | ||
545 | #define OPT_MASTER_PARITY 2 | ||
546 | #define OPT_SCSI_PARITY 3 | ||
547 | #define OPT_DISCONNECTION 4 | ||
548 | #define OPT_SPECIAL_FEATURES 5 | ||
549 | #define OPT_UNUSED_1 6 | ||
550 | #define OPT_FORCE_SYNC_NEGO 7 | ||
551 | #define OPT_REVERSE_PROBE 8 | ||
552 | #define OPT_DEFAULT_SYNC 9 | ||
553 | #define OPT_VERBOSE 10 | ||
554 | #define OPT_DEBUG 11 | ||
555 | #define OPT_BURST_MAX 12 | ||
556 | #define OPT_LED_PIN 13 | ||
557 | #define OPT_MAX_WIDE 14 | ||
558 | #define OPT_SETTLE_DELAY 15 | ||
559 | #define OPT_DIFF_SUPPORT 16 | ||
560 | #define OPT_IRQM 17 | ||
561 | #define OPT_PCI_FIX_UP 18 | ||
562 | #define OPT_BUS_CHECK 19 | ||
563 | #define OPT_OPTIMIZE 20 | ||
564 | #define OPT_RECOVERY 21 | ||
565 | #define OPT_SAFE_SETUP 22 | ||
566 | #define OPT_USE_NVRAM 23 | ||
567 | #define OPT_EXCLUDE 24 | ||
568 | #define OPT_HOST_ID 25 | ||
569 | |||
570 | #ifdef SCSI_NCR_IARB_SUPPORT | ||
571 | #define OPT_IARB 26 | ||
572 | #endif | ||
573 | |||
574 | static char setup_token[] __initdata = | ||
575 | "tags:" "mpar:" | ||
576 | "spar:" "disc:" | ||
577 | "specf:" "ultra:" | ||
578 | "fsn:" "revprob:" | ||
579 | "sync:" "verb:" | ||
580 | "debug:" "burst:" | ||
581 | "led:" "wide:" | ||
582 | "settle:" "diff:" | ||
583 | "irqm:" "pcifix:" | ||
584 | "buschk:" "optim:" | ||
585 | "recovery:" | ||
586 | "safe:" "nvram:" | ||
587 | "excl:" "hostid:" | ||
588 | #ifdef SCSI_NCR_IARB_SUPPORT | ||
589 | "iarb:" | ||
590 | #endif | ||
591 | ; /* DONNOT REMOVE THIS ';' */ | ||
592 | |||
593 | #ifdef MODULE | ||
594 | #define ARG_SEP ' ' | ||
595 | #else | ||
596 | #define ARG_SEP ',' | ||
597 | #endif | ||
598 | |||
599 | static int __init get_setup_token(char *p) | ||
600 | { | ||
601 | char *cur = setup_token; | ||
602 | char *pc; | ||
603 | int i = 0; | ||
604 | |||
605 | while (cur != NULL && (pc = strchr(cur, ':')) != NULL) { | ||
606 | ++pc; | ||
607 | ++i; | ||
608 | if (!strncmp(p, cur, pc - cur)) | ||
609 | return i; | ||
610 | cur = pc; | ||
611 | } | ||
612 | return 0; | ||
613 | } | ||
614 | |||
615 | |||
616 | static int __init sym53c8xx__setup(char *str) | ||
617 | { | ||
618 | #ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT | ||
619 | char *cur = str; | ||
620 | char *pc, *pv; | ||
621 | int i, val, c; | ||
622 | int xi = 0; | ||
623 | |||
624 | while (cur != NULL && (pc = strchr(cur, ':')) != NULL) { | ||
625 | char *pe; | ||
626 | |||
627 | val = 0; | ||
628 | pv = pc; | ||
629 | c = *++pv; | ||
630 | |||
631 | if (c == 'n') | ||
632 | val = 0; | ||
633 | else if (c == 'y') | ||
634 | val = 1; | ||
635 | else | ||
636 | val = (int) simple_strtoul(pv, &pe, 0); | ||
637 | |||
638 | switch (get_setup_token(cur)) { | ||
639 | case OPT_TAGS: | ||
640 | driver_setup.default_tags = val; | ||
641 | if (pe && *pe == '/') { | ||
642 | i = 0; | ||
643 | while (*pe && *pe != ARG_SEP && | ||
644 | i < sizeof(driver_setup.tag_ctrl)-1) { | ||
645 | driver_setup.tag_ctrl[i++] = *pe++; | ||
646 | } | ||
647 | driver_setup.tag_ctrl[i] = '\0'; | ||
648 | } | ||
649 | break; | ||
650 | case OPT_MASTER_PARITY: | ||
651 | driver_setup.master_parity = val; | ||
652 | break; | ||
653 | case OPT_SCSI_PARITY: | ||
654 | driver_setup.scsi_parity = val; | ||
655 | break; | ||
656 | case OPT_DISCONNECTION: | ||
657 | driver_setup.disconnection = val; | ||
658 | break; | ||
659 | case OPT_SPECIAL_FEATURES: | ||
660 | driver_setup.special_features = val; | ||
661 | break; | ||
662 | case OPT_FORCE_SYNC_NEGO: | ||
663 | driver_setup.force_sync_nego = val; | ||
664 | break; | ||
665 | case OPT_REVERSE_PROBE: | ||
666 | driver_setup.reverse_probe = val; | ||
667 | break; | ||
668 | case OPT_DEFAULT_SYNC: | ||
669 | driver_setup.default_sync = val; | ||
670 | break; | ||
671 | case OPT_VERBOSE: | ||
672 | driver_setup.verbose = val; | ||
673 | break; | ||
674 | case OPT_DEBUG: | ||
675 | driver_setup.debug = val; | ||
676 | break; | ||
677 | case OPT_BURST_MAX: | ||
678 | driver_setup.burst_max = val; | ||
679 | break; | ||
680 | case OPT_LED_PIN: | ||
681 | driver_setup.led_pin = val; | ||
682 | break; | ||
683 | case OPT_MAX_WIDE: | ||
684 | driver_setup.max_wide = val? 1:0; | ||
685 | break; | ||
686 | case OPT_SETTLE_DELAY: | ||
687 | driver_setup.settle_delay = val; | ||
688 | break; | ||
689 | case OPT_DIFF_SUPPORT: | ||
690 | driver_setup.diff_support = val; | ||
691 | break; | ||
692 | case OPT_IRQM: | ||
693 | driver_setup.irqm = val; | ||
694 | break; | ||
695 | case OPT_PCI_FIX_UP: | ||
696 | driver_setup.pci_fix_up = val; | ||
697 | break; | ||
698 | case OPT_BUS_CHECK: | ||
699 | driver_setup.bus_check = val; | ||
700 | break; | ||
701 | case OPT_OPTIMIZE: | ||
702 | driver_setup.optimize = val; | ||
703 | break; | ||
704 | case OPT_RECOVERY: | ||
705 | driver_setup.recovery = val; | ||
706 | break; | ||
707 | case OPT_USE_NVRAM: | ||
708 | driver_setup.use_nvram = val; | ||
709 | break; | ||
710 | case OPT_SAFE_SETUP: | ||
711 | memcpy(&driver_setup, &driver_safe_setup, | ||
712 | sizeof(driver_setup)); | ||
713 | break; | ||
714 | case OPT_EXCLUDE: | ||
715 | if (xi < SCSI_NCR_MAX_EXCLUDES) | ||
716 | driver_setup.excludes[xi++] = val; | ||
717 | break; | ||
718 | case OPT_HOST_ID: | ||
719 | driver_setup.host_id = val; | ||
720 | break; | ||
721 | #ifdef SCSI_NCR_IARB_SUPPORT | ||
722 | case OPT_IARB: | ||
723 | driver_setup.iarb = val; | ||
724 | break; | ||
725 | #endif | ||
726 | default: | ||
727 | printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur); | ||
728 | break; | ||
729 | } | ||
730 | |||
731 | if ((cur = strchr(cur, ARG_SEP)) != NULL) | ||
732 | ++cur; | ||
733 | } | ||
734 | #endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */ | ||
735 | return 1; | ||
736 | } | ||
737 | |||
738 | /*=================================================================== | ||
739 | ** | ||
740 | ** Get device queue depth from boot command line. | ||
741 | ** | ||
742 | **=================================================================== | ||
743 | */ | ||
744 | #define DEF_DEPTH (driver_setup.default_tags) | ||
745 | #define ALL_TARGETS -2 | ||
746 | #define NO_TARGET -1 | ||
747 | #define ALL_LUNS -2 | ||
748 | #define NO_LUN -1 | ||
749 | |||
750 | static int device_queue_depth(int unit, int target, int lun) | ||
751 | { | ||
752 | int c, h, t, u, v; | ||
753 | char *p = driver_setup.tag_ctrl; | ||
754 | char *ep; | ||
755 | |||
756 | h = -1; | ||
757 | t = NO_TARGET; | ||
758 | u = NO_LUN; | ||
759 | while ((c = *p++) != 0) { | ||
760 | v = simple_strtoul(p, &ep, 0); | ||
761 | switch(c) { | ||
762 | case '/': | ||
763 | ++h; | ||
764 | t = ALL_TARGETS; | ||
765 | u = ALL_LUNS; | ||
766 | break; | ||
767 | case 't': | ||
768 | if (t != target) | ||
769 | t = (target == v) ? v : NO_TARGET; | ||
770 | u = ALL_LUNS; | ||
771 | break; | ||
772 | case 'u': | ||
773 | if (u != lun) | ||
774 | u = (lun == v) ? v : NO_LUN; | ||
775 | break; | ||
776 | case 'q': | ||
777 | if (h == unit && | ||
778 | (t == ALL_TARGETS || t == target) && | ||
779 | (u == ALL_LUNS || u == lun)) | ||
780 | return v; | ||
781 | break; | ||
782 | case '-': | ||
783 | t = ALL_TARGETS; | ||
784 | u = ALL_LUNS; | ||
785 | break; | ||
786 | default: | ||
787 | break; | ||
788 | } | ||
789 | p = ep; | ||
790 | } | ||
791 | return DEF_DEPTH; | ||
792 | } | ||
diff --git a/drivers/scsi/sym53c8xx_defs.h b/drivers/scsi/sym53c8xx_defs.h deleted file mode 100644 index 139cd0e12e62..000000000000 --- a/drivers/scsi/sym53c8xx_defs.h +++ /dev/null | |||
@@ -1,1320 +0,0 @@ | |||
1 | /****************************************************************************** | ||
2 | ** High Performance device driver for the Symbios 53C896 controller. | ||
3 | ** | ||
4 | ** Copyright (C) 1998-2001 Gerard Roudier <groudier@free.fr> | ||
5 | ** | ||
6 | ** This driver also supports all the Symbios 53C8XX controller family, | ||
7 | ** except 53C810 revisions < 16, 53C825 revisions < 16 and all | ||
8 | ** revisions of 53C815 controllers. | ||
9 | ** | ||
10 | ** This driver is based on the Linux port of the FreeBSD ncr driver. | ||
11 | ** | ||
12 | ** Copyright (C) 1994 Wolfgang Stanglmeier | ||
13 | ** | ||
14 | **----------------------------------------------------------------------------- | ||
15 | ** | ||
16 | ** This program is free software; you can redistribute it and/or modify | ||
17 | ** it under the terms of the GNU General Public License as published by | ||
18 | ** the Free Software Foundation; either version 2 of the License, or | ||
19 | ** (at your option) any later version. | ||
20 | ** | ||
21 | ** This program is distributed in the hope that it will be useful, | ||
22 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | ** GNU General Public License for more details. | ||
25 | ** | ||
26 | ** You should have received a copy of the GNU General Public License | ||
27 | ** along with this program; if not, write to the Free Software | ||
28 | ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
29 | ** | ||
30 | **----------------------------------------------------------------------------- | ||
31 | ** | ||
32 | ** The Linux port of the FreeBSD ncr driver has been achieved in | ||
33 | ** november 1995 by: | ||
34 | ** | ||
35 | ** Gerard Roudier <groudier@free.fr> | ||
36 | ** | ||
37 | ** Being given that this driver originates from the FreeBSD version, and | ||
38 | ** in order to keep synergy on both, any suggested enhancements and corrections | ||
39 | ** received on Linux are automatically a potential candidate for the FreeBSD | ||
40 | ** version. | ||
41 | ** | ||
42 | ** The original driver has been written for 386bsd and FreeBSD by | ||
43 | ** Wolfgang Stanglmeier <wolf@cologne.de> | ||
44 | ** Stefan Esser <se@mi.Uni-Koeln.de> | ||
45 | ** | ||
46 | **----------------------------------------------------------------------------- | ||
47 | ** | ||
48 | ** Major contributions: | ||
49 | ** -------------------- | ||
50 | ** | ||
51 | ** NVRAM detection and reading. | ||
52 | ** Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk> | ||
53 | ** | ||
54 | ** Added support for MIPS big endian systems. | ||
55 | ** Carsten Langgaard, carstenl@mips.com | ||
56 | ** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. | ||
57 | ** | ||
58 | ** Added support for HP PARISC big endian systems. | ||
59 | ** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. | ||
60 | ** | ||
61 | ******************************************************************************* | ||
62 | */ | ||
63 | |||
64 | #ifndef SYM53C8XX_DEFS_H | ||
65 | #define SYM53C8XX_DEFS_H | ||
66 | |||
67 | #include <linux/config.h> | ||
68 | |||
69 | /* | ||
70 | ** If you want a driver as small as possible, donnot define the | ||
71 | ** following options. | ||
72 | */ | ||
73 | #define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT | ||
74 | #define SCSI_NCR_DEBUG_INFO_SUPPORT | ||
75 | |||
76 | /* | ||
77 | ** To disable integrity checking, do not define the | ||
78 | ** following option. | ||
79 | */ | ||
80 | #ifdef CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK | ||
81 | # define SCSI_NCR_ENABLE_INTEGRITY_CHECK | ||
82 | #endif | ||
83 | |||
84 | /* --------------------------------------------------------------------- | ||
85 | ** Take into account kernel configured parameters. | ||
86 | ** Most of these options can be overridden at startup by a command line. | ||
87 | ** --------------------------------------------------------------------- | ||
88 | */ | ||
89 | |||
90 | /* | ||
91 | * For Ultra2 and Ultra3 SCSI support option, use special features. | ||
92 | * | ||
93 | * Value (default) means: | ||
94 | * bit 0 : all features enabled, except: | ||
95 | * bit 1 : PCI Write And Invalidate. | ||
96 | * bit 2 : Data Phase Mismatch handling from SCRIPTS. | ||
97 | * | ||
98 | * Use boot options ncr53c8xx=specf:1 if you want all chip features to be | ||
99 | * enabled by the driver. | ||
100 | */ | ||
101 | #define SCSI_NCR_SETUP_SPECIAL_FEATURES (3) | ||
102 | |||
103 | #define SCSI_NCR_MAX_SYNC (80) | ||
104 | |||
105 | /* | ||
106 | * Allow tags from 2 to 256, default 8 | ||
107 | */ | ||
108 | #ifdef CONFIG_SCSI_NCR53C8XX_MAX_TAGS | ||
109 | #if CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2 | ||
110 | #define SCSI_NCR_MAX_TAGS (2) | ||
111 | #elif CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256 | ||
112 | #define SCSI_NCR_MAX_TAGS (256) | ||
113 | #else | ||
114 | #define SCSI_NCR_MAX_TAGS CONFIG_SCSI_NCR53C8XX_MAX_TAGS | ||
115 | #endif | ||
116 | #else | ||
117 | #define SCSI_NCR_MAX_TAGS (8) | ||
118 | #endif | ||
119 | |||
120 | /* | ||
121 | * Allow tagged command queuing support if configured with default number | ||
122 | * of tags set to max (see above). | ||
123 | */ | ||
124 | #ifdef CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS | ||
125 | #define SCSI_NCR_SETUP_DEFAULT_TAGS CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS | ||
126 | #elif defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE | ||
127 | #define SCSI_NCR_SETUP_DEFAULT_TAGS SCSI_NCR_MAX_TAGS | ||
128 | #else | ||
129 | #define SCSI_NCR_SETUP_DEFAULT_TAGS (0) | ||
130 | #endif | ||
131 | |||
132 | /* | ||
133 | * Immediate arbitration | ||
134 | */ | ||
135 | #if defined(CONFIG_SCSI_NCR53C8XX_IARB) | ||
136 | #define SCSI_NCR_IARB_SUPPORT | ||
137 | #endif | ||
138 | |||
139 | /* | ||
140 | * Sync transfer frequency at startup. | ||
141 | * Allow from 5Mhz to 80Mhz default 20 Mhz. | ||
142 | */ | ||
143 | #ifndef CONFIG_SCSI_NCR53C8XX_SYNC | ||
144 | #define CONFIG_SCSI_NCR53C8XX_SYNC (20) | ||
145 | #elif CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC | ||
146 | #undef CONFIG_SCSI_NCR53C8XX_SYNC | ||
147 | #define CONFIG_SCSI_NCR53C8XX_SYNC SCSI_NCR_MAX_SYNC | ||
148 | #endif | ||
149 | |||
150 | #if CONFIG_SCSI_NCR53C8XX_SYNC == 0 | ||
151 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (255) | ||
152 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 5 | ||
153 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (50) | ||
154 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 20 | ||
155 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (250/(CONFIG_SCSI_NCR53C8XX_SYNC)) | ||
156 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 33 | ||
157 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (11) | ||
158 | #elif CONFIG_SCSI_NCR53C8XX_SYNC <= 40 | ||
159 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (10) | ||
160 | #else | ||
161 | #define SCSI_NCR_SETUP_DEFAULT_SYNC (9) | ||
162 | #endif | ||
163 | |||
164 | /* | ||
165 | * Disallow disconnections at boot-up | ||
166 | */ | ||
167 | #ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT | ||
168 | #define SCSI_NCR_SETUP_DISCONNECTION (0) | ||
169 | #else | ||
170 | #define SCSI_NCR_SETUP_DISCONNECTION (1) | ||
171 | #endif | ||
172 | |||
173 | /* | ||
174 | * Force synchronous negotiation for all targets | ||
175 | */ | ||
176 | #ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO | ||
177 | #define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (1) | ||
178 | #else | ||
179 | #define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (0) | ||
180 | #endif | ||
181 | |||
182 | /* | ||
183 | * Disable master parity checking (flawed hardwares need that) | ||
184 | */ | ||
185 | #ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK | ||
186 | #define SCSI_NCR_SETUP_MASTER_PARITY (0) | ||
187 | #else | ||
188 | #define SCSI_NCR_SETUP_MASTER_PARITY (1) | ||
189 | #endif | ||
190 | |||
191 | /* | ||
192 | * Disable scsi parity checking (flawed devices may need that) | ||
193 | */ | ||
194 | #ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK | ||
195 | #define SCSI_NCR_SETUP_SCSI_PARITY (0) | ||
196 | #else | ||
197 | #define SCSI_NCR_SETUP_SCSI_PARITY (1) | ||
198 | #endif | ||
199 | |||
200 | /* | ||
201 | * Settle time after reset at boot-up | ||
202 | */ | ||
203 | #define SCSI_NCR_SETUP_SETTLE_TIME (2) | ||
204 | |||
205 | /* | ||
206 | ** Bridge quirks work-around option defaulted to 1. | ||
207 | */ | ||
208 | #ifndef SCSI_NCR_PCIQ_WORK_AROUND_OPT | ||
209 | #define SCSI_NCR_PCIQ_WORK_AROUND_OPT 1 | ||
210 | #endif | ||
211 | |||
212 | /* | ||
213 | ** Work-around common bridge misbehaviour. | ||
214 | ** | ||
215 | ** - Do not flush posted writes in the opposite | ||
216 | ** direction on read. | ||
217 | ** - May reorder DMA writes to memory. | ||
218 | ** | ||
219 | ** This option should not affect performances | ||
220 | ** significantly, so it is the default. | ||
221 | */ | ||
222 | #if SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1 | ||
223 | #define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM | ||
224 | #define SCSI_NCR_PCIQ_MAY_REORDER_WRITES | ||
225 | #define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS | ||
226 | |||
227 | /* | ||
228 | ** Same as option 1, but also deal with | ||
229 | ** misconfigured interrupts. | ||
230 | ** | ||
231 | ** - Edge triggerred instead of level sensitive. | ||
232 | ** - No interrupt line connected. | ||
233 | ** - IRQ number misconfigured. | ||
234 | ** | ||
235 | ** If no interrupt is delivered, the driver will | ||
236 | ** catch the interrupt conditions 10 times per | ||
237 | ** second. No need to say that this option is | ||
238 | ** not recommended. | ||
239 | */ | ||
240 | #elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2 | ||
241 | #define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM | ||
242 | #define SCSI_NCR_PCIQ_MAY_REORDER_WRITES | ||
243 | #define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS | ||
244 | #define SCSI_NCR_PCIQ_BROKEN_INTR | ||
245 | |||
246 | /* | ||
247 | ** Some bridge designers decided to flush | ||
248 | ** everything prior to deliver the interrupt. | ||
249 | ** This option tries to deal with such a | ||
250 | ** behaviour. | ||
251 | */ | ||
252 | #elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3 | ||
253 | #define SCSI_NCR_PCIQ_SYNC_ON_INTR | ||
254 | #endif | ||
255 | |||
256 | /* | ||
257 | ** Other parameters not configurable with "make config" | ||
258 | ** Avoid to change these constants, unless you know what you are doing. | ||
259 | */ | ||
260 | |||
261 | #define SCSI_NCR_ALWAYS_SIMPLE_TAG | ||
262 | #define SCSI_NCR_MAX_SCATTER (127) | ||
263 | #define SCSI_NCR_MAX_TARGET (16) | ||
264 | |||
265 | /* | ||
266 | ** Compute some desirable value for CAN_QUEUE | ||
267 | ** and CMD_PER_LUN. | ||
268 | ** The driver will use lower values if these | ||
269 | ** ones appear to be too large. | ||
270 | */ | ||
271 | #define SCSI_NCR_CAN_QUEUE (8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET) | ||
272 | #define SCSI_NCR_CMD_PER_LUN (SCSI_NCR_MAX_TAGS) | ||
273 | |||
274 | #define SCSI_NCR_SG_TABLESIZE (SCSI_NCR_MAX_SCATTER) | ||
275 | #define SCSI_NCR_TIMER_INTERVAL (HZ) | ||
276 | |||
277 | #if 1 /* defined CONFIG_SCSI_MULTI_LUN */ | ||
278 | #define SCSI_NCR_MAX_LUN (16) | ||
279 | #else | ||
280 | #define SCSI_NCR_MAX_LUN (1) | ||
281 | #endif | ||
282 | |||
283 | /* | ||
284 | * IO functions definition for big/little endian CPU support. | ||
285 | * For now, the NCR is only supported in little endian addressing mode, | ||
286 | */ | ||
287 | |||
288 | #ifdef __BIG_ENDIAN | ||
289 | |||
290 | #define inw_l2b inw | ||
291 | #define inl_l2b inl | ||
292 | #define outw_b2l outw | ||
293 | #define outl_b2l outl | ||
294 | |||
295 | #define readb_raw readb | ||
296 | #define writeb_raw writeb | ||
297 | |||
298 | #if defined(SCSI_NCR_BIG_ENDIAN) | ||
299 | #define readw_l2b __raw_readw | ||
300 | #define readl_l2b __raw_readl | ||
301 | #define writew_b2l __raw_writew | ||
302 | #define writel_b2l __raw_writel | ||
303 | #define readw_raw __raw_readw | ||
304 | #define readl_raw __raw_readl | ||
305 | #define writew_raw __raw_writew | ||
306 | #define writel_raw __raw_writel | ||
307 | #else /* Other big-endian */ | ||
308 | #define readw_l2b readw | ||
309 | #define readl_l2b readl | ||
310 | #define writew_b2l writew | ||
311 | #define writel_b2l writel | ||
312 | #define readw_raw readw | ||
313 | #define readl_raw readl | ||
314 | #define writew_raw writew | ||
315 | #define writel_raw writel | ||
316 | #endif | ||
317 | |||
318 | #else /* little endian */ | ||
319 | |||
320 | #define inw_raw inw | ||
321 | #define inl_raw inl | ||
322 | #define outw_raw outw | ||
323 | #define outl_raw outl | ||
324 | |||
325 | #define readb_raw readb | ||
326 | #define readw_raw readw | ||
327 | #define readl_raw readl | ||
328 | #define writeb_raw writeb | ||
329 | #define writew_raw writew | ||
330 | #define writel_raw writel | ||
331 | |||
332 | #endif | ||
333 | |||
334 | #if !defined(__hppa__) && !defined(__mips__) | ||
335 | #ifdef SCSI_NCR_BIG_ENDIAN | ||
336 | #error "The NCR in BIG ENDIAN addressing mode is not (yet) supported" | ||
337 | #endif | ||
338 | #endif | ||
339 | |||
340 | #define MEMORY_BARRIER() mb() | ||
341 | |||
342 | |||
343 | /* | ||
344 | * If the NCR uses big endian addressing mode over the | ||
345 | * PCI, actual io register addresses for byte and word | ||
346 | * accesses must be changed according to lane routing. | ||
347 | * Btw, ncr_offb() and ncr_offw() macros only apply to | ||
348 | * constants and so donnot generate bloated code. | ||
349 | */ | ||
350 | |||
351 | #if defined(SCSI_NCR_BIG_ENDIAN) | ||
352 | |||
353 | #define ncr_offb(o) (((o)&~3)+((~((o)&3))&3)) | ||
354 | #define ncr_offw(o) (((o)&~3)+((~((o)&3))&2)) | ||
355 | |||
356 | #else | ||
357 | |||
358 | #define ncr_offb(o) (o) | ||
359 | #define ncr_offw(o) (o) | ||
360 | |||
361 | #endif | ||
362 | |||
363 | /* | ||
364 | * If the CPU and the NCR use same endian-ness addressing, | ||
365 | * no byte reordering is needed for script patching. | ||
366 | * Macro cpu_to_scr() is to be used for script patching. | ||
367 | * Macro scr_to_cpu() is to be used for getting a DWORD | ||
368 | * from the script. | ||
369 | */ | ||
370 | |||
371 | #if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN) | ||
372 | |||
373 | #define cpu_to_scr(dw) cpu_to_le32(dw) | ||
374 | #define scr_to_cpu(dw) le32_to_cpu(dw) | ||
375 | |||
376 | #elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN) | ||
377 | |||
378 | #define cpu_to_scr(dw) cpu_to_be32(dw) | ||
379 | #define scr_to_cpu(dw) be32_to_cpu(dw) | ||
380 | |||
381 | #else | ||
382 | |||
383 | #define cpu_to_scr(dw) (dw) | ||
384 | #define scr_to_cpu(dw) (dw) | ||
385 | |||
386 | #endif | ||
387 | |||
388 | /* | ||
389 | * Access to the controller chip. | ||
390 | * | ||
391 | * If the CPU and the NCR use same endian-ness addressing, | ||
392 | * no byte reordering is needed for accessing chip io | ||
393 | * registers. Functions suffixed by '_raw' are assumed | ||
394 | * to access the chip over the PCI without doing byte | ||
395 | * reordering. Functions suffixed by '_l2b' are | ||
396 | * assumed to perform little-endian to big-endian byte | ||
397 | * reordering, those suffixed by '_b2l' blah, blah, | ||
398 | * blah, ... | ||
399 | */ | ||
400 | |||
401 | /* | ||
402 | * MEMORY mapped IO input / output | ||
403 | */ | ||
404 | |||
405 | #define INB_OFF(o) readb_raw((char __iomem *)np->reg + ncr_offb(o)) | ||
406 | #define OUTB_OFF(o, val) writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o)) | ||
407 | |||
408 | #if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN) | ||
409 | |||
410 | #define INW_OFF(o) readw_l2b((char __iomem *)np->reg + ncr_offw(o)) | ||
411 | #define INL_OFF(o) readl_l2b((char __iomem *)np->reg + (o)) | ||
412 | |||
413 | #define OUTW_OFF(o, val) writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o)) | ||
414 | #define OUTL_OFF(o, val) writel_b2l((val), (char __iomem *)np->reg + (o)) | ||
415 | |||
416 | #elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN) | ||
417 | |||
418 | #define INW_OFF(o) readw_b2l((char __iomem *)np->reg + ncr_offw(o)) | ||
419 | #define INL_OFF(o) readl_b2l((char __iomem *)np->reg + (o)) | ||
420 | |||
421 | #define OUTW_OFF(o, val) writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o)) | ||
422 | #define OUTL_OFF(o, val) writel_l2b((val), (char __iomem *)np->reg + (o)) | ||
423 | |||
424 | #else | ||
425 | |||
426 | #ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS | ||
427 | /* Only 8 or 32 bit transfers allowed */ | ||
428 | #define INW_OFF(o) (readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1)) | ||
429 | #else | ||
430 | #define INW_OFF(o) readw_raw((char __iomem *)np->reg + ncr_offw(o)) | ||
431 | #endif | ||
432 | #define INL_OFF(o) readl_raw((char __iomem *)np->reg + (o)) | ||
433 | |||
434 | #ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS | ||
435 | /* Only 8 or 32 bit transfers allowed */ | ||
436 | #define OUTW_OFF(o, val) do { writeb((char)((val) >> 8), (char __iomem *)np->reg + ncr_offw(o)); writeb((char)(val), (char __iomem *)np->reg + ncr_offw(o) + 1); } while (0) | ||
437 | #else | ||
438 | #define OUTW_OFF(o, val) writew_raw((val), (char __iomem *)np->reg + ncr_offw(o)) | ||
439 | #endif | ||
440 | #define OUTL_OFF(o, val) writel_raw((val), (char __iomem *)np->reg + (o)) | ||
441 | |||
442 | #endif | ||
443 | |||
444 | #define INB(r) INB_OFF (offsetof(struct ncr_reg,r)) | ||
445 | #define INW(r) INW_OFF (offsetof(struct ncr_reg,r)) | ||
446 | #define INL(r) INL_OFF (offsetof(struct ncr_reg,r)) | ||
447 | |||
448 | #define OUTB(r, val) OUTB_OFF (offsetof(struct ncr_reg,r), (val)) | ||
449 | #define OUTW(r, val) OUTW_OFF (offsetof(struct ncr_reg,r), (val)) | ||
450 | #define OUTL(r, val) OUTL_OFF (offsetof(struct ncr_reg,r), (val)) | ||
451 | |||
452 | /* | ||
453 | * Set bit field ON, OFF | ||
454 | */ | ||
455 | |||
456 | #define OUTONB(r, m) OUTB(r, INB(r) | (m)) | ||
457 | #define OUTOFFB(r, m) OUTB(r, INB(r) & ~(m)) | ||
458 | #define OUTONW(r, m) OUTW(r, INW(r) | (m)) | ||
459 | #define OUTOFFW(r, m) OUTW(r, INW(r) & ~(m)) | ||
460 | #define OUTONL(r, m) OUTL(r, INL(r) | (m)) | ||
461 | #define OUTOFFL(r, m) OUTL(r, INL(r) & ~(m)) | ||
462 | |||
463 | /* | ||
464 | * We normally want the chip to have a consistent view | ||
465 | * of driver internal data structures when we restart it. | ||
466 | * Thus these macros. | ||
467 | */ | ||
468 | #define OUTL_DSP(v) \ | ||
469 | do { \ | ||
470 | MEMORY_BARRIER(); \ | ||
471 | OUTL (nc_dsp, (v)); \ | ||
472 | } while (0) | ||
473 | |||
474 | #define OUTONB_STD() \ | ||
475 | do { \ | ||
476 | MEMORY_BARRIER(); \ | ||
477 | OUTONB (nc_dcntl, (STD|NOCOM)); \ | ||
478 | } while (0) | ||
479 | |||
480 | |||
481 | /* | ||
482 | ** NCR53C8XX devices features table. | ||
483 | */ | ||
484 | struct ncr_chip { | ||
485 | unsigned short revision_id; | ||
486 | unsigned char burst_max; /* log-base-2 of max burst */ | ||
487 | unsigned char offset_max; | ||
488 | unsigned char nr_divisor; | ||
489 | unsigned int features; | ||
490 | #define FE_LED0 (1<<0) | ||
491 | #define FE_WIDE (1<<1) /* Wide data transfers */ | ||
492 | #define FE_ULTRA (1<<2) /* Ultra speed 20Mtrans/sec */ | ||
493 | #define FE_DBLR (1<<4) /* Clock doubler present */ | ||
494 | #define FE_QUAD (1<<5) /* Clock quadrupler present */ | ||
495 | #define FE_ERL (1<<6) /* Enable read line */ | ||
496 | #define FE_CLSE (1<<7) /* Cache line size enable */ | ||
497 | #define FE_WRIE (1<<8) /* Write & Invalidate enable */ | ||
498 | #define FE_ERMP (1<<9) /* Enable read multiple */ | ||
499 | #define FE_BOF (1<<10) /* Burst opcode fetch */ | ||
500 | #define FE_DFS (1<<11) /* DMA fifo size */ | ||
501 | #define FE_PFEN (1<<12) /* Prefetch enable */ | ||
502 | #define FE_LDSTR (1<<13) /* Load/Store supported */ | ||
503 | #define FE_RAM (1<<14) /* On chip RAM present */ | ||
504 | #define FE_VARCLK (1<<15) /* SCSI clock may vary */ | ||
505 | #define FE_RAM8K (1<<16) /* On chip RAM sized 8Kb */ | ||
506 | #define FE_64BIT (1<<17) /* Have a 64-bit PCI interface */ | ||
507 | #define FE_IO256 (1<<18) /* Requires full 256 bytes in PCI space */ | ||
508 | #define FE_NOPM (1<<19) /* Scripts handles phase mismatch */ | ||
509 | #define FE_LEDC (1<<20) /* Hardware control of LED */ | ||
510 | #define FE_DIFF (1<<21) /* Support Differential SCSI */ | ||
511 | #define FE_66MHZ (1<<23) /* 66MHz PCI Support */ | ||
512 | #define FE_DAC (1<<24) /* Support DAC cycles (64 bit addressing) */ | ||
513 | #define FE_ISTAT1 (1<<25) /* Have ISTAT1, MBOX0, MBOX1 registers */ | ||
514 | #define FE_DAC_IN_USE (1<<26) /* Platform does DAC cycles */ | ||
515 | #define FE_EHP (1<<27) /* 720: Even host parity */ | ||
516 | #define FE_MUX (1<<28) /* 720: Multiplexed bus */ | ||
517 | #define FE_EA (1<<29) /* 720: Enable Ack */ | ||
518 | |||
519 | #define FE_CACHE_SET (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP) | ||
520 | #define FE_SCSI_SET (FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80) | ||
521 | #define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM) | ||
522 | }; | ||
523 | |||
524 | |||
525 | /* | ||
526 | ** Driver setup structure. | ||
527 | ** | ||
528 | ** This structure is initialized from linux config options. | ||
529 | ** It can be overridden at boot-up by the boot command line. | ||
530 | */ | ||
531 | #define SCSI_NCR_MAX_EXCLUDES 8 | ||
532 | struct ncr_driver_setup { | ||
533 | u8 master_parity; | ||
534 | u8 scsi_parity; | ||
535 | u8 disconnection; | ||
536 | u8 special_features; | ||
537 | u8 force_sync_nego; | ||
538 | u8 reverse_probe; | ||
539 | u8 pci_fix_up; | ||
540 | u8 use_nvram; | ||
541 | u8 verbose; | ||
542 | u8 default_tags; | ||
543 | u16 default_sync; | ||
544 | u16 debug; | ||
545 | u8 burst_max; | ||
546 | u8 led_pin; | ||
547 | u8 max_wide; | ||
548 | u8 settle_delay; | ||
549 | u8 diff_support; | ||
550 | u8 irqm; | ||
551 | u8 bus_check; | ||
552 | u8 optimize; | ||
553 | u8 recovery; | ||
554 | u8 host_id; | ||
555 | u16 iarb; | ||
556 | u32 excludes[SCSI_NCR_MAX_EXCLUDES]; | ||
557 | char tag_ctrl[100]; | ||
558 | }; | ||
559 | |||
560 | /* | ||
561 | ** Initial setup. | ||
562 | ** Can be overriden at startup by a command line. | ||
563 | */ | ||
564 | #define SCSI_NCR_DRIVER_SETUP \ | ||
565 | { \ | ||
566 | SCSI_NCR_SETUP_MASTER_PARITY, \ | ||
567 | SCSI_NCR_SETUP_SCSI_PARITY, \ | ||
568 | SCSI_NCR_SETUP_DISCONNECTION, \ | ||
569 | SCSI_NCR_SETUP_SPECIAL_FEATURES, \ | ||
570 | SCSI_NCR_SETUP_FORCE_SYNC_NEGO, \ | ||
571 | 0, \ | ||
572 | 0, \ | ||
573 | 1, \ | ||
574 | 0, \ | ||
575 | SCSI_NCR_SETUP_DEFAULT_TAGS, \ | ||
576 | SCSI_NCR_SETUP_DEFAULT_SYNC, \ | ||
577 | 0x00, \ | ||
578 | 7, \ | ||
579 | 0, \ | ||
580 | 1, \ | ||
581 | SCSI_NCR_SETUP_SETTLE_TIME, \ | ||
582 | 0, \ | ||
583 | 0, \ | ||
584 | 1, \ | ||
585 | 0, \ | ||
586 | 0, \ | ||
587 | 255, \ | ||
588 | 0x00 \ | ||
589 | } | ||
590 | |||
591 | /* | ||
592 | ** Boot fail safe setup. | ||
593 | ** Override initial setup from boot command line: | ||
594 | ** ncr53c8xx=safe:y | ||
595 | */ | ||
596 | #define SCSI_NCR_DRIVER_SAFE_SETUP \ | ||
597 | { \ | ||
598 | 0, \ | ||
599 | 1, \ | ||
600 | 0, \ | ||
601 | 0, \ | ||
602 | 0, \ | ||
603 | 0, \ | ||
604 | 0, \ | ||
605 | 1, \ | ||
606 | 2, \ | ||
607 | 0, \ | ||
608 | 255, \ | ||
609 | 0x00, \ | ||
610 | 255, \ | ||
611 | 0, \ | ||
612 | 0, \ | ||
613 | 10, \ | ||
614 | 1, \ | ||
615 | 1, \ | ||
616 | 1, \ | ||
617 | 0, \ | ||
618 | 0, \ | ||
619 | 255 \ | ||
620 | } | ||
621 | |||
622 | /**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/ | ||
623 | |||
624 | /*----------------------------------------------------------------- | ||
625 | ** | ||
626 | ** The ncr 53c810 register structure. | ||
627 | ** | ||
628 | **----------------------------------------------------------------- | ||
629 | */ | ||
630 | |||
631 | struct ncr_reg { | ||
632 | /*00*/ u8 nc_scntl0; /* full arb., ena parity, par->ATN */ | ||
633 | |||
634 | /*01*/ u8 nc_scntl1; /* no reset */ | ||
635 | #define ISCON 0x10 /* connected to scsi */ | ||
636 | #define CRST 0x08 /* force reset */ | ||
637 | #define IARB 0x02 /* immediate arbitration */ | ||
638 | |||
639 | /*02*/ u8 nc_scntl2; /* no disconnect expected */ | ||
640 | #define SDU 0x80 /* cmd: disconnect will raise error */ | ||
641 | #define CHM 0x40 /* sta: chained mode */ | ||
642 | #define WSS 0x08 /* sta: wide scsi send [W]*/ | ||
643 | #define WSR 0x01 /* sta: wide scsi received [W]*/ | ||
644 | |||
645 | /*03*/ u8 nc_scntl3; /* cnf system clock dependent */ | ||
646 | #define EWS 0x08 /* cmd: enable wide scsi [W]*/ | ||
647 | #define ULTRA 0x80 /* cmd: ULTRA enable */ | ||
648 | /* bits 0-2, 7 rsvd for C1010 */ | ||
649 | |||
650 | /*04*/ u8 nc_scid; /* cnf host adapter scsi address */ | ||
651 | #define RRE 0x40 /* r/w:e enable response to resel. */ | ||
652 | #define SRE 0x20 /* r/w:e enable response to select */ | ||
653 | |||
654 | /*05*/ u8 nc_sxfer; /* ### Sync speed and count */ | ||
655 | /* bits 6-7 rsvd for C1010 */ | ||
656 | |||
657 | /*06*/ u8 nc_sdid; /* ### Destination-ID */ | ||
658 | |||
659 | /*07*/ u8 nc_gpreg; /* ??? IO-Pins */ | ||
660 | |||
661 | /*08*/ u8 nc_sfbr; /* ### First byte in phase */ | ||
662 | |||
663 | /*09*/ u8 nc_socl; | ||
664 | #define CREQ 0x80 /* r/w: SCSI-REQ */ | ||
665 | #define CACK 0x40 /* r/w: SCSI-ACK */ | ||
666 | #define CBSY 0x20 /* r/w: SCSI-BSY */ | ||
667 | #define CSEL 0x10 /* r/w: SCSI-SEL */ | ||
668 | #define CATN 0x08 /* r/w: SCSI-ATN */ | ||
669 | #define CMSG 0x04 /* r/w: SCSI-MSG */ | ||
670 | #define CC_D 0x02 /* r/w: SCSI-C_D */ | ||
671 | #define CI_O 0x01 /* r/w: SCSI-I_O */ | ||
672 | |||
673 | /*0a*/ u8 nc_ssid; | ||
674 | |||
675 | /*0b*/ u8 nc_sbcl; | ||
676 | |||
677 | /*0c*/ u8 nc_dstat; | ||
678 | #define DFE 0x80 /* sta: dma fifo empty */ | ||
679 | #define MDPE 0x40 /* int: master data parity error */ | ||
680 | #define BF 0x20 /* int: script: bus fault */ | ||
681 | #define ABRT 0x10 /* int: script: command aborted */ | ||
682 | #define SSI 0x08 /* int: script: single step */ | ||
683 | #define SIR 0x04 /* int: script: interrupt instruct. */ | ||
684 | #define IID 0x01 /* int: script: illegal instruct. */ | ||
685 | |||
686 | /*0d*/ u8 nc_sstat0; | ||
687 | #define ILF 0x80 /* sta: data in SIDL register lsb */ | ||
688 | #define ORF 0x40 /* sta: data in SODR register lsb */ | ||
689 | #define OLF 0x20 /* sta: data in SODL register lsb */ | ||
690 | #define AIP 0x10 /* sta: arbitration in progress */ | ||
691 | #define LOA 0x08 /* sta: arbitration lost */ | ||
692 | #define WOA 0x04 /* sta: arbitration won */ | ||
693 | #define IRST 0x02 /* sta: scsi reset signal */ | ||
694 | #define SDP 0x01 /* sta: scsi parity signal */ | ||
695 | |||
696 | /*0e*/ u8 nc_sstat1; | ||
697 | #define FF3210 0xf0 /* sta: bytes in the scsi fifo */ | ||
698 | |||
699 | /*0f*/ u8 nc_sstat2; | ||
700 | #define ILF1 0x80 /* sta: data in SIDL register msb[W]*/ | ||
701 | #define ORF1 0x40 /* sta: data in SODR register msb[W]*/ | ||
702 | #define OLF1 0x20 /* sta: data in SODL register msb[W]*/ | ||
703 | #define DM 0x04 /* sta: DIFFSENS mismatch (895/6 only) */ | ||
704 | #define LDSC 0x02 /* sta: disconnect & reconnect */ | ||
705 | |||
706 | /*10*/ u8 nc_dsa; /* --> Base page */ | ||
707 | /*11*/ u8 nc_dsa1; | ||
708 | /*12*/ u8 nc_dsa2; | ||
709 | /*13*/ u8 nc_dsa3; | ||
710 | |||
711 | /*14*/ u8 nc_istat; /* --> Main Command and status */ | ||
712 | #define CABRT 0x80 /* cmd: abort current operation */ | ||
713 | #define SRST 0x40 /* mod: reset chip */ | ||
714 | #define SIGP 0x20 /* r/w: message from host to ncr */ | ||
715 | #define SEM 0x10 /* r/w: message between host + ncr */ | ||
716 | #define CON 0x08 /* sta: connected to scsi */ | ||
717 | #define INTF 0x04 /* sta: int on the fly (reset by wr)*/ | ||
718 | #define SIP 0x02 /* sta: scsi-interrupt */ | ||
719 | #define DIP 0x01 /* sta: host/script interrupt */ | ||
720 | |||
721 | /*15*/ u8 nc_istat1; /* 896 and later cores only */ | ||
722 | #define FLSH 0x04 /* sta: chip is flushing */ | ||
723 | #define SRUN 0x02 /* sta: scripts are running */ | ||
724 | #define SIRQD 0x01 /* r/w: disable INT pin */ | ||
725 | |||
726 | /*16*/ u8 nc_mbox0; /* 896 and later cores only */ | ||
727 | /*17*/ u8 nc_mbox1; /* 896 and later cores only */ | ||
728 | |||
729 | /*18*/ u8 nc_ctest0; | ||
730 | #define EHP 0x04 /* 720 even host parity */ | ||
731 | /*19*/ u8 nc_ctest1; | ||
732 | |||
733 | /*1a*/ u8 nc_ctest2; | ||
734 | #define CSIGP 0x40 | ||
735 | /* bits 0-2,7 rsvd for C1010 */ | ||
736 | |||
737 | /*1b*/ u8 nc_ctest3; | ||
738 | #define FLF 0x08 /* cmd: flush dma fifo */ | ||
739 | #define CLF 0x04 /* cmd: clear dma fifo */ | ||
740 | #define FM 0x02 /* mod: fetch pin mode */ | ||
741 | #define WRIE 0x01 /* mod: write and invalidate enable */ | ||
742 | /* bits 4-7 rsvd for C1010 */ | ||
743 | |||
744 | /*1c*/ u32 nc_temp; /* ### Temporary stack */ | ||
745 | |||
746 | /*20*/ u8 nc_dfifo; | ||
747 | /*21*/ u8 nc_ctest4; | ||
748 | #define MUX 0x80 /* 720 host bus multiplex mode */ | ||
749 | #define BDIS 0x80 /* mod: burst disable */ | ||
750 | #define MPEE 0x08 /* mod: master parity error enable */ | ||
751 | |||
752 | /*22*/ u8 nc_ctest5; | ||
753 | #define DFS 0x20 /* mod: dma fifo size */ | ||
754 | /* bits 0-1, 3-7 rsvd for C1010 */ | ||
755 | /*23*/ u8 nc_ctest6; | ||
756 | |||
757 | /*24*/ u32 nc_dbc; /* ### Byte count and command */ | ||
758 | /*28*/ u32 nc_dnad; /* ### Next command register */ | ||
759 | /*2c*/ u32 nc_dsp; /* --> Script Pointer */ | ||
760 | /*30*/ u32 nc_dsps; /* --> Script pointer save/opcode#2 */ | ||
761 | |||
762 | /*34*/ u8 nc_scratcha; /* Temporary register a */ | ||
763 | /*35*/ u8 nc_scratcha1; | ||
764 | /*36*/ u8 nc_scratcha2; | ||
765 | /*37*/ u8 nc_scratcha3; | ||
766 | |||
767 | /*38*/ u8 nc_dmode; | ||
768 | #define BL_2 0x80 /* mod: burst length shift value +2 */ | ||
769 | #define BL_1 0x40 /* mod: burst length shift value +1 */ | ||
770 | #define ERL 0x08 /* mod: enable read line */ | ||
771 | #define ERMP 0x04 /* mod: enable read multiple */ | ||
772 | #define BOF 0x02 /* mod: burst op code fetch */ | ||
773 | |||
774 | /*39*/ u8 nc_dien; | ||
775 | /*3a*/ u8 nc_sbr; | ||
776 | |||
777 | /*3b*/ u8 nc_dcntl; /* --> Script execution control */ | ||
778 | #define CLSE 0x80 /* mod: cache line size enable */ | ||
779 | #define PFF 0x40 /* cmd: pre-fetch flush */ | ||
780 | #define PFEN 0x20 /* mod: pre-fetch enable */ | ||
781 | #define EA 0x20 /* mod: 720 enable-ack */ | ||
782 | #define SSM 0x10 /* mod: single step mode */ | ||
783 | #define IRQM 0x08 /* mod: irq mode (1 = totem pole !) */ | ||
784 | #define STD 0x04 /* cmd: start dma mode */ | ||
785 | #define IRQD 0x02 /* mod: irq disable */ | ||
786 | #define NOCOM 0x01 /* cmd: protect sfbr while reselect */ | ||
787 | /* bits 0-1 rsvd for C1010 */ | ||
788 | |||
789 | /*3c*/ u32 nc_adder; | ||
790 | |||
791 | /*40*/ u16 nc_sien; /* -->: interrupt enable */ | ||
792 | /*42*/ u16 nc_sist; /* <--: interrupt status */ | ||
793 | #define SBMC 0x1000/* sta: SCSI Bus Mode Change (895/6 only) */ | ||
794 | #define STO 0x0400/* sta: timeout (select) */ | ||
795 | #define GEN 0x0200/* sta: timeout (general) */ | ||
796 | #define HTH 0x0100/* sta: timeout (handshake) */ | ||
797 | #define MA 0x80 /* sta: phase mismatch */ | ||
798 | #define CMP 0x40 /* sta: arbitration complete */ | ||
799 | #define SEL 0x20 /* sta: selected by another device */ | ||
800 | #define RSL 0x10 /* sta: reselected by another device*/ | ||
801 | #define SGE 0x08 /* sta: gross error (over/underflow)*/ | ||
802 | #define UDC 0x04 /* sta: unexpected disconnect */ | ||
803 | #define RST 0x02 /* sta: scsi bus reset detected */ | ||
804 | #define PAR 0x01 /* sta: scsi parity error */ | ||
805 | |||
806 | /*44*/ u8 nc_slpar; | ||
807 | /*45*/ u8 nc_swide; | ||
808 | /*46*/ u8 nc_macntl; | ||
809 | /*47*/ u8 nc_gpcntl; | ||
810 | /*48*/ u8 nc_stime0; /* cmd: timeout for select&handshake*/ | ||
811 | /*49*/ u8 nc_stime1; /* cmd: timeout user defined */ | ||
812 | /*4a*/ u16 nc_respid; /* sta: Reselect-IDs */ | ||
813 | |||
814 | /*4c*/ u8 nc_stest0; | ||
815 | |||
816 | /*4d*/ u8 nc_stest1; | ||
817 | #define SCLK 0x80 /* Use the PCI clock as SCSI clock */ | ||
818 | #define DBLEN 0x08 /* clock doubler running */ | ||
819 | #define DBLSEL 0x04 /* clock doubler selected */ | ||
820 | |||
821 | |||
822 | /*4e*/ u8 nc_stest2; | ||
823 | #define ROF 0x40 /* reset scsi offset (after gross error!) */ | ||
824 | #define DIF 0x20 /* 720 SCSI differential mode */ | ||
825 | #define EXT 0x02 /* extended filtering */ | ||
826 | |||
827 | /*4f*/ u8 nc_stest3; | ||
828 | #define TE 0x80 /* c: tolerAnt enable */ | ||
829 | #define HSC 0x20 /* c: Halt SCSI Clock */ | ||
830 | #define CSF 0x02 /* c: clear scsi fifo */ | ||
831 | |||
832 | /*50*/ u16 nc_sidl; /* Lowlevel: latched from scsi data */ | ||
833 | /*52*/ u8 nc_stest4; | ||
834 | #define SMODE 0xc0 /* SCSI bus mode (895/6 only) */ | ||
835 | #define SMODE_HVD 0x40 /* High Voltage Differential */ | ||
836 | #define SMODE_SE 0x80 /* Single Ended */ | ||
837 | #define SMODE_LVD 0xc0 /* Low Voltage Differential */ | ||
838 | #define LCKFRQ 0x20 /* Frequency Lock (895/6 only) */ | ||
839 | /* bits 0-5 rsvd for C1010 */ | ||
840 | |||
841 | /*53*/ u8 nc_53_; | ||
842 | /*54*/ u16 nc_sodl; /* Lowlevel: data out to scsi data */ | ||
843 | /*56*/ u8 nc_ccntl0; /* Chip Control 0 (896) */ | ||
844 | #define ENPMJ 0x80 /* Enable Phase Mismatch Jump */ | ||
845 | #define PMJCTL 0x40 /* Phase Mismatch Jump Control */ | ||
846 | #define ENNDJ 0x20 /* Enable Non Data PM Jump */ | ||
847 | #define DISFC 0x10 /* Disable Auto FIFO Clear */ | ||
848 | #define DILS 0x02 /* Disable Internal Load/Store */ | ||
849 | #define DPR 0x01 /* Disable Pipe Req */ | ||
850 | |||
851 | /*57*/ u8 nc_ccntl1; /* Chip Control 1 (896) */ | ||
852 | #define ZMOD 0x80 /* High Impedance Mode */ | ||
853 | #define DIC 0x10 /* Disable Internal Cycles */ | ||
854 | #define DDAC 0x08 /* Disable Dual Address Cycle */ | ||
855 | #define XTIMOD 0x04 /* 64-bit Table Ind. Indexing Mode */ | ||
856 | #define EXTIBMV 0x02 /* Enable 64-bit Table Ind. BMOV */ | ||
857 | #define EXDBMV 0x01 /* Enable 64-bit Direct BMOV */ | ||
858 | |||
859 | /*58*/ u16 nc_sbdl; /* Lowlevel: data from scsi data */ | ||
860 | /*5a*/ u16 nc_5a_; | ||
861 | |||
862 | /*5c*/ u8 nc_scr0; /* Working register B */ | ||
863 | /*5d*/ u8 nc_scr1; /* */ | ||
864 | /*5e*/ u8 nc_scr2; /* */ | ||
865 | /*5f*/ u8 nc_scr3; /* */ | ||
866 | |||
867 | /*60*/ u8 nc_scrx[64]; /* Working register C-R */ | ||
868 | /*a0*/ u32 nc_mmrs; /* Memory Move Read Selector */ | ||
869 | /*a4*/ u32 nc_mmws; /* Memory Move Write Selector */ | ||
870 | /*a8*/ u32 nc_sfs; /* Script Fetch Selector */ | ||
871 | /*ac*/ u32 nc_drs; /* DSA Relative Selector */ | ||
872 | /*b0*/ u32 nc_sbms; /* Static Block Move Selector */ | ||
873 | /*b4*/ u32 nc_dbms; /* Dynamic Block Move Selector */ | ||
874 | /*b8*/ u32 nc_dnad64; /* DMA Next Address 64 */ | ||
875 | /*bc*/ u16 nc_scntl4; /* C1010 only */ | ||
876 | #define U3EN 0x80 /* Enable Ultra 3 */ | ||
877 | #define AIPEN 0x40 /* Allow check upper byte lanes */ | ||
878 | #define XCLKH_DT 0x08 /* Extra clock of data hold on DT | ||
879 | transfer edge */ | ||
880 | #define XCLKH_ST 0x04 /* Extra clock of data hold on ST | ||
881 | transfer edge */ | ||
882 | |||
883 | /*be*/ u8 nc_aipcntl0; /* Epat Control 1 C1010 only */ | ||
884 | /*bf*/ u8 nc_aipcntl1; /* AIP Control C1010_66 Only */ | ||
885 | |||
886 | /*c0*/ u32 nc_pmjad1; /* Phase Mismatch Jump Address 1 */ | ||
887 | /*c4*/ u32 nc_pmjad2; /* Phase Mismatch Jump Address 2 */ | ||
888 | /*c8*/ u8 nc_rbc; /* Remaining Byte Count */ | ||
889 | /*c9*/ u8 nc_rbc1; /* */ | ||
890 | /*ca*/ u8 nc_rbc2; /* */ | ||
891 | /*cb*/ u8 nc_rbc3; /* */ | ||
892 | |||
893 | /*cc*/ u8 nc_ua; /* Updated Address */ | ||
894 | /*cd*/ u8 nc_ua1; /* */ | ||
895 | /*ce*/ u8 nc_ua2; /* */ | ||
896 | /*cf*/ u8 nc_ua3; /* */ | ||
897 | /*d0*/ u32 nc_esa; /* Entry Storage Address */ | ||
898 | /*d4*/ u8 nc_ia; /* Instruction Address */ | ||
899 | /*d5*/ u8 nc_ia1; | ||
900 | /*d6*/ u8 nc_ia2; | ||
901 | /*d7*/ u8 nc_ia3; | ||
902 | /*d8*/ u32 nc_sbc; /* SCSI Byte Count (3 bytes only) */ | ||
903 | /*dc*/ u32 nc_csbc; /* Cumulative SCSI Byte Count */ | ||
904 | |||
905 | /* Following for C1010 only */ | ||
906 | /*e0*/ u16 nc_crcpad; /* CRC Value */ | ||
907 | /*e2*/ u8 nc_crccntl0; /* CRC control register */ | ||
908 | #define SNDCRC 0x10 /* Send CRC Request */ | ||
909 | /*e3*/ u8 nc_crccntl1; /* CRC control register */ | ||
910 | /*e4*/ u32 nc_crcdata; /* CRC data register */ | ||
911 | /*e8*/ u32 nc_e8_; /* rsvd */ | ||
912 | /*ec*/ u32 nc_ec_; /* rsvd */ | ||
913 | /*f0*/ u16 nc_dfbc; /* DMA FIFO byte count */ | ||
914 | |||
915 | }; | ||
916 | |||
917 | /*----------------------------------------------------------- | ||
918 | ** | ||
919 | ** Utility macros for the script. | ||
920 | ** | ||
921 | **----------------------------------------------------------- | ||
922 | */ | ||
923 | |||
924 | #define REGJ(p,r) (offsetof(struct ncr_reg, p ## r)) | ||
925 | #define REG(r) REGJ (nc_, r) | ||
926 | |||
927 | typedef u32 ncrcmd; | ||
928 | |||
929 | /*----------------------------------------------------------- | ||
930 | ** | ||
931 | ** SCSI phases | ||
932 | ** | ||
933 | ** DT phases illegal for ncr driver. | ||
934 | ** | ||
935 | **----------------------------------------------------------- | ||
936 | */ | ||
937 | |||
938 | #define SCR_DATA_OUT 0x00000000 | ||
939 | #define SCR_DATA_IN 0x01000000 | ||
940 | #define SCR_COMMAND 0x02000000 | ||
941 | #define SCR_STATUS 0x03000000 | ||
942 | #define SCR_DT_DATA_OUT 0x04000000 | ||
943 | #define SCR_DT_DATA_IN 0x05000000 | ||
944 | #define SCR_MSG_OUT 0x06000000 | ||
945 | #define SCR_MSG_IN 0x07000000 | ||
946 | |||
947 | #define SCR_ILG_OUT 0x04000000 | ||
948 | #define SCR_ILG_IN 0x05000000 | ||
949 | |||
950 | /*----------------------------------------------------------- | ||
951 | ** | ||
952 | ** Data transfer via SCSI. | ||
953 | ** | ||
954 | **----------------------------------------------------------- | ||
955 | ** | ||
956 | ** MOVE_ABS (LEN) | ||
957 | ** <<start address>> | ||
958 | ** | ||
959 | ** MOVE_IND (LEN) | ||
960 | ** <<dnad_offset>> | ||
961 | ** | ||
962 | ** MOVE_TBL | ||
963 | ** <<dnad_offset>> | ||
964 | ** | ||
965 | **----------------------------------------------------------- | ||
966 | */ | ||
967 | |||
968 | #define OPC_MOVE 0x08000000 | ||
969 | |||
970 | #define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l)) | ||
971 | #define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l)) | ||
972 | #define SCR_MOVE_TBL (0x10000000 | OPC_MOVE) | ||
973 | |||
974 | #define SCR_CHMOV_ABS(l) ((0x00000000) | (l)) | ||
975 | #define SCR_CHMOV_IND(l) ((0x20000000) | (l)) | ||
976 | #define SCR_CHMOV_TBL (0x10000000) | ||
977 | |||
978 | struct scr_tblmove { | ||
979 | u32 size; | ||
980 | u32 addr; | ||
981 | }; | ||
982 | |||
983 | /*----------------------------------------------------------- | ||
984 | ** | ||
985 | ** Selection | ||
986 | ** | ||
987 | **----------------------------------------------------------- | ||
988 | ** | ||
989 | ** SEL_ABS | SCR_ID (0..15) [ | REL_JMP] | ||
990 | ** <<alternate_address>> | ||
991 | ** | ||
992 | ** SEL_TBL | << dnad_offset>> [ | REL_JMP] | ||
993 | ** <<alternate_address>> | ||
994 | ** | ||
995 | **----------------------------------------------------------- | ||
996 | */ | ||
997 | |||
998 | #define SCR_SEL_ABS 0x40000000 | ||
999 | #define SCR_SEL_ABS_ATN 0x41000000 | ||
1000 | #define SCR_SEL_TBL 0x42000000 | ||
1001 | #define SCR_SEL_TBL_ATN 0x43000000 | ||
1002 | |||
1003 | |||
1004 | #ifdef SCSI_NCR_BIG_ENDIAN | ||
1005 | struct scr_tblsel { | ||
1006 | u8 sel_scntl3; | ||
1007 | u8 sel_id; | ||
1008 | u8 sel_sxfer; | ||
1009 | u8 sel_scntl4; | ||
1010 | }; | ||
1011 | #else | ||
1012 | struct scr_tblsel { | ||
1013 | u8 sel_scntl4; | ||
1014 | u8 sel_sxfer; | ||
1015 | u8 sel_id; | ||
1016 | u8 sel_scntl3; | ||
1017 | }; | ||
1018 | #endif | ||
1019 | |||
1020 | #define SCR_JMP_REL 0x04000000 | ||
1021 | #define SCR_ID(id) (((u32)(id)) << 16) | ||
1022 | |||
1023 | /*----------------------------------------------------------- | ||
1024 | ** | ||
1025 | ** Waiting for Disconnect or Reselect | ||
1026 | ** | ||
1027 | **----------------------------------------------------------- | ||
1028 | ** | ||
1029 | ** WAIT_DISC | ||
1030 | ** dummy: <<alternate_address>> | ||
1031 | ** | ||
1032 | ** WAIT_RESEL | ||
1033 | ** <<alternate_address>> | ||
1034 | ** | ||
1035 | **----------------------------------------------------------- | ||
1036 | */ | ||
1037 | |||
1038 | #define SCR_WAIT_DISC 0x48000000 | ||
1039 | #define SCR_WAIT_RESEL 0x50000000 | ||
1040 | |||
1041 | /*----------------------------------------------------------- | ||
1042 | ** | ||
1043 | ** Bit Set / Reset | ||
1044 | ** | ||
1045 | **----------------------------------------------------------- | ||
1046 | ** | ||
1047 | ** SET (flags {|.. }) | ||
1048 | ** | ||
1049 | ** CLR (flags {|.. }) | ||
1050 | ** | ||
1051 | **----------------------------------------------------------- | ||
1052 | */ | ||
1053 | |||
1054 | #define SCR_SET(f) (0x58000000 | (f)) | ||
1055 | #define SCR_CLR(f) (0x60000000 | (f)) | ||
1056 | |||
1057 | #define SCR_CARRY 0x00000400 | ||
1058 | #define SCR_TRG 0x00000200 | ||
1059 | #define SCR_ACK 0x00000040 | ||
1060 | #define SCR_ATN 0x00000008 | ||
1061 | |||
1062 | |||
1063 | |||
1064 | |||
1065 | /*----------------------------------------------------------- | ||
1066 | ** | ||
1067 | ** Memory to memory move | ||
1068 | ** | ||
1069 | **----------------------------------------------------------- | ||
1070 | ** | ||
1071 | ** COPY (bytecount) | ||
1072 | ** << source_address >> | ||
1073 | ** << destination_address >> | ||
1074 | ** | ||
1075 | ** SCR_COPY sets the NO FLUSH option by default. | ||
1076 | ** SCR_COPY_F does not set this option. | ||
1077 | ** | ||
1078 | ** For chips which do not support this option, | ||
1079 | ** ncr_copy_and_bind() will remove this bit. | ||
1080 | **----------------------------------------------------------- | ||
1081 | */ | ||
1082 | |||
1083 | #define SCR_NO_FLUSH 0x01000000 | ||
1084 | |||
1085 | #define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n)) | ||
1086 | #define SCR_COPY_F(n) (0xc0000000 | (n)) | ||
1087 | |||
1088 | /*----------------------------------------------------------- | ||
1089 | ** | ||
1090 | ** Register move and binary operations | ||
1091 | ** | ||
1092 | **----------------------------------------------------------- | ||
1093 | ** | ||
1094 | ** SFBR_REG (reg, op, data) reg = SFBR op data | ||
1095 | ** << 0 >> | ||
1096 | ** | ||
1097 | ** REG_SFBR (reg, op, data) SFBR = reg op data | ||
1098 | ** << 0 >> | ||
1099 | ** | ||
1100 | ** REG_REG (reg, op, data) reg = reg op data | ||
1101 | ** << 0 >> | ||
1102 | ** | ||
1103 | **----------------------------------------------------------- | ||
1104 | ** On 810A, 860, 825A, 875, 895 and 896 chips the content | ||
1105 | ** of SFBR register can be used as data (SCR_SFBR_DATA). | ||
1106 | ** The 896 has additionnal IO registers starting at | ||
1107 | ** offset 0x80. Bit 7 of register offset is stored in | ||
1108 | ** bit 7 of the SCRIPTS instruction first DWORD. | ||
1109 | **----------------------------------------------------------- | ||
1110 | */ | ||
1111 | |||
1112 | #define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80)) | ||
1113 | |||
1114 | #define SCR_SFBR_REG(reg,op,data) \ | ||
1115 | (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul)) | ||
1116 | |||
1117 | #define SCR_REG_SFBR(reg,op,data) \ | ||
1118 | (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul)) | ||
1119 | |||
1120 | #define SCR_REG_REG(reg,op,data) \ | ||
1121 | (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul)) | ||
1122 | |||
1123 | |||
1124 | #define SCR_LOAD 0x00000000 | ||
1125 | #define SCR_SHL 0x01000000 | ||
1126 | #define SCR_OR 0x02000000 | ||
1127 | #define SCR_XOR 0x03000000 | ||
1128 | #define SCR_AND 0x04000000 | ||
1129 | #define SCR_SHR 0x05000000 | ||
1130 | #define SCR_ADD 0x06000000 | ||
1131 | #define SCR_ADDC 0x07000000 | ||
1132 | |||
1133 | #define SCR_SFBR_DATA (0x00800000>>8ul) /* Use SFBR as data */ | ||
1134 | |||
1135 | /*----------------------------------------------------------- | ||
1136 | ** | ||
1137 | ** FROM_REG (reg) SFBR = reg | ||
1138 | ** << 0 >> | ||
1139 | ** | ||
1140 | ** TO_REG (reg) reg = SFBR | ||
1141 | ** << 0 >> | ||
1142 | ** | ||
1143 | ** LOAD_REG (reg, data) reg = <data> | ||
1144 | ** << 0 >> | ||
1145 | ** | ||
1146 | ** LOAD_SFBR(data) SFBR = <data> | ||
1147 | ** << 0 >> | ||
1148 | ** | ||
1149 | **----------------------------------------------------------- | ||
1150 | */ | ||
1151 | |||
1152 | #define SCR_FROM_REG(reg) \ | ||
1153 | SCR_REG_SFBR(reg,SCR_OR,0) | ||
1154 | |||
1155 | #define SCR_TO_REG(reg) \ | ||
1156 | SCR_SFBR_REG(reg,SCR_OR,0) | ||
1157 | |||
1158 | #define SCR_LOAD_REG(reg,data) \ | ||
1159 | SCR_REG_REG(reg,SCR_LOAD,data) | ||
1160 | |||
1161 | #define SCR_LOAD_SFBR(data) \ | ||
1162 | (SCR_REG_SFBR (gpreg, SCR_LOAD, data)) | ||
1163 | |||
1164 | /*----------------------------------------------------------- | ||
1165 | ** | ||
1166 | ** LOAD from memory to register. | ||
1167 | ** STORE from register to memory. | ||
1168 | ** | ||
1169 | ** Only supported by 810A, 860, 825A, 875, 895 and 896. | ||
1170 | ** | ||
1171 | **----------------------------------------------------------- | ||
1172 | ** | ||
1173 | ** LOAD_ABS (LEN) | ||
1174 | ** <<start address>> | ||
1175 | ** | ||
1176 | ** LOAD_REL (LEN) (DSA relative) | ||
1177 | ** <<dsa_offset>> | ||
1178 | ** | ||
1179 | **----------------------------------------------------------- | ||
1180 | */ | ||
1181 | |||
1182 | #define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul) | ||
1183 | #define SCR_NO_FLUSH2 0x02000000 | ||
1184 | #define SCR_DSA_REL2 0x10000000 | ||
1185 | |||
1186 | #define SCR_LOAD_R(reg, how, n) \ | ||
1187 | (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n)) | ||
1188 | |||
1189 | #define SCR_STORE_R(reg, how, n) \ | ||
1190 | (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n)) | ||
1191 | |||
1192 | #define SCR_LOAD_ABS(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2, n) | ||
1193 | #define SCR_LOAD_REL(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n) | ||
1194 | #define SCR_LOAD_ABS_F(reg, n) SCR_LOAD_R(reg, 0, n) | ||
1195 | #define SCR_LOAD_REL_F(reg, n) SCR_LOAD_R(reg, SCR_DSA_REL2, n) | ||
1196 | |||
1197 | #define SCR_STORE_ABS(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2, n) | ||
1198 | #define SCR_STORE_REL(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n) | ||
1199 | #define SCR_STORE_ABS_F(reg, n) SCR_STORE_R(reg, 0, n) | ||
1200 | #define SCR_STORE_REL_F(reg, n) SCR_STORE_R(reg, SCR_DSA_REL2, n) | ||
1201 | |||
1202 | |||
1203 | /*----------------------------------------------------------- | ||
1204 | ** | ||
1205 | ** Waiting for Disconnect or Reselect | ||
1206 | ** | ||
1207 | **----------------------------------------------------------- | ||
1208 | ** | ||
1209 | ** JUMP [ | IFTRUE/IFFALSE ( ... ) ] | ||
1210 | ** <<address>> | ||
1211 | ** | ||
1212 | ** JUMPR [ | IFTRUE/IFFALSE ( ... ) ] | ||
1213 | ** <<distance>> | ||
1214 | ** | ||
1215 | ** CALL [ | IFTRUE/IFFALSE ( ... ) ] | ||
1216 | ** <<address>> | ||
1217 | ** | ||
1218 | ** CALLR [ | IFTRUE/IFFALSE ( ... ) ] | ||
1219 | ** <<distance>> | ||
1220 | ** | ||
1221 | ** RETURN [ | IFTRUE/IFFALSE ( ... ) ] | ||
1222 | ** <<dummy>> | ||
1223 | ** | ||
1224 | ** INT [ | IFTRUE/IFFALSE ( ... ) ] | ||
1225 | ** <<ident>> | ||
1226 | ** | ||
1227 | ** INT_FLY [ | IFTRUE/IFFALSE ( ... ) ] | ||
1228 | ** <<ident>> | ||
1229 | ** | ||
1230 | ** Conditions: | ||
1231 | ** WHEN (phase) | ||
1232 | ** IF (phase) | ||
1233 | ** CARRYSET | ||
1234 | ** DATA (data, mask) | ||
1235 | ** | ||
1236 | **----------------------------------------------------------- | ||
1237 | */ | ||
1238 | |||
1239 | #define SCR_NO_OP 0x80000000 | ||
1240 | #define SCR_JUMP 0x80080000 | ||
1241 | #define SCR_JUMP64 0x80480000 | ||
1242 | #define SCR_JUMPR 0x80880000 | ||
1243 | #define SCR_CALL 0x88080000 | ||
1244 | #define SCR_CALLR 0x88880000 | ||
1245 | #define SCR_RETURN 0x90080000 | ||
1246 | #define SCR_INT 0x98080000 | ||
1247 | #define SCR_INT_FLY 0x98180000 | ||
1248 | |||
1249 | #define IFFALSE(arg) (0x00080000 | (arg)) | ||
1250 | #define IFTRUE(arg) (0x00000000 | (arg)) | ||
1251 | |||
1252 | #define WHEN(phase) (0x00030000 | (phase)) | ||
1253 | #define IF(phase) (0x00020000 | (phase)) | ||
1254 | |||
1255 | #define DATA(D) (0x00040000 | ((D) & 0xff)) | ||
1256 | #define MASK(D,M) (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff)) | ||
1257 | |||
1258 | #define CARRYSET (0x00200000) | ||
1259 | |||
1260 | /*----------------------------------------------------------- | ||
1261 | ** | ||
1262 | ** SCSI constants. | ||
1263 | ** | ||
1264 | **----------------------------------------------------------- | ||
1265 | */ | ||
1266 | |||
1267 | /* | ||
1268 | ** Messages | ||
1269 | */ | ||
1270 | |||
1271 | #define M_COMPLETE COMMAND_COMPLETE | ||
1272 | #define M_EXTENDED EXTENDED_MESSAGE | ||
1273 | #define M_SAVE_DP SAVE_POINTERS | ||
1274 | #define M_RESTORE_DP RESTORE_POINTERS | ||
1275 | #define M_DISCONNECT DISCONNECT | ||
1276 | #define M_ID_ERROR INITIATOR_ERROR | ||
1277 | #define M_ABORT ABORT_TASK_SET | ||
1278 | #define M_REJECT MESSAGE_REJECT | ||
1279 | #define M_NOOP NOP | ||
1280 | #define M_PARITY MSG_PARITY_ERROR | ||
1281 | #define M_LCOMPLETE LINKED_CMD_COMPLETE | ||
1282 | #define M_FCOMPLETE LINKED_FLG_CMD_COMPLETE | ||
1283 | #define M_RESET TARGET_RESET | ||
1284 | #define M_ABORT_TAG ABORT_TASK | ||
1285 | #define M_CLEAR_QUEUE CLEAR_TASK_SET | ||
1286 | #define M_INIT_REC INITIATE_RECOVERY | ||
1287 | #define M_REL_REC RELEASE_RECOVERY | ||
1288 | #define M_TERMINATE (0x11) | ||
1289 | #define M_SIMPLE_TAG SIMPLE_QUEUE_TAG | ||
1290 | #define M_HEAD_TAG HEAD_OF_QUEUE_TAG | ||
1291 | #define M_ORDERED_TAG ORDERED_QUEUE_TAG | ||
1292 | #define M_IGN_RESIDUE IGNORE_WIDE_RESIDUE | ||
1293 | #define M_IDENTIFY (0x80) | ||
1294 | |||
1295 | #define M_X_MODIFY_DP EXTENDED_MODIFY_DATA_POINTER | ||
1296 | #define M_X_SYNC_REQ EXTENDED_SDTR | ||
1297 | #define M_X_WIDE_REQ EXTENDED_WDTR | ||
1298 | #define M_X_PPR_REQ EXTENDED_PPR | ||
1299 | |||
1300 | /* | ||
1301 | ** Status | ||
1302 | */ | ||
1303 | |||
1304 | #define S_GOOD (0x00) | ||
1305 | #define S_CHECK_COND (0x02) | ||
1306 | #define S_COND_MET (0x04) | ||
1307 | #define S_BUSY (0x08) | ||
1308 | #define S_INT (0x10) | ||
1309 | #define S_INT_COND_MET (0x14) | ||
1310 | #define S_CONFLICT (0x18) | ||
1311 | #define S_TERMINATED (0x20) | ||
1312 | #define S_QUEUE_FULL (0x28) | ||
1313 | #define S_ILLEGAL (0xff) | ||
1314 | #define S_SENSE (0x80) | ||
1315 | |||
1316 | /* | ||
1317 | * End of ncrreg from FreeBSD | ||
1318 | */ | ||
1319 | |||
1320 | #endif /* defined SYM53C8XX_DEFS_H */ | ||
diff --git a/drivers/scsi/wd33c93.c b/drivers/scsi/wd33c93.c index fd63add6a577..fb53eeaee617 100644 --- a/drivers/scsi/wd33c93.c +++ b/drivers/scsi/wd33c93.c | |||
@@ -465,7 +465,7 @@ wd33c93_execute(struct Scsi_Host *instance) | |||
465 | */ | 465 | */ |
466 | 466 | ||
467 | cmd = (struct scsi_cmnd *) hostdata->input_Q; | 467 | cmd = (struct scsi_cmnd *) hostdata->input_Q; |
468 | prev = 0; | 468 | prev = NULL; |
469 | while (cmd) { | 469 | while (cmd) { |
470 | if (!(hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))) | 470 | if (!(hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))) |
471 | break; | 471 | break; |
@@ -1569,7 +1569,7 @@ wd33c93_abort(struct scsi_cmnd * cmd) | |||
1569 | */ | 1569 | */ |
1570 | 1570 | ||
1571 | tmp = (struct scsi_cmnd *) hostdata->input_Q; | 1571 | tmp = (struct scsi_cmnd *) hostdata->input_Q; |
1572 | prev = 0; | 1572 | prev = NULL; |
1573 | while (tmp) { | 1573 | while (tmp) { |
1574 | if (tmp == cmd) { | 1574 | if (tmp == cmd) { |
1575 | if (prev) | 1575 | if (prev) |