From ef9cf819885adacf837b65223cf0690f42db954c Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 14 Nov 1991 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1991-11-14 --- gnot/boot.h | 956 +++++++++++++++++++------------------ gnot/dat.h | 2 + gnot/main.c | 1 + gnot/trap.c | 7 +- pc/trap.c | 13 +- port/devdk.c | 2 +- port/devip.c | 294 ++++-------- port/devlance.c | 145 +++--- port/devmux.c | 550 +++++++++++++++++++++ port/devnonet.c | 2 +- port/ipdat.h | 8 +- port/net.c | 8 +- power/boot.c | 10 +- power/boot.h | 1212 ++++++++++++++++++++++++----------------------- power/clock.c | 4 +- power/trap.c | 23 +- ss/clock.c | 7 +- ss/trap.c | 21 +- 18 files changed, 1883 insertions(+), 1382 deletions(-) create mode 100644 port/devmux.c diff --git a/gnot/boot.h b/gnot/boot.h index e548e09b756f83cff0347593f8934ab3172fedfb..432a983d3682439edf7210cccb65cf105279207d 100644 --- a/gnot/boot.h +++ b/gnot/boot.h @@ -1,7 +1,7 @@ ulong bootcode[]={ 0x000000107, - 0x00000419e, - 0x000000c2c, + 0x0000041ae, + 0x000000c64, 0x0000013e8, 0x000000000, 0x000002020, @@ -14,38 +14,38 @@ ulong bootcode[]={ 0x000142f2f, 0x00014610c, 0x02f006100, - 0x019664fef, + 0x019764fef, 0x0001c4e75, 0x04feffff4, 0x0487803e8, - 0x061001e06, + 0x061001e16, 0x042a7486e, 0x084c16100, - 0x01df04878, + 0x01e004878, 0x00001486e, 0x084c96100, - 0x01de44878, + 0x01df44878, 0x00001486e, 0x084d16100, - 0x01dd86100, + 0x01de86100, 0x001ca4aae, 0x080066600, 0x001ae486e, 0x084d9486e, - 0x09fde6100, - 0x01cea4878, + 0x0a0166100, + 0x01cfa4878, 0x0001c486e, - 0x09fde486e, + 0x0a016486e, 0x084de6100, - 0x012d4486e, - 0x09fde6100, + 0x012e4486e, + 0x0a0166100, 0x0045042a7, 0x0486e84e5, 0x0486e84e3, - 0x061001d64, + 0x061001d74, 0x04a806c0a, 0x0486e84e7, - 0x061001288, + 0x061001298, 0x0588f6100, 0x0049a1f40, 0x00040102f, @@ -60,100 +60,100 @@ ulong bootcode[]={ 0x0726cb200, 0x0670000f0, 0x048780001, - 0x061000576, + 0x06100057a, 0x0588f422f, 0x000014857, 0x0486e84f9, 0x06100038e, 0x0486e8501, - 0x0610018e2, + 0x0610018f2, 0x04aae803e, 0x067462f2e, 0x0800e486e, 0x08503486e, - 0x08c2e6100, - 0x0199c486e, + 0x08c666100, + 0x019ac486e, 0x0850b2f2e, 0x0803e6100, - 0x01c20206e, + 0x01c30206e, 0x0803e4a80, 0x066000094, 0x048780001, 0x0486e850e, 0x02f086100, - 0x01cca42a7, + 0x01cda42a7, 0x0486e8513, - 0x0486e8c2e, - 0x061001cbc, + 0x0486e8c66, + 0x061001ccc, 0x04fef002c, 0x04aae800e, 0x067222f2e, 0x0800e486e, 0x0851c486e, - 0x08c2e6100, - 0x0195042a7, + 0x08c666100, + 0x0196042a7, 0x0486e852c, - 0x0486e8c2e, - 0x061001c94, + 0x0486e8c66, + 0x061001ca4, 0x04fef0018, - 0x0486e9cc6, + 0x0486e9cfe, 0x0486e853d, - 0x0486e8c2e, - 0x06100192e, + 0x0486e8c66, + 0x06100193e, 0x04aae803a, 0x0672042a7, 0x0486e854b, 0x0486e8546, - 0x0486e8c2e, - 0x061001a68, - 0x0486e8c2e, - 0x061001190, + 0x0486e8c66, + 0x061001a78, + 0x0486e8c66, + 0x0610011a0, 0x04fef0038, 0x04e7542a7, 0x0486e8554, 0x0486e854f, - 0x0486e8c2e, - 0x061001a48, + 0x0486e8c66, + 0x061001a58, 0x060de42a7, - 0x0486e8c2e, + 0x0486e8c66, 0x02f086100, - 0x01c3a6000, + 0x01c4a6000, 0x0ff6e6100, - 0x0065c2f00, + 0x006682f00, 0x061000414, 0x0588f6000, 0x0ff0e6100, - 0x009ca2f00, + 0x009d62f00, 0x061000404, 0x0588f6000, 0x0fefe486e, 0x084ec6100, - 0x00a26588f, + 0x00a32588f, 0x02f006100, 0x003ee588f, 0x06000fee8, 0x0486e84f3, - 0x061000a10, + 0x061000a1c, 0x0588f2f00, 0x0610003d8, 0x0588f6000, 0x0fed2486e, - 0x09fa6486e, - 0x09fde6100, - 0x01b3e4fef, + 0x09fde486e, + 0x0a0166100, + 0x01b4e4fef, 0x0fff46000, 0x0fe5e518f, 0x042ae8036, 0x042ae803a, 0x048780040, - 0x0486e9d66, + 0x0486e9d9e, 0x0486e8557, 0x0610001de, 0x04a806654, 0x0207c0000, - 0x09d644878, + 0x09d9c4878, 0x000202f08, - 0x061001ac0, + 0x061001ad0, 0x020404a80, 0x0508f673c, 0x052880c10, @@ -178,11 +178,11 @@ ulong bootcode[]={ 0x04a806c00, 0x00160486e, 0x085736100, - 0x01ab8588f, + 0x01ac8588f, 0x02f00486e, 0x0856b486e, - 0x09d666100, - 0x01ac04a80, + 0x09d9e6100, + 0x01ad04a80, 0x066000116, 0x0746c7069, 0x0b08242e7, @@ -193,25 +193,25 @@ ulong bootcode[]={ 0x070012d40, 0x080064878, 0x0001c486e, - 0x09fa6486e, + 0x09fde486e, 0x085916100, 0x001244aae, 0x080066700, 0x000c24878, 0x0001c486e, - 0x09caa486e, + 0x09ce2486e, 0x0859a6100, 0x0010c4a80, 0x06c0e486e, 0x085a5486e, - 0x09caa6100, - 0x01a3a508f, + 0x09ce26100, + 0x01a4a508f, 0x04878001c, - 0x0486e9cc6, + 0x0486e9cfe, 0x0486e85b3, 0x0610000ea, 0x04878001c, - 0x0486e9ffa, + 0x0486ea032, 0x0486e85bb, 0x0610000da, 0x0207c0000, @@ -226,20 +226,20 @@ ulong bootcode[]={ 0x0002060de, 0x02f420054, 0x02f302d10, - 0x0610019f6, + 0x061001a06, 0x0588f2f00, 0x0222f0058, 0x02f361d25, 0x08032486e, - 0x09ffa6100, - 0x019f8206e, + 0x0a0326100, + 0x01a08206e, 0x08032242f, 0x000604a80, 0x066204fef, 0x0000c486e, 0x085c4486e, - 0x09ffa6100, - 0x019904a80, + 0x0a0326100, + 0x019a04a80, 0x06606706c, 0x02d408042, 0x04fef0064, @@ -247,18 +247,18 @@ ulong bootcode[]={ 0x04fef000c, 0x06096486e, 0x085ac486e, - 0x09caa6100, - 0x0198e598f, + 0x09ce26100, + 0x0199e598f, 0x06000ff52, 0x07041b082, 0x06600ff10, 0x06000ff06, 0x0486e8586, - 0x061001986, + 0x061001996, 0x0588f2f00, 0x0486e857b, - 0x0486e9d66, - 0x06100198e, + 0x0486e9d9e, + 0x06100199e, 0x0242e8042, 0x04a804fef, 0x0000c6600, @@ -272,11 +272,11 @@ ulong bootcode[]={ 0x02f2f0044, 0x0486e85cc, 0x0486f0008, - 0x06100167a, + 0x06100168a, 0x042370161, 0x0005442a7, 0x0486f0010, - 0x0610019f2, + 0x061001a02, 0x04a806c08, 0x070ff4fef, 0x000544e75, @@ -285,61 +285,61 @@ ulong bootcode[]={ 0x02f2f0060, 0x02f002f40, 0x0005c6100, - 0x019d64a80, + 0x019e64a80, 0x06d064237, 0x009250068, 0x02f2f005c, - 0x06100199a, + 0x0610019aa, 0x042804fef, 0x000644e75, 0x04fefffc4, 0x02f2f0040, 0x0486e85d2, 0x0486f0008, - 0x06100161a, + 0x06100162a, 0x0487801b6, 0x048780001, 0x0486f0014, - 0x061001974, + 0x061001984, 0x04a8042e7, 0x02f400052, 0x044df6c06, 0x04fef0054, 0x04e752f2f, 0x0005c6100, - 0x018b4588f, + 0x018c4588f, 0x02f002f2f, 0x000602f2f, 0x000586100, - 0x019802f2f, + 0x019902f2f, 0x0005c6100, - 0x0193c4fef, + 0x0194c4fef, 0x000644e75, 0x0598f4878, 0x00011486e, 0x085d86100, - 0x0194c4a80, + 0x0195c4a80, 0x042e72f40, 0x0000a44df, 0x06d42486e, - 0x09fde6100, - 0x01874588f, + 0x0a0166100, + 0x01884588f, 0x02f00486e, - 0x09fde2f2f, + 0x0a0162f2f, 0x000106100, - 0x019402f00, - 0x0486e9fde, - 0x06100185a, + 0x019502f00, + 0x0486ea016, + 0x06100186a, 0x0588f221f, 0x0b280670a, 0x0486e85e0, - 0x0610017ac, + 0x0610017bc, 0x0588f2f2f, 0x000146100, - 0x018e04fef, + 0x018f04fef, 0x0001c4e75, 0x0486e85f0, - 0x061001794, + 0x0610017a4, 0x04feffff4, 0x060ec4fef, 0x0fefc242e, @@ -350,7 +350,7 @@ ulong bootcode[]={ 0x080320010, 0x0486e85fd, 0x0486f0008, - 0x061001542, + 0x061001552, 0x01f760162, 0x08032001c, 0x0010c422f, @@ -358,7 +358,7 @@ ulong bootcode[]={ 0x00004486f, 0x00110486f, 0x000146100, - 0x00dd0102f, + 0x00de0102f, 0x0011849c0, 0x04fef0018, 0x07265b001, @@ -383,134 +383,137 @@ ulong bootcode[]={ 0x04fef0104, 0x04e752f2f, 0x000046100, - 0x00a0c2f2f, + 0x00a1c2f2f, 0x000086100, - 0x00b082f2f, + 0x00b182f2f, 0x0000c6100, - 0x00bbe2f00, + 0x00bce2f00, 0x02f400014, 0x0486e8615, - 0x0610006ee, + 0x0610006fa, 0x02f2f0018, - 0x0486e9caa, - 0x0610006e2, + 0x0486e9ce2, + 0x0610006ee, + 0x04878ffff, 0x0486e861d, 0x0486e861c, 0x048780006, 0x0486e861a, - 0x02f2f0030, - 0x061001800, + 0x02f2f0034, + 0x06100180c, 0x04a806c0a, 0x0486e861e, - 0x061000cf4, + 0x061000d00, 0x0588f2f2f, - 0x000346100, - 0x017cc4878, + 0x000386100, + 0x017d84878, 0x000016100, - 0x0075042a7, + 0x0075842a7, 0x061064fef, - 0x0003c4e75, + 0x000404e75, 0x04fefff04, 0x0486f007c, 0x0486e8624, - 0x0610027a4, + 0x0610027b0, 0x04a806c1c, 0x04aaf0108, 0x0670e486e, 0x086294878, 0x000026100, - 0x013c8508f, + 0x013d4508f, 0x070ff4fef, 0x001044e75, 0x02f360162, 0x080320018, 0x0486e863a, 0x0486f0010, - 0x061001412, + 0x06100141e, 0x0486f0090, 0x0486f0018, - 0x061002764, + 0x061002770, 0x04a806c22, 0x04aaf011c, 0x06714486f, 0x0001c486e, 0x0863f4878, 0x000026100, - 0x013844fef, + 0x013904fef, 0x0000c70ff, 0x04fef0118, 0x04e75486e, 0x086586100, - 0x0130842a7, + 0x0131442a7, 0x0486e8664, 0x0486e8661, - 0x06100171c, + 0x061001728, 0x04a806c0a, 0x0486e8669, - 0x061000c40, + 0x061000c4c, 0x0588f42a7, 0x0486e8674, 0x0486e8671, - 0x061001700, + 0x06100170c, 0x04a806c0a, 0x0486e867a, - 0x061000c24, + 0x061000c30, 0x0588f486f, 0x001286100, - 0x016f04a80, + 0x016fc4a80, 0x06c0a486e, 0x086826100, - 0x00c0e588f, - 0x061001702, + 0x00c1a588f, + 0x06100170e, 0x04fef003c, 0x072ffb280, - 0x0670000ea, + 0x0670000f2, 0x04281b280, - 0x067000090, + 0x067000098, 0x02f2f00f4, - 0x0610016ce, + 0x0610016da, 0x04aaf0104, - 0x067502f7c, + 0x067542f7c, 0x0000086ae, 0x0003c2f2f, 0x000f4486e, 0x086b26100, - 0x0059c486e, + 0x005a44878, + 0x0ffff486e, 0x086b8486e, 0x086b74878, 0x000062f2f, - 0x000502f2f, - 0x0010c6100, - 0x016ba4a80, + 0x000542f2f, + 0x001106100, + 0x016c24a80, 0x06c0a486e, 0x086b96100, - 0x00bae588f, + 0x00bb6588f, 0x042a76100, - 0x006142f2f, - 0x001146100, - 0x016804280, - 0x04fef0124, + 0x006182f2f, + 0x001186100, + 0x016884280, + 0x04fef0128, 0x04e75207c, 0x0000086bd, + 0x04878ffff, 0x0486e86c7, 0x0486e86c6, 0x048780006, 0x02f082f2f, - 0x001046100, - 0x0167a4a80, + 0x001086100, + 0x0167e4a80, 0x04feffff4, - 0x06ccc486e, + 0x06cc8486e, 0x086c86100, - 0x00b6a588f, - 0x060c02f2f, + 0x00b6e588f, + 0x060bc2f2f, 0x000f0486e, 0x0868c486f, 0x000646100, - 0x012d42f2f, + 0x012d82f2f, 0x00100486e, 0x0868f486f, 0x000506100, - 0x012c442a7, + 0x012c842a7, 0x0486f0058, 0x0486f007c, 0x0486e869e, @@ -518,37 +521,37 @@ ulong bootcode[]={ 0x0486e869b, 0x0486e8697, 0x0486e8692, - 0x0610013f4, + 0x0610013f8, 0x0486e86a1, - 0x061000b1c, + 0x061000b20, 0x04fef003c, - 0x06000ff22, + 0x06000ff1a, 0x0486e8687, - 0x061000b0c, + 0x061000b10, 0x0588f60a2, 0x04fefffcc, 0x04aae8006, 0x066186100, - 0x010244878, + 0x010284878, 0x0001c486e, - 0x09caa486e, + 0x09ce2486e, 0x086ce6100, - 0x00b144fef, + 0x00b184fef, 0x0000c2ebc, - 0x000009ca8, + 0x000009ce0, 0x0227c0000, 0x0815c4a91, 0x067202f17, 0x02f112f49, 0x000286100, - 0x014d8226f, + 0x014dc226f, 0x000284a80, 0x0660001e4, 0x07004d089, 0x02f400008, 0x0508f2f17, 0x0486e86d5, - 0x06100115a, + 0x06100115e, 0x0222f0008, 0x041ef0024, 0x02f480020, @@ -561,106 +564,106 @@ ulong bootcode[]={ 0x0660000b2, 0x048780002, 0x0486e86e1, - 0x06100157e, + 0x061001582, 0x04a806c10, - 0x0486e86ea, - 0x061000a48, + 0x0486e86f0, + 0x061000a4c, 0x070ff4fef, 0x000484e75, 0x04878000d, - 0x0486e86fb, + 0x0486e8707, 0x02f002f40, 0x0004c6100, - 0x01570222f, + 0x01574222f, 0x0004c4a80, 0x06c162f01, - 0x061001526, - 0x0486e8709, - 0x061000a18, + 0x06100152a, + 0x0486e8715, + 0x061000a1c, 0x070ff4fef, 0x000584e75, 0x04878000c, - 0x0486e8717, + 0x0486e8723, 0x02f016100, - 0x01544222f, + 0x01548222f, 0x000584a80, 0x06c162f01, - 0x0610014fa, - 0x0486e8724, - 0x0610009ec, + 0x0610014fe, + 0x0486e8730, + 0x0610009f0, 0x070ff4fef, 0x000644e75, 0x04878000c, - 0x0486e8731, + 0x0486e873d, 0x02f016100, - 0x015184a80, + 0x0151c4a80, 0x06c182f2f, 0x000646100, - 0x014d0486e, - 0x0873e6100, - 0x009c270ff, + 0x014d4486e, + 0x0874a6100, + 0x009c670ff, 0x04fef0070, 0x04e757001, 0x02d408022, 0x04fef002c, 0x0486f000c, 0x0486f0028, - 0x061000a56, + 0x061000a5a, 0x04a806c08, 0x070ff4fef, 0x000444e75, 0x048780002, - 0x0486e874b, - 0x0610014b6, + 0x0486e8757, + 0x0610014ba, 0x04a8042e7, 0x02f400042, 0x044df6c10, - 0x0486e875a, - 0x061000978, + 0x0486e8766, + 0x06100097c, 0x070ff4fef, 0x000504e75, 0x048780002, - 0x0486e8771, - 0x06100148e, + 0x0486e877d, + 0x061001492, 0x04a8042e7, 0x02f40004e, 0x044df6c18, 0x02f2f0048, - 0x061001456, - 0x0486e877f, - 0x061000948, + 0x06100145a, + 0x0486e878b, + 0x06100094c, 0x070ff4fef, 0x0005c4e75, 0x0486f0024, - 0x06100139e, + 0x0610013a2, 0x0588f2f00, 0x0486f0028, 0x02f2f0054, - 0x06100146a, + 0x06100146e, 0x04a806c20, 0x02f2f0058, - 0x061001422, + 0x061001426, 0x02f2f0058, - 0x06100141a, + 0x06100141e, 0x0486f0038, - 0x0610012d4, + 0x0610012d8, 0x070ff4fef, 0x0006c4e75, 0x02d7c0000, - 0x08793800e, + 0x0879f800e, 0x02d7c0000, - 0x08799803e, + 0x087a5803e, 0x0202f0054, 0x04fef0060, 0x04e752f01, 0x02f41000c, - 0x0610011c8, + 0x0610011cc, 0x01f800161, 0x0002452af, 0x000244878, 0x0002e2f2f, 0x000106100, - 0x012d65280, + 0x012da5280, 0x0220052af, 0x000384fef, 0x0000c6000, @@ -668,297 +671,298 @@ ulong bootcode[]={ 0x000000018, 0x0508f6000, 0x0fdfa486e, - 0x087a32f2f, + 0x087af2f2f, 0x000086100, - 0x00872206f, + 0x00876206f, 0x0000c4aae, 0x08006673a, - 0x0486e87ae, + 0x0486e87ba, 0x02f086100, - 0x0085e6100, - 0x013a84fef, + 0x008626100, + 0x013ac4fef, 0x0001072ff, 0x0b2806720, 0x04281b280, 0x0670c2f2f, 0x000046100, - 0x01378588f, + 0x0137c588f, 0x04e754879, 0x00000ea60, - 0x06100139a, + 0x06100139e, 0x0588f60f2, 0x060ee486e, - 0x087c42f08, - 0x061000824, + 0x087d02f08, + 0x061000828, 0x060c44fef, 0x0fff02f2f, 0x00014486e, - 0x087d8486e, - 0x08c2e6100, - 0x00fe0486e, - 0x08c2e6100, - 0x0129c2f40, + 0x087e4486e, + 0x08c666100, + 0x00fe4486e, + 0x08c666100, + 0x012a02f40, 0x0001042af, 0x000144878, 0x00002486e, - 0x087e36100, - 0x0134c4a80, + 0x087ef6100, + 0x013504a80, 0x042e72f40, 0x0002644df, 0x06c0a486e, - 0x087f06100, - 0x00832588f, + 0x087fc6100, + 0x00836588f, 0x048780002, - 0x0486e8802, - 0x06100132a, + 0x0486e880e, + 0x06100132e, 0x02f400028, 0x04aaf0028, 0x06c0a486e, - 0x0880e6100, - 0x00812588f, + 0x0881a6100, + 0x00816588f, 0x02f2f0020, - 0x0486e8c2e, + 0x0486e8c66, 0x02f2f0030, - 0x06100131e, + 0x061001322, 0x0b0af002c, 0x0660e2f2f, 0x000386100, - 0x003e8588f, + 0x003ec588f, 0x04a806734, 0x07005b0af, 0x000306608, 0x070ff4fef, 0x0003c4e75, 0x02f2f0038, - 0x0610012b6, + 0x0610012ba, 0x02f2f0038, - 0x0610012ae, + 0x0610012b2, 0x0487801f4, - 0x0610012d6, + 0x0610012da, 0x052af003c, 0x04fef0028, 0x06000ff68, - 0x0486e8822, + 0x0486e882e, 0x02f2f0038, - 0x061000758, + 0x06100075c, 0x02f2f003c, - 0x061001286, + 0x06100128a, 0x02d7c0000, - 0x08825800e, + 0x08831800e, 0x02d7c0000, - 0x08828803e, + 0x08834803e, 0x0202f0044, 0x04fef0048, 0x04e75518f, 0x04aae8006, 0x066186100, - 0x00ca84878, + 0x00cac4878, 0x0001c486e, - 0x09caa486e, - 0x0882d6100, - 0x007984fef, + 0x09ce2486e, + 0x088396100, + 0x0079c4fef, 0x0000c4878, 0x00002486e, - 0x088346100, - 0x012642f40, + 0x088406100, + 0x012682f40, 0x000084aaf, 0x000086c0a, - 0x0486e883b, - 0x06100074c, + 0x0486e8847, + 0x061000750, 0x0588f2f2f, 0x000086100, 0x0fe72486e, - 0x09caa6100, + 0x09ce26100, 0x0fec64a80, 0x06d064fef, 0x000184e75, - 0x0486e884a, - 0x061000dd6, + 0x0486e8856, + 0x061000dda, 0x0487803e8, - 0x061001232, + 0x061001236, 0x04fef000c, 0x060d84fef, 0x0ffd44aae, 0x080066618, - 0x061000c36, + 0x061000c3a, 0x04878001c, - 0x0486e9caa, - 0x0486e8866, - 0x061000726, + 0x0486e9ce2, + 0x0486e8872, + 0x06100072a, 0x04fef000c, 0x02f360162, 0x080320014, - 0x0486e886d, + 0x0486e8879, 0x0486f0008, - 0x061000e62, + 0x061000e66, 0x048780002, 0x0486f0010, - 0x0610011de, + 0x0610011e2, 0x02f400038, 0x04aaf0038, 0x06c0a486f, 0x000146100, - 0x006c6588f, + 0x006ca588f, 0x02f2f0044, 0x02f2f003c, - 0x061000664, + 0x061000668, 0x02f360162, 0x080320014, - 0x0486e8876, + 0x0486e8882, 0x0486f0024, - 0x061000e22, + 0x061000e26, 0x048780002, 0x0486f002c, - 0x06100119e, + 0x0610011a2, 0x02f400050, 0x04aaf0050, 0x06c0a486f, 0x000306100, - 0x00686588f, + 0x0068a588f, 0x02f2f0050, - 0x061000a42, + 0x061000a46, 0x02f2f0054, - 0x061001156, - 0x0486e887c, + 0x06100115a, + 0x0486e8888, 0x02f2f0060, - 0x061000614, + 0x061000618, 0x02f2f0064, 0x06100fd90, - 0x0486e9caa, + 0x0486e9ce2, 0x06100fde4, 0x04a806d06, 0x04fef0074, 0x04e75486e, - 0x088876100, - 0x00cf44878, + 0x088936100, + 0x00cf84878, 0x003e86100, - 0x011504fef, + 0x011544fef, 0x0000c60d8, 0x0518f4878, 0x0002f2f2f, 0x000106100, - 0x010b82400, + 0x010bc2400, 0x06700008a, 0x052822f02, - 0x0486e88a3, - 0x0486e8c2e, - 0x061000d92, + 0x0486e88af, + 0x0486e8c66, + 0x061000d96, 0x0487801b6, 0x048780001, - 0x0486e8c2e, - 0x0610010ec, + 0x0486e8c66, + 0x0610010f0, 0x04a8042e7, 0x02f400022, 0x044df6c0a, - 0x0486e88a9, - 0x0610005f0, + 0x0486e88b5, + 0x0610005f4, 0x0588f2f2f, 0x00030486e, - 0x088b0486e, - 0x08c2e6100, - 0x00d5c486e, - 0x08c2e6100, - 0x01018588f, + 0x088bc486e, + 0x08c666100, + 0x00d60486e, + 0x08c666100, + 0x0101c588f, 0x02f00486e, - 0x08c2e2f2f, + 0x08c662f2f, 0x000346100, - 0x010e42f00, - 0x0486e8c2e, - 0x061000ffe, + 0x010e82f00, + 0x0486e8c66, + 0x061001002, 0x0588f221f, 0x0b280670a, - 0x0486e88b3, - 0x0610005ac, + 0x0486e88bf, + 0x0610005b0, 0x0588f2f2f, 0x000386100, - 0x010844fef, + 0x010884fef, 0x000444e75, 0x0242f0014, 0x06000ff74, 0x04fefff0c, - 0x0486e88b9, - 0x061000c36, + 0x0486e88c5, + 0x061000c3a, 0x04aaf00fc, 0x066504878, 0x00002486e, - 0x088c16100, - 0x0107c4a80, - 0x06d00015a, + 0x088cd6100, + 0x010804a80, + 0x06d00015e, 0x048780073, 0x0486f0014, 0x02f002f40, 0x001046100, - 0x0106a2200, + 0x0106e2200, 0x042e72f40, 0x0010a44df, 0x06c0e486e, - 0x088c86100, - 0x0054a222f, + 0x088d46100, + 0x0054e222f, 0x0010c588f, 0x042371920, 0x0001c2f2f, 0x001046100, - 0x010184fef, + 0x0101c4fef, 0x000184aaf, 0x000fc6700, - 0x000de4878, + 0x000e24878, 0x00002486e, - 0x088d46100, - 0x010244a80, + 0x088e06100, + 0x010284a80, 0x06c064fef, 0x001004e75, - 0x0486e88e5, - 0x0486e88e4, + 0x04878ffff, + 0x0486e88f1, + 0x0486e88f0, 0x042a7486e, - 0x088dc2f00, - 0x02f40010c, + 0x088e82f00, + 0x02f400110, 0x061000ffc, - 0x0206f010c, + 0x0206f0110, 0x04a806c0c, 0x02f086100, 0x00fd04fef, - 0x001184e75, + 0x0011c4e75, 0x02f086100, 0x00fc4486f, - 0x00028486e, - 0x088e66100, + 0x0002c486e, + 0x088f26100, 0x00fee4a80, 0x06c0a486e, - 0x088ee6100, + 0x088fa6100, 0x004ca588f, - 0x0486f00a4, - 0x0486f0034, + 0x0486f00a8, + 0x0486f0038, 0x061001066, - 0x02f2f010c, - 0x0486e88f3, - 0x0486f0040, + 0x02f2f0110, + 0x0486e88ff, + 0x0486f0044, 0x061000c2a, - 0x0486e88f7, + 0x0486e8903, 0x042a76100, 0x01fae4878, 0x00002486e, - 0x088ff6100, + 0x0890b6100, 0x00f9c2f40, - 0x0013c4aaf, - 0x0013c6f32, - 0x0486f0054, + 0x001404aaf, + 0x001406f32, + 0x0486f0058, 0x061000ec6, 0x0588f2f00, - 0x0486f0058, - 0x02f2f0144, + 0x0486f005c, + 0x02f2f0148, 0x061000f92, 0x04a806c0a, - 0x0486e8906, + 0x0486e8912, 0x061000468, 0x0588f2f2f, - 0x001486100, + 0x0014c6100, 0x00f404fef, 0x000102f2f, - 0x0013c6100, + 0x001406100, 0x00f344fef, - 0x000504878, + 0x000544878, 0x00001486e, - 0x089126100, + 0x0891e6100, 0x00f482f40, 0x000f8486f, 0x000106100, @@ -972,10 +976,10 @@ ulong bootcode[]={ 0x001104e75, 0x070012f40, 0x00104508f, - 0x06000fedc, + 0x06000fed8, 0x0598f4878, 0x01000486e, - 0x08c2e2f2f, + 0x08c662f2f, 0x000106100, 0x00f062200, 0x07002b081, @@ -983,172 +987,172 @@ ulong bootcode[]={ 0x0091870ff, 0x04fef0010, 0x04e75422e, - 0x08c30486e, - 0x0891a486e, - 0x08c2e6100, + 0x08c68486e, + 0x08926486e, + 0x08c666100, 0x00de44a80, 0x066084280, 0x04fef0018, 0x04e75486e, - 0x0891d486e, - 0x08c2e6100, + 0x08929486e, + 0x08c666100, 0x00dcc4a80, 0x06634486e, - 0x09fc2486e, - 0x09fde486e, - 0x08920486e, - 0x08c2e6100, + 0x09ffa486e, + 0x0a016486e, + 0x0892c486e, + 0x08c666100, 0x00b24486e, - 0x08c2e6100, + 0x08c666100, 0x00de0588f, 0x02f00486e, - 0x08c2e2f2f, + 0x08c662f2f, 0x0003c6100, 0x00eac4fef, 0x000386000, 0x0ff7e486e, - 0x08927486e, - 0x08c2e6100, + 0x08933486e, + 0x08c666100, 0x00d884a80, 0x04fef0024, 0x06600ff68, 0x061000896, - 0x0486e9fc2, - 0x0486e9fde, - 0x0486e892a, - 0x0486e8c2e, + 0x0486e9ffa, + 0x0486ea016, + 0x0486e8936, + 0x0486e8c66, 0x061000ad6, - 0x0486e8c2e, + 0x0486e8c66, 0x061000d92, 0x0588f2f00, - 0x0486e8c2e, + 0x0486e8c66, 0x02f2f0020, 0x061000e5e, 0x04fef001c, 0x06000ff30, 0x0598f486e, - 0x089316100, + 0x0893d6100, 0x009dc1d7c, - 0x000329c2e, + 0x000329c66, 0x03d7cffff, - 0x09c32486e, - 0x08c2e486e, - 0x09c2e6100, + 0x09c6a486e, + 0x08c66486e, + 0x09c666100, 0x017102f00, 0x02f400010, - 0x0486e8c2e, + 0x0486e8c66, 0x02f2f001c, 0x061000e22, 0x0b0af0018, 0x0670a486e, - 0x089386100, + 0x089446100, 0x002f6588f, 0x048781000, - 0x0486e8c2e, + 0x0486e8c66, 0x02f2f0028, 0x061000df0, 0x022007002, 0x0b0816608, 0x00c2e004f, - 0x08c2e677c, + 0x08c66677c, 0x04a8142e7, 0x02f410026, 0x044df6e0e, - 0x0486e8942, + 0x0486e894e, 0x0610002c0, 0x0222f0028, 0x0588f2f01, - 0x0486e9c2e, - 0x0486e8c2e, + 0x0486e9c66, + 0x0486e8c66, 0x061000fea, 0x04a806638, - 0x0102e8c31, + 0x0102e8c69, 0x049c02f00, - 0x0102e8c30, + 0x0102e8c68, 0x049c02f00, - 0x0102e8c2f, + 0x0102e8c67, 0x049c02f00, - 0x0102e8c2e, + 0x0102e8c66, 0x049c02f00, 0x02f2f0040, - 0x0486e894b, + 0x0486e8957, 0x06100092a, - 0x0486e8972, + 0x0486e897e, 0x061000274, 0x04fef001c, 0x00c2e0033, - 0x09c2e670a, - 0x0486e897d, + 0x09c66670a, + 0x0486e8989, 0x061000260, 0x0588f4fef, 0x000344e75, 0x00c2e004b, - 0x08c2f6600, + 0x08c676600, 0x0ff7c4878, 0x01000486e, - 0x08c2e2f2f, + 0x08c662f2f, 0x000346100, 0x00d4a2200, 0x04fef000c, 0x06000ff62, 0x0598f486e, - 0x089866100, + 0x089926100, 0x008d81d7c, - 0x000349c2e, + 0x000349c66, 0x03d7cffff, - 0x09c32486e, - 0x08c2e486e, - 0x09c2e6100, + 0x09c6a486e, + 0x08c66486e, + 0x09c666100, 0x0160c2f00, 0x02f400010, - 0x0486e8c2e, + 0x0486e8c66, 0x02f2f001c, 0x061000d1e, 0x0b0af0018, 0x0670a486e, - 0x089916100, + 0x0899d6100, 0x001f2588f, 0x048781000, - 0x0486e8c2e, + 0x0486e8c66, 0x02f2f0028, 0x061000cec, 0x02f400024, 0x04aaf0024, 0x06e0a486e, - 0x0899f6100, + 0x089ab6100, 0x001ce588f, 0x02f2f0024, - 0x0486e9c2e, - 0x0486e8c2e, + 0x0486e9c66, + 0x0486e8c66, 0x061000efa, 0x04a80660a, - 0x0486e89ac, + 0x0486e89b8, 0x0610001b0, 0x0588f0c2e, - 0x000379c2e, + 0x000379c66, 0x06618486e, - 0x09c34486e, - 0x089bb6100, + 0x09c6c486e, + 0x089c76100, 0x00848486e, - 0x09c346100, + 0x09c6c6100, 0x001924fef, 0x0000c0c2e, - 0x000359c2e, + 0x000359c66, 0x0670a486e, - 0x089c56100, + 0x089d16100, 0x0017e588f, 0x04fef0034, 0x04e754fef, 0x0ff48486f, 0x00038486e, - 0x089d26100, + 0x089de6100, 0x01c424a80, 0x06c0a202f, 0x000c44fef, 0x000c04e75, 0x02f360162, 0x080320018, - 0x0486e89d7, + 0x0486e89e3, 0x0486f0010, 0x0610008c2, 0x0486f004c, @@ -1158,12 +1162,12 @@ ulong bootcode[]={ 0x0202f00d8, 0x04fef00d4, 0x04e75486e, - 0x089df6100, + 0x089eb6100, 0x007d0486f, 0x000cc6100, 0x00bf04a80, 0x06c0a486e, - 0x089e66100, + 0x089f26100, 0x0010e588f, 0x061000c02, 0x04fef0024, @@ -1194,21 +1198,21 @@ ulong bootcode[]={ 0x080366720, 0x042a7486f, 0x00020486e, + 0x08a0d486e, + 0x08a09486e, 0x08a01486e, - 0x089fd486e, - 0x089f5486e, - 0x089f06100, + 0x089fc6100, 0x009564fef, 0x0003460a2, 0x042a7486f, 0x00020486e, - 0x08a14486e, - 0x08a11486e, - 0x08a09486e, - 0x08a046100, + 0x08a20486e, + 0x08a1d486e, + 0x08a15486e, + 0x08a106100, 0x009364fef, 0x000346082, - 0x0486e89eb, + 0x0486e89f7, 0x06158588f, 0x06082598f, 0x02f2f000c, @@ -1227,7 +1231,7 @@ ulong bootcode[]={ 0x061000bc0, 0x0486f0004, 0x02f2f004c, - 0x0486e8a17, + 0x0486e8a23, 0x048780002, 0x06100071e, 0x04fef0054, @@ -1236,7 +1240,7 @@ ulong bootcode[]={ 0x061000b9c, 0x0486f0004, 0x02f2f004c, - 0x0486e8a25, + 0x0486e8a31, 0x048780002, 0x0610006fa, 0x042a76100, @@ -1245,7 +1249,7 @@ ulong bootcode[]={ 0x04feffefc, 0x02f2f010c, 0x02f2f010c, - 0x0486e8a33, + 0x0486e8a3f, 0x061000672, 0x02f2f011c, 0x0486f0010, @@ -1255,7 +1259,7 @@ ulong bootcode[]={ 0x067da42e7, 0x02f400102, 0x044df6c0c, - 0x0486e8a3c, + 0x0486e8a48, 0x0619c222f, 0x00104588f, 0x07001b081, @@ -1269,28 +1273,28 @@ ulong bootcode[]={ 0x001044e75, 0x04fefffb4, 0x042a7486e, - 0x08a5e6100, + 0x08a6a6100, 0x00a6c4a80, 0x06c10486e, - 0x08a676100, + 0x08a7b6100, 0x008fe70ff, 0x04fef0058, 0x04e754878, 0x01000486e, - 0x08c2e2f00, + 0x08c662f00, 0x02f400058, 0x061000a4c, 0x04a806c10, - 0x0486e8a7a, + 0x0486e8a96, 0x0610008d8, 0x070ff4fef, 0x000644e75, - 0x0486e8a8a, - 0x0486e8c2e, + 0x0486e8aa6, + 0x0486e8c66, 0x061000a44, 0x022404a80, 0x06610486e, - 0x08a906100, + 0x08aac6100, 0x005c070ff, 0x04fef006c, 0x04e755c89, @@ -1326,54 +1330,54 @@ ulong bootcode[]={ 0x02f086100, 0x007944878, 0x00001486e, - 0x08aa66100, + 0x08ac26100, 0x009884a80, 0x042e72f40, 0x0008644df, 0x06c10486e, - 0x08aaf6100, + 0x08ad16100, 0x0081270ff, 0x04fef0090, 0x04e754878, 0x00002486e, - 0x08abd6100, + 0x08ae56100, 0x009604a80, 0x042e72f40, 0x0009244df, 0x06c10486e, - 0x08ac76100, + 0x08af56100, 0x007ea70ff, 0x04fef0098, 0x04e754878, 0x0000e486e, - 0x08ad62f2f, + 0x08b0a2f2f, 0x000946100, 0x0094c4a80, 0x06c10486e, - 0x08ae46100, + 0x08b186100, 0x007c670ff, 0x04fef00a4, 0x04e752f7c, - 0x000008c2c, + 0x000008c64, 0x00060486e, - 0x08aec6100, + 0x08b206100, 0x004b84878, 0x0002c486f, 0x0006c2f2f, 0x000a86100, 0x009184a80, 0x06c10486e, - 0x08af16100, + 0x08b256100, 0x0079270ff, 0x04fef00b4, 0x04e754878, 0x00640486e, - 0x08c2e2f2f, + 0x08c662f2f, 0x000b46100, 0x008e2226f, 0x0007c4a80, 0x06c10486e, - 0x08afb6100, + 0x08b2f6100, 0x0076a70ff, 0x04fef00c0, 0x04e750c29, @@ -1383,7 +1387,7 @@ ulong bootcode[]={ 0x067164878, 0x001f46100, 0x008b8486e, - 0x08b4b6100, + 0x08b7f6100, 0x0044c4fef, 0x00020608e, 0x04a290014, @@ -1412,23 +1416,23 @@ ulong bootcode[]={ 0x02f004280, 0x010290016, 0x02f00486e, - 0x08b062f2f, + 0x08b3a2f2f, 0x000e06100, 0x004a42f2f, 0x000e4486e, - 0x08b276100, + 0x08b5b6100, 0x003c82f2f, 0x000e06100, 0x007f42f2f, 0x000e06100, 0x007ec4878, 0x00001486e, - 0x08b2b6100, + 0x08b5f6100, 0x008044a80, 0x042e72f40, 0x000f244df, 0x06c10486e, - 0x08b336100, + 0x08b676100, 0x0068e70ff, 0x04fef00f8, 0x04e754878, @@ -1450,7 +1454,7 @@ ulong bootcode[]={ 0x001144a80, 0x06c162f09, 0x06100077a, - 0x0486e8b41, + 0x0486e8b75, 0x061000634, 0x070ff4fef, 0x001204e75, @@ -1474,7 +1478,7 @@ ulong bootcode[]={ 0x04fef000c, 0x06000fd3a, 0x04fefff70, - 0x0486e8b4d, + 0x0486e8b81, 0x0610002de, 0x061000726, 0x02f40000c, @@ -1483,12 +1487,12 @@ ulong bootcode[]={ 0x000fc4281, 0x0b2806700, 0x0009842a7, - 0x0486e8b8a, + 0x0486e8bbe, 0x061000712, 0x02f400008, 0x04aaf0008, 0x06c0a486e, - 0x08b936100, + 0x08bc76100, 0x0fbfa588f, 0x048780001, 0x0486f001c, @@ -1511,7 +1515,7 @@ ulong bootcode[]={ 0x02f2f0008, 0x06100068a, 0x0486f001c, - 0x0486e8ba1, + 0x0486e8bd5, 0x06100024a, 0x04fef0014, 0x0518f609c, @@ -1528,7 +1532,7 @@ ulong bootcode[]={ 0x0486f001c, 0x061000708, 0x0486f0020, - 0x0486e8b70, + 0x0486e8ba4, 0x061000206, 0x060fe4282, 0x0b4836c18, @@ -1543,19 +1547,19 @@ ulong bootcode[]={ 0x000016100, 0x006484fef, 0x0001860a4, - 0x0486e8b64, + 0x0486e8b98, 0x06100fb1c, 0x0588f6098, 0x04fefffdc, 0x02f2f0028, - 0x0486e8bbc, + 0x0486e8bf0, 0x0486f000c, 0x061000282, 0x048780001, 0x0486f0014, 0x0610005fe, 0x048780003, - 0x0486e8bca, + 0x0486e8bfe, 0x02f002f40, 0x000206100, 0x006042f2f, @@ -1564,14 +1568,14 @@ ulong bootcode[]={ 0x000484e75, 0x04fefff74, 0x042a7486e, - 0x08bce6100, + 0x08c026100, 0x005d04a80, 0x042e72f40, 0x0001244df, 0x06c0a486e, - 0x08bd76100, + 0x08c0b6100, 0x0fab6588f, - 0x0486e8bfa, + 0x0486e8c2e, 0x06100015a, 0x042af0018, 0x048780001, @@ -1581,7 +1585,7 @@ ulong bootcode[]={ 0x02f400028, 0x04aaf0028, 0x06c0a486e, - 0x08c056100, + 0x08c396100, 0x0fa86588f, 0x04aaf0028, 0x04fef000c, @@ -1595,7 +1599,7 @@ ulong bootcode[]={ 0x06748202f, 0x0000c1daf, 0x000140920, - 0x09fc252af, + 0x09ffa52af, 0x0000c0c2f, 0x0000a0014, 0x06710701c, @@ -1604,14 +1608,14 @@ ulong bootcode[]={ 0x06e924fef, 0x0000c202f, 0x0000c4236, - 0x009209fc2, + 0x009209ffa, 0x02f2f0008, 0x061000506, - 0x0486e8c2a, + 0x0486e8c5e, 0x0610000ca, 0x04fef0094, 0x04e75486e, - 0x08c286100, + 0x08c5c6100, 0x000bc598f, 0x06000ff56, 0x060b84aaf, @@ -1621,9 +1625,9 @@ ulong bootcode[]={ 0x042817021, 0x0b0816f1e, 0x04ab61d20, - 0x09ce2660e, + 0x09d1a660e, 0x02daf0008, - 0x01d209ce2, + 0x01d209d1a, 0x07001588f, 0x04e755281, 0x07021b081, @@ -1633,10 +1637,10 @@ ulong bootcode[]={ 0x000084282, 0x07021b082, 0x06f182036, - 0x02d209ce2, + 0x02d209d1a, 0x0b0886606, 0x042b62d20, - 0x09ce25282, + 0x09d1a5282, 0x07021b082, 0x06ee8588f, 0x04e754aaf, @@ -1648,10 +1652,10 @@ ulong bootcode[]={ 0x0518f7220, 0x04a816d22, 0x02eb61d20, - 0x09ce24a97, + 0x09d1a4a97, 0x067122f41, 0x0000442b6, - 0x01d209ce2, + 0x01d209d1a, 0x04eb70151, 0x0222f0004, 0x053814a81, @@ -2969,41 +2973,41 @@ ulong bootcode[]={ 0x0486e81fe, 0x061000fb8, 0x072012dbc, - 0x0000055ee, + 0x0000055fe, 0x01d2081fe, - 0x01d419dd1, - 0x01d419dd3, - 0x01d419dc9, - 0x01d419e0e, - 0x01d419e12, - 0x01d419e1b, + 0x01d419e09, + 0x01d419e0b, + 0x01d419e01, + 0x01d419e46, + 0x01d419e4a, + 0x01d419e53, 0x052812dbc, - 0x0000051be, + 0x0000051ce, 0x01d2081fe, - 0x01d419e0a, - 0x01d419e15, - 0x01d419e1e, - 0x01d419dfe, + 0x01d419e42, + 0x01d419e4d, + 0x01d419e56, + 0x01d419e36, 0x052812dbc, - 0x000005644, + 0x000005654, 0x01d2081fe, - 0x01d419e0b, - 0x01d419e0c, - 0x01d419e0d, - 0x01d419deb, - 0x01d419ded, + 0x01d419e43, + 0x01d419e44, + 0x01d419e45, + 0x01d419e23, + 0x01d419e25, 0x052812dbc, - 0x000005588, + 0x000005598, 0x01d2081fe, - 0x01d419e09, + 0x01d419e41, 0x052812dbc, - 0x0000055b6, + 0x0000055c6, 0x01d2081fe, - 0x01d419e19, + 0x01d419e51, 0x052812dbc, - 0x0000055d4, + 0x0000055e4, 0x01d2081fe, - 0x01d419dcb, + 0x01d419e03, 0x052812d41, 0x0800a4fef, 0x000104e75, @@ -3021,7 +3025,7 @@ ulong bootcode[]={ 0x02d2081fe, 0x0222f0004, 0x01d821920, - 0x09da65282, + 0x09dde5282, 0x02d42800a, 0x042804e75, 0x070014e75, @@ -3151,7 +3155,7 @@ ulong bootcode[]={ 0x04fef001c, 0x06000fe2c, 0x010362920, - 0x09da649c0, + 0x09dde49c0, 0x0260060b4, 0x052af002c, 0x0518f6000, @@ -3413,7 +3417,7 @@ ulong bootcode[]={ 0x081fe4e90, 0x04fef0024, 0x04e751036, - 0x039209da6, + 0x039209dde, 0x049c02400, 0x060d42f2f, 0x00024486e, @@ -4334,7 +4338,7 @@ ulong bootcode[]={ 0x00a002573, 0x00a000000, 0x000000000, - 0x055160000, + 0x055260000, 0x000000000, 0x000000000, 0x000000000, @@ -4647,11 +4651,14 @@ ulong bootcode[]={ 0x07665723a, 0x02025730a, 0x000236c2f, - 0x0312f6374, - 0x06c006f70, - 0x0656e696e, - 0x06720236c, - 0x02f312f63, + 0x065746865, + 0x0722f302f, + 0x063746c00, + 0x06f70656e, + 0x0696e6720, + 0x0236c2f65, + 0x074686572, + 0x02f302f63, 0x0746c0063, 0x06f6e6e65, 0x063742030, @@ -4870,11 +4877,15 @@ ulong bootcode[]={ 0x073652072, 0x065626f6f, 0x07400236c, + 0x02f657468, + 0x065722f30, 0x02f737461, 0x074730061, 0x072703a20, 0x06f70656e, 0x020236c2f, + 0x065746865, + 0x0722f302f, 0x073746174, 0x073006172, 0x0703a2072, @@ -4888,16 +4899,22 @@ ulong bootcode[]={ 0x072206164, 0x064726573, 0x07300236c, - 0x02f332f63, - 0x0746c006f, - 0x070656e20, - 0x0236c2f33, + 0x02f657468, + 0x065722f33, + 0x02f63746c, + 0x0006f7065, + 0x06e20236c, + 0x02f657468, + 0x065722f33, 0x02f63746c, 0x000236c2f, - 0x0332f6461, - 0x07461006f, - 0x070656e20, - 0x0236c2f33, + 0x065746865, + 0x0722f332f, + 0x064617461, + 0x0006f7065, + 0x06e20236c, + 0x02f657468, + 0x065722f33, 0x02f646174, 0x06100636f, 0x06e6e6563, @@ -4986,6 +5003,7 @@ ulong bootcode[]={ 0x06f6f7400, 0x00a000a00, 0x000000000, - 0x00004dea, + 0x000000000, + 0x00004e32, 0x0, }; diff --git a/gnot/dat.h b/gnot/dat.h index 38681a9d1b0fbc5e26e1d9ddac3560c16c6aedee..cf5466a5cdc6c124827730434a6b1a368e8772a1 100644 --- a/gnot/dat.h +++ b/gnot/dat.h @@ -46,6 +46,7 @@ struct FPsave uchar size; short reserved; char junk[212]; /* 68881: sizes 24, 180; 68882: 56, 212 */ + /* this offset known in db */ char reg[3*4+8*12]; }; @@ -88,6 +89,7 @@ struct Conf int nmntdev; /* mounted devices (devmnt.c) */ int nmntbuf; /* buffers for devmnt.c messages */ int nmnthdr; /* headers for devmnt.c messages */ + int nmux; /* number of mux devices */ int nstream; /* streams */ int nqueue; /* stream queues */ int nblock; /* stream blocks */ diff --git a/gnot/main.c b/gnot/main.c index c7872058771817fb063025c25436f61bb8473e94..2939c3013c280ae73e379ed01106445dead17f0f 100644 --- a/gnot/main.c +++ b/gnot/main.c @@ -268,6 +268,7 @@ confinit(void) conf.nsrv = 16*mul; /* was 32 */ conf.nbitmap = 300*mul; conf.nbitbyte = 300*1024*mul; + conf.nmux = 10; if(*(uchar*)MOUSE & (1<<4)) conf.nbitbyte *= 2; /* ldepth 1 */ conf.nfont = 10*mul; diff --git a/gnot/trap.c b/gnot/trap.c index af48c7a68e1a1b8a2f4e88091ae2f54fca6f74c2..a4edf7b745dccc7eb3b5426b1f6c0d752cad1218 100644 --- a/gnot/trap.c +++ b/gnot/trap.c @@ -147,13 +147,14 @@ dumpregs(Ureg *ur) void notify(Ureg *ur) { - ulong sp; + ulong s, sp; if(u->p->procctl) procctl(u->p); if(u->nnote==0) return; + s = spllo(); lock(&u->p->debug); u->p->notepending = 0; if(u->note[0].flag!=NUser && (u->notified || u->notify==0)){ @@ -195,6 +196,7 @@ notify(Ureg *ur) memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); + splx(s); } /* @@ -315,7 +317,8 @@ syscall(Ureg *aur) if(r0 == NOTED) /* ugly hack */ noted(aur, *(ulong*)(sp+BY2WD)); /* doesn't return */ - if(u->p->procctl || (u->nnote && r0!=FORK)){ + splhi(); + if(r0!=FORK && (u->p->procctl || u->nnote)){ ur->r0 = ret; notify(ur); } diff --git a/pc/trap.c b/pc/trap.c index f059a29e096ccdba84bdc7315a6a33383b19e089..a515d0968231b1be396e801001d339ed7e362a93 100644 --- a/pc/trap.c +++ b/pc/trap.c @@ -342,14 +342,16 @@ syscall(Ureg *ur) print("sp=%lux pc=%lux\n", u->errlab[i].sp, u->errlab[i].pc); panic("error stack"); } + u->p->insyscall = 0; u->p->psstate = 0; ur->ax = ret; - if(ax == NOTED){ + if(ax == NOTED) noted(ur, *(ulong*)(sp+BY2WD)); - } else if(u->p->procctl || (u->nnote && ax!=FORK)){ + + splhi(); + if(ax!=FORK && (u->p->procctl || u->nnote)) notify(ur); - } return ret; } @@ -360,12 +362,14 @@ syscall(Ureg *ur) void notify(Ureg *ur) { - ulong sp; + ulong s, sp; if(u->p->procctl) procctl(u->p); if(u->nnote==0) return; + + s = spllo(); lock(&u->p->debug); u->p->notepending = 0; if(u->note[0].flag!=NUser && (u->notified || u->notify==0)){ @@ -407,6 +411,7 @@ notify(Ureg *ur) memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); + splx(s); } /* diff --git a/port/devdk.c b/port/devdk.c index 628e5e440ad0bf0ad0684668ad3589a75e48cd83..b9da3a42001d4aeab089631fc77afd26dfd2f509 100644 --- a/port/devdk.c +++ b/port/devdk.c @@ -267,7 +267,7 @@ dkalloc(char *name, int ncsc, int lines) bp->wptr += n; dp->alloc = bp; n = sizeof(Line)*(dp->lines); - for(i = 1; i <= dp->lines; i++){ + for(i = 0; i <= dp->lines; i++){ if(bp->lim - bp->wptr < sizeof(Line)){ bp = allocb(sizeof(Line)*n); memset(bp->base, 0, bp->lim-bp->base); diff --git a/port/devip.c b/port/devip.c index 2cf07a885adc78c9c6cd4ffc10a843c7b2be0451..7005126bd76f2045c0a0219e083ba90b96b69440 100644 --- a/port/devip.c +++ b/port/devip.c @@ -19,7 +19,6 @@ int udpsum = 1; Queue *Ipoutput; /* Control message stream for tcp/il */ Ipifc *ipifc; /* IP protocol interfaces for stip */ Ipconv *ipconv[Nrprotocol]; /* Connections for each protocol */ -Dirtab *ipdir[Nrprotocol]; /* Connection directory structures */ QLock ipalloc; /* Protocol port allocation lock */ /* ARPA User Datagram Protocol */ @@ -44,36 +43,39 @@ Qinfo ilinfo = { iliput, iloput, ilopen, ilclose, "il" }; Qinfo *protocols[] = { &tcpinfo, &udpinfo, &ilinfo, 0 }; -enum +void +ipinitifc(Ipifc *ifc, Qinfo *stproto, Ipconv *cp) { - ipdirqid, - iplistenqid, - iplportqid, - iprportqid, - ipstatusqid, - ipchanqid, - - ipcloneqid -}; + int j; -Dirtab ipsubdir[]={ - "listen", {iplistenqid}, 0, 0666, - "local", {iplportqid}, 0, 0666, - "remote", {iprportqid}, 0, 0666, - "status", {ipstatusqid}, 0, 0666, -}; + for(j = 0; j < conf.ip; j++, cp++) + cp->stproto = stproto; + ifc->net.name = stproto->name; + ifc->net.nconv = conf.ip; + ifc->net.devp = &ipinfo; + ifc->net.protop = stproto; + if(stproto != &udpinfo) + ifc->net.listen = iplisten; + ifc->net.clone = ipclonecon; + ifc->net.ninfo = 3; + ifc->net.info[0].name = "remote"; + ifc->net.info[0].fill = ipremotefill; + ifc->net.info[1].name = "local"; + ifc->net.info[1].fill = iplocalfill; + ifc->net.info[2].name = "status"; + ifc->net.info[2].fill = ipstatusfill; +} void ipreset(void) { - int i; + int i, j; ipifc = (Ipifc *)ialloc(sizeof(Ipifc) * conf.ip, 0); for(i = 0; protocols[i]; i++) { ipconv[i] = (Ipconv *)ialloc(sizeof(Ipconv) * conf.ip, 0); - ipdir[i] = (Dirtab *)ialloc(sizeof(Dirtab) * (conf.ip+1), 0); - ipmkdir(protocols[i], ipdir[i], ipconv[i]); + ipinitifc(&ipifc[i], protocols[i], ipconv[i]); newqinfo(protocols[i]); } @@ -81,30 +83,6 @@ ipreset(void) tcpinit(); } -void -ipmkdir(Qinfo *stproto, Dirtab *dir, Ipconv *cp) -{ - Dirtab *etab; - int i; - - etab = &dir[conf.ip]; - for(i = 0; dir < etab; i++, cp++, dir++) { - cp->stproto = stproto; - sprint(dir->name, "%d", i); - dir->qid.path = CHDIR|STREAMQID(i, ipchanqid); - dir->qid.vers = 0; - dir->length = 0; - dir->perm = 0600; - } - - /* Make the clone */ - strcpy(dir->name, "clone"); - dir->qid.path = ipcloneqid; - dir->qid.vers = 0; - dir->length = 0; - dir->perm = 0600; -} - void ipinit(void) { @@ -137,89 +115,22 @@ ipclone(Chan *c, Chan *nc) int ipwalk(Chan *c, char *name) { - if(c->qid.path == CHDIR) - return devwalk(c, name, ipdir[c->dev], conf.ip+1, devgen); - else - return devwalk(c, name, ipsubdir, Nipsubdir, streamgen); + return netwalk(c, name, &ipifc[c->dev].net); } void ipstat(Chan *c, char *db) { - if(c->qid.path == CHDIR) - devstat(c, db, ipdir[c->dev], conf.ip+1, devgen); - else if(c->qid.path == ipcloneqid) - devstat(c, db, &ipdir[c->dev][conf.ip], 1, devgen); - else - devstat(c, db, ipsubdir, Nipsubdir, streamgen); + netstat(c, db, &ipifc[c->dev].net); } Chan * ipopen(Chan *c, int omode) { - Ipconv *cp; - - cp = &ipconv[c->dev][STREAMID(c->qid.path)]; - if(c->qid.path & CHDIR) { - if(omode != OREAD) - error(Eperm); - } - else switch(STREAMTYPE(c->qid.path)) { - case ipcloneqid: - ipclonecon(c); - break; - case iplportqid: - case iprportqid: - case ipstatusqid: - if(omode != OREAD) - error(Ebadarg); - break; - case iplistenqid: - if(cp->stproto != &tcpinfo && cp->stproto != &ilinfo) - error(Eprotonosup); - - if(cp->backlog == 0) - cp->backlog = 3; - - streamopen(c, &ipinfo); - - if(c->stream->devq->next->info != cp->stproto) - pushq(c->stream, cp->stproto); - - if(cp->stproto == &tcpinfo) - tcpstart(cp, TCP_PASSIVE, Streamhi, 0); - else if(cp->stproto == &ilinfo) - ilstart(cp, IL_PASSIVE, 10); - - iplisten(c, cp, ipconv[c->dev]); - break; - case Sdataqid: - streamopen(c, &ipinfo); - - if(c->stream->devq->next->info != cp->stproto) - pushq(c->stream, cp->stproto); - - if(cp->stproto == &tcpinfo) - tcpstart(cp, TCP_ACTIVE, Streamhi, 0); - else if(cp->stproto == &ilinfo) - ilstart(cp, IL_ACTIVE, 10); - - break; - case Sctlqid: - streamopen(c, &ipinfo); - - if(c->stream->devq->next->info != cp->stproto) - pushq(c->stream, cp->stproto); - break; - } - - c->mode = openmode(omode); - c->flag |= COPEN; - c->offset = 0; - return c; + return netopen(c, omode, &ipifc[c->dev].net); } -Ipconv * +int ipclonecon(Chan *c) { Ipconv *new, *base; @@ -228,14 +139,7 @@ ipclonecon(Chan *c) new = ipincoming(base); if(new == 0) error(Enodev); - - c->qid.path = CHDIR|STREAMQID(new-base, ipchanqid); - devwalk(c, "ctl", 0, 0, streamgen); - - streamopen(c, &ipinfo); - pushq(c->stream, new->stproto); - new->ref--; - return new; + return new - base; } Ipconv * @@ -252,7 +156,7 @@ ipincoming(Ipconv *base) qunlock(new); continue; } - new->ref++; + new->ref = 1; qunlock(new); return new; } @@ -281,49 +185,14 @@ ipwstat(Chan *c, char *dp) void ipclose(Chan *c) { - if(c->qid.path != CHDIR) + if(c->stream) streamclose(c); } long ipread(Chan *c, void *a, long n, ulong offset) { - int t, connection; - Ipconv *cp; - char buf[WORKBUF]; - - t = STREAMTYPE(c->qid.path); - if(t >= Slowqid) - return streamread(c, a, n); - - if(c->qid.path == CHDIR) - return devdirread(c, a, n, ipdir[c->dev], conf.ip+1, devgen); - if(c->qid.path & CHDIR) - return devdirread(c, a, n, ipsubdir, Nipsubdir, streamgen); - - connection = STREAMID(c->qid.path); - cp = &ipconv[c->dev][connection]; - - switch(t) { - case iprportqid: - sprint(buf, "%d.%d.%d.%d %d\n", fmtaddr(cp->dst), cp->pdst); - return stringread(c, a, n, buf, offset); - case iplportqid: - sprint(buf, "%d.%d.%d.%d %d\n", fmtaddr(Myip), cp->psrc); - return stringread(c, a, n, buf, offset); - case ipstatusqid: - if(cp->stproto == &tcpinfo) - sprint(buf, "tcp/%d %d %s %s\n", connection, cp->ref, tcpstate[cp->tcpctl.state], - cp->tcpctl.flags & CLONE ? "listen" : "connect"); - else if(cp->stproto == &ilinfo) - sprint(buf, "il/%d %d %s\n", connection, cp->ref, ilstate[cp->ilctl.state]); - else - sprint(buf, "%s/%d %d\n", cp->stproto->name, connection, cp->ref); - - return stringread(c, a, n, buf, offset); - } - - error(Eperm); + return netread(c, a, n, offset, &ipifc[c->dev].net); } long @@ -382,6 +251,11 @@ ipwrite(Chan *c, char *a, long n, ulong offset) cp->psrc = nextport(ipconv[c->dev], base); qunlock(&ipalloc); + if(cp->stproto == &tcpinfo) + tcpstart(cp, TCP_ACTIVE, Streamhi, 0); + else if(cp->stproto == &ilinfo) + ilstart(cp, IL_ACTIVE, 10); + } else if(strcmp(field[0], "announce") == 0) { if((cp->stproto == &tcpinfo && cp->tcpctl.state != CLOSED) || @@ -400,6 +274,14 @@ ipwrite(Chan *c, char *a, long n, ulong offset) } cp->psrc = port; qunlock(&ipalloc); + + if(cp->stproto == &tcpinfo) + tcpstart(cp, TCP_PASSIVE, Streamhi, 0); + else if(cp->stproto == &ilinfo) + ilstart(cp, IL_PASSIVE, 10); + + if(cp->backlog == 0) + cp->backlog = 3; } else if(strcmp(field[0], "backlog") == 0) { if(m != 2) @@ -544,13 +426,10 @@ udpstclose(Queue *q) ipc = (Ipconv *)(q->ptr); - qlock(ipc); - if(--ipc->ref == 0) { - ipc->psrc = 0; - ipc->pdst = 0; - ipc->dst = 0; - } - qunlock(ipc); + ipc->psrc = 0; + ipc->pdst = 0; + ipc->dst = 0; + ipc->ref = 0; closeipifc(ipc->ipinterface); } @@ -564,9 +443,7 @@ udpstopen(Queue *q, Stream *s) ipc->ipinterface = newipifc(IP_UDPPROTO, udprcvmsg, ipconv[s->dev], 1500, 512, ETHER_HDR, "UDP"); - qlock(ipc); - ipc->ref++; - qunlock(ipc); + ipc->ref = 1; ipc->readq = RD(q); RD(q)->ptr = (void *)ipc; WR(q)->next->ptr = (void *)ipc->ipinterface; @@ -649,9 +526,7 @@ tcpstopen(Queue *q, Stream *s) ipc->ipinterface = newipifc(IP_TCPPROTO, tcp_input, ipconv[s->dev], 1500, 512, ETHER_HDR, "TCP"); - qlock(ipc); - ipc->ref++; - qunlock(ipc); + ipc->ref = 1; ipc->readq = RD(q); ipc->readq->rp = &tcpflowr; @@ -661,16 +536,66 @@ tcpstopen(Queue *q, Stream *s) WR(q)->ptr = (void *)ipc; } +void +ipremotefill(Chan *c, char *buf, int len) +{ + int connection; + Ipconv *cp; + + connection = STREAMID(c->qid.path); + cp = &ipconv[c->dev][connection]; + sprint(buf, "%d.%d.%d.%d %d\n", fmtaddr(cp->dst), cp->pdst); +} +void +iplocalfill(Chan *c, char *buf, int len) +{ + int connection; + Ipconv *cp; + + connection = STREAMID(c->qid.path); + cp = &ipconv[c->dev][connection]; + sprint(buf, "%d.%d.%d.%d %d\n", fmtaddr(Myip), cp->psrc); +} +void +ipstatusfill(Chan *c, char *buf, int len) +{ + int connection; + Ipconv *cp; + + connection = STREAMID(c->qid.path); + cp = &ipconv[c->dev][connection]; + if(cp->stproto == &tcpinfo) + sprint(buf, "tcp/%d %d %s %s\n", connection, cp->ref, + tcpstate[cp->tcpctl.state], + cp->tcpctl.flags & CLONE ? "listen" : "connect"); + else if(cp->stproto == &ilinfo) + sprint(buf, "il/%d %d %s\n", connection, cp->ref, + ilstate[cp->ilctl.state]); + else + sprint(buf, "%s/%d %d\n", cp->stproto->name, connection, cp->ref); +} + int iphavecon(Ipconv *s) { return s->curlog; } -void -iplisten(Chan *c, Ipconv *s, Ipconv *base) +int +iplisten(Chan *c) { Ipconv *etab, *new; + Ipconv *s, *base; + int connection; + Ipconv *cp; + + connection = STREAMID(c->qid.path); + s = &ipconv[c->dev][connection]; + base = ipconv[c->dev]; + + if((s->stproto == &tcpinfo && s->tcpctl.state != LISTEN) || + (s->stproto == &ilinfo && s->ilctl.state != Illistening)) + errors("not announced"); qlock(&s->listenq); if(waserror()) { @@ -684,21 +609,10 @@ iplisten(Chan *c, Ipconv *s, Ipconv *base) new = base; for(etab = &base[conf.ip]; new < etab; new++) { if(new->newcon) { - /* Remove the listen channel reference */ - streamclose(c); - s->curlog--; - - /* Attach the control channel to the new connection */ new->newcon = 0; - c->qid.path = CHDIR|STREAMQID(new-base, ipchanqid); - devwalk(c, "ctl", 0, 0, streamgen); - - streamopen(c, &ipinfo); - pushq(c->stream, new->stproto); - new->ref--; qunlock(&s->listenq); - return; + return new - base; } } } @@ -713,9 +627,7 @@ tcpstclose(Queue *q) s = (Ipconv *)(q->ptr); tcb = &s->tcpctl; - qlock(s); - s->ref--; - qunlock(s); + s->ref = 0; /* Not interested in data anymore */ s->readq = 0; diff --git a/port/devlance.c b/port/devlance.c index 868e90ff68b9ceaef8b2a6ffa9d51314736378fe..98eb67849b5a5ffe0a246a4e179426f0fbcf9cfe 100644 --- a/port/devlance.c +++ b/port/devlance.c @@ -9,7 +9,6 @@ enum { Ntypes= 9, /* max number of ethernet packet types */ - Ndir= Ntypes+1, /* entries in top level directory */ Maxrb= 128, /* max buffers in a ring */ }; #define RSUCC(x) (((x)+1)%l.nrrb) @@ -82,6 +81,7 @@ typedef struct { int type; /* ethernet type */ int prom; /* promiscuous mode */ Queue *q; + int inuse; } Ethertype; @@ -93,6 +93,7 @@ typedef struct { Lance; /* host dependent lance params */ int prom; /* number of promiscuous channels */ + Network net; int inited; uchar *lmp; /* location of parity test */ @@ -186,9 +187,12 @@ static SoftLance l; /* * predeclared */ -static void lancekproc(void *); -static void lancestart(int, int); -static void lanceup(Etherpkt*, int); +static void lancekproc(void *); +static void lancestart(int, int); +static void lanceup(Etherpkt*, int); +static int lanceclonecon(Chan*); +static void lancestatsfill(Chan*, char*, int); +static void lancetypefill(Chan*, char*, int); /* * lance stream module definition @@ -215,6 +219,7 @@ lancestopen(Queue *q, Stream *s) RD(q)->ptr = WR(q)->ptr = et; et->type = 0; et->q = RD(q); + et->inuse = 1; qunlock(et); } @@ -241,6 +246,7 @@ lancestclose(Queue *q) et->type = 0; et->q = 0; et->prom = 0; + et->inuse = 0; qunlock(et); } @@ -354,32 +360,29 @@ lanceoput(Queue *q, Block *bp ) poperror(); } -/* - * lance directory - */ -enum { - Lchanqid = 1, - Lstatsqid = 2, -}; -Dirtab lancedir[Ndir]; - /* * stop the lance and allocate buffers */ void lancereset(void) { - int i; - ulong x; - int index; static int already; - ushort *lanceaddr; - ushort *hostaddr; - if(already == 0){ already = 1; lancesetup(&l); + + l.net.name = "ether"; + l.net.nconv = Ntypes; + l.net.devp = &lanceinfo; + l.net.protop = 0; + l.net.listen = 0; + l.net.clone = lanceclonecon; + l.net.ninfo = 2; + l.net.info[0].name = "stats"; + l.net.info[0].fill = lancestatsfill; + l.net.info[1].name = "type"; + l.net.info[1].fill = lancetypefill; } /* @@ -503,23 +506,6 @@ lancestart(int mode, int dolock) void lanceinit(void) { - int i; - - /* - * staticly set up types for now - */ - for(i=0; iqid.path == CHDIR) - return devwalk(c, name, lancedir, Ndir, devgen); - else - return devwalk(c, name, 0, 0, streamgen); + return netwalk(c, name, &l.net); } void lancestat(Chan *c, char *dp) { - if(c->qid.path==CHDIR || c->qid.path==Lstatsqid) - devstat(c, dp, lancedir, Ndir, devgen); - else - devstat(c, dp, 0, 0, streamgen); + netstat(c, dp, &l.net); } /* @@ -567,20 +543,7 @@ lancestat(Chan *c, char *dp) Chan* lanceopen(Chan *c, int omode) { - switch(c->qid.path){ - case CHDIR: - case Lstatsqid: - if(omode != OREAD) - error(Eperm); - break; - default: - streamopen(c, &lanceinfo); - break; - } - c->mode = openmode(omode); - c->flag |= COPEN; - c->offset = 0; - return c; + return netopen(c, omode, &l.net); } void @@ -599,20 +562,7 @@ lanceclose(Chan *c) long lanceread(Chan *c, void *a, long n, ulong offset) { - char buf[256]; - - switch(c->qid.path){ - case CHDIR: - return devdirread(c, a, n, lancedir, Ndir, devgen); - case Lstatsqid: - sprint(buf, "in: %d\nout: %d\ncrc errs %d\noverflows: %d\nframe errs %d\nbuff errs: %d\noerrs %d\naddr: %.02x:%.02x:%.02x:%.02x:%.02x:%.02x\n", - l.inpackets, l.outpackets, l.crcs, - l.overflows, l.frames, l.buffs, l.oerrs, - l.ea[0], l.ea[1], l.ea[2], l.ea[3], l.ea[4], l.ea[5]); - return stringread(c, a, n, buf, offset); - default: - return streamread(c, a, n); - } + return netread(c, a, n, offset, &l.net); } long @@ -633,6 +583,49 @@ lancewstat(Chan *c, char *dp) error(Eperm); } +/* + * user level network interface routines + */ +static void +lancestatsfill(Chan *c, char* p, int n) +{ + char buf[256]; + + sprint(buf, "in: %d\nout: %d\ncrc errs %d\noverflows: %d\nframe errs %d\nbuff errs: %d\noerrs %d\naddr: %.02x:%.02x:%.02x:%.02x:%.02x:%.02x\n", + l.inpackets, l.outpackets, l.crcs, + l.overflows, l.frames, l.buffs, l.oerrs, + l.ea[0], l.ea[1], l.ea[2], l.ea[3], l.ea[4], l.ea[5]); + strncpy(p, buf, n); +} +static void +lancetypefill(Chan *c, char* p, int n) +{ + char buf[16]; + Ethertype *e; + + e = &l.e[STREAMID(c->qid.path)]; + sprint(buf, "%d", e->type); + strncpy(p, buf, n); +} + +static int +lanceclonecon(Chan *c) +{ + Ethertype *e; + + for(e = l.e; e < &l.e[Ntypes]; e++){ + qlock(e); + if(e->inuse || e->q){ + qunlock(e); + continue; + } + e->inuse = 1; + qunlock(e); + return e - l.e; + } + errors("no unused lance channels"); +} + /* * We will: * (1) Clear interrupt cause in the lance diff --git a/port/devmux.c b/port/devmux.c new file mode 100644 index 0000000000000000000000000000000000000000..3d5a3c2311d334546d82fba6b04fbecf0a7ef5a7 --- /dev/null +++ b/port/devmux.c @@ -0,0 +1,550 @@ +#include "u.h" +#include "lib.h" +#include "mem.h" +#include "dat.h" +#include "fns.h" +#include "errno.h" +#include "fcall.h" + +#include "devtab.h" + +typedef struct Mux Mux; +typedef struct Con Con; +typedef struct Dtq Dtq; + +enum +{ + Qdir = 0, + Qhead, + Qclone, +}; + +enum +{ + Nmux = 20, +}; + +struct Dtq +{ + QLock rd; + Rendez r; + Lock listlk; + Block *list; + int ndelim; +}; + +struct Con +{ + int ref; + char user[NAMELEN]; + ulong perm; + Dtq conq; +}; + +struct Mux +{ + Ref; + char name[NAMELEN]; + char user[NAMELEN]; + ulong perm; + int headopen; + Dtq headq; + Con connects[Nmux]; +}; + +Mux *muxes; + +ulong muxreadq(Mux *m, Dtq*, char*, ulong); +void muxwriteq(Dtq*, char*, long, int, int); + +#define NMUX(c) (((c->qid.path>>8)&0xffff)-1) +#define NQID(m, c) (Qid){(m)<<8|(c)&0xff, 0} +#define NCON(c) (c->qid.path&0xff) + +int +muxgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp) +{ + Mux *m; + int mux; + Con *cm; + char buf[10]; + + if(c->qid.path == CHDIR) { + if(s >= conf.nmux) + return -1; + + m = &muxes[s]; + if(m->name[0] == '\0') + return 0; + devdir(c, (Qid){CHDIR|((s+1)<<8), 0}, m->name, 0, m->user, m->perm, dp); + return 1; + } + + if(s >= Nmux+2) + return -1; + + mux = NMUX(c); + m = &muxes[mux]; + switch(s) { + case Qhead: + devdir(c, NQID(mux, Qhead), "head", m->headq.ndelim, m->user, m->perm, dp); + break; + case Qclone: + devdir(c, NQID(mux, Qclone), "clone", 0, m->user, m->perm, dp); + break; + default: + cm = &m->connects[s-Qclone]; + if(cm->ref == 0) + return 0; + sprint(buf, "%d", s-Qclone); + devdir(c, NQID(mux, Qclone+s), buf, cm->conq.ndelim, cm->user, cm->perm, dp); + break; + } + return 1; +} + +void +muxinit(void) +{ +} + +void +muxreset(void) +{ + muxes = ialloc(conf.nmux*sizeof(Mux), 0); +} + +Chan * +muxattach(char *spec) +{ + Chan *c; + + c = devattach('m', spec); + + c->qid.path = CHDIR|Qdir; + return c; +} + +Chan * +muxclone(Chan *c, Chan *nc) +{ + int ncon; + Mux *m; + + if(c->qid.path == CHDIR) + return devclone(c, nc);; + + m = &muxes[NMUX(c)]; + ncon = NCON(c); + + c = devclone(c, nc); + switch(ncon) { + case Qhead: + incref(m); + break; + case Qclone: + break; + default: + lock(m); + m->connects[ncon].ref++; + m->ref++; + unlock(m); + } + return c; +} + +int +muxwalk(Chan *c, char *name) +{ + if(strcmp(name, "..") == 0) { + c->qid.path = CHDIR|Qdir; + return 1; + } + + return devwalk(c, name, 0, 0, muxgen); +} + +void +muxstat(Chan *c, char *db) +{ + devstat(c, db, 0, 0, muxgen); +} + +Chan * +muxopen(Chan *c, int omode) +{ + Mux *m; + Con *cm, *e; + + if(c->qid.path & CHDIR) + return devopen(c, omode, 0, 0, muxgen); + + m = &muxes[NMUX(c)]; + switch(NCON(c)) { + case Qhead: + if(m->headopen) + errors("server channel busy"); + + c = devopen(c, omode, 0, 0,muxgen); + m->headopen = 1; + incref(m); + break; + case Qclone: + if(m->headopen == 0) + errors("server shutdown"); + + c = devopen(c, omode, 0, 0, muxgen); + lock(m); + cm = m->connects; + for(e = &cm[Nmux]; cm < e; cm++) + if(cm->ref == 0) + break; + if(cm == e) { + unlock(m); + errors("all cannels busy"); + } + cm->ref++; + m->ref++; + unlock(m); + strncpy(cm->user, u->p->user, NAMELEN); + cm->perm = 0600; + c->qid = NQID(NMUX(c), cm-m->connects); + break; + default: + c = devopen(c, omode, 0, 0,muxgen); + cm = &m->connects[NCON(c)]; + cm->ref++; + incref(m); + break; + } + + return c; +} + +void +muxcreate(Chan *c, char *name, int omode, ulong perm) +{ + int n; + Mux *m, *e; + + if(c->qid.path != CHDIR) + error(Eperm); + + omode = openmode(omode); + + m = muxes; + for(e = &m[conf.nmux]; m < e; m++) { + if(m->ref == 0 && canlock(m)) { + if(m->ref != 0) { + unlock(m); + continue; + } + m->ref++; + break; + } + } + + if(m == e) + errors("no multiplexors"); + + strncpy(m->name, name, NAMELEN); + strncpy(m->user, u->p->user, NAMELEN); + m->perm = perm&~CHDIR; + unlock(m); + + n = m - muxes; + c->qid = (Qid){CHDIR|(n+1)<<8, 0}; + c->flag |= COPEN; + c->mode = omode; +} + +void +muxremove(Chan *c) +{ + Mux *m; + + if(c->qid.path == CHDIR || (c->qid.path&CHDIR) == 0) + error(Eperm); + + m = &muxes[NMUX(c)]; + if(strcmp(u->p->user, m->user) != 0) + errors("not owner"); + + m->name[0] = '\0'; +} + +void +muxwstat(Chan *c, char *db) +{ + Mux *m; + Dir d; + int nc; + + if(c->qid.path == CHDIR) + error(Eperm); + + m = &muxes[NMUX(c)]; + if(strcmp(u->p->user, m->user) != 0) + errors("not owner"); + + convM2D(db, &d); + d.mode &= 0777; + if(c->qid.path&CHDIR) { + strcpy(m->name, d.name); + strcpy(m->user, d.uid); + m->perm = d.mode; + return; + } + nc = NCON(c); + switch(nc) { + case Qclone: + error(Eperm); + case Qhead: + m->perm = d.mode; + break; + default: + m->connects[nc].perm = d.mode; + break; + } +} + +void +muxclose(Chan *c) +{ + Block *f1, *f2; + Con *cm, *e; + Mux *m; + int nc; + + if(c->qid.path == CHDIR) + return; + + m = &muxes[NMUX(c)]; + nc = NCON(c); + f1 = 0; + f2 = 0; + switch(nc) { + case Qhead: + m->headopen = 0; + cm = m->connects; + for(e = &cm[Nmux]; cm < e; cm++) + if(cm->ref) + wakeup(&cm->conq.r); + lock(m); + if(--m->ref == 0) { + f1 = m->headq.list; + m->headq.list = 0; + } + unlock(m); + break; + case Qclone: + panic("muxclose"); + default: + lock(m); + cm = &m->connects[nc]; + if(--cm->ref == 0) { + f1 = cm->conq.list; + cm->conq.list = 0; + } + if(--m->ref == 0) { + m->name[0] = '\0'; + f2 = m->headq.list; + m->headq.list = 0; + } + unlock(m); + } + if(f1) + freeb(f1); + if(f2) + freeb(f2); +} + +long +muxread(Chan *c, void *va, long n, ulong offset) +{ + Mux *m; + Con *cm; + int bread; + + if(c->qid.path & CHDIR) + return devdirread(c, va, n, 0, 0, muxgen); + + m = &muxes[NMUX(c)]; + switch(NCON(c)) { + case Qhead: + bread = muxreadq(m, &m->headq, va, n); + break; + case Qclone: + error(Eperm); + default: + cm = &m->connects[NCON(c)]; + bread = muxreadq(m, &cm->conq, va, n); + break; + } + + return bread; +} + +Con * +muxhdr(Mux *m, char *h) +{ + Con *c; + + if(h[0] != Tmux) + error(Ebadmsg); + + c = &m->connects[h[1]]; + if(c < m->connects || c > &m->connects[Nmux]) + error(Ebadmsg); + + if(c->ref == 0) + return 0; + + return c; +} + +long +muxwrite(Chan *c, void *va, long n, ulong offset) +{ + Mux *m; + Con *cm; + int muxid; + Block *f, *bp; + char *a, hdr[2]; + + if(c->qid.path & CHDIR) + error(Eisdir); + + m = &muxes[NMUX(c)]; + switch(NCON(c)) { + case Qclone: + error(Eperm); + case Qhead: + if(n < 2) + error(Ebadmsg); + + a = (char*)va; + memmove(hdr, a, sizeof(hdr)); + cm = muxhdr(m, hdr); + if(cm == 0) + error(Ehungup); + + muxwriteq(&cm->conq, a+sizeof(hdr), n-sizeof(hdr), 0, 0); + break; + default: + if(m->headopen == 0) + error(Ehungup); + + muxid = NCON(c); + muxwriteq(&m->headq, va, n, 1, muxid); + break; + } + + return n; +} + +void +muxwriteq(Dtq *q, char *va, long n, int addid, int muxid) +{ + Block *head, *tail, *bp; + ulong l; + + head = 0; + SET(tail); + if(waserror()) { + if(head) + freeb(head); + nexterror(); + } + + while(n) { + bp = allocb(n); + bp->type = M_DATA; + l = bp->lim - bp->wptr; + memmove(bp->wptr, va, l); /* Interruptable thru fault */ + va += l; + bp->wptr += l; + n -= l; + if(head == 0) + head = bp; + else + tail->next = bp; + tail = bp; + } + poperror(); + tail->flags |= S_DELIM; + lock(&q->listlk); + for(tail = q->list; tail->next; tail = tail->next) + ; + tail->next = head; + q->ndelim++; + unlock(&q->listlk); +} + +int +nodata(Dtq *q) +{ + int n; + + lock(&q->listlk); + n = q->ndelim; + unlock(&q->listlk); + return n; +} + +ulong +muxreadq(Mux *m, Dtq *q, char *va, ulong n) +{ + int l, nread, gotdelim; + Block *bp; + + qlock(&q->rd); + bp = 0; + if(waserror()) { + qunlock(&q->rd); + lock(&q->listlk); + if(bp) { + bp->next = q->list; + q->list = bp; + } + unlock(&q->listlk); + nexterror(); + } + while(nodata(q)) + sleep(&q->r, nodata, q); + + if(m->headopen == 0) + errors("server shutdown"); + + nread = 0; + while(n) { + lock(&q->listlk); + bp = q->list; + q->list = bp->next; + bp->next = 0; + unlock(&q->listlk); + + l = BLEN(bp); + if(n < l) + n = l; + memmove(va, bp->rptr, l); /* Interruptable thru fault */ + va += l; + bp->rptr += l; + n -= l; + gotdelim = bp->flags&S_DELIM; + lock(&q->listlk); + if(bp->rptr != bp->wptr) { + bp->next = q->list; + q->list = bp; + } + else if(gotdelim) + q->ndelim--; + unlock(&q->listlk); + if(bp->rptr == bp->wptr) + freeb(bp); + if(gotdelim) + break; + } + qunlock(&q->rd); + return nread; +} diff --git a/port/devnonet.c b/port/devnonet.c index e54330387289451a93cbf2addc04f19e1458c652..aabe9c397f8873e1cecde834330f4e8d32201601 100644 --- a/port/devnonet.c +++ b/port/devnonet.c @@ -1477,7 +1477,7 @@ nokproc(void *arg) } nonetfreeifc(ifc); } - tsleep(&nonetkr, return0, 0, MSrexmit/2); + tsleep(&nonetkr, return0, 0, MSrexmit); } } diff --git a/port/ipdat.h b/port/ipdat.h index 59a421a07802626332a6852071e236d02eb8d642..dfb9571f713252d90919441ded4c38987c6adc96 100644 --- a/port/ipdat.h +++ b/port/ipdat.h @@ -361,6 +361,7 @@ struct Ipifc int maxmtu; /* Maximum transfer unit */ int minmtu; /* Minumum tranfer unit */ int hsize; /* Media header size */ + Network net; Lock; }; @@ -479,9 +480,12 @@ void ilstart(Ipconv *, int, int); void tcpflow(void*); void tcp_timeout(void *); void tcp_acktimer(void *); -Ipconv *ipclonecon(Chan *); -void iplisten(Chan *, Ipconv *, Ipconv *); +int ipclonecon(Chan *); +int iplisten(Chan *); void iloutoforder(Ipconv*, Ilhdr*, Block*); +void iplocalfill(Chan*, char*, int); +void ipremotefill(Chan*, char*, int); +void ipstatusfill(Chan*, char*, int); #define fmtaddr(xx) (xx>>24)&0xff,(xx>>16)&0xff,(xx>>8)&0xff,xx&0xff #define MIN(a, b) ((a) < (b) ? (a) : (b)) diff --git a/port/net.c b/port/net.c index b97f78fae42646abcbe80446717b7f6dfbf2fdd8..2275132dc9079e26863ddb29c2810f3c95fe78ce 100644 --- a/port/net.c +++ b/port/net.c @@ -43,13 +43,13 @@ netgen(Chan *c, void *vp, int ntab, int i, Dir *dp) } /* second level contains clone plus all the conversations */ - if(STREAMID(c->qid.path) == 0){ + if(STREAMTYPE(c->qid.path) == Q2nd){ if(i == 0){ q.path = Qclone; devdir(c, q, "clone", 0, eve, 0666, dp); - }else if(i < np->nconv){ - q.path = CHDIR|STREAMQID(i, Q3rd); - sprint(buf, "%d", i); + }else if(i <= np->nconv){ + q.path = CHDIR|STREAMQID(i-1, Q3rd); + sprint(buf, "%d", i-1); devdir(c, q, buf, 0, eve, 0666, dp); }else return -1; diff --git a/power/boot.c b/power/boot.c index cdd1f1af79051750939c1a4c3b4a80bbbc7b7871..90ea7bb25c556bbe77897ddcb10dbc7395f27cc1 100644 --- a/power/boot.c +++ b/power/boot.c @@ -126,9 +126,9 @@ nonetdial(char *arg) * grab a lance channel, make it recognize ether type 0x900, * and push the nonet ethernet multiplexor onto it. */ - efd = open("#l/1/ctl", ORDWR); + efd = open("#l/ether/0/ctl", ORDWR); if(efd < 0){ - prerror("opening #l/1/ctl"); + prerror("opening #l/ether/0/ctl"); return -1; } if(write(efd, "connect 0x900", sizeof("connect 0x900")-1)<0){ @@ -255,7 +255,7 @@ hotdial(char *arg) /* * use /dev; it's local */ - if(mount(fd, "/dev", MREPL, "", "") < 0) + if(mount(fd, "/dev", MREPL, "", "", -1) < 0) error("mount"); switch(fork()){ case 0: @@ -388,7 +388,7 @@ boot(int ask) print("mount..."); if(bind("/", "/", MREPL) < 0) error("bind"); - if(mount(fd, "/", MAFTER|MCREATE, "", "") < 0) + if(mount(fd, "/", MAFTER|MCREATE, "", "", -1) < 0) error("mount"); settime(); @@ -503,7 +503,7 @@ settime(void) f = open("#s/boot", ORDWR); if(f < 0) return; - if(mount(f, "/n/boot", MREPL, "", "") < 0){ + if(mount(f, "/n/boot", MREPL, "", "", -1) < 0){ close(f); return; } diff --git a/power/boot.h b/power/boot.h index dc7ed4637de17d0c6c74e018257b38a9b8865180..f74ed9b0e7f3e367fa90576ed8232a88b63296d4 100644 --- a/power/boot.h +++ b/power/boot.h @@ -1,7 +1,7 @@ ulong bootcode[]={ 0x000000407, - 0x000005c38, - 0x000000710, + 0x000005c50, + 0x000000718, 0x000001390, 0x000000000, 0x000001020, @@ -17,7 +17,7 @@ ulong bootcode[]={ 0x0afa10004, 0x00c000416, 0x0afa20008, - 0x00c000914, + 0x00c00091a, 0x0afa10004, 0x008000412, 0x000000027, @@ -26,17 +26,17 @@ ulong bootcode[]={ 0x0afa0000c, 0x023c28255, 0x0afa20004, - 0x00c000a6b, + 0x00c000a71, 0x0afa00008, 0x023c3825d, 0x0afa30004, 0x020020001, - 0x00c000a6b, + 0x00c000a71, 0x0afa20008, 0x023c38265, 0x0afa30004, 0x020020001, - 0x00c000a6b, + 0x00c000a71, 0x0afa20008, 0x08fa3001c, 0x000000027, @@ -68,61 +68,61 @@ ulong bootcode[]={ 0x023c38026, 0x0afa30004, 0x023c2826d, - 0x00c0009f4, + 0x00c0009fa, 0x0afa20008, - 0x023c39a12, + 0x023c39a1a, 0x0afa30004, 0x023c28278, - 0x00c0009f4, + 0x00c0009fa, 0x0afa20008, 0x08fa5001c, 0x08fa30018, 0x020020001, 0x010620029, - 0x023c49a12, + 0x023c49a1a, 0x020020002, 0x010620019, 0x000000027, 0x08fa3000c, - 0x00c000707, + 0x00c000709, 0x0afa30004, 0x08fc48006, 0x000000027, 0x018800003, 0x000000027, - 0x00c000a53, + 0x00c000a59, 0x0afa40004, 0x08fc2801a, 0x000000027, 0x018400004, 0x000000027, 0x08fc3801a, - 0x00c000a53, + 0x00c000a59, 0x0afa30004, 0x0afc0801a, 0x0afc08006, 0x020030001, - 0x00c000707, + 0x00c000709, 0x0afa30004, 0x08fc48006, 0x008000459, 0x000000027, 0x0afa40004, 0x08ca20000, - 0x00c0009f4, + 0x00c0009fa, 0x0afa20008, 0x023c38026, 0x0afa30004, 0x08fa2001c, 0x000000027, 0x08c420004, - 0x00c0009f4, + 0x00c0009fa, 0x0afa20008, 0x008000454, 0x000000027, 0x0afa40004, 0x08ca20000, - 0x00c0009f4, + 0x00c0009fa, 0x0afa20008, 0x008000454, 0x000000027, @@ -131,7 +131,7 @@ ulong bootcode[]={ 0x023c28280, 0x0afa20004, 0x020030002, - 0x00c000a6b, + 0x00c000a71, 0x0afa30008, 0x08fa20000, 0x000000027, @@ -149,7 +149,7 @@ ulong bootcode[]={ 0x000000027, 0x0afa20004, 0x08fa40028, - 0x00c0009e1, + 0x00c0009e7, 0x0afa40008, 0x08fa50014, 0x0142000a5, @@ -160,7 +160,7 @@ ulong bootcode[]={ 0x014400008, 0x000000027, 0x023c38288, - 0x00c00093f, + 0x00c000945, 0x0afa30004, 0x08fa20000, 0x023bd0024, @@ -173,12 +173,12 @@ ulong bootcode[]={ 0x023c282b6, 0x0afa20004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x004210008, 0x000000027, - 0x023c382bf, - 0x00c0007fc, + 0x023c382c5, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0024, @@ -186,54 +186,54 @@ ulong bootcode[]={ 0x02001ffff, 0x0afa10020, 0x0afa10004, - 0x023c482d0, + 0x023c482dc, 0x0afa40008, 0x02003000d, - 0x00c000a7f, + 0x00c000a85, 0x0afa3000c, 0x08fa50020, 0x00421000a, 0x000000027, - 0x00c000a53, + 0x00c000a59, 0x0afa50004, - 0x023c382de, - 0x00c0007fc, + 0x023c382ea, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0024, 0x000400008, 0x02001ffff, 0x0afa50004, - 0x023c482ec, + 0x023c482f8, 0x0afa40008, 0x02003000c, - 0x00c000a7f, + 0x00c000a85, 0x0afa3000c, 0x08fa50020, 0x00421000a, 0x000000027, - 0x00c000a53, + 0x00c000a59, 0x0afa50004, - 0x023c382f9, - 0x00c0007fc, + 0x023c38305, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0024, 0x000400008, 0x02001ffff, 0x0afa50004, - 0x023c48306, + 0x023c48312, 0x0afa40008, 0x02003000c, - 0x00c000a7f, + 0x00c000a85, 0x0afa3000c, 0x00421000b, 0x000000027, 0x08fa20020, - 0x00c000a53, + 0x00c000a59, 0x0afa20004, - 0x023c38313, - 0x00c0007fc, + 0x023c3831f, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0024, @@ -241,33 +241,33 @@ ulong bootcode[]={ 0x02001ffff, 0x020020001, 0x0afc28042, - 0x023c28320, + 0x023c2832c, 0x0afa20004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x004210008, 0x0afa10018, - 0x023c3832f, - 0x00c0007fc, + 0x023c3833b, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0024, 0x000400008, 0x02001ffff, - 0x023c38346, + 0x023c38352, 0x0afa30004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x00421000c, 0x0afa1001c, 0x08fa20018, - 0x00c000a53, + 0x00c000a59, 0x0afa20004, - 0x023c28354, + 0x023c28360, 0x0afa20004, - 0x00c0007fc, + 0x00c000800, 0x02003ffff, 0x08fa20000, 0x023bd0024, @@ -276,7 +276,7 @@ ulong bootcode[]={ 0x08fa40014, 0x000000027, 0x08c840004, - 0x00c000a33, + 0x00c000a39, 0x0afa40004, 0x0afa10010, 0x08fa4001c, @@ -288,30 +288,30 @@ ulong bootcode[]={ 0x000000027, 0x0afa20008, 0x08fa40010, - 0x00c000a7f, + 0x00c000a85, 0x0afa4000c, 0x004210012, 0x000000027, 0x08fa2001c, - 0x00c000a53, + 0x00c000a59, 0x0afa20004, 0x08fa30018, - 0x00c000a53, + 0x00c000a59, 0x0afa30004, 0x08fa30014, 0x000000027, 0x08c630004, 0x000000027, 0x0afa30004, - 0x00c0007fc, + 0x00c000800, 0x02002ffff, 0x08fa20000, 0x023bd0024, 0x000400008, 0x02001ffff, - 0x023c2836a, + 0x023c28376, 0x0afc28022, - 0x023c38370, + 0x023c3837c, 0x0afc38106, 0x08fa10018, 0x08fa20000, @@ -326,51 +326,51 @@ ulong bootcode[]={ 0x000000027, 0x014400038, 0x000000027, - 0x023c28378, + 0x023c28384, 0x0afa20004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x004210008, 0x0afc1801e, - 0x023c3837f, - 0x00c0007fc, + 0x023c3838b, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0058, 0x000400008, 0x02001ffff, 0x0afa10004, - 0x023c4838e, + 0x023c4839a, 0x0afa40008, 0x02003000a, - 0x00c000a7f, + 0x00c000a85, 0x0afa3000c, 0x08fc5801e, 0x00421000a, 0x000000027, - 0x00c000a53, + 0x00c000a59, 0x0afa50004, - 0x023c38399, - 0x00c0007fc, + 0x023c383a5, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0058, 0x000400008, 0x02001ffff, 0x0afa50004, - 0x023c483a4, + 0x023c483b0, 0x0afa40008, 0x020030017, - 0x00c000a7f, + 0x00c000a85, 0x0afa3000c, 0x00421000b, 0x000000027, 0x08fc2801e, - 0x00c000a53, + 0x00c000a59, 0x0afa20004, - 0x023c383bc, - 0x00c0007fc, + 0x023c383c8, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0058, @@ -379,35 +379,35 @@ ulong bootcode[]={ 0x020020001, 0x0afc280ce, 0x0200307d0, - 0x00c000a73, + 0x00c000a79, 0x0afa30004, - 0x023c383d4, + 0x023c383e0, 0x0afa30004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x004210008, 0x0afa10054, - 0x023c283e1, - 0x00c0007fc, + 0x023c283ed, + 0x00c000800, 0x0afa20004, 0x08fa20000, 0x023bd0058, 0x000400008, 0x02001ffff, - 0x023c283f6, + 0x023c28402, 0x0afa20004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x00421000c, 0x0afc1801a, 0x08fa30054, - 0x00c000a53, + 0x00c000a59, 0x0afa30004, - 0x023c38402, + 0x023c3840e, 0x0afa30004, - 0x00c0007fc, + 0x00c000800, 0x02002ffff, 0x08fa20000, 0x023bd0058, @@ -415,13 +415,13 @@ ulong bootcode[]={ 0x02001ffff, 0x023a20014, 0x0afa20004, - 0x023c38416, + 0x023c38422, 0x0afa30008, 0x08fa2005c, - 0x00c000989, + 0x00c00098f, 0x0afa2000c, 0x023a40014, - 0x00c000a33, + 0x00c000a39, 0x0afa40004, 0x0afa10010, 0x08fc4801a, @@ -429,174 +429,176 @@ ulong bootcode[]={ 0x0afa40004, 0x0afa20008, 0x08fa40010, - 0x00c000a7f, + 0x00c000a85, 0x0afa4000c, 0x004210010, 0x000000027, 0x08fc2801a, - 0x00c000a53, + 0x00c000a59, 0x0afa20004, 0x08fa30054, - 0x00c000a53, + 0x00c000a59, 0x0afa30004, 0x02002ffff, 0x0afc2801a, 0x023a30014, - 0x00c0007fc, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0058, 0x000400008, 0x02001ffff, - 0x023c28421, + 0x023c2842d, 0x0afc28022, - 0x023c38424, + 0x023c38430, 0x0afc38106, 0x08fa10054, 0x08fa20000, 0x000000027, 0x000400008, 0x023bd0058, - 0x023bdff2c, + 0x023bdff28, 0x0afbf0000, - 0x08fa300d8, + 0x08fa300dc, 0x00c000541, 0x0afa30004, 0x004210005, 0x000000027, 0x08fa20000, - 0x023bd00d4, + 0x023bd00d8, 0x000400008, 0x02001ffff, - 0x0afa100d0, - 0x00c000627, + 0x0afa100d4, + 0x00c000629, 0x0afa10004, - 0x08fa500d0, + 0x08fa500d4, 0x014200007, 0x000000027, - 0x00c000a53, + 0x00c000a59, 0x0afa50004, 0x08fa20000, - 0x023bd00d4, + 0x023bd00d8, 0x000400008, 0x02001ffff, 0x0afa50004, - 0x023c48427, + 0x023c48433, 0x0afa40008, 0x0afa0000c, - 0x023c2842c, + 0x023c28438, 0x0afa20010, - 0x023c4842d, - 0x00c000a67, + 0x023c48439, 0x0afa40014, + 0x02002ffff, + 0x00c000a6d, + 0x0afa20018, 0x004210004, 0x000000027, - 0x023c2842e, - 0x00c00080e, - 0x0afa20004, - 0x00c000a63, + 0x023c3843a, + 0x00c000812, + 0x0afa30004, + 0x00c000a69, 0x000000027, - 0x02003ffff, - 0x01023002f, + 0x02002ffff, + 0x01022002f, 0x000000027, 0x010200022, 0x000000027, - 0x023a20018, - 0x00c000a7b, - 0x0afa20004, - 0x083a3002c, + 0x023a3001c, + 0x00c000a81, + 0x0afa30004, + 0x083a20030, 0x000000027, - 0x010600005, + 0x010400005, 0x000000027, - 0x023a20018, - 0x024420014, - 0x00c00080e, - 0x0afa20004, - 0x020030002, - 0x0afa30004, - 0x023c2847e, - 0x00c000964, - 0x0afa20008, - 0x020030bb8, - 0x00c000a73, + 0x023a3001c, + 0x024630014, + 0x00c000812, 0x0afa30004, 0x020020002, 0x0afa20004, - 0x023c3848f, - 0x00c000964, + 0x023c3848a, + 0x00c00096a, 0x0afa30008, - 0x023c2849e, + 0x020020bb8, + 0x00c000a79, 0x0afa20004, 0x020030002, - 0x00c000a6b, - 0x0afa30008, + 0x0afa30004, + 0x023c2849b, + 0x00c00096a, + 0x0afa20008, + 0x023c384aa, + 0x0afa30004, + 0x020020002, + 0x00c000a71, + 0x0afa20008, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd00d4, - 0x023c38434, - 0x0afa30004, - 0x023c2844d, - 0x0afa20008, - 0x023c38458, - 0x0afa3000c, - 0x00c000a3f, - 0x0afa00010, - 0x023c28468, - 0x00c00080e, + 0x023bd00d8, + 0x023c28440, 0x0afa20004, - 0x023c38479, - 0x00c00080e, + 0x023c38459, + 0x0afa30008, + 0x023c28464, + 0x0afa2000c, + 0x00c000a45, + 0x0afa00010, + 0x023c38474, + 0x00c000812, 0x0afa30004, - 0x0080005f6, + 0x023c28485, + 0x00c000812, + 0x0afa20004, + 0x0080005f8, 0x000000027, 0x023bdffe0, 0x0afbf0000, - 0x023c284a8, - 0x00c00093f, - 0x0afa20004, - 0x020030032, - 0x0a3c39712, - 0x03402ffff, - 0x0a7c29716, - 0x023c29712, - 0x0afa20004, - 0x023c48712, - 0x00c000e1e, - 0x0afa40008, - 0x08fa30024, - 0x023c48712, + 0x023c384b4, + 0x00c000945, + 0x0afa30004, + 0x020020032, + 0x0a3c2971a, + 0x03403ffff, + 0x0a7c3971e, + 0x023c3971a, 0x0afa30004, + 0x023c4871a, + 0x00c000e24, + 0x0afa40008, + 0x08fa20024, + 0x023c4871a, + 0x0afa20004, 0x0afa40008, 0x0afa1001c, - 0x00c000a7f, + 0x00c000a85, 0x0afa1000c, 0x08fa5001c, 0x000000027, 0x01025000c, 0x000000027, - 0x023c284af, + 0x023c284bb, 0x0afa20004, - 0x00c00093f, + 0x00c000945, 0x0afa50008, - 0x023c284b7, - 0x00c0007fc, + 0x023c284c3, + 0x00c000800, 0x0afa20004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, 0x08fa20024, - 0x023c48712, + 0x023c4871a, 0x0afa20004, 0x0afa40008, 0x020021000, - 0x00c000a6f, + 0x00c000a75, 0x0afa2000c, 0x01c200008, 0x000000027, - 0x023c384c1, - 0x00c0007fc, + 0x023c384cd, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0020, @@ -605,166 +607,166 @@ ulong bootcode[]={ 0x020030002, 0x014230003, 0x000000027, - 0x00800064b, + 0x00800064d, 0x000000027, - 0x023c38712, + 0x023c3871a, 0x0afa30004, - 0x023c49712, + 0x023c4971a, 0x0afa40008, 0x0afa1001c, - 0x00c000b1c, + 0x00c000b22, 0x0afa1000c, 0x014200022, 0x000000027, - 0x023c284ca, + 0x023c284d6, 0x0afa20004, 0x08fa3001c, 0x000000027, 0x0afa30008, - 0x083c28712, + 0x083c2871a, 0x000000027, 0x000021600, 0x000021603, 0x0afa2000c, - 0x083c38713, + 0x083c3871b, 0x000000027, 0x000031e00, 0x000031e03, 0x0afa30010, - 0x083c28714, + 0x083c2871c, 0x000000027, 0x000021600, 0x000021603, 0x0afa20014, - 0x083c38715, + 0x083c3871d, 0x000000027, 0x000031e00, 0x000031e03, - 0x00c00093f, + 0x00c000945, 0x0afa30018, - 0x023c284ed, - 0x00c0007fc, + 0x023c284f9, + 0x00c000800, 0x0afa20004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x083c39712, + 0x083c3971a, 0x020020033, 0x010620008, 0x000000027, - 0x023c384f8, - 0x00c0007fc, + 0x023c38504, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x097c29716, + 0x097c2971e, 0x03403ffff, 0x010430008, 0x000000027, - 0x023c28501, - 0x00c0007fc, + 0x023c2850d, + 0x00c000800, 0x0afa20004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x023c3850f, - 0x00c00093f, + 0x023c3851b, + 0x00c000945, 0x0afa30004, 0x020020034, - 0x0a3c29712, + 0x0a3c2971a, 0x03403ffff, - 0x0a7c39716, - 0x023c39712, + 0x0a7c3971e, + 0x023c3971a, 0x0afa30004, - 0x023c48712, - 0x00c000e1e, + 0x023c4871a, + 0x00c000e24, 0x0afa40008, 0x08fa20024, - 0x023c48712, + 0x023c4871a, 0x0afa20004, 0x0afa40008, 0x0afa1001c, - 0x00c000a7f, + 0x00c000a85, 0x0afa1000c, 0x08fa4001c, 0x000000027, 0x010240008, 0x000000027, - 0x023c2851a, - 0x00c0007fc, + 0x023c28526, + 0x00c000800, 0x0afa20004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, 0x08fa20024, - 0x023c48712, + 0x023c4871a, 0x0afa20004, 0x0afa40008, 0x020021000, - 0x00c000a6f, + 0x00c000a75, 0x0afa2000c, 0x01c200008, 0x000000027, - 0x023c38528, - 0x00c0007fc, + 0x023c38534, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x023c38712, + 0x023c3871a, 0x0afa30004, - 0x023c49712, + 0x023c4971a, 0x0afa40008, - 0x00c000b1c, + 0x00c000b22, 0x0afa1000c, 0x014200008, 0x000000027, - 0x023c28535, - 0x00c0007fc, + 0x023c28541, + 0x00c000800, 0x0afa20004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x097c39716, + 0x097c3971e, 0x03402ffff, 0x010620008, 0x000000027, - 0x023c38544, - 0x00c0007fc, + 0x023c38550, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x083c29712, + 0x083c2971a, 0x020030037, 0x01443000d, 0x000000027, 0x020020002, 0x0afa20004, - 0x023c38552, + 0x023c3855e, 0x0afa30008, - 0x023c29712, + 0x023c2971a, 0x024420008, - 0x00c000964, + 0x00c00096a, 0x0afa2000c, 0x08fa20000, 0x023bd0020, 0x000400008, 0x000000825, - 0x083c39712, + 0x083c3971a, 0x020020035, 0x010620008, 0x000000027, - 0x023c38562, - 0x00c0007fc, + 0x023c3856e, + 0x00c000800, 0x0afa30004, 0x08fa20000, 0x023bd0020, @@ -774,264 +776,266 @@ ulong bootcode[]={ 0x023bd0020, 0x000400008, 0x020010001, - 0x023bdff98, + 0x023bdff94, 0x0afbf0000, 0x08fc68006, - 0x08fa2006c, + 0x08fa20070, 0x000000027, 0x01040000a, 0x000000027, - 0x023c3856f, + 0x023c3857b, 0x0afa30004, 0x023c28026, 0x0afa20008, 0x02003001c, - 0x00c000822, + 0x00c000826, 0x0afa3000c, 0x08fc68006, 0x000000027, 0x000002825, 0x028a20005, 0x010400012, - 0x0afa5005c, + 0x0afa50060, 0x02002ffff, 0x0afc28006, 0x023c28026, 0x0afa20004, - 0x023c48576, + 0x023c48582, 0x0afa40008, 0x020020004, - 0x00c0009a1, + 0x00c0009a7, 0x0afa2000c, - 0x0142000ac, + 0x0142000ae, 0x023c58026, 0x024a20004, 0x00c00047f, 0x0afa20004, 0x000013025, - 0x004c0009c, + 0x004c0009e, 0x0afc68006, 0x004c10008, 0x000000027, - 0x023c285a7, - 0x00c00093f, + 0x023c285b3, + 0x00c000945, 0x0afa20004, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0068, - 0x00c000627, + 0x023bd006c, + 0x00c000629, 0x0afa60004, 0x014200005, 0x000000027, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0068, - 0x023c385b6, + 0x023bd006c, + 0x023c385c2, 0x0afa30004, 0x08fc28006, - 0x00c00084e, + 0x00c000852, 0x0afa20008, - 0x023c385bb, + 0x023c385c7, 0x0afa30004, 0x08fc28006, - 0x00c00084e, + 0x00c000852, 0x0afa20008, - 0x023c385c2, - 0x00c00093f, + 0x023c385ce, + 0x00c000945, 0x0afa30004, - 0x023c385cb, + 0x023c385d7, 0x0afa30004, - 0x023c485cd, + 0x023c485d9, 0x0afa40008, - 0x00c000a4f, + 0x00c000a55, 0x0afa0000c, 0x004210004, 0x000000027, - 0x023c285cf, - 0x00c00080e, + 0x023c285db, + 0x00c000812, 0x0afa20004, 0x08fc28006, - 0x023c485d4, + 0x023c485e0, 0x0afa20004, 0x0afa40008, 0x020020006, 0x0afa2000c, - 0x023c485d6, + 0x023c485e2, 0x0afa40010, - 0x023c285d7, - 0x00c000a67, + 0x023c285e3, 0x0afa20014, + 0x02004ffff, + 0x00c000a6d, + 0x0afa40018, 0x004210004, 0x000000027, - 0x023c385d8, - 0x00c00080e, - 0x0afa30004, - 0x00c000891, - 0x000000027, - 0x023c285de, - 0x00c00093f, + 0x023c285e4, + 0x00c000812, 0x0afa20004, + 0x00c000895, + 0x000000027, + 0x023c385ea, + 0x00c000945, + 0x0afa30004, 0x08fc58022, - 0x08fc38106, + 0x08fc28106, 0x000000027, - 0x01060001d, + 0x01040001d, 0x000000027, - 0x023a20018, - 0x0afa20004, - 0x023c385e7, - 0x0afa30008, - 0x00c000989, + 0x023a3001c, + 0x0afa30004, + 0x023c285f3, + 0x0afa20008, + 0x00c00098f, 0x0afa5000c, - 0x08fc28106, - 0x023c485ef, - 0x0afa20004, - 0x00c0009e1, + 0x08fc38106, + 0x023c485fb, + 0x0afa30004, + 0x00c0009e7, 0x0afa40008, 0x08fc58106, 0x014200044, 0x000000027, 0x0afa50004, - 0x023c385f2, + 0x023c385fe, 0x0afa30008, 0x020020001, - 0x00c000a4f, + 0x00c000a55, 0x0afa2000c, - 0x023a30018, + 0x023a3001c, 0x0afa30004, - 0x023c285f7, + 0x023c28603, 0x0afa20008, - 0x00c000a4f, + 0x00c000a55, 0x0afa0000c, 0x08fc58022, 0x000000027, 0x010a00012, 0x000000027, - 0x023a20018, + 0x023a2001c, 0x0afa20004, - 0x023c38600, + 0x023c3860c, 0x0afa30008, - 0x00c000989, + 0x00c00098f, 0x0afa5000c, - 0x023c38610, + 0x023c3861c, 0x0afa30004, - 0x023a20018, - 0x00c00093f, + 0x023a2001c, + 0x00c000945, 0x0afa20008, - 0x023a30018, + 0x023a3001c, 0x0afa30004, - 0x023c28632, + 0x023c2863e, 0x0afa20008, - 0x00c000a4f, + 0x00c000a55, 0x0afa0000c, - 0x08fa3006c, + 0x08fa30070, 0x000000027, 0x010600010, 0x000000027, - 0x023c28643, + 0x023c2864f, 0x0afa20004, - 0x023c3864e, + 0x023c3865a, 0x0afa30008, - 0x023c28653, + 0x023c2865f, 0x0afa2000c, - 0x00c000a3f, + 0x00c000a45, 0x0afa00010, - 0x023c2866a, - 0x00c00080e, + 0x023c28676, + 0x00c000812, 0x0afa20004, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0068, - 0x023c38657, + 0x023bd006c, + 0x023c38663, 0x0afa30004, - 0x023c28662, + 0x023c2866e, 0x0afa20008, - 0x023c38667, + 0x023c38673, 0x0afa3000c, - 0x00c000a3f, + 0x00c000a45, 0x0afa00010, - 0x023c2866a, - 0x00c00080e, + 0x023c28676, + 0x00c000812, 0x0afa20004, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0068, + 0x023bd006c, 0x0afa50004, - 0x023a20018, + 0x023a2001c, 0x0afa20008, - 0x00c000a4f, + 0x00c000a55, 0x0afa0000c, - 0x008000783, + 0x008000787, 0x000000027, - 0x023c3858b, - 0x00c00093f, + 0x023c38597, + 0x00c000945, 0x0afa30004, 0x0200203e8, - 0x00c000a73, + 0x00c000a79, 0x0afa20004, 0x08fc68006, - 0x08fa2005c, - 0x008000718, + 0x08fa20060, + 0x00800071a, 0x024450001, 0x0afa50004, - 0x023c4857b, + 0x023c48587, 0x0afa40008, 0x020030004, - 0x00c0009a1, + 0x00c0009a7, 0x0afa3000c, 0x014200006, 0x023c58026, 0x024a30004, 0x00c0005ca, 0x0afa30004, - 0x00800072a, + 0x00800072c, 0x000013025, 0x0afa50004, - 0x023c48580, + 0x023c4858c, 0x0afa40008, 0x020020003, - 0x00c0009a1, + 0x00c0009a7, 0x0afa2000c, 0x014200006, 0x023c58026, 0x024a20003, 0x00c000541, 0x0afa20004, - 0x00800072a, + 0x00800072c, 0x000013025, 0x0afa50004, - 0x023c48584, + 0x023c48590, 0x0afa40008, 0x020030006, - 0x00c0009a1, + 0x00c0009a7, 0x0afa3000c, 0x014200006, 0x023c58026, 0x024a30006, 0x00c00048a, 0x0afa30004, - 0x00800072a, + 0x00800072c, 0x000013025, 0x00c00048a, 0x0afa50004, - 0x00800072a, + 0x00800072c, 0x000013025, 0x023bdffac, 0x0afbf0000, 0x023a30014, - 0x00c000a5b, + 0x00c000a61, 0x0afa30004, 0x020020002, 0x0afa20004, - 0x023c38675, + 0x023c38681, 0x0afa30008, 0x08fa20058, 0x023a30014, 0x0afa2000c, - 0x00c000964, + 0x00c00096a, 0x0afa30010, 0x08fa20000, 0x000000027, @@ -1040,18 +1044,18 @@ ulong bootcode[]={ 0x023bdffac, 0x0afbf0000, 0x023a20014, - 0x00c000a5b, + 0x00c000a61, 0x0afa20004, 0x020030002, 0x0afa30004, - 0x023c28683, + 0x023c2868f, 0x0afa20008, 0x08fa30058, 0x023a20014, 0x0afa3000c, - 0x00c000964, + 0x00c00096a, 0x0afa20010, - 0x00c000923, + 0x00c000929, 0x0afa00004, 0x08fa20000, 0x000000027, @@ -1059,28 +1063,28 @@ ulong bootcode[]={ 0x023bd0054, 0x023bdfeec, 0x0afbf0000, - 0x023c28691, + 0x023c2869d, 0x0afa20004, 0x08fa30118, 0x000000027, 0x0afa30008, 0x08fa2011c, - 0x00c00093f, + 0x00c000945, 0x0afa2000c, 0x0afa00004, 0x023a20010, 0x0afa20008, 0x08fa40120, - 0x00c000a6f, + 0x00c000a75, 0x0afa4000c, 0x014200003, 0x000012825, - 0x008000824, + 0x008000828, 0x000000027, 0x004210006, 0x0afa10110, - 0x023c3869a, - 0x00c00080e, + 0x023c386a6, + 0x00c000812, 0x0afa30004, 0x08fa50110, 0x000000027, @@ -1093,7 +1097,7 @@ ulong bootcode[]={ 0x08fa2011c, 0x023a30010, 0x0afa20004, - 0x00c0009f4, + 0x00c0009fa, 0x0afa30008, 0x08fa50110, 0x000000027, @@ -1106,160 +1110,162 @@ ulong bootcode[]={ 0x08fa30024, 0x02004002f, 0x0afa30004, - 0x00c0009c1, + 0x00c0009c7, 0x0afa40008, 0x010200038, 0x000000027, 0x024250001, - 0x023c28712, + 0x023c2871a, 0x0afa20004, - 0x023c386bc, + 0x023c386c8, 0x0afa30008, - 0x00c000989, + 0x00c00098f, 0x0afa5000c, - 0x023c28712, + 0x023c2871a, 0x0afa20004, 0x020040001, 0x0afa40008, 0x0200201b6, - 0x00c000a57, + 0x00c000a5d, 0x0afa2000c, 0x004210004, 0x0afa10018, - 0x023c386c2, - 0x00c00080e, + 0x023c386ce, + 0x00c000812, 0x0afa30004, - 0x023c28712, + 0x023c2871a, 0x0afa20004, - 0x023c386c9, + 0x023c386d5, 0x0afa30008, 0x08fa20028, - 0x00c000989, + 0x00c00098f, 0x0afa2000c, - 0x023c38712, - 0x00c000a33, + 0x023c3871a, + 0x00c000a39, 0x0afa30004, 0x0afa10014, - 0x023c48712, - 0x00c000a33, + 0x023c4871a, + 0x00c000a39, 0x0afa40004, 0x0afa10010, 0x08fa40018, - 0x023c38712, + 0x023c3871a, 0x0afa40004, 0x0afa30008, 0x08fa40010, - 0x00c000a7f, + 0x00c000a85, 0x0afa4000c, 0x08fa30014, 0x000000027, 0x010230004, 0x000000027, - 0x023c286cc, - 0x00c00080e, + 0x023c286d8, + 0x00c000812, 0x0afa20004, 0x08fa30018, - 0x00c000a53, + 0x00c000a59, 0x0afa30004, 0x08fa20000, 0x000000027, 0x000400008, 0x023bd0020, 0x08fa50024, - 0x008000858, + 0x00800085c, 0x000000027, - 0x023bdfefc, + 0x023bdfef8, 0x0afbf0000, - 0x023c286d2, - 0x00c00093f, + 0x023c286de, + 0x00c000945, 0x0afa20004, - 0x023c286da, + 0x023c286e6, 0x0afa20004, 0x020040002, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, 0x004210005, 0x000000027, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0104, - 0x0afa10018, + 0x023bd0108, + 0x0afa1001c, 0x0afa10004, - 0x023c486e2, + 0x023c486ee, 0x0afa40008, 0x0afa0000c, - 0x023c286ea, + 0x023c286f6, 0x0afa20010, - 0x023c486eb, - 0x00c000a67, + 0x023c486f7, 0x0afa40014, - 0x08fa50018, + 0x02002ffff, + 0x00c000a6d, + 0x0afa20018, + 0x08fa5001c, 0x004210007, 0x000000027, - 0x00c000a53, + 0x00c000a59, 0x0afa50004, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0104, - 0x00c000a53, + 0x023bd0108, + 0x00c000a59, 0x0afa50004, - 0x023c386ec, - 0x0afa30004, - 0x023a40090, - 0x00c000a77, + 0x023c286f8, + 0x0afa20004, + 0x023a40094, + 0x00c000a7d, 0x0afa40008, 0x004210004, 0x000000027, - 0x023c286f4, - 0x00c00080e, + 0x023c28700, + 0x00c000812, 0x0afa20004, - 0x023a30090, + 0x023a30094, 0x0afa30004, - 0x023a2001c, - 0x00c000a83, + 0x023a20020, + 0x00c000a89, 0x0afa20008, - 0x023a30090, + 0x023a30094, 0x0afa30004, - 0x023c286f9, + 0x023c28705, 0x0afa20008, - 0x08fa3007c, - 0x00c000989, + 0x08fa30080, + 0x00c00098f, 0x0afa3000c, 0x0afa00004, - 0x023c286fd, - 0x00c0011e4, + 0x023c28709, + 0x00c0011ea, 0x0afa20008, - 0x023c28705, + 0x023c28711, 0x0afa20004, 0x020040001, - 0x00c000a6b, + 0x00c000a71, 0x0afa40008, - 0x0afa10018, - 0x023a30090, - 0x00c000a33, + 0x0afa1001c, + 0x023a30094, + 0x00c000a39, 0x0afa30004, - 0x0afa10014, - 0x08fa30018, - 0x023a20090, + 0x0afa10018, + 0x08fa3001c, + 0x023a20094, 0x0afa30004, 0x0afa20008, - 0x08fa30014, - 0x00c000a7f, + 0x08fa30018, + 0x00c000a85, 0x0afa3000c, - 0x08fa20018, - 0x00c000a53, + 0x08fa2001c, + 0x00c000a59, 0x0afa20004, 0x08fa20000, 0x000000027, 0x000400008, - 0x023bd0104, + 0x023bd0108, 0x023bdfff8, 0x000002825, 0x028a20021, 0x010400011, - 0x023c6998e, + 0x023c69996, 0x000051080, 0x000461021, 0x08c420000, @@ -1284,7 +1290,7 @@ ulong bootcode[]={ 0x000002025, 0x028820021, 0x01040000d, - 0x023c5998e, + 0x023c59996, 0x000041080, 0x000451021, 0x08c420000, @@ -1305,10 +1311,10 @@ ulong bootcode[]={ 0x000000027, 0x014400003, 0x000000027, - 0x00c000923, + 0x00c000929, 0x0afa00004, 0x023c38046, - 0x00c000923, + 0x00c000929, 0x0afa30004, 0x08fa20000, 0x000000027, @@ -1316,7 +1322,7 @@ ulong bootcode[]={ 0x023bd0008, 0x023bdfff0, 0x0afbf0000, - 0x023c6998e, + 0x023c69996, 0x020040020, 0x004800010, 0x000000027, @@ -1332,11 +1338,11 @@ ulong bootcode[]={ 0x000a0f809, 0x0ac400000, 0x08fa4000c, - 0x023c6998e, - 0x008000927, + 0x023c69996, + 0x00800092d, 0x02484ffff, 0x08fa30014, - 0x00c000a4b, + 0x00c000a51, 0x0afa30004, 0x08fa20000, 0x000000027, @@ -1352,14 +1358,14 @@ ulong bootcode[]={ 0x023a41020, 0x0afa3000c, 0x024840004, - 0x00c001257, + 0x00c00125d, 0x0afa40010, 0x023a6001c, 0x020020001, 0x0afa20004, 0x0afa60008, 0x000261023, - 0x00c000a7f, + 0x00c000a85, 0x0afa2000c, 0x0afa10014, 0x00421000c, @@ -1371,7 +1377,7 @@ ulong bootcode[]={ 0x014400006, 0x0afc38002, 0x023c2800a, - 0x00c000923, + 0x00c000929, 0x0afa20004, 0x08fa50014, 0x000000027, @@ -1389,14 +1395,14 @@ ulong bootcode[]={ 0x023a41024, 0x0afa3000c, 0x024840004, - 0x00c001257, + 0x00c00125d, 0x0afa40010, 0x08fa21020, 0x023a6001c, 0x0afa20004, 0x0afa60008, 0x000261023, - 0x00c000a7f, + 0x00c000a85, 0x0afa2000c, 0x0afa10014, 0x00421000c, @@ -1408,7 +1414,7 @@ ulong bootcode[]={ 0x014400006, 0x0afc38002, 0x023c2800a, - 0x00c000923, + 0x00c000929, 0x0afa20004, 0x08fa50014, 0x000000027, @@ -1428,7 +1434,7 @@ ulong bootcode[]={ 0x023a40024, 0x0afa2000c, 0x024840004, - 0x00c001257, + 0x00c00125d, 0x0afa40010, 0x08fa20014, 0x000000027, @@ -1480,7 +1486,7 @@ ulong bootcode[]={ 0x014400008, 0x000000027, 0x0afa50004, - 0x00c001867, + 0x00c00186d, 0x0afa00008, 0x08fa20000, 0x000000027, @@ -1492,12 +1498,12 @@ ulong bootcode[]={ 0x000000027, 0x000042600, 0x000042603, - 0x00c001867, + 0x00c00186d, 0x0afa40008, 0x010200004, 0x000000027, 0x0afa1000c, - 0x0080009d0, + 0x0080009d6, 0x024250001, 0x08fa1000c, 0x08fa20000, @@ -1591,7 +1597,7 @@ ulong bootcode[]={ 0x08fa20010, 0x000000027, 0x0afa20004, - 0x00c001867, + 0x00c00186d, 0x0afa00008, 0x08fa30010, 0x08fa20000, @@ -1604,7 +1610,7 @@ ulong bootcode[]={ 0x023a30010, 0x0afa20004, 0x024630004, - 0x00c000a5f, + 0x00c000a65, 0x0afa30008, 0x08fa20000, 0x000000027, @@ -1675,7 +1681,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x08fa3001c, @@ -1685,7 +1691,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x08fa3001c, @@ -1695,7 +1701,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa5001c, 0x08fa20010, @@ -1890,10 +1896,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x020020040, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, - 0x008000b4f, + 0x008000b55, 0x024650040, 0x020020038, 0x010620031, @@ -1921,7 +1927,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x08fa3001c, @@ -1931,7 +1937,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x08fa3001c, @@ -1941,10 +1947,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, - 0x008000b4f, + 0x008000b55, 0x02445001c, 0x090a30000, 0x090a20001, @@ -1953,7 +1959,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c30008, 0x090a20000, 0x090a30001, @@ -1994,7 +2000,7 @@ ulong bootcode[]={ 0x000031e00, 0x000431025, 0x024a50004, - 0x008000b4f, + 0x008000b55, 0x0acc20010, 0x02002003f, 0x00043202a, @@ -2028,10 +2034,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, - 0x008000b4f, + 0x008000b55, 0x02445001c, 0x090a20000, 0x090a30001, @@ -2040,7 +2046,7 @@ ulong bootcode[]={ 0x000031a00, 0x000431025, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c20002, 0x090a30000, 0x090a20001, @@ -2057,7 +2063,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c3000c, 0x090a20000, 0x090a30001, @@ -2098,7 +2104,7 @@ ulong bootcode[]={ 0x000031e00, 0x000431025, 0x024a50004, - 0x008000b4f, + 0x008000b55, 0x0acc20010, 0x020020040, 0x01062005b, @@ -2126,7 +2132,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa6001c, 0x08fa20010, @@ -2150,7 +2156,7 @@ ulong bootcode[]={ 0x024a20004, 0x024450001, 0x080420000, - 0x008000b4f, + 0x008000b55, 0x0a0c2002a, 0x090a20000, 0x090a30001, @@ -2191,7 +2197,7 @@ ulong bootcode[]={ 0x000031e00, 0x000431025, 0x024a50004, - 0x008000b4f, + 0x008000b55, 0x0acc20010, 0x090a30000, 0x090a20001, @@ -2203,7 +2209,7 @@ ulong bootcode[]={ 0x024a20002, 0x024450001, 0x080420000, - 0x008000b4f, + 0x008000b55, 0x0a0c2002a, 0x090a20000, 0x090a30001, @@ -2244,7 +2250,7 @@ ulong bootcode[]={ 0x000031e00, 0x000431025, 0x024a50004, - 0x008000b4f, + 0x008000b55, 0x0acc20010, 0x02002004c, 0x00043202a, @@ -2289,7 +2295,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0acc3000c, 0x090a30000, 0x090a20001, @@ -2326,7 +2332,7 @@ ulong bootcode[]={ 0x024450001, 0x0acc50010, 0x08cc2000c, - 0x008000b4f, + 0x008000b55, 0x000a22821, 0x090a20000, 0x090a30001, @@ -2347,7 +2353,7 @@ ulong bootcode[]={ 0x024650001, 0x0acc50010, 0x08cc3000c, - 0x008000b4f, + 0x008000b55, 0x000a32821, 0x090a30000, 0x090a20001, @@ -2380,7 +2386,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0acc3000c, 0x090a20000, 0x090a30001, @@ -2389,7 +2395,7 @@ ulong bootcode[]={ 0x000031a00, 0x000431025, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c20002, 0x020020049, 0x01062001d, @@ -2411,7 +2417,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c30002, 0x090a20000, 0x090a30001, @@ -2420,7 +2426,7 @@ ulong bootcode[]={ 0x000031a00, 0x000431025, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c20002, 0x090a30000, 0x090a20001, @@ -2429,7 +2435,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c30002, 0x090a20000, 0x090a30001, @@ -2438,7 +2444,7 @@ ulong bootcode[]={ 0x000031a00, 0x000431025, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c20002, 0x020020050, 0x00043202a, @@ -2466,7 +2472,7 @@ ulong bootcode[]={ 0x000021200, 0x000621825, 0x024a50002, - 0x008000b4f, + 0x008000b55, 0x0a4c30002, 0x090a20000, 0x090a30001, @@ -2481,10 +2487,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x020020074, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, - 0x008000b4f, + 0x008000b55, 0x024650074, 0x090a30000, 0x090a20001, @@ -2499,10 +2505,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x020030074, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, - 0x008000b4f, + 0x008000b55, 0x024450074, 0x090a20000, 0x090a30001, @@ -2525,10 +2531,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02002001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, - 0x008000b4f, + 0x008000b55, 0x02465001c, 0x020020051, 0x01062fe27, @@ -2556,10 +2562,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02002001e, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, - 0x008000b4f, + 0x008000b55, 0x02465001e, 0x090a30000, 0x090a20001, @@ -2574,7 +2580,7 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x08fa3001c, @@ -2584,10 +2590,10 @@ ulong bootcode[]={ 0x0afa50010, 0x0afa50008, 0x020030024, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, - 0x008000b4f, + 0x008000b55, 0x024450024, 0x023bdffec, 0x0afbf0000, @@ -2651,7 +2657,7 @@ ulong bootcode[]={ 0x024a30008, 0x0afa30008, 0x020020040, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, 0x08fa2001c, @@ -2688,7 +2694,7 @@ ulong bootcode[]={ 0x024a20008, 0x0afa20008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x02003001c, @@ -2699,7 +2705,7 @@ ulong bootcode[]={ 0x000000027, 0x024420024, 0x0afa20008, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x02003001c, @@ -2710,7 +2716,7 @@ ulong bootcode[]={ 0x000000027, 0x024420040, 0x0afa20008, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x000000027, @@ -2816,7 +2822,7 @@ ulong bootcode[]={ 0x024a2000e, 0x0afa20008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x000000027, @@ -2942,7 +2948,7 @@ ulong bootcode[]={ 0x024a2000e, 0x0afa20008, 0x02003001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa70018, 0x08fa20010, @@ -3179,7 +3185,7 @@ ulong bootcode[]={ 0x000000027, 0x0afa20008, 0x08ca3000c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20018, 0x08fa30010, @@ -3216,7 +3222,7 @@ ulong bootcode[]={ 0x000000027, 0x0afa20008, 0x08ca3000c, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20018, 0x08fa30010, @@ -3414,7 +3420,7 @@ ulong bootcode[]={ 0x024a30008, 0x0afa30008, 0x020020074, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, 0x08fa2001c, @@ -3438,7 +3444,7 @@ ulong bootcode[]={ 0x024a20008, 0x0afa20008, 0x020030074, - 0x00c0019af, + 0x00c0019b5, 0x0afa3000c, 0x08fa20010, 0x000000027, @@ -3473,7 +3479,7 @@ ulong bootcode[]={ 0x024a3000e, 0x0afa30008, 0x02002001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, 0x08fa2001c, @@ -3510,7 +3516,7 @@ ulong bootcode[]={ 0x024a30024, 0x0afa30008, 0x02002001e, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, 0x08fa2001c, @@ -3534,7 +3540,7 @@ ulong bootcode[]={ 0x024a30008, 0x0afa30008, 0x02002001c, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, 0x020020024, @@ -3545,7 +3551,7 @@ ulong bootcode[]={ 0x000000027, 0x024630024, 0x0afa30008, - 0x00c0019af, + 0x00c0019b5, 0x0afa2000c, 0x08fa30010, 0x08fa2001c, @@ -3565,63 +3571,63 @@ ulong bootcode[]={ 0x0afa20004, 0x0afa00008, 0x0200300a0, - 0x00c00191a, + 0x00c001920, 0x0afa3000c, 0x023c68112, 0x020050001, 0x000051880, 0x000661821, 0x03c040000, - 0x034845534, + 0x03484554c, 0x0ac640000, + 0x0a3c597c1, + 0x0a3c597c3, 0x0a3c597b9, - 0x0a3c597bb, - 0x0a3c597b1, - 0x0a3c597f6, - 0x0a3c597fa, - 0x0a3c59803, + 0x0a3c597fe, + 0x0a3c59802, + 0x0a3c5980b, 0x024a50001, 0x000051880, 0x000661821, 0x03c040000, - 0x034844dac, + 0x034844dc4, 0x0ac640000, - 0x0a3c597f2, - 0x0a3c597fd, - 0x0a3c59806, - 0x0a3c597e6, + 0x0a3c597fa, + 0x0a3c59805, + 0x0a3c5980e, + 0x0a3c597ee, 0x024a50001, 0x000051880, 0x000661821, 0x03c040000, - 0x03484561c, + 0x034845634, 0x0ac640000, - 0x0a3c597f3, - 0x0a3c597f4, - 0x0a3c597f5, - 0x0a3c597d3, - 0x0a3c597d5, + 0x0a3c597fb, + 0x0a3c597fc, + 0x0a3c597fd, + 0x0a3c597db, + 0x0a3c597dd, 0x024a50001, 0x000051080, 0x000461021, 0x03c040000, - 0x034845460, + 0x034845478, 0x0ac440000, - 0x0a3c597f1, + 0x0a3c597f9, 0x024a50001, 0x000051080, 0x000461021, 0x03c040000, - 0x0348454b4, + 0x0348454cc, 0x0ac440000, - 0x0a3c59801, + 0x0a3c59809, 0x024a50001, 0x000051080, 0x000461021, 0x03c040000, - 0x034845504, + 0x03484551c, 0x0ac440000, - 0x0a3c597b3, + 0x0a3c597bb, 0x024a30001, 0x0afc3808e, 0x08fa20000, @@ -3635,7 +3641,7 @@ ulong bootcode[]={ 0x000000027, 0x014a00006, 0x000000027, - 0x00c0011e8, + 0x00c0011ee, 0x000000027, 0x08fa60008, 0x08fc5808e, @@ -3657,7 +3663,7 @@ ulong bootcode[]={ 0x08fa4000c, 0x000621821, 0x0ac640000, - 0x023c2978e, + 0x023c29796, 0x000461021, 0x0a0450000, 0x024a20001, @@ -3698,7 +3704,7 @@ ulong bootcode[]={ 0x0afa60044, 0x0afa60004, 0x023a40020, - 0x00c001a53, + 0x00c001a59, 0x0afa40008, 0x08fa30020, 0x000012825, @@ -3735,15 +3741,15 @@ ulong bootcode[]={ 0x000000027, 0x024430001, 0x0afc3805e, - 0x008001267, + 0x00800126d, 0x0a0450000, 0x08fc3805e, 0x000000027, 0x0afa30004, - 0x00c001a1d, + 0x00c001a23, 0x0afa50008, 0x08fa60044, - 0x008001267, + 0x00800126d, 0x0afc1805e, 0x02003fc18, 0x0afa30034, @@ -3761,7 +3767,7 @@ ulong bootcode[]={ 0x000000027, 0x0afa60004, 0x023a40020, - 0x00c001a53, + 0x00c001a59, 0x0afa40008, 0x08fa30020, 0x000012825, @@ -3770,7 +3776,7 @@ ulong bootcode[]={ 0x000433021, 0x014a00003, 0x0afa60044, - 0x008001267, + 0x00800126d, 0x024c6ffff, 0x02003002e, 0x014a30008, @@ -3780,7 +3786,7 @@ ulong bootcode[]={ 0x014430002, 0x000000027, 0x0afa00034, - 0x0080012a7, + 0x0080012ad, 0x0afa00030, 0x028a30031, 0x014600026, @@ -3803,11 +3809,11 @@ ulong bootcode[]={ 0x000000027, 0x014a0ffe2, 0x0afa70034, - 0x008001267, + 0x00800126d, 0x024c6ffff, 0x014a0ffde, 0x0afa70030, - 0x008001267, + 0x00800126d, 0x024c6ffff, 0x02003000a, 0x000e30018, @@ -3820,7 +3826,7 @@ ulong bootcode[]={ 0x000000027, 0x000052e00, 0x000052e03, - 0x0080012cf, + 0x0080012d5, 0x02447ffd0, 0x020020030, 0x014a20007, @@ -3829,7 +3835,7 @@ ulong bootcode[]={ 0x02002fc18, 0x010620003, 0x000000027, - 0x0080012ce, + 0x0080012d4, 0x000000027, 0x02003002a, 0x014a3000e, @@ -3843,9 +3849,9 @@ ulong bootcode[]={ 0x02003fc18, 0x014430003, 0x000000027, - 0x0080012a7, + 0x0080012ad, 0x0afa50034, - 0x0080012a7, + 0x0080012ad, 0x0afa50030, 0x004a00004, 0x000003025, @@ -3876,34 +3882,34 @@ ulong bootcode[]={ 0x08fa4002c, 0x000011823, 0x000832025, - 0x0080012a7, + 0x0080012ad, 0x0afa4002c, 0x08fa20048, 0x000000027, 0x000411021, - 0x008001267, + 0x00800126d, 0x0afa20048, - 0x023c2978e, + 0x023c29796, 0x000453021, 0x080c60000, 0x000000027, 0x000063600, 0x000063603, - 0x00800130d, + 0x008001313, 0x000000027, 0x024c60001, 0x014a0ff87, 0x0afa60044, - 0x008001267, + 0x00800126d, 0x024c6ffff, - 0x00800128a, + 0x008001290, 0x0afc080e2, 0x08fc380e2, 0x000000027, 0x024630008, 0x0201cfff8, 0x0007c1824, - 0x00800128a, + 0x008001290, 0x0afc380e2, 0x08fc2805e, 0x000000027, @@ -3920,7 +3926,7 @@ ulong bootcode[]={ 0x000400008, 0x023bd0038, 0x024c60001, - 0x00800127b, + 0x008001281, 0x0afa60044, 0x023bdfff0, 0x0afbf0000, @@ -3938,13 +3944,13 @@ ulong bootcode[]={ 0x0afa30004, 0x0afa40008, 0x08fa3001c, - 0x00c001446, + 0x00c00144c, 0x0afa3000c, 0x08fa20000, 0x000000027, 0x000400008, 0x023bd0010, - 0x00800135e, + 0x008001364, 0x000042023, 0x023bdffa8, 0x0afbf0000, @@ -4037,7 +4043,7 @@ ulong bootcode[]={ 0x02002fc18, 0x0afa30008, 0x0afa2000c, - 0x00c001353, + 0x00c001359, 0x0afa70010, 0x08fa10028, 0x08fa20000, @@ -4056,12 +4062,12 @@ ulong bootcode[]={ 0x024a5ffff, 0x001651021, 0x020040030, - 0x0080013ba, + 0x0080013c0, 0x0a0440000, 0x024a5ffff, 0x001651021, 0x020040078, - 0x0080013d6, + 0x0080013dc, 0x0a0440000, 0x030e30040, 0x01060001e, @@ -4083,27 +4089,27 @@ ulong bootcode[]={ 0x000000027, 0x01d200003, 0x000000027, - 0x0080013ab, + 0x0080013b1, 0x000000027, 0x01d000003, 0x000000027, - 0x0080013ab, + 0x0080013b1, 0x000000027, 0x030e20040, 0x01440ffa0, 0x024a5ffff, 0x0010a001b, - 0x0080013a0, + 0x0080013a6, 0x000003010, 0x0010a001b, - 0x0080013e7, + 0x0080013ed, 0x000004012, 0x0200d0001, - 0x008001398, + 0x00800139e, 0x000084023, 0x08ca80000, 0x020030004, - 0x008001393, + 0x008001399, 0x0afa30028, 0x08ca20000, 0x000000027, @@ -4115,15 +4121,15 @@ ulong bootcode[]={ 0x000031c03, 0x020020004, 0x0afa20028, - 0x008001393, + 0x008001399, 0x000034025, 0x08ca80000, 0x020030004, - 0x008001393, + 0x008001399, 0x0afa30028, 0x08ca80000, 0x020030004, - 0x008001393, + 0x008001399, 0x0afa30028, 0x020030030, 0x01043000a, @@ -4131,11 +4137,11 @@ ulong bootcode[]={ 0x020030048, 0x010430003, 0x000000027, - 0x008001390, + 0x008001396, 0x000000027, 0x08ca90000, 0x020030004, - 0x008001393, + 0x008001399, 0x0afa30028, 0x08ca30000, 0x000000027, @@ -4145,14 +4151,14 @@ ulong bootcode[]={ 0x03042ffff, 0x020030004, 0x0afa30028, - 0x008001393, + 0x008001399, 0x000024025, - 0x008001380, + 0x008001386, 0x0200a000a, 0x0200e0001, - 0x008001380, + 0x008001386, 0x0200a0010, - 0x008001380, + 0x008001386, 0x0200a0008, 0x020030075, 0x011430006, @@ -4160,10 +4166,10 @@ ulong bootcode[]={ 0x020030078, 0x01143fff7, 0x000000027, - 0x008001380, + 0x008001386, 0x000000027, 0x0200a000a, - 0x008001380, + 0x008001386, 0x034e70020, 0x023bdffe8, 0x0afbf0000, @@ -4190,7 +4196,7 @@ ulong bootcode[]={ 0x000000027, 0x0afa80004, 0x023a4000c, - 0x00c001a53, + 0x00c001a59, 0x0afa40008, 0x08fac0020, 0x08fcb80de, @@ -4229,7 +4235,7 @@ ulong bootcode[]={ 0x0a0440000, 0x0254a0001, 0x024a50001, - 0x008001479, + 0x00800147f, 0x0afca80e2, 0x024a50001, 0x02002fc18, @@ -4237,7 +4243,7 @@ ulong bootcode[]={ 0x0afa50014, 0x01d200003, 0x000000027, - 0x008001454, + 0x00800145a, 0x000000027, 0x000eb202b, 0x010800009, @@ -4262,19 +4268,19 @@ ulong bootcode[]={ 0x010c30004, 0x000000027, 0x0254a0001, - 0x008001454, + 0x00800145a, 0x0afca80e2, 0x0afc080e2, - 0x008001454, + 0x00800145a, 0x000005025, 0x025430008, 0x0201cfff8, 0x0007c5024, - 0x008001454, + 0x00800145a, 0x0afca80e2, 0x0afa70004, 0x0afa60010, - 0x00c001a1d, + 0x00c001a23, 0x0afa60008, 0x08fac0020, 0x08fcb80de, @@ -4284,12 +4290,12 @@ ulong bootcode[]={ 0x08fa60010, 0x08fa50014, 0x0afc1805e, - 0x00800149b, + 0x0080014a1, 0x000013825, 0x025080001, - 0x00800146d, + 0x008001473, 0x0afa8001c, - 0x00c001aef, + 0x00c001af5, 0x0afa80004, 0x08fac0020, 0x08fcb80de, @@ -4311,7 +4317,7 @@ ulong bootcode[]={ 0x0a0440000, 0x0254a0001, 0x024a50001, - 0x0080014cb, + 0x0080014d1, 0x0afca80e2, 0x023bdffd8, 0x0afbf0000, @@ -4319,7 +4325,7 @@ ulong bootcode[]={ 0x000000027, 0x014400028, 0x000000027, - 0x00c0011e8, + 0x00c0011ee, 0x000000027, 0x08fa4003c, 0x000000027, @@ -4350,26 +4356,26 @@ ulong bootcode[]={ 0x000000027, 0x000400008, 0x023bd0028, - 0x023c3978e, + 0x023c39796, 0x000642821, 0x080a50000, 0x000000027, 0x000052e00, 0x000052e03, - 0x0080014e9, + 0x0080014ef, 0x000000027, 0x023a20018, 0x0afa20004, 0x023c380ee, 0x0afa30008, 0x08fa2003c, - 0x00c000989, + 0x00c00098f, 0x0afa2000c, 0x023a30018, 0x0afa30004, 0x0afa00008, 0x02002fc18, - 0x00c001446, + 0x00c00144c, 0x0afa2000c, 0x08fa20000, 0x023bd0028, @@ -4382,7 +4388,7 @@ ulong bootcode[]={ 0x08fa40020, 0x000000027, 0x08c840000, - 0x00c001a1d, + 0x00c001a23, 0x0afa40008, 0x0a0200000, 0x023a20010, @@ -4390,7 +4396,7 @@ ulong bootcode[]={ 0x08fa30024, 0x02002fc18, 0x0afa30008, - 0x00c001446, + 0x00c00144c, 0x0afa2000c, 0x08fa20000, 0x023bd001c, @@ -4410,7 +4416,7 @@ ulong bootcode[]={ 0x000000027, 0x0afa3000c, 0x08fa20024, - 0x00c001353, + 0x00c001359, 0x0afa20010, 0x08fa20000, 0x023bd0014, @@ -4497,7 +4503,7 @@ ulong bootcode[]={ 0x0e7a6004c, 0x0e7a70004, 0x0e7a60008, - 0x00c001956, + 0x00c00195c, 0x000000027, 0x01020000e, 0x000000027, @@ -4508,7 +4514,7 @@ ulong bootcode[]={ 0x0afa30008, 0x0afa2000c, 0x08fa300b0, - 0x00c001353, + 0x00c001359, 0x0afa30010, 0x08fa20000, 0x023bd00a0, @@ -4519,7 +4525,7 @@ ulong bootcode[]={ 0x020030001, 0x0e7a10004, 0x0e7a00008, - 0x00c001986, + 0x00c00198c, 0x0afa3000c, 0x01020000e, 0x000000027, @@ -4530,7 +4536,7 @@ ulong bootcode[]={ 0x0afa30008, 0x0afa2000c, 0x08fa300b0, - 0x00c001353, + 0x00c001359, 0x0afa30010, 0x08fa20000, 0x023bd00a0, @@ -4541,7 +4547,7 @@ ulong bootcode[]={ 0x02003ffff, 0x0e7a10004, 0x0e7a00008, - 0x00c001986, + 0x00c00198c, 0x0afa3000c, 0x08fad00b4, 0x08fac00ac, @@ -4555,7 +4561,7 @@ ulong bootcode[]={ 0x0afa30008, 0x0afa2000c, 0x08fa300b0, - 0x00c001353, + 0x00c001359, 0x0afa30010, 0x08fa20000, 0x023bd00a0, @@ -4599,7 +4605,7 @@ ulong bootcode[]={ 0x023a20034, 0x0e7a10004, 0x0e7a00008, - 0x00c001893, + 0x00c001899, 0x0afa2000c, 0x08fa20034, 0x04444f800, @@ -4623,7 +4629,7 @@ ulong bootcode[]={ 0x000023043, 0x0afa60030, 0x000061023, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x0c7a30048, 0x0c7a2004c, @@ -4635,7 +4641,7 @@ ulong bootcode[]={ 0x08fa30034, 0x000000027, 0x000431023, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x08fad00b4, 0x023ae0078, @@ -4658,7 +4664,7 @@ ulong bootcode[]={ 0x08fa30034, 0x000000027, 0x000431023, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x08fad00b4, 0x08fac00ac, @@ -4667,7 +4673,7 @@ ulong bootcode[]={ 0x0c7a2003c, 0x000000027, 0x046201182, - 0x008001627, + 0x00800162d, 0x023ae0078, 0x0c7c180e6, 0x0c7c080ea, @@ -4684,7 +4690,7 @@ ulong bootcode[]={ 0x08fa30034, 0x000000027, 0x000431023, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x08fad00b4, 0x08fac00ac, @@ -4693,7 +4699,7 @@ ulong bootcode[]={ 0x0c7a2003c, 0x000000027, 0x046201182, - 0x00800163e, + 0x008001644, 0x023ae0078, 0x02003fc18, 0x015830002, @@ -4728,7 +4734,7 @@ ulong bootcode[]={ 0x0200cffff, 0x0afac00ac, 0x0200d0065, - 0x0080015eb, + 0x0080015f1, 0x0afad00b4, 0x0c7a70048, 0x0c7a6004c, @@ -4742,7 +4748,7 @@ ulong bootcode[]={ 0x08fa30034, 0x02002ffff, 0x000431023, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x08fad00b4, 0x023ae0078, @@ -4764,7 +4770,7 @@ ulong bootcode[]={ 0x000671823, 0x004600134, 0x0afa7002c, - 0x00c00183e, + 0x00c001844, 0x0afa30004, 0x0c7a30040, 0x0c7a20044, @@ -4773,7 +4779,7 @@ ulong bootcode[]={ 0x046201083, 0x0e7a30004, 0x0e7a20008, - 0x00c0017fc, + 0x00c001802, 0x000000027, 0x08fad00b4, 0x023ae0078, @@ -4831,7 +4837,7 @@ ulong bootcode[]={ 0x024e70001, 0x02484fff6, 0x0a0440001, - 0x0080016ce, + 0x0080016d4, 0x024c6ffff, 0x010e00007, 0x0200b0001, @@ -4899,7 +4905,7 @@ ulong bootcode[]={ 0x020030030, 0x0a0430000, 0x024e7ffff, - 0x008001715, + 0x00800171b, 0x024c60001, 0x019000013, 0x000000027, @@ -4919,7 +4925,7 @@ ulong bootcode[]={ 0x0256b0001, 0x0a0430000, 0x02508ffff, - 0x008001726, + 0x00800172c, 0x024c60001, 0x08fa300b0, 0x000000027, @@ -4948,7 +4954,7 @@ ulong bootcode[]={ 0x0afa30008, 0x0afa2000c, 0x08fa300b0, - 0x00c001353, + 0x00c001359, 0x0afa30010, 0x08fa20000, 0x023bd00a0, @@ -5004,19 +5010,19 @@ ulong bootcode[]={ 0x000001810, 0x024630030, 0x0a0430000, - 0x00800174d, + 0x008001753, 0x024c60001, 0x000061825, 0x001231021, 0x02003002b, 0x0a0430000, - 0x00800176e, + 0x008001774, 0x024c60001, 0x000061025, 0x001221821, 0x020020065, 0x0a0620000, - 0x008001764, + 0x00800176a, 0x024c60001, 0x020030067, 0x011a30006, @@ -5024,7 +5030,7 @@ ulong bootcode[]={ 0x020030068, 0x011a30003, 0x000000027, - 0x008001747, + 0x00800174d, 0x000000027, 0x024c7ffff, 0x004e00006, @@ -5044,11 +5050,11 @@ ulong bootcode[]={ 0x000000027, 0x01107ff93, 0x000073025, - 0x008001747, + 0x00800174d, 0x024c60001, - 0x0080017ac, + 0x0080017b2, 0x02508ffff, - 0x0080017a4, + 0x0080017aa, 0x024e7ffff, 0x08fa30034, 0x02002ffff, @@ -5058,7 +5064,7 @@ ulong bootcode[]={ 0x000003825, 0x08fa30034, 0x0200d0068, - 0x008001702, + 0x008001708, 0x001835023, 0x08fa200b0, 0x000000027, @@ -5069,7 +5075,7 @@ ulong bootcode[]={ 0x001221821, 0x02002002b, 0x0a0620000, - 0x0080016f3, + 0x0080016f9, 0x024c60001, 0x0c7c180e6, 0x0c7c080ea, @@ -5079,7 +5085,7 @@ ulong bootcode[]={ 0x0e7a60044, 0x0e7a70004, 0x0e7a60008, - 0x00c0017fc, + 0x00c001802, 0x000000027, 0x08fad00b4, 0x023ae0078, @@ -5106,14 +5112,14 @@ ulong bootcode[]={ 0x046222181, 0x0e7a70040, 0x0e7a60044, - 0x0080016c5, + 0x0080016cb, 0x000000027, - 0x008001661, + 0x008001667, 0x0258cffff, 0x020020001, 0x0afa20014, 0x025ad0020, - 0x0080015eb, + 0x0080015f1, 0x0afad00b4, 0x023bdffe8, 0x0afbf0000, @@ -5130,7 +5136,7 @@ ulong bootcode[]={ 0x04624c081, 0x0e7a30004, 0x0e7a20008, - 0x00c0018e1, + 0x00c0018e7, 0x0afa2000c, 0x04620c032, 0x000000027, @@ -5159,7 +5165,7 @@ ulong bootcode[]={ 0x023a2001c, 0x0e7a30004, 0x0e7a20008, - 0x00c0018e1, + 0x00c0018e7, 0x0afa2000c, 0x0c7a1001c, 0x0c7a00020, @@ -5175,7 +5181,7 @@ ulong bootcode[]={ 0x04624c081, 0x0e7a30004, 0x0e7a20008, - 0x00c0017fc, + 0x00c001802, 0x000000027, 0x08fa20000, 0x023bd000c, @@ -5188,7 +5194,7 @@ ulong bootcode[]={ 0x004810008, 0x000000027, 0x000041023, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x08fa20000, 0x023bd0014, @@ -5209,12 +5215,12 @@ ulong bootcode[]={ 0x000042843, 0x0afa50010, 0x000851823, - 0x00c00183e, + 0x00c001844, 0x0afa30004, 0x0e7a10008, 0x0e7a0000c, 0x08fa20010, - 0x00c00183e, + 0x00c001844, 0x0afa20004, 0x0c7a30008, 0x0c7a2000c, @@ -5399,7 +5405,7 @@ ulong bootcode[]={ 0x08fa4000c, 0x000000027, 0x000821024, - 0x008001902, + 0x008001908, 0x0afa2000c, 0x023bdfff0, 0x08fa3001c, @@ -5480,7 +5486,7 @@ ulong bootcode[]={ 0x000000825, 0x0e7a50004, 0x0e7a40008, - 0x00c001986, + 0x00c00198c, 0x0afa0000c, 0x014200005, 0x000000027, @@ -5658,7 +5664,7 @@ ulong bootcode[]={ 0x000000027, 0x0a0c8ffff, 0x024c6ffff, - 0x008001a15, + 0x008001a1b, 0x024e7ffff, 0x08fa50004, 0x08fa20008, @@ -5799,7 +5805,7 @@ ulong bootcode[]={ 0x020030083, 0x010430003, 0x000000027, - 0x008001a68, + 0x008001a6e, 0x000000027, 0x080c30001, 0x000000027, @@ -5887,7 +5893,7 @@ ulong bootcode[]={ 0x0afa6001c, 0x0afa60004, 0x023a40014, - 0x00c001a53, + 0x00c001a59, 0x0afa40008, 0x08fa70010, 0x000012825, @@ -5900,7 +5906,7 @@ ulong bootcode[]={ 0x000400008, 0x000070825, 0x024e70001, - 0x008001af4, + 0x008001afa, 0x0afa70010, 0x014a0fffc, 0x024c60001, @@ -5977,7 +5983,7 @@ ulong bootcode[]={ 0x000000000, 0x0001fffff, 0x07fffffff, - 0x000005368, + 0x000005380, 0x000000000, 0x000000000, 0x000000000, @@ -6082,12 +6088,15 @@ ulong bootcode[]={ 0x065722061, 0x064647265, 0x073730a00, - 0x0236c2f31, - 0x02f63746c, - 0x0006f7065, - 0x06e696e67, - 0x020236c2f, - 0x0312f6374, + 0x0236c2f65, + 0x074686572, + 0x02f302f63, + 0x0746c006f, + 0x070656e69, + 0x06e672023, + 0x06c2f6574, + 0x06865722f, + 0x0302f6374, 0x06c00636f, 0x06e6e6563, 0x074203078, @@ -6360,7 +6369,6 @@ ulong bootcode[]={ 0x06f740023, 0x0632f7469, 0x06d650000, - 0x000000000, - 0x00006368, + 0x00006388, 0x0, }; diff --git a/power/clock.c b/power/clock.c index 42cc3cae4961dc03ea1993cef2a0053eb5af9cd3..590ea70228d2acd3d0d3491939885eb0e2105698 100644 --- a/power/clock.c +++ b/power/clock.c @@ -115,10 +115,8 @@ clock(Ureg *ur) else sched(); } - if(ur->status & KUP){ + if(ur->status & KUP) (*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1); /* profiling clock */ - notify(ur); - } } return; } diff --git a/power/trap.c b/power/trap.c index 79d69c0cd2b3013aef43f9818df42d396e83d28e..5eb76f0faa8525fff09991d60f8c518cd858feac 100644 --- a/power/trap.c +++ b/power/trap.c @@ -166,14 +166,14 @@ trap(Ureg *ur) } } - if(user) - notify(ur); - splhi(); - if(user && u && u->p->fpstate == FPinactive) { - restfpregs(&u->fpsave, u->fpsave.fpstatus); - u->p->fpstate = FPactive; - ur->status |= CU1; + if(user) { + notify(ur); + if(u->p->fpstate == FPinactive) { + restfpregs(&u->fpsave, u->fpsave.fpstatus); + u->p->fpstate = FPactive; + ur->status |= CU1; + } } } @@ -367,12 +367,14 @@ dumpregs(Ureg *ur) void notify(Ureg *ur) { - ulong sp; + ulong s, sp; if(u->p->procctl) procctl(u->p); if(u->nnote == 0) return; + + s = spllo(); lock(&u->p->debug); u->p->notepending = 0; if(u->note[0].flag!=NUser && (u->notified || u->notify==0)){ @@ -412,6 +414,7 @@ notify(Ureg *ur) memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); + splx(s); } /* @@ -524,12 +527,12 @@ syscall(Ureg *aur) ur->pc += 4; u->nerrlab = 0; - splhi(); u->p->psstate = 0; u->p->insyscall = 0; if(r1 == NOTED) /* ugly hack */ noted(&aur, *(ulong*)(sp+BY2WD)); /* doesn't return */ - if(u->p->procctl || (u->nnote && r1!=FORK)){ + splhi(); + if(r1!=FORK && (u->p->procctl || u->nnote)){ ur->r1 = ret; notify(ur); } diff --git a/ss/clock.c b/ss/clock.c index 09761ff7f4bb46ed5ef975b3d16539367e7b9f89..c9a69af6c1902655f461ccc5986b7e4430e0a5f7 100644 --- a/ss/clock.c +++ b/ss/clock.c @@ -42,7 +42,7 @@ void clock(Ureg *ur) { Proc *p; - ulong i, ss, nrun = 0; + ulong i, nrun = 0; Segment *s; i = ctr->lim1; /* clear interrupt */ @@ -71,10 +71,9 @@ clock(Ureg *ur) sched(); } if((ur->psr&PSRPSUPER) == 0){ - ss = spllo(); /* Low because we may fault */ + spllo(); /* Low because we may fault */ *(ulong*)(USTKTOP-BY2WD) += TK2MS(1); - notify(ur); - splx(ss); /* return hi for restore */ + splhi(); /* return hi for restore */ } } } diff --git a/ss/trap.c b/ss/trap.c index 7309560a2221d38965838ff53d1c349e6715e21b..f322ac1d8e1533d7bdd2d8dece2ad0f6480a302e 100644 --- a/ss/trap.c +++ b/ss/trap.c @@ -219,19 +219,17 @@ dumpregs(Ureg *ur) dumpstack(); } -/* - * Call user, if necessary, with note - */ void notify(Ureg *ur) { - ulong sp; + ulong s, sp; if(u->p->procctl) procctl(u->p); if(u->nnote == 0) return; + s = spllo(); /* need to go low as may fault */ lock(&u->p->debug); u->p->notepending = 0; if(u->nnote==0){ @@ -277,6 +275,7 @@ notify(Ureg *ur) memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); + splx(s); } /* @@ -392,7 +391,9 @@ syscall(Ureg *aur) u->p->psstate = 0; if(r7 == NOTED) /* ugly hack */ noted(&aur, *(ulong*)(sp+1*BY2WD)); /* doesn't return */ - if(u->p->procctl || (u->nnote && r7!=FORK)){ + + splhi(); + if(r7!=FORK && (u->p->procctl || u->nnote)){ ur->r7 = ret; notify(ur); } @@ -405,11 +406,15 @@ execpc(ulong entry) ((Ureg*)UREGADDR)->pc = entry - 4; /* syscall advances it */ } -/* This routine must save the values of registers the user is not permitted - * to write from devproc and restore them before returning +/* This routine must save the values of registers the user is not permitted to write + * from devproc and the restore the saved values before returning */ void setregisters(Ureg *xp, char *pureg, char *uva, int n) { - print("setregisters: no idea\n"); + ulong psr; + + status = xp->psr; + memmove(pureg, uva, n); + xp->psr = psr; }