~kris/9p

9hist

ef9cf819885adacf837b65223cf0690f42db954c — David du Colombier 34 years ago be298dc
Plan 9 from Bell Labs 1991-11-14
M gnot/boot.h => gnot/boot.h +487 -469
@@ 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,
};

M gnot/dat.h => gnot/dat.h +2 -0
@@ 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 */

M gnot/main.c => gnot/main.c +1 -0
@@ 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;

M gnot/trap.c => gnot/trap.c +5 -2
@@ 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);
	}

M pc/trap.c => pc/trap.c +9 -4
@@ 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);
}

/*

M port/devdk.c => port/devdk.c +1 -1
@@ 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);

M port/devip.c => port/devip.c +103 -191
@@ 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]);
	}



@@ 82,30 84,6 @@ ipreset(void)
}

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;

M port/devlance.c => port/devlance.c +69 -76
@@ 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);
}



@@ 355,31 361,28 @@ lanceoput(Queue *q, Block *bp )
}

/*
 *  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; i<Ntypes; i++) {
		sprint(lancedir[i].name, "%d", i);
		lancedir[i].qid.path = CHDIR|STREAMQID(i, Lchanqid);
		lancedir[i].qid.vers = 0;
		lancedir[i].length = 0;
		lancedir[i].perm = 0666;
	}
	strcpy(lancedir[Ntypes].name, "stats");
	lancedir[Ntypes].qid.path = Lstatsqid;
	lancedir[Ntypes].length = 0;
	lancedir[Ntypes].perm = 0666;

}

Chan*


@@ 539,26 525,16 @@ lanceclone(Chan *c, Chan *nc)
	return devclone(c, nc);
}

/*
 *  if the name doesn't exist, the name is numeric, and room exists
 *  in lancedir, create a new entry.
 */
int	 
lancewalk(Chan *c, char *name)
{
	if(c->qid.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	 


@@ 634,6 584,49 @@ lancewstat(Chan *c, char *dp)
}

/*
 *  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
 *	(2) service all current events

A port/devmux.c => port/devmux.c +550 -0
@@ 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;
}

M port/devnonet.c => port/devnonet.c +1 -1
@@ 1477,7 1477,7 @@ nokproc(void *arg)
			}
			nonetfreeifc(ifc);
		}
		tsleep(&nonetkr, return0, 0, MSrexmit/2);
		tsleep(&nonetkr, return0, 0, MSrexmit);
	}
}


M port/ipdat.h => port/ipdat.h +6 -2
@@ 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))

M port/net.c => port/net.c +4 -4
@@ 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;

M power/boot.c => power/boot.c +5 -5
@@ 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;
	}

M power/boot.h => power/boot.h +610 -602
@@ 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,
};

M power/clock.c => power/clock.c +1 -3
@@ 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;
	}

M power/trap.c => power/trap.c +13 -10
@@ 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);
	}

M ss/clock.c => ss/clock.c +3 -4
@@ 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 */
		}
	}
}

M ss/trap.c => ss/trap.c +13 -8
@@ 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;
}