Date: Fri, 25 Aug 1995 15:03:37 PDT From: Voradesh Yenbut <yenbut@cs.washington.edu> To: joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch) Cc: freebsd-hackers@FreeBSD.org (FreeBSD hackers) Subject: Re: Changing DEV_BSIZE Message-ID: <199508252203.PAA00106@vetch.cs.washington.edu> In-Reply-To: Your message of "Wed, 23 Aug 1995 23:35:44 %2B0200." <199508232135.XAA20050@uriah.heep.sax.de>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multipart MIME message. --===_0_Fri_Aug_25_13:23:48_PDT_1995 Content-Type: text/plain I made mods to both 1.1.5 and 2.0-RELEASE for non-512 block media. The mods are not specific to 512 and 1024 block sizes but I've never tested any thing beyond the two block sizes. Files being modified are: ./sys/i386/i386/autoconf.c ./sys/kern/kern_physio.c ./sys/kern/vfs_cluster.c ./sys/miscfs/specfs/spec_vnops.c ./sys/scsi/sd.c ./sys/scsi/scsiconf.c ./sys/ufs/ffs/ffs_vfsops.c ./sys/ufs/ffs/ffs_inode.c ./sys/ufs/ffs/ffs_alloc.c ./sys/ufs/ufs/ufs_disksubr.c ./sys/ufs/ufs/ufs_readwrite.c ./sys/vm/vm_swap.c ./sys/vm/vnode_pager.c I haven't used disklabel to write a label on a 1024-byte block size under 2.0-RELEASE yet (I modified it under 1.1.5.). I suspect it might need modifying also. The mods are in no way accurate. They are in many places I are not sure if "sector" mentioned in comment is supposed to be 512-byte sector or disk sector whose size is not 512 bytes. I hope someone will verify before the code is used. The attached files below are disklabel, swapinfo, dmesg output and the patches. The system runs entirely on one 1024-byte media. There are two #ifdef's in the patches: DBSIZEne512 for non-512, and SARSIAM for my special treatment on swap filesystem -- I would like to be able to remove an optical disk media when it is configured in the kernel for swap but swapon has not issued on it yet. Enjoy, Voradesh Yenbut --===_0_Fri_Aug_25_13:23:48_PDT_1995 Content-Type: text/plain Content-Description: disklabel # /dev/rsd0c: type: SCSI disk: 3M 33019 label: flags: bytes/sector: 1024 sectors/track: 17 tracks/cylinder: 1 sectors/cylinder: 17 cylinders: 37473 rpm: 3375 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 5 partitions: # size offset fstype [fsize bsize cpg] a: 17000 17 4.2BSD 1024 8192 320 # (Cyl. 1 - 1000) b: 34000 17017 4.2BSD 1024 8192 320 # (Cyl. 1001 - 3000) c: 637024 17 4.2BSD 1024 8192 320 # (Cyl. 1 - 37472) d: 637041 0 4.2BSD 1024 8192 320 # (Cyl. 0 - 37472) e: 586024 51017 4.2BSD 1024 8192 320 # (Cyl. 3001 - 37472) Device 1K-blocks Used Available Capacity /dev/sd0b 33984 2460 31524 7% /dev/wd0b 0 *** not available for swapping *** /dev/sd1b 0 *** not available for swapping *** /dev/sd2b 0 *** not available for swapping *** --===_0_Fri_Aug_25_13:23:48_PDT_1995 Content-Type: text/plain Content-Description: dmesg FreeBSD 2.0-RELEASE #0: Sat Feb 11 21:46:05 PST 1995 yenbut@sarsiam:/usr/src/sys/compile/SARSIAM.bpf CPU: i486DX (486-class CPU) real memory = 16384000 (4000 pages) avail memory = 15118336 (3691 pages) using 290 buffers containing 2379776 bytes of memory Probing for devices on the ISA bus: sc0 at 0x60-0x6f irq 1 on motherboard sc0: VGA color <4 virtual consoles> ed0 at 0x280-0x29f irq 3 maddr 0xe8000 msize 16384 on isa ed0: address 00:00:c0:a1:3d:81, type SMC8216/SMC8216C (16 bit) bpf: ed0 attached sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 not found at 0x2f8 sio2 not found at 0x3e8 sio3 at 0x2e8-0x2ef irq 9 on isa sio3: type 16550A lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven port lp0: TCP/IP capable interface lpt1 not found at 0xffffffff lpt2 not found at 0xffffffff fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa fdc0: [0: fd0: 1.2MB 5.25in] [1: fd1: 1.44MB 3.5in] wdc0 at 0x1f0-0x1f7 irq 14 on isa wdc0: unit 0 (wd0): <UltraStor Ultra-12> wd0: 144MB (296514 total sec), 969 cyl, 9 head, 34 sec, bytes/sec 512 aha0: 1542C/CF detected, unlocking mailbox aha0: reading board settings, dma=5 int=11 (bus speed defaulted) aha0 at 0x330-0x333 irq 11 drq 5 on isa aha0 waiting for scsi devices to settle aha0 targ 0 lun 0: type 0(direct) removable SCSI2 aha0 targ 0 lun 0: <MaxoptixT3-1304 11ba> sdattach 0 sd0: 622MB (637041 total sec), 37594 cyl, 1 head, 16 sec, bytes/sec 1024 npx0 on motherboard changing root device to sd0a sdopen: dev=0x403 (unit 0 (of 4),partition 3) bpf: lo0 attached bpf: ppp0 attached bpf: sl0 attached bpf: sl1 attached sdopen: dev=0x400 (unit 0 (of 4),partition 0) ffs_mountfs 1024 nspf 1 WARNING: no swap space found --===_0_Fri_Aug_25_13:23:48_PDT_1995 Content-Type: text/plain Content-Description: patch for non-512-byte blocksize Content-Transfer-Encoding: base64 KioqIDEuMQkxOTk0LzExLzI2IDEyOjQ4OjA4Ci0tLSAuL3N5cy9pMzg2L2kzODYvYXV0b2Nv bmYuYwkxOTk0LzExLzI2IDEyOjQ4OjQ5CioqKioqKioqKioqKioqKgoqKiogMTMzLDE0MyAq KioqCi0tLSAxMzMsMTQ1IC0tLS0KICAKICAJCWlmIChkID4gbmJsa2RldikgYnJlYWs7CiAg CQlpZiAoYmRldnN3W2RdLmRfcHNpemUpIHsKKyAjaWZuZGVmIFNBUlNJQU0KICAJCQluYmxr cyA9ICgqYmRldnN3W2RdLmRfcHNpemUpKHN3cC0+c3dfZGV2KTsKICAJCQlpZiAobmJsa3Mg PiAwICYmCiAgCQkJICAgIChzd3AtPnN3X25ibGtzID09IDAgfHwgc3dwLT5zd19uYmxrcyA+ IG5ibGtzKSkKICAJCQkJc3dwLT5zd19uYmxrcyA9IG5ibGtzOwogIAkJCWVsc2UKKyAjZW5k aWYgLyogU0FSU0lBTSAqLwogIAkJCQlzd3AtPnN3X25ibGtzID0gMDsKICAJCX0KICAJCXN3 cC0+c3dfbmJsa3MgPSBjdG9kKGR0b2Moc3dwLT5zd19uYmxrcykpOwoqKiogMS4xCTE5OTQv MTEvMjYgMTI6NDg6MTAKLS0tIC4vc3lzL2tlcm4va2Vybl9waHlzaW8uYwkxOTk0LzExLzI2 IDEyOjQ4OjQ5CioqKioqKioqKioqKioqKgoqKiogMjYsMzEgKioqKgotLS0gMjYsMzggLS0t LQogICNpbmNsdWRlIDxzeXMvcHJvYy5oPgogICNpbmNsdWRlIDx2bS92bS5oPgogIAorICNp ZmRlZiBEQlNJWkVuZTUxMgorICNpbmNsdWRlICJpb2N0bC5oIgorICNpbmNsdWRlICJmaWxl LmgiCisgI2luY2x1ZGUgImRrYmFkLmgiCisgI2luY2x1ZGUgImRpc2tsYWJlbC5oIgorIAor ICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIHN0YXRpYyB2b2lkIHBoeXN3YWtldXAoKTsK ICAKICBpbnQKKioqKioqKioqKioqKioqCioqKiA0NCw0OSAqKioqCi0tLSA1MSw2MCAtLS0t CiAgCWNhZGRyX3Qgc2E7CiAgCWludCBicF9hbGxvYyA9IChicCA9PSAwKTsKICAJc3RydWN0 IGJ1ZiAqYnBhOworICNpZmRlZiBEQlNJWkVuZTUxMgorIAlzdHJ1Y3QgcGFydGluZm8gZHBh cnQ7CisgCXVfbG9uZyBkZXZfYnNpemUgPSBERVZfQlNJWkU7CisgI2VuZGlmIC8qIERCU0la RW5lNTEyICovCiAgCiAgLyoKICAgKiBrZWVwIHRoZSBwcm9jZXNzIGZyb20gYmVpbmcgc3dh cHBlZAoqKioqKioqKioqKioqKioKKioqIDcyLDc3ICoqKioKLS0tIDgzLDk1IC0tLS0KICAJ YnAtPmJfZGV2ID0gZGV2OwogIAllcnJvciA9IGJwLT5iX2Vycm9yID0gMDsKICAKKyAjaWZk ZWYgREJTSVpFbmU1MTIKKyAJaWYgKCgqY2RldnN3W21ham9yKGRldildLmRfaW9jdGwpKGRl diwgRElPQ0dQQVJULAorIAkJICAgIChjYWRkcl90KSZkcGFydCwgRlJFQUQsIGN1cnByb2Mp ID09IDApIHsKKyAJICAJZGV2X2JzaXplID0gZHBhcnQuZGlza2xhYi0+ZF9zZWNzaXplOwor IAl9CisgCisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCWZvcihpPTA7aTx1aW8tPnVp b19pb3ZjbnQ7aSsrKSB7CiAgCQl3aGlsZSggdWlvLT51aW9faW92W2ldLmlvdl9sZW4pIHsK ICAKKioqKioqKioqKioqKioqCioqKiA4OCw5NCAqKioqCi0tLSAxMDYsMTE2IC0tLS0KICAJ CQkgKiBmb3IgdGhlIHRlbXBvcmFyeSBrZXJuZWwgbWFwcGluZy4KICAJCQkgKi8KICAJCQli cC0+Yl9zYXZlYWRkciA9IHNhOworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCQlicC0+Yl9i bGtubyA9IGJ0b2RiKHVpby0+dWlvX29mZnNldCk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIg Ki8KKyAJCQlicC0+Yl9ibGtubyA9IHVpby0+dWlvX29mZnNldC9kZXZfYnNpemU7CisgI2Vu ZGlmIC8qIERCU0laRW5lNTEyICovCiAgCiAgCQkJCiAgCQkJaWYgKHJ3ICYmICF1c2VyYWNj KGJwLT5iX2RhdGEsIGJwLT5iX2J1ZnNpemUsIEJfV1JJVEUpKSB7CioqKiAxLjEJMTk5NC8x MS8yNiAxMjo0ODoxMgotLS0gLi9zeXMva2Vybi92ZnNfY2x1c3Rlci5jCTE5OTQvMTEvMjYg MTY6MTI6NTIKKioqKioqKioqKioqKioqCioqKiA1NCw2OCAqKioqCi0tLSA1NCw3OSAtLS0t CiAgI2RlZmluZSBkb3JlYWxsb2NibGtzIDAKICAjZW5kaWYKICAKKyAjaWZkZWYgREJTSVpF bmU1MTIKKyAjZGVmaW5lCV9idG9kYih4KQkoKHgpL2Ric2l6ZSkKKyAjZW5kaWYgLyogREJT SVpFbmU1MTIgKi8KKyAKICAvKgogICAqIExvY2FsIGRlY2xhcmF0aW9ucwogICAqLwogIHN0 cnVjdCBidWYgKmNsdXN0ZXJfbmV3YnVmIF9fUCgoc3RydWN0IHZub2RlICosIHN0cnVjdCBi dWYgKiwgbG9uZywgZGFkZHJfdCwKICAJICAgIGRhZGRyX3QsIGxvbmcsIGludCkpOworICNp Zm5kZWYgREJTSVpFbmU1MTIKICBzdHJ1Y3QgYnVmICpjbHVzdGVyX3JidWlsZCBfX1AoKHN0 cnVjdCB2bm9kZSAqLCB1X3F1YWRfdCwgc3RydWN0IGJ1ZiAqLAogIAkgICAgZGFkZHJfdCwg ZGFkZHJfdCwgbG9uZywgaW50LCBsb25nKSk7CiAgdm9pZAkgICAgY2x1c3Rlcl93YnVpbGQg X19QKChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGJ1ZiAqLCBsb25nLAogIAkgICAgZGFkZHJf dCwgaW50LCBkYWRkcl90KSk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyBzdHJ1Y3Qg YnVmICpjbHVzdGVyX3JidWlsZCBfX1AoKHN0cnVjdCB2bm9kZSAqLCB1X3F1YWRfdCwgc3Ry dWN0IGJ1ZiAqLAorIAkgICAgZGFkZHJfdCwgZGFkZHJfdCwgbG9uZywgaW50LCBsb25nLCB1 X2xvbmcpKTsKKyB2b2lkCSAgICBjbHVzdGVyX3didWlsZCBfX1AoKHN0cnVjdCB2bm9kZSAq LCBzdHJ1Y3QgYnVmICosIGxvbmcsCisgCSAgICBkYWRkcl90LCBpbnQsIGRhZGRyX3QsIHVf bG9uZykpOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIHN0cnVjdCBjbHVzdGVyX3Nh dmUgKmNsdXN0ZXJfY29sbGVjdGJ1ZnMgX19QKChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGJ1 ZiAqKSk7CiAgCiAgI2lmZGVmIERJQUdOT1NUSUMKKioqKioqKioqKioqKioqCioqKiAxMDgs MTIwICoqKioKLS0tIDExOSwxMzggLS0tLQogICAqCUlmIGVpdGhlciBpcyBOVUxMLCB0aGVu IHlvdSBkb24ndCBoYXZlIHRvIGRvIHRoZSBJL08uCiAgICovCiAgaW50CisgI2lmbmRlZiBE QlNJWkVuZTUxMgogIGNsdXN0ZXJfcmVhZCh2cCwgZmlsZXNpemUsIGxibGtubywgc2l6ZSwg Y3JlZCwgYnBwKQorICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgY2x1c3Rlcl9yZWFkKHZw LCBmaWxlc2l6ZSwgbGJsa25vLCBzaXplLCBjcmVkLCBicHAsIGRic2l6ZSkKKyAjZW5kaWYg LyogREJTSVpFbmU1MTIgKi8KICAJc3RydWN0IHZub2RlICp2cDsKICAJdV9xdWFkX3QgZmls ZXNpemU7CiAgCWRhZGRyX3QgbGJsa25vOwogIAlsb25nIHNpemU7CiAgCXN0cnVjdCB1Y3Jl ZCAqY3JlZDsKICAJc3RydWN0IGJ1ZiAqKmJwcDsKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAJ dV9sb25nIGRic2l6ZTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICB7CiAgCXN0cnVj dCBidWYgKmJwLCAqcmJwOwogIAlkYWRkcl90IGJsa25vLCBpb2Jsa25vOwoqKioqKioqKioq KioqKioKKioqIDE5NCwyMDAgKioqKgotLS0gMjEyLDIyMiAtLS0tCiAgCiAgCQlpZiAobnVt X3JhKQkJCQkvKiBjYXNlIDIsIDQgKi8KICAJCQlyYnAgPSBjbHVzdGVyX3JidWlsZCh2cCwg ZmlsZXNpemUsCisgI2lmbmRlZiBEQlNJWkVuZTUxMgogIAkJCSAgICBicCwgaW9ibGtubywg Ymxrbm8sIHNpemUsIG51bV9yYSwgZmxhZ3MpOworICNlbHNlIC8qIERCU0laRW5lNTEyICov CisgCQkJICAgIGJwLCBpb2Jsa25vLCBibGtubywgc2l6ZSwgbnVtX3JhLCBmbGFncywgZGJz aXplKTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAJCWVsc2UgaWYgKGlvYmxrbm8g PT0gbGJsa25vKSB7CiAgCQkJYnAtPmJfYmxrbm8gPSBibGtubzsKICAJCQkvKiBDYXNlIDU6 IGNoZWNrIGhvdyBtYW55IGJsb2NrcyB0byByZWFkIGFoZWFkICovCioqKioqKioqKioqKioq KgoqKiogMjE5LDIyNSAqKioqCi0tLSAyNDEsMjUxIC0tLS0KICAJCQlmbGFncyB8PSBCX0FT WU5DOwogIAkJCWlmIChudW1fcmEpCiAgCQkJCXJicCA9IGNsdXN0ZXJfcmJ1aWxkKHZwLCBm aWxlc2l6ZSwKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQkJCSAgICBOVUxMLCBpb2Jsa25v LCBibGtubywgc2l6ZSwgbnVtX3JhLCBmbGFncyk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIg Ki8KKyAJCQkJICAgIE5VTEwsIGlvYmxrbm8sIGJsa25vLCBzaXplLCBudW1fcmEsIGZsYWdz LCBkYnNpemUpOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAkJCWVsc2UgewogIAkJ CQlyYnAgPSBnZXRibGsodnAsIGlvYmxrbm8sIHNpemUsIDAsIDApOwogIAkJCQlyYnAtPmJf ZmxhZ3MgfD0gZmxhZ3M7CioqKioqKioqKioqKioqKgoqKiogMjc1LDI4MSAqKioqCi0tLSAz MDEsMzExIC0tLS0KICAgKiBhbmQgdGhlbiBwYXJjZWwgdGhlbSB1cCBpbnRvIGxvZ2ljYWwg YmxvY2tzIGluIHRoZSBidWZmZXIgaGFzaCB0YWJsZS4KICAgKi8KICBzdHJ1Y3QgYnVmICoK KyAjaWZuZGVmIERCU0laRW5lNTEyCiAgY2x1c3Rlcl9yYnVpbGQodnAsIGZpbGVzaXplLCBi cCwgbGJuLCBibGtubywgc2l6ZSwgcnVuLCBmbGFncykKKyAjZWxzZSAvKiBEQlNJWkVuZTUx MiAqLworIGNsdXN0ZXJfcmJ1aWxkKHZwLCBmaWxlc2l6ZSwgYnAsIGxibiwgYmxrbm8sIHNp emUsIHJ1biwgZmxhZ3MsIGRic2l6ZSkKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAJ c3RydWN0IHZub2RlICp2cDsKICAJdV9xdWFkX3QgZmlsZXNpemU7CiAgCXN0cnVjdCBidWYg KmJwOwoqKioqKioqKioqKioqKioKKioqIDI4NCwyODkgKioqKgotLS0gMzE0LDMyMiAtLS0t CiAgCWxvbmcgc2l6ZTsKICAJaW50IHJ1bjsKICAJbG9uZyBmbGFnczsKKyAjaWZkZWYgREJT SVpFbmU1MTIKKyAJdV9sb25nIGRic2l6ZTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8K ICB7CiAgCXN0cnVjdCBjbHVzdGVyX3NhdmUgKmJfc2F2ZTsKICAJc3RydWN0IGJ1ZiAqdGJw OwoqKioqKioqKioqKioqKioKKioqIDMxOCwzMjQgKioqKgotLS0gMzUxLDM2MSAtLS0tCiAg CWJfc2F2ZS0+YnNfc2F2ZWFkZHIgPSBicC0+Yl9zYXZlYWRkcjsKICAJYnAtPmJfc2F2ZWFk ZHIgPSAoY2FkZHJfdCkgYl9zYXZlOwogIAorICNpZm5kZWYgREJTSVpFbmU1MTIKICAJaW5j ID0gYnRvZGIoc2l6ZSk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJaW5jID0gX2J0 b2RiKHNpemUpOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAlmb3IgKGJuID0gYmxr bm8gKyBpbmMsIGkgPSAxOyBpIDw9IHJ1bjsgKytpLCBibiArPSBpbmMpIHsKICAJCWlmIChp bmNvcmUodnAsIGxibiArIGkpKSB7CiAgCQkJaWYgKGkgPT0gMSkgewoqKioqKioqKioqKioq KioKKioqIDQ3MSw0NzkgKioqKgotLS0gNTA4LDUyMyAtLS0tCiAgICoJNC4JZW5kIG9mIGEg Y2x1c3RlciAtIGFzeW5jaHJvbm91c2x5IHdyaXRlIGNsdXN0ZXIKICAgKi8KICB2b2lkCisg I2lmbmRlZiBEQlNJWkVuZTUxMgogIGNsdXN0ZXJfd3JpdGUoYnAsIGZpbGVzaXplKQorICNl bHNlIC8qIERCU0laRW5lNTEyICovCisgY2x1c3Rlcl93cml0ZShicCwgZmlsZXNpemUsIGRi c2l6ZSkKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAgICAgICAgIHN0cnVjdCBidWYg KmJwOwogIAl1X3F1YWRfdCBmaWxlc2l6ZTsKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAgICAg IAl1X2xvbmcgZGJzaXplOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIHsKICAgICAg ICAgIHN0cnVjdCB2bm9kZSAqdnA7CiAgICAgICAgICBkYWRkcl90IGxibjsKKioqKioqKioq KioqKioqCioqKiA0ODcsNDkzICoqKioKLS0tIDUzMSw1NDEgLS0tLQogIAkJdnAtPnZfbGFz dGEgPSB2cC0+dl9jbGVuID0gdnAtPnZfY3N0YXJ0ID0gdnAtPnZfbGFzdHcgPSAwOwogIAog ICAgICAgICAgaWYgKHZwLT52X2NsZW4gPT0gMCB8fCBsYm4gIT0gdnAtPnZfbGFzdHcgKyAx IHx8CisgI2lmbmRlZiBEQlNJWkVuZTUxMgogIAkgICAgKGJwLT5iX2Jsa25vICE9IHZwLT52 X2xhc3RhICsgYnRvZGIoYnAtPmJfYmNvdW50KSkpIHsKKyAjZWxzZSAvKiBEQlNJWkVuZTUx MiAqLworIAkgICAgKGJwLT5iX2Jsa25vICE9IHZwLT52X2xhc3RhICsgX2J0b2RiKGJwLT5i X2Jjb3VudCkpKSB7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCQltYXhjbGVuID0g TUFYQlNJWkUgLyB2cC0+dl9tb3VudC0+bW50X3N0YXQuZl9pb3NpemUgLSAxOwogIAkJaWYg KHZwLT52X2NsZW4gIT0gMCkgewogIAkJCS8qCioqKioqKioqKioqKioqKgoqKiogNTAzLDUx MCAqKioqCi0tLSA1NTEsNTY2IC0tLS0KICAJCQlpZiAoIWRvcmVhbGxvY2Jsa3MgfHwKICAJ CQkgICAgKGxibiArIDEpICogYnAtPmJfYmNvdW50ICE9IGZpbGVzaXplIHx8CiAgCQkJICAg IGxibiAhPSB2cC0+dl9sYXN0dyArIDEgfHwgdnAtPnZfY2xlbiA8PSBjdXJzaXplKSB7Cisg I2lmbmRlZiBEQlNJWkVuZTUxMgogIAkJCQljbHVzdGVyX3didWlsZCh2cCwgTlVMTCwgYnAt PmJfYmNvdW50LAogIAkJCQkgICAgdnAtPnZfY3N0YXJ0LCBjdXJzaXplLCBsYm4pOworICNl bHNlIC8qIERCU0laRW5lNTEyICovCisKKworCisgCQkJCWNsdXN0ZXJfd2J1aWxkKHZwLCBO VUxMLCBicC0+Yl9iY291bnQsCisgCQkJCSAgICB2cC0+dl9jc3RhcnQsIGN1cnNpemUsIGxi biwgZGJzaXplKTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAJCQl9IGVsc2Ugewog IAkJCQlzdHJ1Y3QgYnVmICoqYnBwLCAqKmVuZGJwOwogIAkJCQlzdHJ1Y3QgY2x1c3Rlcl9z YXZlICpidWZsaXN0OwoqKioqKioqKioqKioqKioKKioqIDUyMCw1MjcgKioqKgotLS0gNTc2 LDU4OCAtLS0tCiAgCQkJCQkgICAgIGJwcCA8IGVuZGJwOyBicHArKykKICAJCQkJCQlicmVs c2UoKmJwcCk7CiAgCQkJCQlmcmVlKGJ1Zmxpc3QsIE1fU0VHTUVOVCk7CisgI2lmbmRlZiBE QlNJWkVuZTUxMgogIAkJCQkJY2x1c3Rlcl93YnVpbGQodnAsIE5VTEwsIGJwLT5iX2Jjb3Vu dCwKICAJCQkJCSAgICB2cC0+dl9jc3RhcnQsIGN1cnNpemUsIGxibik7CisgI2Vsc2UgLyog REJTSVpFbmU1MTIgKi8KKyAJCQkJCWNsdXN0ZXJfd2J1aWxkKHZwLCBOVUxMLCBicC0+Yl9i Y291bnQsCisgCQkJCQkgICAgdnAtPnZfY3N0YXJ0LCBjdXJzaXplLCBsYm4sIGRic2l6ZSk7 CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCQkJCX0gZWxzZSB7CiAgCQkJCQkvKgog IAkJCQkJICogU3VjY2VlZGVkLCBrZWVwIGJ1aWxkaW5nIGNsdXN0ZXIuCioqKioqKioqKioq KioqKgoqKiogNTYzLDU3MCAqKioqCi0tLSA2MjQsNjM2IC0tLS0KICAJCS8qCiAgCQkgKiBB dCBlbmQgb2YgY2x1c3Rlciwgd3JpdGUgaXQgb3V0LgogIAkJICovCisgI2lmbmRlZiBEQlNJ WkVuZTUxMgogIAkJY2x1c3Rlcl93YnVpbGQodnAsIGJwLCBicC0+Yl9iY291bnQsIHZwLT52 X2NzdGFydCwKICAJCSAgICB2cC0+dl9jbGVuICsgMSwgbGJuKTsKKyAjZWxzZSAvKiBEQlNJ WkVuZTUxMiAqLworIAkJY2x1c3Rlcl93YnVpbGQodnAsIGJwLCBicC0+Yl9iY291bnQsIHZw LT52X2NzdGFydCwKKyAJCSAgICB2cC0+dl9jbGVuICsgMSwgbGJuLCBkYnNpemUpOworICNl bmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAkJdnAtPnZfY2xlbiA9IDA7CiAgCQl2cC0+dl9j c3RhcnQgPSBsYm4gKyAxOwogIAl9IGVsc2UKKioqKioqKioqKioqKioqCioqKiA1ODUsNTk3 ICoqKioKLS0tIDY1MSw2NzAgLS0tLQogICAqIHRoZSBjdXJyZW50IGJsb2NrIChpZiBsYXN0 X2JwID09IE5VTEwpLgogICAqLwogIHZvaWQKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgY2x1 c3Rlcl93YnVpbGQodnAsIGxhc3RfYnAsIHNpemUsIHN0YXJ0X2xibiwgbGVuLCBsYm4pCisg I2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyBjbHVzdGVyX3didWlsZCh2cCwgbGFzdF9icCwg c2l6ZSwgc3RhcnRfbGJuLCBsZW4sIGxibiwgZGJzaXplKQorICNlbmRpZiAvKiBEQlNJWkVu ZTUxMiAqLwogIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogIAlzdHJ1Y3QgYnVmICpsYXN0X2JwOwog IAlsb25nIHNpemU7CiAgCWRhZGRyX3Qgc3RhcnRfbGJuOwogIAlpbnQgbGVuOwogIAlkYWRk cl90CWxibjsKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAJdV9sb25nIGRic2l6ZTsKKyAjZW5k aWYgLyogREJTSVpFbmU1MTIgKi8KICB7CiAgCXN0cnVjdCBjbHVzdGVyX3NhdmUgKmJfc2F2 ZTsKICAJc3RydWN0IGJ1ZiAqYnAsICp0YnA7CioqKioqKioqKioqKioqKgoqKiogNjgyLDY4 OCAqKioqCi0tLSA3NTUsNzY1IC0tLS0KICAJCSsrYl9zYXZlLT5ic19uY2hpbGRyZW47CiAg CiAgCQkvKiBNb3ZlIG1lbW9yeSBmcm9tIGNoaWxkcmVuIHRvIHBhcmVudCAqLworICNpZm5k ZWYgREJTSVpFbmU1MTIKICAJCWlmICh0YnAtPmJfYmxrbm8gIT0gKGJwLT5iX2Jsa25vICsg YnRvZGIoYnAtPmJfYnVmc2l6ZSkpKSB7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJ CWlmICh0YnAtPmJfYmxrbm8gIT0gKGJwLT5iX2Jsa25vICsgX2J0b2RiKGJwLT5iX2J1ZnNp emUpKSkgeworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAkJCXByaW50ZigiQ2x1c3Rl cmVkIEJsb2NrOiAlbHUgYWRkciAlbHggYnVmc2l6ZTogJWxkXG4iLAogIAkJCSAgICAodV9s b25nKWJwLT5iX2xibGtubywgYnAtPmJfYmxrbm8sIGJwLT5iX2J1ZnNpemUpOwogIAkJCXBy aW50ZigiQ2hpbGQgQmxvY2s6ICVsdSBhZGRyOiAlbHhcbiIsIAoqKiogMS4xCTE5OTQvMTEv MjYgMTI6NDg6MTYKLS0tIC4vc3lzL21pc2Nmcy9zcGVjZnMvc3BlY192bm9wcy5jCTE5OTQv MTEvMjYgMTI6NDg6NTAKKioqKioqKioqKioqKioqCioqKiAyMjUsMjMwICoqKioKLS0tIDIy NSwyMzMgLS0tLQogIAlzdHJ1Y3QgYnVmICpicDsKICAJZGFkZHJfdCBibiwgbmV4dGJuOwog IAlsb25nIGJzaXplLCBic2NhbGU7CisgI2lmZGVmIERCU0laRW5lNTEyCisgCXVfbG9uZyBk ZXZfYnNpemU7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCXN0cnVjdCBwYXJ0aW5m byBkcGFydDsKICAJaW50IG4sIG9uLCBtYWpvcmRldiwgKCppb2N0bCkoKTsKICAJaW50IGVy cm9yID0gMDsKKioqKioqKioqKioqKioqCioqKiAyNTMsMjY3ICoqKioKLS0tIDI1NiwyODkg LS0tLQogIAkJCXJldHVybiAoRUlOVkFMKTsKICAJCWJzaXplID0gQkxLREVWX0lPU0laRTsK ICAJCWRldiA9IHZwLT52X3JkZXY7CisgI2lmZGVmIERCU0laRW5lNTEyCisgCQlkZXZfYnNp emUgPSBERVZfQlNJWkU7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCQlpZiAoKG1h am9yZGV2ID0gbWFqb3IoZGV2KSkgPCBuYmxrZGV2ICYmCiAgCQkgICAgKGlvY3RsID0gYmRl dnN3W21ham9yZGV2XS5kX2lvY3RsKSAhPSBOVUxMICYmCisgI2lmbmRlZiBEQlNJWkVuZTUx MgogIAkJICAgICgqaW9jdGwpKGRldiwgRElPQ0dQQVJULCAoY2FkZHJfdCkmZHBhcnQsIEZS RUFELCBwKSA9PSAwICYmCiAgCQkgICAgZHBhcnQucGFydC0+cF9mc3R5cGUgPT0gRlNfQlNE RkZTICYmCisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJCSAgICAoKmlvY3RsKShkZXYs IERJT0NHUEFSVCwgKGNhZGRyX3QpJmRwYXJ0LCBGUkVBRCwgcCkgPT0gMCkgeworIAkJICBp ZiAoZHBhcnQucGFydC0+cF9mc3R5cGUgPT0gRlNfQlNERkZTICYmCisgI2VuZGlmIC8qIERC U0laRW5lNTEyICovCiAgCQkgICAgZHBhcnQucGFydC0+cF9mcmFnICE9IDAgJiYgZHBhcnQu cGFydC0+cF9mc2l6ZSAhPSAwKQogIAkJCWJzaXplID0gZHBhcnQucGFydC0+cF9mcmFnICog ZHBhcnQucGFydC0+cF9mc2l6ZTsKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQlic2NhbGUg PSBic2l6ZSAvIERFVl9CU0laRTsKKyAjZWxzZSAvKiBEQlNJWkVuZTUxMiAqLworIAkJICBk ZXZfYnNpemUgPSBkcGFydC5kaXNrbGFiLT5kX3NlY3NpemU7CisgCQl9CisgCQlic2NhbGUg PSBic2l6ZSAvIGRldl9ic2l6ZTsKKworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAkJ ZG8geworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCQlibiA9ICh1aW8tPnVpb19vZmZzZXQg LyBERVZfQlNJWkUpICZ+IChic2NhbGUgLSAxKTsKKyAjZWxzZSAvKiBEQlNJWkVuZTUxMiAq LworIAkJCWJuID0gKHVpby0+dWlvX29mZnNldCAvIGRldl9ic2l6ZSkgJn4gKGJzY2FsZSAt IDEpOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAkJCW9uID0gdWlvLT51aW9fb2Zm c2V0ICUgYnNpemU7CiAgCQkJbiA9IG1pbigodW5zaWduZWQpKGJzaXplIC0gb24pLCB1aW8t PnVpb19yZXNpZCk7CiAgCQkJaWYgKHZwLT52X2xhc3RyICsgYnNjYWxlID09IGJuKSB7Cioq KioqKioqKioqKioqKgoqKiogMzA5LDMxNCAqKioqCi0tLSAzMzEsMzM5IC0tLS0KICAJc3Ry dWN0IHBhcnRpbmZvIGRwYXJ0OwogIAlyZWdpc3RlciBpbnQgbiwgb247CiAgCWludCBlcnJv ciA9IDA7CisgI2lmZGVmIERCU0laRW5lNTEyCisgCXVfbG9uZyBkZXZfYnNpemU7CisgI2Vu ZGlmIC8qIERCU0laRW5lNTEyICovCiAgCiAgI2lmZGVmIERJQUdOT1NUSUMKICAJaWYgKHVp by0+dWlvX3J3ICE9IFVJT19XUklURSkKKioqKioqKioqKioqKioqCioqKiAzMzIsMzQ3ICoq KioKLS0tIDM1NywzODggLS0tLQogIAkJaWYgKHVpby0+dWlvX29mZnNldCA8IDApCiAgCQkJ cmV0dXJuIChFSU5WQUwpOwogIAkJYnNpemUgPSBCTEtERVZfSU9TSVpFOworICNpZmRlZiBE QlNJWkVuZTUxMgorIAkJZGV2X2JzaXplID0gREVWX0JTSVpFOworICNlbmRpZiAvKiBEQlNJ WkVuZTUxMiAqLwogIAkJaWYgKCgqYmRldnN3W21ham9yKHZwLT52X3JkZXYpXS5kX2lvY3Rs KSh2cC0+dl9yZGV2LCBESU9DR1BBUlQsCiAgCQkgICAgKGNhZGRyX3QpJmRwYXJ0LCBGUkVB RCwgcCkgPT0gMCkgewogIAkJCWlmIChkcGFydC5wYXJ0LT5wX2ZzdHlwZSA9PSBGU19CU0RG RlMgJiYKICAJCQkgICAgZHBhcnQucGFydC0+cF9mcmFnICE9IDAgJiYgZHBhcnQucGFydC0+ cF9mc2l6ZSAhPSAwKQogIAkJCQlic2l6ZSA9IGRwYXJ0LnBhcnQtPnBfZnJhZyAqCiAgCQkJ CSAgICBkcGFydC5wYXJ0LT5wX2ZzaXplOworICNpZmRlZiBEQlNJWkVuZTUxMgorIAorIAkJ CWRldl9ic2l6ZSA9IGRwYXJ0LmRpc2tsYWItPmRfc2Vjc2l6ZTsKKyAjZW5kaWYgLyogREJT SVpFbmU1MTIgKi8KICAJCX0KKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQlibGttYXNrID0g KGJzaXplIC8gREVWX0JTSVpFKSAtIDE7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKwor IAkJYmxrbWFzayA9IChic2l6ZSAvIGRldl9ic2l6ZSkgLSAxOworICNlbmRpZiAvKiBEQlNJ WkVuZTUxMiAqLwogIAkJZG8geworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCQlibiA9ICh1 aW8tPnVpb19vZmZzZXQgLyBERVZfQlNJWkUpICZ+IGJsa21hc2s7CisgI2Vsc2UgLyogREJT SVpFbmU1MTIgKi8KKyAJCQlibiA9ICh1aW8tPnVpb19vZmZzZXQgLyBkZXZfYnNpemUpICZ+ IGJsa21hc2s7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCQkJb24gPSB1aW8tPnVp b19vZmZzZXQgJSBic2l6ZTsKICAJCQluID0gbWluKCh1bnNpZ25lZCkoYnNpemUgLSBvbiks IHVpby0+dWlvX3Jlc2lkKTsKICAJCQlpZiAobiA9PSBic2l6ZSkKKioqIDEuMQkxOTk0LzEx LzI2IDEyOjQ4OjE4Ci0tLSAuL3N5cy9zY3NpL3NkLmMJMTk5NC8xMS8yNiAxMjo0ODo1MAoq KioqKioqKioqKioqKioKKioqIDMxMywzMTggKioqKgotLS0gMzI4LDMzNCAtLS0tCiAgCSAq IExvYWQgdGhlIHBoeXNpY2FsIGRldmljZSBwYXJhbWV0ZXJzIAogIAkgKi8KICAJc2RfZ2V0 X3Bhcm1zKHVuaXQsIDApOwkvKiBzZXRzIFNERVZfTUVESUFfTE9BREVEICovCisgI2lmbmRl ZiBEQlNJWkVuZTUxMgogIAlpZiAoc2QtPnBhcmFtcy5zZWNzaXogIT0gU0VDU0laRSkgewkv KiBYWFggT25lIGRheS4uLiAqLwogIAkJcHJpbnRmKCJzZCVsZDogQ2FuJ3QgZGVhbCB3aXRo ICVkIGJ5dGVzIGxvZ2ljYWwgYmxvY2tzXG4iLAogIAkJICAgIHVuaXQsIHNkLT5wYXJhbXMu c2Vjc2l6KTsKKioqKioqKioqKioqKioqCioqKiAzMjAsMzI1ICoqKioKLS0tIDMzNiwzNDIg LS0tLQogIAkJZXJyY29kZSA9IEVOWElPOwogIAkJZ290byBiYWQ7CiAgCX0KKyAjZW5kaWYg LyogREJTSVpFbmU1MTIgKi8KICAJU0NfREVCVUcoc2NfbGluaywgU0RFVl9EQjMsICgiUGFy YW1zIGxvYWRlZCAiKSk7CiAgCiAgCS8qIExvY2sgdGhlIHBhY2sgaW4uICovCioqKioqKioq KioqKioqKgoqKiogNTgzLDU4OSAqKioqCi0tLSA2MTEsNjIyIC0tLS0KICAJCXsKICAJCSAg ICBnb3RvIGJhZDsKICAJCX0KKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQluYmxrID0gYnAt PmJfYmNvdW50ID4+IDk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJCW5ibGsgPSAo YnAtPmJfYmNvdW50ICsgc2QtPmRpc2tsYWJlbC5kX3NlY3NpemUtMSkgLworIAkJCXNkLT5k aXNrbGFiZWwuZF9zZWNzaXplOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAogIAkJ LyoKICAJCSAqICBGaWxsIG91dCB0aGUgc2NzaSBjb21tYW5kCioqKioqKioqKioqKioqKgoq KiogNzc2LDc4MiAqKioqCi0tLSA4MDksODIwIC0tLS0KICAJc2QtPmRpc2tsYWJlbC5kX3Bh cnRpdGlvbnNbUkFXUEFSVF0ucF9zaXplID0gc2QtPnBhcmFtcy5kaXNrc2l6ZTsKICAJc2Qt PmRpc2tsYWJlbC5kX3NlY3BlcnVuaXQ9IHNkLT5wYXJhbXMuZGlza3NpemU7CiAgCXNkLT5k aXNrbGFiZWwuZF9ucGFydGl0aW9ucyA9IE1BWFBBUlRJVElPTlM7CisgI2lmbmRlZiBEQlNJ WkVuZTUxMgogIAlzZC0+ZGlza2xhYmVsLmRfc2Vjc2l6ZSA9IFNFQ1NJWkU7CS8qIGFzIGxv bmcgYXMgaXQncyBub3QgMCAqLworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCXNkLT5k aXNrbGFiZWwuZF9zZWNzaXplID0gc2QtPnBhcmFtcy5zZWNzaXo/IHNkLT5wYXJhbXMuc2Vj c2l6OgorIAkJCQlTRUNTSVpFOwkvKiBhcyBsb25nIGFzIGl0J3Mgbm90IDAgKi8KKyAjZW5k aWYgLyogREJTSVpFbmU1MTIgKi8KICAJc2QtPmRpc2tsYWJlbC5kX250cmFja3MgPSBzZC0+ cGFyYW1zLmhlYWRzOwogIAlzZC0+ZGlza2xhYmVsLmRfbnNlY3RvcnMgPSBzZC0+cGFyYW1z LnNlY3RvcnM7CiAgCXNkLT5kaXNrbGFiZWwuZF9uY3lsaW5kZXJzID0gc2QtPnBhcmFtcy5j eWxzOwoqKioqKioqKioqKioqKioKKioqIDk4Niw5OTEgKioqKgotLS0gMTAyNCwxMDM1IC0t LS0KICAJcmV0dXJuIDA7CiAgfQogIAorICNpZmRlZiBEQlNJWkVuZTUxMgorIC8qCisgICog UmV0dXJuIHRoZSBzaXplIG9mIGEgZGlzay1kcml2ZSBwYXJ0aXRpb24gaW4gYSBudW1iZXIg b2YgbG9naWNhbCB1bml0cworICAqIChjdXJyZW50bHkgREVWX0JTSVpFKS4KKyAgKi8KKyAj ZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICBpbnQKICBzZHNpemUoZGV2X3QgZGV2KQogIHsK KioqKioqKioqKioqKioqCioqKiAxMDA4LDEwMTQgKioqKgotLS0gMTA1MiwxMDYzIC0tLS0K ICAJaWYgKHNkLT5mbGFncyAmIFNEV1JJVEVQUk9UKQogIAkJcmV0dXJuIC0xOwogIAorICNp Zm5kZWYgREJTSVpFbmU1MTIKICAJcmV0dXJuIChpbnQpc2QtPmRpc2tsYWJlbC5kX3BhcnRp dGlvbnNbcGFydF0ucF9zaXplOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCXJldHVy biAoaW50KXNkLT5kaXNrbGFiZWwuZF9wYXJ0aXRpb25zW3BhcnRdLnBfc2l6ZSAKKyAJICAJ CSogc2QtPmRpc2tsYWJlbC5kX3NlY3NpemUgLyBERVZfQlNJWkU7CisgI2VuZGlmIC8qIERC U0laRW5lNTEyICovCiAgfQogIAogIC8qCioqKiAxLjEJMTk5NC8xMS8yNiAxMjo0ODoyMQot LS0gLi9zeXMvc2NzaS9zY3NpY29uZi5jCTE5OTQvMTEvMjYgMTQ6MzI6NTIKKioqKioqKioq KioqKioqCioqKiAyNzUsMjgwICoqKioKLS0tIDI3NSwyODQgLS0tLQogIAkJVF9ESVJFQ1Qs IFRfRklYRUQsICJNQVhUT1IgICIsICJYVC00MTcwUyAgICAgICAgIgogIAkJICAgICwiQjVB ICIsIHNkYXR0YWNoLCAibXgxIiwgU0NfT05FX0xVCiAgCX0sCisgCXsKKyAJCVRfT1BUSUNB TCwgVF9SRU1PViwgIk1heG9wdGl4IiwgImFueSIKKyAJCSAgICAsImFueSIsIHNkYXR0YWNo LCAic2QiLCBTQ19PTkVfTFUKKyAJfSwKICAjZW5kaWYJLyogTlNEICovCiAgI2lmIE5TVCA+ IDAKICAJewoqKiogMS4xCTE5OTQvMTEvMjYgMTI6NDg6MjMKLS0tIC4vc3lzL3N5cy9idWYu aAkxOTk0LzExLzI2IDEyOjQ4OjUwCioqKioqKioqKioqKioqKgoqKiogMjEyLDIyMCAqKioq Ci0tLSAyMTIsMjI2IC0tLS0KICB2b2lkCWJpb2RvbmUgX19QKChzdHJ1Y3QgYnVmICopKTsK ICAKICB2b2lkCWNsdXN0ZXJfY2FsbGJhY2sgX19QKChzdHJ1Y3QgYnVmICopKTsKKyAjaWZu ZGVmIERCU0laRW5lNTEyCiAgaW50CWNsdXN0ZXJfcmVhZCBfX1AoKHN0cnVjdCB2bm9kZSAq LCB1X3F1YWRfdCwgZGFkZHJfdCwgbG9uZywKICAJICAgIHN0cnVjdCB1Y3JlZCAqLCBzdHJ1 Y3QgYnVmICoqKSk7CiAgdm9pZAljbHVzdGVyX3dyaXRlIF9fUCgoc3RydWN0IGJ1ZiAqLCB1 X3F1YWRfdCkpOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgaW50CWNsdXN0ZXJfcmVh ZCBfX1AoKHN0cnVjdCB2bm9kZSAqLCB1X3F1YWRfdCwgZGFkZHJfdCwgbG9uZywKKyAJICAg IHN0cnVjdCB1Y3JlZCAqLCBzdHJ1Y3QgYnVmICoqLCB1X2xvbmcpKTsKKyB2b2lkCWNsdXN0 ZXJfd3JpdGUgX19QKChzdHJ1Y3QgYnVmICosIHVfcXVhZF90LCB1X2xvbmcpKTsKKyAjZW5k aWYgLyogREJTSVpFbmU1MTIgKi8KICB1X2ludAltaW5waHlzIF9fUCgoc3RydWN0IGJ1ZiAq KSk7CiAgdm9pZAl2d2FrZXVwIF9fUCgoc3RydWN0IGJ1ZiAqKSk7CiAgdm9pZAl2bWFwYnVm IF9fUCgoc3RydWN0IGJ1ZiAqKSk7CioqKiAxLjEJMTk5NC8xMS8yNiAxMjo0ODoyNQotLS0g Li9zeXMvdWZzL2Zmcy9mZnNfdmZzb3BzLmMJMTk5NC8xMS8yNiAxNjoxNTo0MQoqKioqKioq KioqKioqKioKKioqIDI3OCwyODQgKioqKgotLS0gMjc4LDI5MSAtLS0tCiAgCS8qCiAgCSAq IFN0ZXAgMjogcmUtcmVhZCBzdXBlcmJsb2NrIGZyb20gZGlzay4KICAJICovCisgI2lmbmRl ZiBEQlNJWkVuZTUxMgogIAllcnJvciA9IGJyZWFkKGRldnZwLCBTQkxPQ0ssIFNCU0laRSwg Tk9DUkVELCAmYnApOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCWZzID0gVkZTVE9V RlMobW91bnRwKS0+dW1fZnM7CisgICAgICAgICBzaXplID0gZnMtPmZzX2ZzaXplIC8gZnMt PmZzX25zcGY7CS8qIHNlY3RvciBzaXplICovCisKKyAJZXJyb3IgPSBicmVhZChkZXZ2cCwg U0JPRkYvc2l6ZSwgU0JTSVpFLCBOT0NSRUQsICZicCk7CisgI2VuZGlmIC8qIERCU0laRW5l NTEyICovCiAgCWlmIChlcnJvcikKICAJCXJldHVybiAoZXJyb3IpOwogIAlmcyA9IChzdHJ1 Y3QgZnMgKilicC0+Yl9kYXRhOwoqKioqKioqKioqKioqKioKKioqIDM5Niw0MDIgKioqKgot LS0gNDAzLDQxMyAtLS0tCiAgCiAgCWJwID0gTlVMTDsKICAJdW1wID0gTlVMTDsKKyAjaWZu ZGVmIERCU0laRW5lNTEyCiAgCWVycm9yID0gYnJlYWQoZGV2dnAsIFNCTE9DSywgU0JTSVpF LCBOT0NSRUQsICZicCk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJZXJyb3IgPSBi cmVhZChkZXZ2cCwgU0JPRkYvc2l6ZSwgU0JTSVpFLCBOT0NSRUQsICZicCk7CisgI2VuZGlm IC8qIERCU0laRW5lNTEyICovCiAgCWlmIChlcnJvcikKICAJCWdvdG8gb3V0OwogIAlmcyA9 IChzdHJ1Y3QgZnMgKilicC0+Yl9kYXRhOwoqKioqKioqKioqKioqKioKKioqIDg2NCw4NzAg KioqKgotLS0gODc4LDg5MiAtLS0tCiAgCWNhZGRyX3Qgc3BhY2U7CiAgCWludCBpLCBzaXpl LCBlcnJvciA9IDA7CiAgCisgI2lmbmRlZiBEQlNJWkVuZTUxMgogIAlicCA9IGdldGJsayht cC0+dW1fZGV2dnAsIFNCTE9DSywgKGludClmcy0+ZnNfc2JzaXplLCAwLCAwKTsKKyAjZWxz ZSAvKiBEQlNJWkVuZTUxMiAqLworICAgICAgICAgc2l6ZSA9IGZzLT5mc19mc2l6ZSAvIGZz LT5mc19uc3BmOwkvKiBzZWN0b3Igc2l6ZSAqLworCisKKworIAlicCA9IGdldGJsayhtcC0+ dW1fZGV2dnAsIFNCT0ZGL3NpemUsIChpbnQpZnMtPmZzX3Nic2l6ZSwgMCwgMCk7CisgI2Vu ZGlmIC8qIERCU0laRW5lNTEyICovCiAgCWJjb3B5KChjYWRkcl90KWZzLCBicC0+Yl9kYXRh LCAodV9pbnQpZnMtPmZzX3Nic2l6ZSk7CiAgCS8qIFJlc3RvcmUgY29tcGF0aWJpbGl0eSB0 byBvbGQgZmlsZSBzeXN0ZW1zLgkJICAgWFhYICovCiAgCWlmIChmcy0+ZnNfcG9zdGJsZm9y bWF0ID09IEZTXzQyUE9TVEJMRk1UKQkJLyogWFhYICovCioqKiAxLjEJMTk5NC8xMS8yNiAx Mjo0ODoyNwotLS0gLi9zeXMvdWZzL2Zmcy9mZnNfaW5vZGUuYwkxOTk0LzExLzI2IDEyOjQ4 OjUxCioqKioqKioqKioqKioqKgoqKiogNTYsNjEgKioqKgotLS0gNTYsNjUgLS0tLQogICNp bmNsdWRlIDx1ZnMvZmZzL2ZzLmg+CiAgI2luY2x1ZGUgPHVmcy9mZnMvZmZzX2V4dGVybi5o PgogIAorICNpZmRlZiBEQlNJWkVuZTUxMgorICNkZWZpbmUgX2J0b2RiKGZzLCBieXRlcykJ KCgoYnl0ZXMpKihmcyktPmZzX25zcGYpID4+IChmcyktPmZzX2ZzaGlmdCkKKyAjZW5kaWYg LyogREJTSVpFbmU1MTIgKi8KKyAKICBzdGF0aWMgaW50IGZmc19pbmRpcnRydW5jIF9fUCgo c3RydWN0IGlub2RlICosIGRhZGRyX3QsIGRhZGRyX3QsIGRhZGRyX3QsIGludCwKICAJICAg IGxvbmcgKikpOwogIAoqKiogMS4xCTE5OTQvMTEvMjYgMTI6NDg6MjkKLS0tIC4vc3lzL3Vm cy9mZnMvZmZzX2FsbG9jLmMJMTk5NC8xMS8yNiAxMjo0ODo1MQoqKioqKioqKioqKioqKioK KioqIDUxLDU2ICoqKioKLS0tIDUxLDYwIC0tLS0KICAjaW5jbHVkZSA8dWZzL2Zmcy9mcy5o PgogICNpbmNsdWRlIDx1ZnMvZmZzL2Zmc19leHRlcm4uaD4KICAKKyAjaWZkZWYgREJTSVpF bmU1MTIKKyAjZGVmaW5lIF9idG9kYihmcywgYnl0ZXMpCSgoKGJ5dGVzKSooZnMpLT5mc19u c3BmKSA+PiAoZnMpLT5mc19mc2hpZnQpCisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCisg CiAgZXh0ZXJuIHVfbG9uZyBuZXh0Z2VubnVtYmVyOwogIAogIHN0YXRpYyBkYWRkcl90CWZm c19hbGxvY2NnIF9fUCgoc3RydWN0IGlub2RlICosIGludCwgZGFkZHJfdCwgaW50KSk7Cioq KiAxLjEJMTk5NC8xMS8yNiAxMjo0ODozMgotLS0gLi9zeXMvdWZzL3Vmcy91ZnNfZGlza3N1 YnIuYwkxOTk0LzExLzI2IDEyOjQ4OjUxCioqKioqKioqKioqKioqKgoqKiogMjA5LDIxNSAq KioqCi0tLSAyMDksMjE5IC0tLS0KICAJCW1zZyA9ICJJL08gZXJyb3IiOwogIAllbHNlIGZv ciAoZGxwID0gKHN0cnVjdCBkaXNrbGFiZWwgKilicC0+Yl9kYXRhOwogIAkgICAgZGxwIDw9 IChzdHJ1Y3QgZGlza2xhYmVsICopKChjaGFyICopYnAtPmJfZGF0YSArCisgI2lmbmRlZiBE QlNJWkVuZTUxMgogIAkgICAgREVWX0JTSVpFIC0gc2l6ZW9mKCpkbHApKTsKKyAjZWxzZSAv KiBEQlNJWkVuZTUxMiAqLworIAkJICAgbHAtPmRfc2Vjc2l6ZSAtIHNpemVvZigqZGxwKSk7 CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCSAgICBkbHAgPSAoc3RydWN0IGRpc2ts YWJlbCAqKSgoY2hhciAqKWRscCArIHNpemVvZihsb25nKSkpIHsKICAJCWlmIChkbHAtPmRf bWFnaWMgIT0gRElTS01BR0lDIHx8IGRscC0+ZF9tYWdpYzIgIT0gRElTS01BR0lDKSB7CiAg CQkJaWYgKG1zZyA9PSBOVUxMKQoqKiogMS4xCTE5OTQvMTEvMjYgMTI6NDg6MzUKLS0tIC4v c3lzL3Vmcy91ZnMvdWZzX3JlYWR3cml0ZS5jCTE5OTQvMTEvMjYgMTI6NDg6NTIKKioqKioq KioqKioqKioqCioqKiA1NCw1OSAqKioqCi0tLSA1NCw2MyAtLS0tCiAgI2RlZmluZQlXUklU RV9TCQkJImZmc193cml0ZSIKICAjZW5kaWYKICAKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAj ZGVmaW5lCWZzZGJzaXplKGZzKQkJKChmcyktPmZzX2ZzaXplLyhmcyktPmZzX25zcGYpCisg I2VuZGlmIC8qIERCU0laRW5lNTEyICovCisgCiAgLyoKICAgKiBWbm9kZSBvcCBmb3IgcmVh ZGluZy4KICAgKi8KKioqKioqKioqKioqKioqCioqKiAxMTYsMTI0ICoqKioKLS0tIDEyMCwx MzcgLS0tLQogICNlbHNlCiAgCQlpZiAobGJsa3Rvc2l6ZShmcywgbmV4dGxibikgPiBpcC0+ aV9zaXplKQogIAkJCWVycm9yID0gYnJlYWQodnAsIGxibiwgc2l6ZSwgTk9DUkVELCAmYnAp OworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCWVsc2UgaWYgKGRvY2x1c3RlcnJlYWQpCisg I2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJCWVsc2UgaWYgKGRvY2x1c3RlcnJlYWQpIHsK KyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAJCQllcnJvciA9IGNsdXN0ZXJfcmVhZCh2 cCwKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQkJICAgIGlwLT5pX3NpemUsIGxibiwgc2l6 ZSwgTk9DUkVELCAmYnApOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCQkJICAgIGlw LT5pX3NpemUsIGxibiwgc2l6ZSwgTk9DUkVELCAmYnAsIGZzZGJzaXplKGZzKSk7CisgCQkg ICAgICB9CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCQllbHNlIGlmIChsYm4gLSAx ID09IHZwLT52X2xhc3RyKSB7CiAgCQkJaW50IG5leHRzaXplID0gQkxLU0laRShmcywgaXAs IG5leHRsYm4pOwogIAkJCWVycm9yID0gYnJlYWRuKHZwLCBsYm4sCioqKioqKioqKioqKioq KgoqKiogMjYzLDI3MSAqKioqCi0tLSAyNzYsMjkwIC0tLS0KICAJCWlmIChpb2ZsYWcgJiBJ T19TWU5DKQogIAkJCSh2b2lkKWJ3cml0ZShicCk7CiAgCQllbHNlIGlmICh4ZmVyc2l6ZSAr IGJsa29mZnNldCA9PSBmcy0+ZnNfYnNpemUpCisgI2lmbmRlZiBEQlNJWkVuZTUxMgogIAkJ CWlmIChkb2NsdXN0ZXJ3cml0ZSkKICAJCQkJY2x1c3Rlcl93cml0ZShicCwgaXAtPmlfc2l6 ZSk7CiAgCQkJZWxzZSB7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJCQlpZiAoZG9j bHVzdGVyd3JpdGUpIHsKKyAJCQkJY2x1c3Rlcl93cml0ZShicCwgaXAtPmlfc2l6ZSwgZnNk YnNpemUoZnMpKTsKKyAJCQl9IGVsc2UgeworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwog IAkJCQliYXdyaXRlKGJwKTsKICAJCQl9CiAgCQllbHNlCioqKiAxLjEJMTk5NC8xMS8yNiAx Mjo0ODozNwotLS0gLi9zeXMvdm0vdm1fc3dhcC5jCTE5OTQvMTEvMjYgMTI6NDg6NTIKKioq KioqKioqKioqKioqCioqKiA0NSw1MCAqKioqCi0tLSA0NSw1NyAtLS0tCiAgI2luY2x1ZGUg PHN5cy9maWxlLmg+CiAgI2luY2x1ZGUgPHN5cy9ybGlzdC5oPgogIAorICNpZmRlZiBEQlNJ WkVuZTUxMgorICNpbmNsdWRlIDxzeXMvZGtiYWQuaD4KKyAjaW5jbHVkZSA8c3lzL2Rpc2ts YWJlbC5oPgorICNpbmNsdWRlIDxzeXMvZmNudGwuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3Rs Lmg+CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCisgCiAgI2luY2x1ZGUgPG1pc2Nmcy9z cGVjZnMvc3BlY2Rldi5oPgogIAogIC8qCioqKioqKioqKioqKioqKgoqKiogNjAsNjUgKioq KgotLS0gNjcsNzggLS0tLQogIAogIGludCBic3duZWVkZWQ7CiAgdm1fb2Zmc2V0X3Qgc3dh cGJrdmE7CQkvKiBzd2FwIGJ1ZmZlcnMga3ZhICovCisgCisgI2lmZGVmIERCU0laRW5lNTEy CisgI2RlZmluZSBNQVhTV0RFViAgMTAKKyBzdGF0aWMgdV9sb25nIHN3c2Vjc2l6ZVtNQVhT V0RFVl0gPSB7MH07CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCisgCiAgLyoKICAgKiBT ZXQgdXAgc3dhcCBkZXZpY2VzLgogICAqIEluaXRpYWxpemUgbGlua2VkIGxpc3Qgb2YgZnJl ZSBzd2FwCioqKioqKioqKioqKioqKgoqKiogMjYwLDI2NSAqKioqCi0tLSAyNzMsMjgzIC0t LS0KICAJaWYgKGJwLT5iX3ZwICE9IE5VTEwpCiAgCQlicmVsdnAoYnApOwogIAlicC0+Yl92 cCA9IHNwLT5zd192cDsKKyAKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAJYnAtPmJfYmxrbm8g PSBicC0+Yl9ibGtubyAqIERFVl9CU0laRSAvIHN3c2Vjc2l6ZVtpbmRleF07CisgI2VuZGlm IC8qIERCU0laRW5lNTEyICovCisgCiAgCVZPUF9TVFJBVEVHWShicCk7CiAgfQogIAoqKioq KioqKioqKioqKioKKioqIDM0OCwzNTMgKioqKgotLS0gMzY2LDM3NSAtLS0tCiAgCXJlZ2lz dGVyIHN3YmxrX3QgZHZiYXNlOwogIAlyZWdpc3RlciBpbnQgbmJsa3M7CiAgCWludCBlcnJv cjsKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAJZGV2X3QgZGV2OworIAlzdHJ1Y3QgcGFydGlu Zm8gZHBhcnQ7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCiAgCXNwID0gJnN3ZGV2 dFtpbmRleF07CiAgCXZwID0gc3AtPnN3X3ZwOwoqKioqKioqKioqKioqKioKKioqIDM1Niwz NjEgKioqKgotLS0gMzc4LDQwMCAtLS0tCiAgCQlyZXR1cm4gKGVycm9yKTsKICAJc3AtPnN3 X2ZsYWdzIHw9IFNXX0ZSRUVEOwogIAluYmxrcyA9IHNwLT5zd19uYmxrczsKKyAKKyAjaWZk ZWYgREJTSVpFbmU1MTIKKyAJaWYgKGluZGV4ID49IE1BWFNXREVWKSB7CisgCQlwcmludGYg KCJleGNlZWRpbmcgTUFYU1dERVYgdmFsdWUgaW4gdm1fc3dhcC5jXG4iKTsKKyAJCXJldHVy biAoRU5PREVWKTsKKyAJfQorIAlkZXYgPSBzcC0+c3dfZGV2OworIAlpZiAoYmRldnN3W21h am9yKGRldildLmRfaW9jdGwgIT0gMCAmJgorIAkgICAgKCpiZGV2c3dbbWFqb3IoZGV2KV0u ZF9pb2N0bCkoZGV2LCBESU9DR1BBUlQsCisgCQkgICAgIChjYWRkcl90KSZkcGFydCwgRlJF QUQsIHApID09IDApCisgCQlzd3NlY3NpemVbaW5kZXhdID0gZHBhcnQuZGlza2xhYi0+ZF9z ZWNzaXplOworIAllbHNlCisgCQlzd3NlY3NpemVbaW5kZXhdID0gREVWX0JTSVpFOworIAor CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCisgCiAgCS8qCiAgCSAqIFNvbWUgZGV2aWNl cyBtYXkgbm90IGV4aXN0IHRpbCBhZnRlciBib290IHRpbWUuCiAgCSAqIElmIHNvLCB0aGVp ciBuYmxrIGNvdW50IHdpbGwgYmUgMC4KKioqKioqKioqKioqKioqCioqKiAzODEsMzg5ICoq KioKLS0tIDQyMCw0NDAgLS0tLQogIAkJCW5zd2FwICs9IG5ibGtzOwogIAkJfQogICNlbHNl CisgI2lmbmRlZiBTQVJTSUFNCiAgCQlwZXJkZXYgPSBuc3dhcCAvIG5zd2RldjsKICAJCWlm IChuYmxrcyA+IHBlcmRldikKICAJCQluYmxrcyA9IHBlcmRldjsKKyAjZWxzZSAvKiBTQVJT SUFNICovCisgCQlpZiAobnN3YXAgPiAwKSB7CisgCQkJcGVyZGV2ID0gbnN3YXAgLyBuc3dk ZXY7CisgCQkJaWYgKG5ibGtzID4gcGVyZGV2KQorIAkJCQluYmxrcyA9IHBlcmRldjsKKyAJ CX0gZWxzZSB7CisgCQkJaWYgKG5ibGtzICUgZG1tYXgpCisgCQkJCW5ibGtzIC09IChuYmxr cyAlIGRtbWF4KTsKKyAJCQluc3dhcCA9IG5ibGtzICogbnN3ZGV2OworIAkJfQorICNlbmRp ZiAvKiBTQVJTSUFNICovCiAgI2VuZGlmCiAgCQlzcC0+c3dfbmJsa3MgPSBuYmxrczsKICAJ fQoqKiogMS4xCTE5OTQvMTEvMjYgMTI6NDg6MzkKLS0tIC4vc3lzL3ZtL3Zub2RlX3BhZ2Vy LmMJMTk5NC8xMS8yNiAxMjo0ODo1MgoqKioqKioqKioqKioqKioKKioqIDgxLDg2ICoqKioK LS0tIDgxLDk0IC0tLS0KICAjaW5jbHVkZSA8c3lzL2J1Zi5oPgogICNpbmNsdWRlIDxtaXNj ZnMvc3BlY2ZzL3NwZWNkZXYuaD4KICAKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAjaW5jbHVk ZSA8c3lzL2RrYmFkLmg+CisgI2luY2x1ZGUgPHN5cy9kaXNrbGFiZWwuaD4KKyAjaW5jbHVk ZSA8c3lzL2ZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxz eXMvY29uZi5oPgorICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLworIAogIGludCAgICAgdm5v ZGVfcGFnZXJfcHV0bXVsdGkoKTsKICAKICB2b2lkICAgIHZub2RlX3BhZ2VyX2luaXQoKTsK KioqKioqKioqKioqKioqCioqKiA0ODksNTAzICoqKioKLS0tIDQ5Nyw1NDYgLS0tLQogIAlQ QUdFX1dBS0VVUChtKTsKICAJdm1fcGFnZV9mcmVlKG0pOwogIH0KKyAjaWZkZWYgREJTSVpF bmU1MTIKKyAvKgorICAqIHJldHVybiBibG9jayBzaXplIG9mIGRpc2sgZGV2aWNlLgorICAq LworIHN0YXRpYyBpbnQKKyB2bm9kZV9wYWdlcl9kYnNpemUodnApCisgCXN0cnVjdCB2bm9k ZSAqdnA7CisgeworIAlzdHJ1Y3QgcGFydGluZm8gZHBhcnQ7CisgCisgCWlmICh2cC0+dl90 eXBlID09IFZCTEsgJiYgKCpiZGV2c3dbbWFqb3IodnAtPnZfcmRldildLmRfaW9jdGwpKHZw LT52X3JkZXYsIERJT0NHUEFSVCwKKyAJCSAgICAoY2FkZHJfdCkmZHBhcnQsIEZSRUFELCAm cHJvYzApID09IDApIHsKKworIAkJcmV0dXJuIGRwYXJ0LmRpc2tsYWItPmRfc2Vjc2l6ZTsK KyAJICAgICAgfQorIAorIAlyZXR1cm4gREVWX0JTSVpFOworIH0KKyAjZW5kaWYgLyogREJT SVpFbmU1MTIgKi8KICAKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgLyoKICAgKiBjYWxjdWxh dGUgdGhlIGxpbmVhciAoYnl0ZSkgZGlzayBhZGRyZXNzIG9mIHNwZWNpZmllZCB2aXJ0dWFs CiAgICogZmlsZSBhZGRyZXNzCiAgICovCisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAv KgorICAqIGNhbGN1bGF0ZSB0aGUgbGluZWFyIChieXRlKSBkaXNrIGFkZHJlc3Mgb2Ygc3Bl Y2lmaWVkIHZpcnR1YWwKKyAgKiBmaWxlIGFkZHJlc3MuICBJZiBkYnNpemUgaXMgbm90IHpl cm8sIHZhbHVlIG9mIGRic2l6ZSBpcyB1c2VkCisgICogZm9yIGJsb2NrIHNpemU7IG90aGVy d2lzZSwgbmV3IHZhbHVlIHVzZWQgaXMgcmV0dXJuZWQgaW4gZGJzaXplLgorICAqLworICNl bmRpZiAvKiBEQlNJWkVuZTUxMiAqLworIAogIHZtX29mZnNldF90CisgI2lmbmRlZiBEQlNJ WkVuZTUxMgogIHZub2RlX3BhZ2VyX2FkZHIodnAsIGFkZHJlc3MpCisgI2Vsc2UgLyogREJT SVpFbmU1MTIgKi8KKyB2bm9kZV9wYWdlcl9hZGRyKHZwLCBhZGRyZXNzLCBkYnNpemUpCisg I2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCXN0cnVjdCB2bm9kZSAqdnA7CiAgCXZtX29m ZnNldF90IGFkZHJlc3M7CisgI2lmZGVmIERCU0laRW5lNTEyCisgICAgICAJdV9sb25nICpk YnNpemU7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgewogIAlpbnQgICAgIHJ0YWRk cmVzczsKICAJaW50ICAgICBic2l6ZTsKKioqKioqKioqKioqKioqCioqKiA1MDUsNTEwICoq KioKLS0tIDU0OCw1NTYgLS0tLQogIAlzdHJ1Y3Qgdm5vZGUgKnJ0dnA7CiAgCWludCAgICAg ZXJyOwogIAlpbnQgICAgIHZibG9jaywgdm9mZnNldDsKKyAjaWZkZWYgREJTSVpFbmU1MTIK KyAJdV9sb25nIGRldl9ic2l6ZTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAKICAJ YnNpemUgPSB2cC0+dl9tb3VudC0+bW50X3N0YXQuZl9pb3NpemU7CiAgCXZibG9jayA9IGFk ZHJlc3MgLyBic2l6ZTsKKioqKioqKioqKioqKioqCioqKiA1MTQsNTIxICoqKioKLS0tIDU2 MCw1ODEgLS0tLQogIAogIAlpZiAoZXJyKQogIAkJcnRhZGRyZXNzID0gLTE7CisgI2lmbmRl ZiBEQlNJWkVuZTUxMgogIAllbHNlCiAgCQlydGFkZHJlc3MgPSBibG9jayAqIERFVl9CU0la RSArIHZvZmZzZXQ7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJZWxzZSB7CisgCQlp ZiAoZGJzaXplID09IE5VTEwpIAorIAkJCWRldl9ic2l6ZSA9IHZub2RlX3BhZ2VyX2Ric2l6 ZShydHZwKTsKKyAJCWVsc2UKKyAJCSAgCWlmICgqZGJzaXplID09IDApIAorIAkJCQlkZXZf YnNpemUgPSAqZGJzaXplID0gdm5vZGVfcGFnZXJfZGJzaXplKHJ0dnApOworIAkJCWVsc2UK KyAJCQkJZGV2X2JzaXplID0gKmRic2l6ZTsKKyAKKyAJCXJ0YWRkcmVzcyA9IGJsb2NrICog ZGV2X2JzaXplICsgdm9mZnNldDsKKyAJfQorICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwog IAogIAlyZXR1cm4gcnRhZGRyZXNzOwogIH0KKioqKioqKioqKioqKioqCioqKiA1ODgsNTkz ICoqKioKLS0tIDY0OCw2NTYgLS0tLQogIAlpbnQgICAgIGZpbGVhZGRyOwogIAlpbnQgICAg IGJsb2NrOwogIAl2bV9vZmZzZXRfdCBic2l6ZTsKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAJ dV9sb25nCWRic2l6ZSA9IDA7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCWludCAg ICAgZXJyb3IgPSAwOwogIAogIAlwYWdpbmdfb2Zmc2V0ID0gbS0+b2JqZWN0LT5wYWdpbmdf b2Zmc2V0OwoqKioqKioqKioqKioqKioKKioqIDY0Miw2NDggKioqKgotLS0gNzA1LDcxNSAt LS0tCiAgCQkJYnJlYWs7CiAgCQl9CiAgCQlzcGx4KHMpOworICNpZm5kZWYgREJTSVpFbmU1 MTIKICAJCWZpbGVhZGRyID0gdm5vZGVfcGFnZXJfYWRkcih2cCwgZm9mZiArIGkgKiBic2l6 ZSk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJCWZpbGVhZGRyID0gdm5vZGVfcGFn ZXJfYWRkcih2cCwgZm9mZiArIGkgKiBic2l6ZSwgJmRic2l6ZSk7CisgI2VuZGlmIC8qIERC U0laRW5lNTEyICovCiAgCQlpZiAoZmlsZWFkZHIgIT0gLTEpIHsKICAJCQlicCA9IGdldHBi dWYoKTsKICAJCQlWSE9MRCh2cCk7CioqKioqKioqKioqKioqKgoqKiogNzgzLDc4OCAqKioq Ci0tLSA4NTAsODU4IC0tLS0KICAJaW50CWNvdW50YTsKICAJaW50ICAgICBzOwogIAlpbnQg ICAgIGZhaWxmbGFnOworICNpZmRlZiBEQlNJWkVuZTUxMgorIAl1X2xvbmcJZGJzaXplID0g MDsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAKICAJaW50ICAgICBlcnJvciA9IDA7 CiAgCioqKioqKioqKioqKioqKgoqKiogOTM1LDk0MSAqKioqCi0tLSAxMDA1LDEwMTUgLS0t LQogIAl9CiAgI2VuZGlmCiAgCisgI2lmbmRlZiBEQlNJWkVuZTUxMgogIAlyZXFhZGRyID0g dm5vZGVfcGFnZXJfYWRkcih2cCwgZm9mZik7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8K KyAJcmVxYWRkciA9IHZub2RlX3BhZ2VyX2FkZHIodnAsIGZvZmYsICZkYnNpemUpOworICNl bmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAlzID0gc3BsYmlvKCk7CiAgCiAgCS8qCioqKioq KioqKioqKioqKgoqKiogOTUyLDk1OCAqKioqCi0tLSAxMDI2LDEwMzYgLS0tLQogICNlbHNl CiAgCQkgICAgKGluY29yZSh2cCwgKGZvZmYgKyAoaSAtIHJlcXBhZ2UpICogUEFHRV9TSVpF KSAvIGJzaXplKSkgfHwKICAjZW5kaWYKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQkgICAg KHZub2RlX3BhZ2VyX2FkZHIodnAsIG1baV0tPm9mZnNldCArIHBhZ2luZ19vZmZzZXQpKQor ICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCQkgICAgKHZub2RlX3BhZ2VyX2FkZHIodnAs IG1baV0tPm9mZnNldCArIHBhZ2luZ19vZmZzZXQsICZkYnNpemUpKQorICNlbmRpZiAvKiBE QlNJWkVuZTUxMiAqLwogIAkJICAgICE9IHJlcWFkZHIgKyAoaSAtIHJlcXBhZ2UpICogUEFH RV9TSVpFKSB7CiAgCQkJdm5vZGVfcGFnZXJfZnJlZXBhZ2UobVtpXSk7CiAgCQkJZmFpbGZs YWcgPSAxOwoqKioqKioqKioqKioqKioKKioqIDk3NCw5ODAgKioqKgotLS0gMTA1MiwxMDYy IC0tLS0KICAjZWxzZQogIAkJICAgIChpbmNvcmUodnAsIChmb2ZmICsgKGkgLSByZXFwYWdl KSAqIFBBR0VfU0laRSkgLyBic2l6ZSkpIHx8CiAgI2VuZGlmCisgI2lmbmRlZiBEQlNJWkVu ZTUxMgogIAkJICAgICh2bm9kZV9wYWdlcl9hZGRyKHZwLCBtW2ldLT5vZmZzZXQgKyBwYWdp bmdfb2Zmc2V0KSkKKyAjZWxzZSAvKiBEQlNJWkVuZTUxMiAqLworIAkJICAgICh2bm9kZV9w YWdlcl9hZGRyKHZwLCBtW2ldLT5vZmZzZXQgKyBwYWdpbmdfb2Zmc2V0LCAmZGJzaXplKSkK KyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAJCSAgICAhPSByZXFhZGRyICsgKGkgLSBy ZXFwYWdlKSAqIFBBR0VfU0laRSkgewogIAkJCXZub2RlX3BhZ2VyX2ZyZWVwYWdlKG1baV0p OwogIAkJCWZhaWxmbGFnID0gMTsKKioqKioqKioqKioqKioqCioqKiAxMDA1LDEwMTEgKioq KgotLS0gMTA4NywxMDk3IC0tLS0KICAJLyoKICAJICogYW5kIGdldCB0aGUgZGlzayBwaHlz aWNhbCBhZGRyZXNzIChpbiBieXRlcykKICAJICovCisgI2lmbmRlZiBEQlNJWkVuZTUxMgog IAlmaXJzdGFkZHIgPSB2bm9kZV9wYWdlcl9hZGRyKHZwLCBmb2ZmKTsKKyAjZWxzZSAvKiBE QlNJWkVuZTUxMiAqLworIAlmaXJzdGFkZHIgPSB2bm9kZV9wYWdlcl9hZGRyKHZwLCBmb2Zm LCAmZGJzaXplKTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAKICAJLyoKICAJICog Y2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSB0cmFuc2ZlcgoqKioqKioqKioqKioqKioKKioq IDEwMTgsMTAyNCAqKioqCi0tLSAxMTA0LDExMTQgLS0tLQogIAkgKiByb3VuZCB1cCBwaHlz aWNhbCBzaXplIGZvciByZWFsIGRldmljZXMKICAJICovCiAgCWlmIChkcC0+dl90eXBlID09 IFZCTEsgfHwgZHAtPnZfdHlwZSA9PSBWQ0hSKQorICNpZm5kZWYgREJTSVpFbmU1MTIKICAJ CXNpemUgPSAoc2l6ZSArIERFVl9CU0laRSAtIDEpICYgfihERVZfQlNJWkUgLSAxKTsKKyAj ZWxzZSAvKiBEQlNJWkVuZTUxMiAqLworIAkJc2l6ZSA9IChzaXplICsgZGJzaXplIC0gMSkg JiB+KGRic2l6ZSAtIDEpOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAogIAljb3Vu dGEgPSAwOwogIAlpZiggY291bnQqUEFHRV9TSVpFID4gYnNpemUpCioqKioqKioqKioqKioq KgoqKiogMTA1MSwxMDU3ICoqKioKLS0tIDExNDEsMTE1MSAtLS0tCiAgCQljcmhvbGQoYnAt PmJfcmNyZWQpOwogIAlpZiAoYnAtPmJfd2NyZWQgIT0gTk9DUkVEKQogIAkJY3Job2xkKGJw LT5iX3djcmVkKTsKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCWJwLT5iX2Jsa25vID0gZmly c3RhZGRyIC8gREVWX0JTSVpFOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCWJwLT5i X2Jsa25vID0gZmlyc3RhZGRyIC8gZGJzaXplOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAq LwogIAliZ2V0dnAoZHAsIGJwKTsKICAJYnAtPmJfYmNvdW50ID0gc2l6ZTsKICAJYnAtPmJf YnVmc2l6ZSA9IHNpemU7CioqKioqKioqKioqKioqKgoqKiogMTA3OCwxMDg0ICoqKioKLS0t IDExNzIsMTE4MiAtLS0tCiAgCQkJY3Job2xkKGJwYS0+Yl9yY3JlZCk7CiAgCQlpZiAoYnBh LT5iX3djcmVkICE9IE5PQ1JFRCkKICAJCQljcmhvbGQoYnBhLT5iX3djcmVkKTsKKyAjaWZu ZGVmIERCU0laRW5lNTEyCiAgCQlicGEtPmJfYmxrbm8gPSAoZmlyc3RhZGRyICsgY291bnQg KiBQQUdFX1NJWkUpIC8gREVWX0JTSVpFOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisg CQlicGEtPmJfYmxrbm8gPSAoZmlyc3RhZGRyICsgY291bnQgKiBQQUdFX1NJWkUpIC8gZGJz aXplOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAkJYmdldHZwKGRwLCBicGEpOwog IAkJYnBhLT5iX2Jjb3VudCA9IHNpemVhOwogIAkJYnBhLT5iX2J1ZnNpemUgPSBjb3VudGEq UEFHRV9TSVpFOwoqKioqKioqKioqKioqKioKKioqIDEyMTYsMTIyMSAqKioqCi0tLSAxMzE0 LDEzMjIgLS0tLQogIAlpbnQgICAgIGZpbGVhZGRyOwogIAl2bV9vZmZzZXRfdCBic2l6ZTsK ICAJaW50ICAgICBlcnJvciA9IDA7CisgI2lmZGVmIERCU0laRW5lNTEyCisgCXVfbG9uZwlk YnNpemUgPSAwOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAogIAlwYWdpbmdfb2Zm c2V0ID0gbS0+b2JqZWN0LT5wYWdpbmdfb2Zmc2V0OwogIAl2cCA9IHZucC0+dm5wX3ZwOwoq KioqKioqKioqKioqKioKKioqIDEyMjksMTIzNSAqKioqCi0tLSAxMzMwLDEzNDAgLS0tLQog IAkJLyoKICAJCSAqIGNhbGN1bGF0ZSBsb2dpY2FsIGJsb2NrIGFuZCBvZmZzZXQKICAJCSAq LworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCWZpbGVhZGRyID0gdm5vZGVfcGFnZXJfYWRk cih2cCwgZm9mZiArIGkgKiBic2l6ZSk7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJ CWZpbGVhZGRyID0gdm5vZGVfcGFnZXJfYWRkcih2cCwgZm9mZiArIGkgKiBic2l6ZSwgJmRi c2l6ZSk7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCQlpZiAoZmlsZWFkZHIgIT0g LTEpIHsKICAJCQlzID0gc3BsYmlvKCk7CiAgCQkJYnAgPSBpbmNvcmUodnAsIChmb2ZmIC8g YnNpemUpICsgaSk7CioqKioqKioqKioqKioqKgoqKiogMTI1MywxMjU5ICoqKioKLS0tIDEz NTgsMTM2OCAtLS0tCiAgCQkJaWYgKGJwLT5iX3djcmVkICE9IE5PQ1JFRCkKICAJCQkJY3Jo b2xkKGJwLT5iX3djcmVkKTsKICAJCQlicC0+Yl91bi5iX2FkZHIgPSAoY2FkZHJfdCkga3Zh ICsgaSAqIGJzaXplOworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCQlicC0+Yl9ibGtubyA9 IGZpbGVhZGRyIC8gREVWX0JTSVpFOworICNlbHNlIC8qIERCU0laRW5lNTEyICovCisgCQkJ YnAtPmJfYmxrbm8gPSBmaWxlYWRkciAvIGRic2l6ZTsKKyAjZW5kaWYgLyogREJTSVpFbmU1 MTIgKi8KICAJCQliZ2V0dnAoZHAsIGJwKTsKICAJCQkrK2RwLT52X251bW91dHB1dDsKICAJ CQkvKiBmb3IgTkZTICovCioqKioqKioqKioqKioqKgoqKiogMTMwOSwxMzE0ICoqKioKLS0t IDE0MTgsMTQyNiAtLS0tCiAgCXZtX29mZnNldF90IHJlcWFkZHI7CiAgCWludCAgICAgYnNp emU7CiAgCWludCAgICAgczsKKyAjaWZkZWYgREJTSVpFbmU1MTIKKyAJdV9sb25nCWRic2l6 ZSA9IDA7CisgI2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCiAgCWludCAgICAgZXJyb3Ig PSAwOwogIAoqKioqKioqKioqKioqKioKKioqIDEzNzAsMTM4MyAqKioqCi0tLSAxNDgyLDE1 MDMgLS0tLQogIAkJcmV0dXJuIHJ0dmFsc1swXTsKICAJfQogIAlmb2ZmID0gbVswXS0+b2Zm c2V0ICsgcGFnaW5nX29mZnNldDsKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCXJlcWFkZHIg PSB2bm9kZV9wYWdlcl9hZGRyKHZwLCBmb2ZmKTsKKyAjZWxzZSAvKiBEQlNJWkVuZTUxMiAq LworIAlyZXFhZGRyID0gdm5vZGVfcGFnZXJfYWRkcih2cCwgZm9mZiwgJmRic2l6ZSk7Cisg I2VuZGlmIC8qIERCU0laRW5lNTEyICovCiAgCiAgCS8qCiAgCSAqIFNjYW4gZm9yd2FyZCBh bmQgc3RvcCBmb3IgdGhlIGZpcnN0IG5vbi1jb250aWd1b3VzIGVudHJ5IG9yIHN0b3AKICAJ ICogZm9yIGEgcGFnZSBiZWluZyBpbiBidWZmZXIgY2FjaGUuCiAgCSAqLwogIAlmb3IgKGkg PSAxOyBpIDwgY291bnQ7IGkrKykgeworICNpZm5kZWYgREJTSVpFbmU1MTIKICAJCWlmICh2 bm9kZV9wYWdlcl9hZGRyKHZwLCBtW2ldLT5vZmZzZXQgKyBwYWdpbmdfb2Zmc2V0KQorICNl bHNlIC8qIERCU0laRW5lNTEyICovCisgCQlpZiAodm5vZGVfcGFnZXJfYWRkcih2cCwgbVtp XS0+b2Zmc2V0ICsgcGFnaW5nX29mZnNldCwgJmRic2l6ZSkKKyAjZW5kaWYgLyogREJTSVpF bmU1MTIgKi8KICAJCSAgICAhPSByZXFhZGRyICsgaSAqIFBBR0VfU0laRSkgewogIAkJCWNv dW50ID0gaTsKICAJCQlicmVhazsKKioqKioqKioqKioqKioqCioqKiAxMzk1LDE0MDEgKioq KgotLS0gMTUxNSwxNTI1IC0tLS0KICAJICogcm91bmQgdXAgcGh5c2ljYWwgc2l6ZSBmb3Ig cmVhbCBkZXZpY2VzCiAgCSAqLwogIAlpZiAoZHAtPnZfdHlwZSA9PSBWQkxLIHx8IGRwLT52 X3R5cGUgPT0gVkNIUikKKyAjaWZuZGVmIERCU0laRW5lNTEyCiAgCQlzaXplID0gKHNpemUg KyBERVZfQlNJWkUgLSAxKSAmIH4oREVWX0JTSVpFIC0gMSk7CisgI2Vsc2UgLyogREJTSVpF bmU1MTIgKi8KKyAJCXNpemUgPSAoc2l6ZSArIGRic2l6ZSAtIDEpICYgfihkYnNpemUgLSAx KTsKKyAjZW5kaWYgLyogREJTSVpFbmU1MTIgKi8KICAKICAJYnAgPSBnZXRwYnVmKCk7CiAg CWt2YSA9ICh2bV9vZmZzZXRfdClicC0+Yl9kYXRhOwoqKioqKioqKioqKioqKioKKioqIDE0 NTMsMTQ1OSAqKioqCi0tLSAxNTc3LDE1ODcgLS0tLQogIAkJY3Job2xkKGJwLT5iX3JjcmVk KTsKICAJaWYgKGJwLT5iX3djcmVkICE9IE5PQ1JFRCkKICAJCWNyaG9sZChicC0+Yl93Y3Jl ZCk7CisgI2lmbmRlZiBEQlNJWkVuZTUxMgogIAlicC0+Yl9ibGtubyA9IHJlcWFkZHIgLyBE RVZfQlNJWkU7CisgI2Vsc2UgLyogREJTSVpFbmU1MTIgKi8KKyAJYnAtPmJfYmxrbm8gPSBy ZXFhZGRyIC8gZGJzaXplOworICNlbmRpZiAvKiBEQlNJWkVuZTUxMiAqLwogIAliZ2V0dnAo ZHAsIGJwKTsKICAJKytkcC0+dl9udW1vdXRwdXQ7CiAgCg== --===_0_Fri_Aug_25_13:23:48_PDT_1995--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199508252203.PAA00106>