[parisc-linux] Need help to improve uaccess.h patch
Joel.soete@freebel.net
Joel.soete@freebel.net
Fri, 4 Oct 2002 17:24:45 +0200
--=========3D8EED0B00001557/mail.tiscali.be
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Hi all,
With evms-1.2.0, I test following draft of uaccess.h.
Can somebody have a close look on this code to make it relevant for all
(I not sure of exception condition (ie segv) because I do not find any way
to stress it and do not find usage of get_user_asm_64)?
Thanks in advance for attention and futher help,
Joel
########
--- uaccess.h.orig 2002-10-04 10:23:59.000000000 +0200
+++ uaccess.h 2002-10-04 17:07:54.000000000 +0200
@@ -35,10 +35,15 @@
#define get_user __get_user
#if BITS_PER_LONG == 32
-#define LDD_KERNEL(ptr) BUG()
-#define LDD_USER(ptr) BUG()
-#define STD_KERNEL(x, ptr) BUG()
-#define STD_USER(x, ptr) BUG()
+
+#define LDD_KERNEL(x, ptr) __get_kernel_asm_64(x, ptr)
+
+#define LDD_USER(x, ptr) __get_user_asm_64(x, ptr)
+
+#define STD_KERNEL(x, ptr) __put_kernel_asm_64(x, ptr)
+
+#define STD_USER(x, ptr) __put_user_asm_64(x, ptr)
+
#else
#define LDD_KERNEL(ptr) __get_kernel_asm("ldd",ptr)
#define LDD_USER(ptr) __get_user_asm("ldd",ptr)
@@ -68,27 +73,28 @@
({ \
register long __gu_err __asm__ ("r8") = 0; \
register long __gu_val __asm__ ("r9") = 0; \
+ \
+ unsigned int __tmp = 0; \
\
if (segment_eq(get_fs(),KERNEL_DS)) { \
switch (sizeof(*(ptr))) { \
- case 1: __get_kernel_asm("ldb",ptr); break; \
- case 2: __get_kernel_asm("ldh",ptr); break; \
- case 4: __get_kernel_asm("ldw",ptr); break; \
- case 8: LDD_KERNEL(ptr); break; \
+ case 1: __get_kernel_asm("ldb",x, ptr); break; \
+ case 2: __get_kernel_asm("ldh",x, ptr); break; \
+ case 4: __get_kernel_asm("ldw",x, ptr); break; \
+ case 8: LDD_KERNEL(x, ptr); break; \
default: BUG(); break; \
} \
} \
else { \
switch (sizeof(*(ptr))) { \
- case 1: __get_user_asm("ldb",ptr); break; \
- case 2: __get_user_asm("ldh",ptr); break; \
- case 4: __get_user_asm("ldw",ptr); break; \
- case 8: LDD_USER(ptr); break; \
+ case 1: __get_user_asm("ldb",x, ptr); break; \
+ case 2: __get_user_asm("ldh",x, ptr); break; \
+ case 4: __get_user_asm("ldw",x, ptr); break; \
+ case 8: LDD_USER(x, ptr); break; \
default: BUG(); break; \
} \
} \
\
- (x) = (__typeof__(*(ptr))) __gu_val; \
__gu_err; \
})
@@ -113,7 +119,7 @@
: "=r"(__gu_val), "=r"(__gu_err) \
: "r"(ptr), "1"(__gu_err));
#else
-#define __get_kernel_asm(ldx,ptr) \
+#define __get_kernel_asm(ldx,x, ptr) \
__asm__("\n1:\t" ldx "\t0(%2),%0\n" \
"2:\n" \
"\t.section __ex_table,\"a\"\n" \
@@ -121,9 +127,25 @@
"\t.word\t(2b-1b)+3\n" \
"\t.previous" \
: "=r"(__gu_val), "=r"(__gu_err) \
- : "r"(ptr), "1"(__gu_err));
+ : "r"(ptr), "1"(__gu_err)); \
+ (x) = (__typeof__(*(ptr))) __gu_val;
-#define __get_user_asm(ldx,ptr) \
+#define __get_kernel_asm_64(x, ptr) \
+ __asm__ ("\n\tldw\t4(%1),%3\n" \
+ "1:\tstw\t%3,4(%2)\n" \
+ "\tldw\t0(%1),%3\n" \
+ "2:\tstw\t%3,0(%2)\n" \
+ "3:\n" \
+ "\t.section __ex_table,\"a\"\n" \
+ "\t.word\t1b\n" \
+ "\t.word\t(3b-1b)+1\n" \
+ "\t.word\t2b\n" \
+ "\t.word\t(3b-2b)+1\n" \
+ "\t.previous" \
+ : "=r"(__gu_err) \
+ : "r"(ptr), "r"(&(x)), "r"(__tmp), "0"(__gu_err));
+
+#define __get_user_asm(ldx,x, ptr) \
__asm__("\n1:\t" ldx "\t0(%%sr3,%2),%0\n" \
"2:\n" \
"\t.section __ex_table,\"a\"\n" \
@@ -131,19 +153,38 @@
"\t.word\t(2b-1b)+3\n" \
"\t.previous" \
: "=r"(__gu_val), "=r"(__gu_err) \
- : "r"(ptr), "1"(__gu_err));
+ : "r"(ptr), "1"(__gu_err)); \
+ (x) = (__typeof__(*(ptr))) __gu_val;
+
+#define __get_user_asm_64(x, ptr) \
+ __asm__ ("\n\tldw\t4(%%sr3,%1),%3\n" \
+ "1:\tstw\t%3,4(%2)\n" \
+ "\tldw\t0(%%sr3,%1),%3\n" \
+ "2:\tstw\t%3,0(%2)\n" \
+ "3:\n" \
+ "\t.section __ex_table,\"a\"\n" \
+ "\t.word\t1b\n" \
+ "\t.word\t(3b-1b)+1\n" \
+ "\t.word\t2b\n" \
+ "\t.word\t(3b-2b)+1\n" \
+ "\t.previous" \
+ : "=r"(__gu_err) \
+ : "r"(ptr), "r"(&(x)), "r"(__tmp), "0"(__gu_err));
+
#endif
#define __put_user(x,ptr) \
({ \
register long __pu_err __asm__ ("r8") = 0; \
+ unsigned long long X = (unsigned long long) x; \
+ unsigned long long * __tmp = 0; \
\
if (segment_eq(get_fs(),KERNEL_DS)) { \
switch (sizeof(*(ptr))) { \
case 1: __put_kernel_asm("stb",x,ptr); break; \
case 2: __put_kernel_asm("sth",x,ptr); break; \
case 4: __put_kernel_asm("stw",x,ptr); break; \
- case 8: STD_KERNEL(x,ptr); break; \
+ case 8: STD_KERNEL(X,ptr); break; \
default: BUG(); break; \
} \
} \
@@ -152,7 +193,7 @@
case 1: __put_user_asm("stb",x,ptr); break; \
case 2: __put_user_asm("sth",x,ptr); break; \
case 4: __put_user_asm("stw",x,ptr); break; \
- case 8: STD_USER(x,ptr); break; \
+ case 8: STD_USER(X,ptr); break; \
default: BUG(); break; \
} \
} \
@@ -200,6 +241,22 @@
: "=r"(__pu_err) \
: "r"(ptr), "r"(x), "0"(__pu_err))
+#define __put_kernel_asm_64(X, ptr) \
+ __asm__ __volatile__ ( \
+ "\n\tldw\t0(%2),%3\n" \
+ "1:\tstw\t%3,0(%1)\n" \
+ "\tldw\t4(%2),%3\n" \
+ "2:\tstw\t%3,4(%1)\n" \
+ "3:\n" \
+ "\t.section __ex_table,\"a\"\n" \
+ "\t.word\t1b\n" \
+ "\t.word\t(3b-1b)+1\n" \
+ "\t.word\t2b\n" \
+ "\t.word\t(3b-2b)+1\n" \
+ "\t.previous" \
+ : "=r"(__pu_err) \
+ : "r"(ptr), "r"(&(X)), "r"(__tmp), "0"(__pu_err))
+
#define __put_user_asm(stx,x,ptr) \
__asm__ __volatile__ ( \
"\n1:\t" stx "\t%2,0(%%sr3,%1)\n" \
@@ -210,6 +267,23 @@
"\t.previous" \
: "=r"(__pu_err) \
: "r"(ptr), "r"(x), "0"(__pu_err))
+
+#define __put_user_asm_64(X, ptr) \
+ __asm__ __volatile__ ( \
+ "\n\tldw\t0(%2),%3\n" \
+ "1:\tstw\t%3,0(%%sr3,%1)\n" \
+ "\tldw\t4(%2),%3\n" \
+ "2:\tstw\t%3,4(%%sr3,%1)\n" \
+ "3:\n" \
+ "\t.section __ex_table,\"a\"\n" \
+ "\t.word\t1b\n" \
+ "\t.word\t(3b-1b)+1\n" \
+ "\t.word\t2b\n" \
+ "\t.word\t(3b-2b)+1\n" \
+ "\t.previous" \
+ : "=r"(__pu_err) \
+ : "r"(ptr), "r"(&(X)), "r"(__tmp), "0"(__pu_err))
+
#endif
#########
--=========3D8EED0B00001557/mail.tiscali.be
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pa-uaccess_h.patch"
LS0tIHVhY2Nlc3MuaC5vcmlnCTIwMDItMTAtMDQgMTA6MjM6NTkuMDAwMDAwMDAwICswMjAwCisr
KyB1YWNjZXNzLmgJMjAwMi0xMC0wNCAxNzowNzo1NC4wMDAwMDAwMDAgKzAyMDAKQEAgLTM1LDEw
ICszNSwxNSBAQAogI2RlZmluZSBnZXRfdXNlciBfX2dldF91c2VyCiAKICNpZiBCSVRTX1BFUl9M
T05HID09IDMyCi0jZGVmaW5lIExERF9LRVJORUwocHRyKQkJQlVHKCkKLSNkZWZpbmUgTEREX1VT
RVIocHRyKQkJQlVHKCkKLSNkZWZpbmUgU1REX0tFUk5FTCh4LCBwdHIpCUJVRygpCi0jZGVmaW5l
IFNURF9VU0VSKHgsIHB0cikJQlVHKCkKKworI2RlZmluZSBMRERfS0VSTkVMKHgsIHB0cikgX19n
ZXRfa2VybmVsX2FzbV82NCh4LCBwdHIpCisKKyNkZWZpbmUgTEREX1VTRVIoeCwgcHRyKSBfX2dl
dF91c2VyX2FzbV82NCh4LCBwdHIpCisKKyNkZWZpbmUgU1REX0tFUk5FTCh4LCBwdHIpIF9fcHV0
X2tlcm5lbF9hc21fNjQoeCwgcHRyKQorCisjZGVmaW5lIFNURF9VU0VSKHgsIHB0cikgX19wdXRf
dXNlcl9hc21fNjQoeCwgcHRyKQorCiAjZWxzZQogI2RlZmluZSBMRERfS0VSTkVMKHB0cikgX19n
ZXRfa2VybmVsX2FzbSgibGRkIixwdHIpCiAjZGVmaW5lIExERF9VU0VSKHB0cikgX19nZXRfdXNl
cl9hc20oImxkZCIscHRyKQpAQCAtNjgsMjcgKzczLDI4IEBACiAoeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAlyZWdpc3RlciBsb25nIF9f
Z3VfZXJyIF9fYXNtX18gKCJyOCIpID0gMDsgICAgICBcCiAJcmVnaXN0ZXIgbG9uZyBfX2d1X3Zh
bCBfX2FzbV9fICgicjkiKSA9IDA7ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHVuc2lnbmVkIGludCBfX3Rt
cCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkJCQkJCQlcCiAJaWYgKHNlZ21lbnRf
ZXEoZ2V0X2ZzKCksS0VSTkVMX0RTKSkgeyAgICAgICAgICAgXAogCSAgICBzd2l0Y2ggKHNpemVv
ZigqKHB0cikpKSB7ICAgICAgICAgICAgICAgICAgIFwKLQkgICAgY2FzZSAxOiBfX2dldF9rZXJu
ZWxfYXNtKCJsZGIiLHB0cik7IGJyZWFrOyBcCi0JICAgIGNhc2UgMjogX19nZXRfa2VybmVsX2Fz
bSgibGRoIixwdHIpOyBicmVhazsgXAotCSAgICBjYXNlIDQ6IF9fZ2V0X2tlcm5lbF9hc20oImxk
dyIscHRyKTsgYnJlYWs7IFwKLQkgICAgY2FzZSA4OiBMRERfS0VSTkVMKHB0cik7IGJyZWFrOwkJ
XAorCSAgICBjYXNlIDE6IF9fZ2V0X2tlcm5lbF9hc20oImxkYiIseCwgcHRyKTsgYnJlYWs7IFwK
KwkgICAgY2FzZSAyOiBfX2dldF9rZXJuZWxfYXNtKCJsZGgiLHgsIHB0cik7IGJyZWFrOyBcCisJ
ICAgIGNhc2UgNDogX19nZXRfa2VybmVsX2FzbSgibGR3Iix4LCBwdHIpOyBicmVhazsgXAorCSAg
ICBjYXNlIDg6IExERF9LRVJORUwoeCwgcHRyKTsgYnJlYWs7CQlcCiAJICAgIGRlZmF1bHQ6IEJV
RygpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgXAogCSAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAl9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAJZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogCSAgICBzd2l0Y2ggKHNpemVvZigqKHB0cikpKSB7ICAgICAg
ICAgICAgICAgICAgIFwKLQkgICAgY2FzZSAxOiBfX2dldF91c2VyX2FzbSgibGRiIixwdHIpOyBi
cmVhazsgICBcCi0JICAgIGNhc2UgMjogX19nZXRfdXNlcl9hc20oImxkaCIscHRyKTsgYnJlYWs7
ICAgXAotCSAgICBjYXNlIDQ6IF9fZ2V0X3VzZXJfYXNtKCJsZHciLHB0cik7IGJyZWFrOyAgIFwK
LQkgICAgY2FzZSA4OiBMRERfVVNFUihwdHIpOyAgYnJlYWs7CQlcCisJICAgIGNhc2UgMTogX19n
ZXRfdXNlcl9hc20oImxkYiIseCwgcHRyKTsgYnJlYWs7ICAgXAorCSAgICBjYXNlIDI6IF9fZ2V0
X3VzZXJfYXNtKCJsZGgiLHgsIHB0cik7IGJyZWFrOyAgIFwKKwkgICAgY2FzZSA0OiBfX2dldF91
c2VyX2FzbSgibGR3Iix4LCBwdHIpOyBicmVhazsgICBcCisJICAgIGNhc2UgODogTEREX1VTRVIo
eCwgcHRyKTsgIGJyZWFrOwkJXAogCSAgICBkZWZhdWx0OiBCVUcoKTsgYnJlYWs7ICAgICAgICAg
ICAgICAgICAgICAgIFwKIAkgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAJfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogCQkJCQkJCVwKLQkoeCkgPSAoX190eXBlb2ZfXygqKHB0cikpKSBfX2d1X3ZhbDsgICAg
ICAgICAgICBcCiAJX19ndV9lcnI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogfSkKIApAQCAtMTEzLDcgKzExOSw3IEBACiAJCTogIj1yIihfX2d1X3ZhbCksICI9ciIo
X19ndV9lcnIpICAgICAgICBcCiAJCTogInIiKHB0ciksICIxIihfX2d1X2VycikpOwogI2Vsc2UK
LSNkZWZpbmUgX19nZXRfa2VybmVsX2FzbShsZHgscHRyKSAgICAgICAgICAgICAgICAgICAgICAg
XAorI2RlZmluZSBfX2dldF9rZXJuZWxfYXNtKGxkeCx4LCBwdHIpICAgICAgICAgICAgICAgICAg
ICBcCiAJX19hc21fXygiXG4xOlx0IiBsZHggIlx0MCglMiksJTBcbiIgICAgICAgICAgICAgXAog
CQkiMjpcbiIJCQkJCVwKIAkJIlx0LnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAgICAgICAg
IFwKQEAgLTEyMSw5ICsxMjcsMjUgQEAKIAkJICJcdC53b3JkXHQoMmItMWIpKzNcbiIgICAgICAg
ICAgICAgICAgIFwKIAkJICJcdC5wcmV2aW91cyIgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
IAkJOiAiPXIiKF9fZ3VfdmFsKSwgIj1yIihfX2d1X2VycikgICAgICAgIFwKLQkJOiAiciIocHRy
KSwgIjEiKF9fZ3VfZXJyKSk7CisJCTogInIiKHB0ciksICIxIihfX2d1X2VycikpOyAgICAgICAg
ICAgICBcCisJKHgpID0gKF9fdHlwZW9mX18oKihwdHIpKSkgX19ndV92YWw7CiAKLSNkZWZpbmUg
X19nZXRfdXNlcl9hc20obGR4LHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgXAor
I2RlZmluZSBfX2dldF9rZXJuZWxfYXNtXzY0KHgsIHB0cikgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBfX2FzbV9fICgiXG5cdGxkd1x0NCglMSksJTNcbiIgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiMTpcdHN0d1x0JTMsNCglMilcbiIgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiXHRsZHdcdDAoJTEpLCUzXG4iICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiMjpcdHN0d1x0JTMsMCgl
MilcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICIzOlxuIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICJcdC5z
ZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAiXHQud29yZFx0MWJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAiXHQud29yZFx0KDNiLTFiKSsxXG4iICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAiXHQud29yZFx0MmJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAiXHQud29yZFx0KDNiLTJiKSsxXG4iICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAiXHQucHJldmlvdXMiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIDogIj1yIihfX2d1X2VycikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIDogInIiKHB0ciksICJyIigmKHgp
KSwgInIiKF9fdG1wKSwgIjAiKF9fZ3VfZXJyKSk7CisKKyNkZWZpbmUgX19nZXRfdXNlcl9hc20o
bGR4LHgsIHB0cikgICAgICAgICAgICAgICAgICAgICAgXAogCV9fYXNtX18oIlxuMTpcdCIgbGR4
ICJcdDAoJSVzcjMsJTIpLCUwXG4iICAgICAgIFwKIAkJIjI6XG4iCQkJCQlcCiAJCSJcdC5zZWN0
aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgICAgICAgICBcCkBAIC0xMzEsMTkgKzE1MywzOCBAQAog
CQkgIlx0LndvcmRcdCgyYi0xYikrM1xuIiAgICAgICAgICAgICAgICAgXAogCQkgIlx0LnByZXZp
b3VzIiAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCQk6ICI9ciIoX19ndV92YWwpLCAiPXIi
KF9fZ3VfZXJyKSAgICAgICAgXAotCQk6ICJyIihwdHIpLCAiMSIoX19ndV9lcnIpKTsKKwkJOiAi
ciIocHRyKSwgIjEiKF9fZ3VfZXJyKSk7ICAgICAgICAgICAgIFwKKwkoeCkgPSAoX190eXBlb2Zf
XygqKHB0cikpKSBfX2d1X3ZhbDsKKworI2RlZmluZSBfX2dldF91c2VyX2FzbV82NCh4LCBwdHIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX2FzbV9fICgiXG5cdGxkd1x0
NCglJXNyMywlMSksJTNcbiIgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiMTpc
dHN0d1x0JTMsNCglMilcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAiXHRsZHdcdDAoJSVzcjMsJTEpLCUzXG4iICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAiMjpcdHN0d1x0JTMsMCglMilcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICIzOlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICJcdC5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAiXHQud29yZFx0MWJcbiIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiXHQud29yZFx0KDNiLTFiKSsxXG4iICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiXHQud29yZFx0MmJcbiIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiXHQud29yZFx0KDNi
LTJiKSsxXG4iICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAiXHQucHJl
dmlvdXMiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIDog
Ij1yIihfX2d1X2VycikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgIDogInIiKHB0ciksICJyIigmKHgpKSwgInIiKF9fdG1wKSwgIjAiKF9fZ3VfZXJyKSk7CisK
ICNlbmRpZgogCiAjZGVmaW5lIF9fcHV0X3VzZXIoeCxwdHIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogKHsJCQkJCQkJCVwKIAlyZWdpc3RlciBsb25nIF9fcHVfZXJy
IF9fYXNtX18gKCJyOCIpID0gMDsJCVwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIFggPSAo
dW5zaWduZWQgbG9uZyBsb25nKSB4OyAgICAgICAgICBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyAqIF9fdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgXAogCQkJCQkJCQlcCiAJ
aWYgKHNlZ21lbnRfZXEoZ2V0X2ZzKCksS0VSTkVMX0RTKSkgeyAgICAgICAgICAgICAgICAgICBc
CiAJICAgIHN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAJICAgIGNhc2UgMTogX19wdXRfa2VybmVsX2FzbSgic3RiIix4LHB0cik7IGJyZWFrOyAg
ICAgICBcCiAJICAgIGNhc2UgMjogX19wdXRfa2VybmVsX2FzbSgic3RoIix4LHB0cik7IGJyZWFr
OyAgICAgICBcCiAJICAgIGNhc2UgNDogX19wdXRfa2VybmVsX2FzbSgic3R3Iix4LHB0cik7IGJy
ZWFrOyAgICAgICBcCi0JICAgIGNhc2UgODogU1REX0tFUk5FTCh4LHB0cik7IGJyZWFrOwkJCVwK
KwkgICAgY2FzZSA4OiBTVERfS0VSTkVMKFgscHRyKTsgYnJlYWs7CQkJXAogCSAgICBkZWZhdWx0
OiBCVUcoKTsgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCSAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCX0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XApAQCAtMTUyLDcgKzE5Myw3IEBACiAJICAgIGNhc2UgMTogX19wdXRfdXNlcl9hc20oInN0YiIs
eCxwdHIpOyBicmVhazsgICAgICAgICBcCiAJICAgIGNhc2UgMjogX19wdXRfdXNlcl9hc20oInN0
aCIseCxwdHIpOyBicmVhazsgICAgICAgICBcCiAJICAgIGNhc2UgNDogX19wdXRfdXNlcl9hc20o
InN0dyIseCxwdHIpOyBicmVhazsgICAgICAgICBcCi0JICAgIGNhc2UgODogU1REX1VTRVIoeCxw
dHIpOyBicmVhazsJCQlcCisJICAgIGNhc2UgODogU1REX1VTRVIoWCxwdHIpOyBicmVhazsJCQlc
CiAJICAgIGRlZmF1bHQ6IEJVRygpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAJICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAJfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkBAIC0yMDAsNiArMjQxLDIyIEBACiAJCTogIj1yIihfX3B1X2VycikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogCQk6ICJyIihwdHIpLCAiciIoeCksICIwIihfX3B1X2Vy
cikpCiAKKyNkZWZpbmUgX19wdXRfa2VybmVsX2FzbV82NChYLCBwdHIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorCV9fYXNtX18gX192b2xhdGlsZV9fICggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisJCSJcblx0bGR3XHQwKCUyKSwlM1xuIiAgICAgICAgICAgICAgICAgICAg
ICAgXAorCQkiMTpcdHN0d1x0JTMsMCglMSlcbiIgICAgICAgICAgICAgICAgIFwKKwkJIlx0bGR3
XHQ0KCUyKSwlM1xuIgkJICAgICAgICAgICAgXAorCQkiMjpcdHN0d1x0JTMsNCglMSlcbiIgICAg
ICAgICAgICAgICAgIFwKKwkJIjM6XG4iCQkJCQkgICAgXAorCQkiXHQuc2VjdGlvbiBfX2V4X3Rh
YmxlLFwiYVwiXG4iICAgICAgICAgICAgIFwKKwkJICJcdC53b3JkXHQxYlxuIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisJCSAiXHQud29yZFx0KDNiLTFiKSsxXG4iICAgICAgICAgICAg
ICAgICAgICAgXAorCQkgIlx0LndvcmRcdDJiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKwkJICJcdC53b3JkXHQoM2ItMmIpKzFcbiIgICAgICAgICAgICAgICAgICAgICBcCisJCSAi
XHQucHJldmlvdXMiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQk6ICI9ciIoX19w
dV9lcnIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJOiAiciIocHRyKSwgInIiKCYo
WCkpLCAiciIoX190bXApLCAiMCIoX19wdV9lcnIpKQorCiAjZGVmaW5lIF9fcHV0X3VzZXJfYXNt
KHN0eCx4LHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJX19hc21fXyBfX3ZvbGF0
aWxlX18gKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkJIlxuMTpcdCIgc3R4ICJc
dCUyLDAoJSVzcjMsJTEpXG4iICAgICAgICAgICBcCkBAIC0yMTAsNiArMjY3LDIzIEBACiAJCSAi
XHQucHJldmlvdXMiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCQk6ICI9ciIoX19w
dV9lcnIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkJOiAiciIocHRyKSwgInIiKHgp
LCAiMCIoX19wdV9lcnIpKQorCisjZGVmaW5lIF9fcHV0X3VzZXJfYXNtXzY0KFgsIHB0cikgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKwkJIlxuXHRsZHdcdDAoJTIpLCUzXG4iICAgICAgICAg
ICAgICAgICAgICAgICBcCisJCSIxOlx0c3R3XHQlMywwKCUlc3IzLCUxKVxuIiAgICAgICAgICAg
ICAgICAgXAorCQkiXHRsZHdcdDQoJTIpLCUzXG4iCQkgICAgICAgICAgICBcCisJCSIyOlx0c3R3
XHQlMyw0KCUlc3IzLCUxKVxuIiAgICAgICAgICAgICAgICAgXAorCQkiMzpcbiIJCQkJCSAgICBc
CisJCSJcdC5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgICAgICAgICAgICAgXAorCQkgIlx0
LndvcmRcdDFiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJICJcdC53b3JkXHQo
M2ItMWIpKzFcbiIgICAgICAgICAgICAgICAgICAgICBcCisJCSAiXHQud29yZFx0MmJcbiIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorCQkgIlx0LndvcmRcdCgzYi0yYikrMVxuIiAgICAg
ICAgICAgICAgICAgICAgIFwKKwkJICJcdC5wcmV2aW91cyIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisJCTogIj1yIihfX3B1X2VycikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorCQk6ICJyIihwdHIpLCAiciIoJihYKSksICJyIihfX3RtcCksICIwIihfX3B1X2VycikpCisK
ICNlbmRpZgogCiAK
--=========3D8EED0B00001557/mail.tiscali.be--