Operating Systems homework
home/bshapir/cs314/project2/execs/os.dlx.obj
start:00001000 00015808 00001000 0000b220 0000d000 00008808 00001000:3c010000 :24211010 :00204030 :0800688c :0060f831 :33ff0040 :17e0001c :3c1f0001 :27ff2018 :8fff0000 :8fff0004 :affdff48 :37fd0000 :10000004 :afbdff48 :2fbd0154 :afa1002c :afa20030 :afa30034 :afa40038 :afa5003c :afa60040 :afa70044 :afa80048 :afa9004c :afaa0050 :afab0054 :afac0058 :afad005c :afae0060 :afaf0064 :afb00068 :afb1006c :afb20070 :afb30074 :afb40078 :afb5007c :afb60080 :afb70084 :afb80088 :afb9008c :afba0090 :afbb0094 :afbc0098 :afbe00a0 :00401831 :afa300a4 :bfa000a8 :bfa200b0 :bfa400b8 :bfa600c0 :bfa800c8 :bfaa00d0 :bfac00d8 :bfae00e0 :bfb000e8 :bfb200f0 :bfb400f8 :bfb60100 :bfb80108 :bfba0110 :bfbc0118 :bfbe0120 :00802031 :afa40128 :00602831 :afa5012c :00c03031 :afa60130 :01201831 :afa30134 :01801831 :afa30138 :01a01831 :afa3013c :01c01831 :afa30140 :afa60000 :afa40004 :afa50008 :8fa1009c :afa1000c :3c010001 :24212018 :8c210000 :8c220000 :afa20028 :ac3d0000 :08009578 :54000000 :0c00a89c :3c010001 :24212018 :8c210000 :8c3d0000 :8fa20028 :ac220000 :8fa30128 :00602030 :8fa3012c :00601830 :8fa30130 :00603030 :8fa30134 :00604830 :8fa30138 :00606030 :8fa3013c :00606830 :8fa30140 :00607030 :9fa000a8 :9fa200b0 :9fa400b8 :9fa600c0 :9fa800c8 :9faa00d0 :9fac00d8 :9fae00e0 :9fb000e8 :9fb200f0 :9fb400f8 :9fb60100 :9fb80108 :9fba0110 :9fbc0118 :9fbe0120 :8fa20030 :8fa30034 :8fa40038 :8fa5003c :8fa60040 :8fa70044 :8fa80048 :8fa9004c :8faa0050 :8fab0054 :8fac0058 :8fad005c :8fae0060 :8faf0064 :8fb00068 :8fb1006c :8fb20070 :8fb30074 :8fb40078 :8fb5007c :8fb60080 :8fb70084 :8fb80088 :8fb9008c :8fba0090 :8fbb0094 :8fbc0098 :8fbe00a0 :8fbf00a4 :27bd0154 :ac3d0004 :37a10000 :8c3dff48 :8c21fed8 :40000000 :2fbd0010 :afa2000c :8fa20010 :3042000f :00a00831 :afa10008 :3021fff0 :00410825 :00202830 :8fa10008 :3021000f :8fa2000c :27bd0010 :4be00000 :54000000 :00a00831 :3021000f :4be00000 :54000000 :44000410 :54000000 :4be00000 :54000000 :44002020 :4be00000 :54000000 :44002021 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0ffffe94 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0ffffe50 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0ffffe0c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d000:456e7465 :72696e67 :2050726f :63657373 :4d6f6475 :6c65496e :69740a00 0000d01c:4c656176 :696e6720 :50726f63 :6573734d :6f64756c :65496e69 :740a00 00001798:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :3c020001 :24421f50 :afa20000 :20050070 :afa50004 :0c003264 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0c00323c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c050000 :24a5d000 :afa50000 :0c00a9f0 :54000000 :23bd0008 :3c020000 :2442d094 :204400f8 :20050000 :ac450000 :0002f820 :00021820 :23e10004 :20050000 :ac250000 :0001f820 :03e3082c :1420ffe8 :54000000 :20420008 :0044082c :1420ffc8 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20050070 :afa50004 :0c0031a8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0c003180 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c050000 :24a5d01c :afa50000 :0c00a934 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d038:46415441 :4c3a2063 :6f756c64 :6e277420 :616c6c6f :63617465 :206d656d :6f727920 :2d206e6f :20667265 :65207061 :67657321 :0a00 0000190c:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :8fc60000 :23bdfff8 :afa60000 :0c006a70 :54000000 :00012820 :58a80005 :51010005 :00a12822 :23bd0008 :23bdfff8 :200a000f :afaa0000 :0ffff910 :54000000 :00013820 :23bd0008 :8cc100a0 :60210010 :14200044 :54000000 :20030000 :3c090000 :2529d094 :00091020 :8c410000 :64210000 :10200018 :54000000 :20420008 :20630001 :7061001f :1420ffe0 :54000000 :60610020 :10200024 :54000000 :23bdfff8 :afa70000 :0ffff8a8 :54000000 :23bd0008 :20010000 :080000b4 :54000000 :0c002154 :54000000 :00012020 :64810000 :14200028 :54000000 :23bdfff8 :3c0a0000 :254ad038 :afaa0000 :0c00a7f4 :54000000 :0c00a7d4 :54000000 :23bd0008 :50610003 :00291020 :ac440000 :51010002 :00221020 :20010001 :00250804 :ac410004 :23bdfff8 :afa40000 :0c002854 :54000000 :8cc200a0 :50420002 :00461020 :ac410060 :8cc100a0 :20220001 :acc200a0 :8cc10008 :2421fe8c :ac22013c :23bd0008 :23bdfff8 :afa70000 :0ffff7f0 :54000000 :23bd0008 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :8fc60000 :8fc70004 :64e10000 :14200010 :54000000 :20010000 :08000184 :54000000 :8cc10008 :2429fe8c :23bdfff8 :200a000f :afaa0000 :0ffff740 :54000000 :00014020 :23bd0008 :20030000 :3c020000 :2442d094 :8c410000 :00270828 :14200018 :54000000 :20420008 :20630001 :7061001f :1420ffe0 :54000000 :60610020 :14200068 :54000000 :50ff0010 :20050000 :8cc400a0 :00a4082a :10200034 :54000000 :00061020 :8c410060 :200afff8 :002a0824 :003f0828 :14200018 :54000000 :20420004 :20a50001 :00a4082a :1420ffd8 :54000000 :8cc200a0 :00a20828 :10200064 :54000000 :7041000f :14200024 :54000000 :23bdfff8 :afa80000 :0ffff688 :54000000 :23bd0008 :20010000 :080000a0 :54000000 :23bdfff8 :afa70000 :0c002690 :54000000 :8cc200a0 :50420002 :00461020 :ac410060 :8cc100a0 :20210001 :acc100a0 :ad21013c :23bd0008 :23bdfff8 :afa60000 :0c00676c :54000000 :00011020 :58440005 :50810005 :00411022 :50630003 :50810002 :00610820 :3c0a0000 :254ad098 :002a1820 :20010001 :00221004 :8c610000 :00220825 :ac610000 :23bd0008 :23bdfff8 :afa80000 :0ffff5e4 :54000000 :23bd0008 :50a10010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d06c:46415441 :4c3a2041 :7474656d :70746564 :20746f20 :66726565 :206d656d :6f727920 :70616765 :20300a00 00001ce8:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :8fc80000 :8fc20004 :23bdfff8 :200a000f :afaa0000 :0ffff554 :54000000 :00014820 :23bd0008 :50410002 :00280820 :94270060 :64e10000 :14200028 :54000000 :23bdfff8 :3c0a0000 :254ad06c :afaa0000 :0c00a4a8 :54000000 :0c00a488 :54000000 :23bd0008 :20040000 :3c050000 :24a5d094 :00051020 :8c410000 :00270828 :14200018 :54000000 :20420008 :20840001 :7081001f :1420ffe0 :54000000 :60810020 :10200024 :54000000 :23bdfff8 :afa90000 :0ffff4c0 :54000000 :23bd0008 :2001ffff :080000f0 :54000000 :23bdfff8 :afa80000 :0c0065d8 :54000000 :00011020 :58230005 :50610005 :00411022 :50810003 :00252020 :50610002 :00240820 :20230004 :20010001 :00220804 :200affff :002a1026 :8c610000 :00220824 :ac610000 :23bd0008 :20060000 :20050000 :20030001 :20020000 :8c9f0004 :03e30824 :64210000 :00c13020 :50630001 :20420001 :7041001f :1420ffe4 :54000000 :20840004 :20a50001 :70a10000 :1420ffc4 :54000000 :8d0100a0 :2022ffff :ad0200a0 :8d010008 :2421fe8c :ac22013c :64c10000 :14200018 :54000000 :23bdfff8 :afa70000 :0c001f6c :54000000 :23bd0008 :23bdfff8 :afa90000 :0ffff3cc :54000000 :23bd0008 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d194:3a206669 :6c657379 :732e632c :7620312e :31203230 :30302f30 :392f3230 :2030313a :35303a31 :3920656c :6d204578 :7020656c :6d203030 :30 00001f00:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0ffff290 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0ffff24c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0ffff208 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d1cc:41747465 :706d7469 :6e672074 :6f206f70 :656e2025 :73206d6f :64653d25 :642e0a00 0000d1ec:646c783a :00 0000d1f4:46696c65 :20257320 :6f70656e :696e6720 :696e2066 :696c6520 :73797374 :656d2025 :642e0a00 0000d218:4f70656e :65642025 :7320696e :20465320 :25642c20 :6d6f6465 :3d256420 :736c6f74 :3d25642e :0a00 0000239c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc40000 :8fc50004 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080066 :afa80004 :0c00264c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c002624 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080000 :2508d1cc :afa80000 :afa40004 :afa50008 :0c009dd0 :54000000 :23bd0010 :30a50003 :64a10000 :10200044 :54000000 :20030000 :3c060000 :24c6d2a4 :00061020 :8c410004 :64210000 :10200018 :54000000 :2042010c :20630001 :7061001f :1420ffe0 :54000000 :6c61001f :10200010 :54000000 :2001ffff :08000224 :54000000 :50610004 :00230820 :50210002 :00230822 :50210002 :00261020 :ac450004 :23bdfff0 :afa40000 :3c010000 :2421d1ec :afa10004 :20080004 :afa80008 :0c002210 :54000000 :23bd0010 :64210000 :14200014 :54000000 :20840004 :20080001 :08000008 :54000000 :20080000 :ac480000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080066 :afa80004 :0c00250c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0024e4 :54000000 :23bd0008 :64210000 :1020004c :54000000 :23bdfff0 :3c080000 :2508d1f4 :afa80000 :afa40004 :50610004 :00230820 :50210002 :00230822 :50210002 :3c080000 :2508d2a4 :00280820 :8c210000 :afa10008 :0c009c6c :54000000 :23bd0010 :23bdfff0 :50610004 :00230820 :50210002 :00230822 :50260002 :3c080000 :2508d2a4 :00c83820 :8ce20000 :50410001 :00220820 :50210003 :3c080000 :2508d274 :00280820 :afa30000 :afa40004 :afa50008 :8c210000 :4c200000 :54000000 :00011020 :23bd0010 :68410000 :10200024 :54000000 :3c080000 :2508d2a4 :00c80820 :20080000 :ac280004 :00020820 :08000090 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080066 :afa80004 :0c0023e0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0c0023b8 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdffe8 :3c080000 :2508d218 :afa80000 :afa40004 :8ce70000 :afa70008 :afa5000c :afa30010 :0c009b58 :54000000 :23bd0018 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c040000 :2484d2a4 :00240820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200074 :54000000 :23bdfff8 :53e10004 :003f0820 :50210002 :003f0822 :50230002 :3c040000 :2484d2a4 :00640820 :8c220000 :50410001 :00220820 :50210003 :3c040000 :2484d274 :00240820 :afbf0000 :8c210010 :4c200000 :54000000 :23bd0008 :3c040000 :2484d2a4 :00641020 :20040000 :ac440004 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463d2a4 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463d2a4 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463d274 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210004 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463d2a4 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463d2a4 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463d274 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c210008 :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :20020000 :23e1ffff :7021001e :10200038 :54000000 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463d2a4 :00230820 :8c210004 :64210000 :10200008 :54000000 :20020001 :64410000 :10200070 :54000000 :23bdfff0 :53e10004 :003f0820 :50210002 :003f0822 :50210002 :3c030000 :2463d2a4 :00230820 :8c220000 :50410001 :00220820 :50210003 :3c030000 :2463d274 :00230820 :afbf0000 :8fc30004 :afa30004 :8fc30008 :afa30008 :8c21000c :4c200000 :54000000 :23bd0010 :08000008 :54000000 :2001ffff :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff0 :afa20000 :3c010000 :2421d1ec :afa10004 :20030004 :afa30008 :0c001bc4 :54000000 :23bd0010 :64210000 :1420001c :54000000 :20420004 :23bdfff8 :3c010000 :2421d2a0 :08000010 :54000000 :23bdfff8 :3c010000 :2421d288 :afa20000 :8c210000 :4c200000 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000d240:41747465 :6d707469 :6e672074 :6f206f70 :656e2066 :696c6520 :25732069 :6e746f20 :64657363 :2025642c :206d6f64 :65202564 :2e0a00 00002b98:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc30004 :8fc50008 :23bdfff8 :3c020001 :24421f50 :afa20000 :20060066 :afa60004 :0c001e54 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c001e2c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6d240 :afa60000 :afa30004 :afa40008 :afa5000c :0c0095d4 :54000000 :23bd0010 :23bdfff8 :afa30000 :afa50004 :0c00952c :54000000 :00011820 :50810004 :00240820 :50210002 :00240822 :50210002 :3c060000 :24c6d2a4 :00260820 :ac230108 :23bd0008 :68620000 :00030820 :14400008 :54000000 :20010001 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5d2a4 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c009474 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5d2a4 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c0093f0 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :8fc30004 :8fc40008 :23bdfff0 :50410004 :00220820 :50210002 :00220822 :50210002 :3c050000 :24a5d2a4 :00250820 :8c210108 :afa10000 :afa30004 :afa40008 :0c00936c :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :23bdfff8 :50410004 :00220820 :50210002 :00220822 :50210002 :3c030000 :2463d2a4 :00230820 :8c210108 :afa10000 :0c0092d0 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :2001ffff :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffd2a4 :003f0820 :201f0000 :ac3f0108 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :50220004 :00411020 :50420002 :00410822 :50210002 :3c1f0000 :27ffd2a4 :003f0820 :8c210108 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :20010001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :3c1f0000 :27ffd2a4 :23e22074 :20030000 :afe30004 :23ff010c :03e2082c :1420ffec :54000000 :3c010000 :2421d274 :3c030000 :24632b98 :ac230000 :3c030000 :24632e74 :ac230010 :3c030000 :24632cc4 :ac230004 :3c030000 :24632d54 :ac230008 :3c030000 :24632de4 :ac23000c :3c030000 :24632ee4 :ac230014 :3c030000 :24632f84 :ac230018 :3c030000 :24633034 :ac230028 :3c030000 :24632f34 :ac23001c :3c030000 :24632f5c :ac230020 :3c030000 :24632fe0 :ac230024 :3c030000 :2463305c :ac23002c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f424:3a206d65 :6d6f7279 :2e632c76 :20312e31 :20323030 :302f3039 :2f323020 :30313a35 :303a3139 :20656c6d :20457870 :20656c6d :20303030 00003174:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffe01c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffdfd8 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffdf94 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f458:ffffffff 00003610:afbefffc :001df020 :afbffff8 :2fbd0008 :3c01ffff :24210000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f45c:53657420 :66726565 :6d617020 :656e7472 :79202564 :20746f20 :30782578 :2e0a00 00003640:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fdf0004 :00031020 :74610000 :14200008 :54000000 :2062001f :5c450005 :50a10005 :00611822 :20010001 :00231004 :3c010000 :2421f458 :8c210000 :00411026 :50a10002 :3c060000 :24c6f5cc :00262020 :8c810000 :00221024 :03e30804 :00410825 :ac810000 :23bdfff8 :3c020001 :24421f50 :afa20000 :2006006d :afa60004 :0c001354 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2006002b :afa60004 :0c00132c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c060000 :24c6f45c :afa60000 :afa50004 :8c840000 :afa40008 :0c008ad4 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f47c:4d617020 :68617320 :25642065 :6e747269 :65732c20 :6d656d6f :72792073 :697a6520 :69732030 :7825782e :0a00 0000f4a8:46726565 :20706167 :65732073 :74617274 :20776974 :68207061 :67652023 :20307825 :782e0a00 0000f4cc:496e6974 :69616c69 :7a656420 :25642066 :72656520 :70616765 :732e0a00 00003770:afbefffc :001df020 :afbffff8 :2fbd0030 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :3c01ffff :24210000 :8c220000 :74410000 :14200008 :54000000 :2442ffff :5c480010 :3c030000 :2463f5c0 :3c010001 :24215804 :8c210000 :2422fffc :74410000 :14200008 :54000000 :2442ffff :5c410010 :ac610000 :3c030000 :2463f5c4 :2102001f :74410000 :14200008 :54000000 :2102003e :5c410005 :ac610000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200b006d :afab0004 :0c001200 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c0011d8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256bf47c :afab0000 :8c610000 :afa10004 :afa80008 :0c008980 :54000000 :23bd0010 :23bdfff8 :3c020001 :24421f50 :afa20000 :200b006d :afab0004 :0c001180 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c001158 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256bf4a8 :afab0000 :3c010000 :2421f5c0 :8c210000 :afa10004 :0c0088fc :54000000 :23bd0008 :20020000 :3c040000 :2484f5c4 :8c810000 :0041082a :1020002c :54000000 :3c030000 :2463f5cc :200b0000 :ac6b0000 :20630004 :20420001 :8c810000 :0041082a :1420ffe4 :54000000 :3c020000 :2442f5c8 :200b0000 :ac4b0000 :3c010000 :2421f5c0 :8c240000 :0088082a :10200104 :54000000 :00023820 :200a0001 :3c090000 :2529f458 :8ce10000 :20210001 :ace10000 :00041020 :74810000 :14200008 :54000000 :2082001f :5c460005 :50c10005 :00810822 :01411804 :8d210000 :00611026 :50c10002 :3c0b0000 :256bf5cc :002b2820 :8ca10000 :00220824 :00230825 :aca10000 :23bdfff8 :3c0b0001 :256b1f50 :afab0000 :200b006d :afab0004 :0c001028 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c0b0001 :256b1f50 :afab0000 :200b002b :afab0004 :0c000ff8 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0b0000 :256bf45c :afab0000 :afa60004 :8ca50000 :afa50008 :0c0087a0 :54000000 :23bd0010 :20840001 :0088082a :1420ff14 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200b006d :afab0004 :0c000f90 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200b002b :afab0004 :0c000f68 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c0b0000 :256bf4cc :afab0000 :3c010000 :2421f5c8 :8c210000 :afa10004 :0c00870c :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f4e8:00000000 :4552524f :52204154 :20544849 :5320504f :494e540a :00 0000f504:416c6c6f :63617469 :6e67206d :656d6f72 :792c2073 :74617274 :696e6720 :77697468 :20706167 :65202564 :0a00 0000f530:416c6c6f :63617465 :64206d65 :6d6f7279 :2c206672 :6f6d206d :61702025 :642c2070 :61676520 :25642c20 :6d61703d :30782578 :2e0a00 00003b4c:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :3c010000 :2421f5c8 :8c210000 :64210000 :1420002c :54000000 :23bdfff8 :3c070000 :24e7f4ec :afa70000 :0c008674 :54000000 :20010000 :23bd0008 :08000238 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :2007006d :afa70004 :0c000e68 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000e40 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c070000 :24e7f504 :afa70000 :3c010000 :2421f4e8 :8c210000 :afa10004 :0c0085e4 :54000000 :23bd0008 :3c020000 :2442f4e8 :8c410000 :3c040000 :2484f5cc :50210002 :00240820 :8c210000 :64210000 :1420004c :54000000 :3c010000 :2421f5c4 :8c230000 :8c410000 :20210001 :ac410000 :0023082d :1020000c :54000000 :20070000 :ac470000 :8c410000 :50210002 :00240820 :8c210000 :64210000 :1020ffc8 :54000000 :3c010000 :2421f4e8 :8c210000 :50210002 :3c070000 :24e7f5cc :00270820 :8c230000 :201f0000 :30610001 :14200020 :54000000 :20020001 :23ff0001 :005f0804 :00610824 :64210000 :1020ffec :54000000 :20010001 :003f1004 :3c010000 :2421f458 :8c210000 :00412026 :3c050000 :24a5f4e8 :8ca30000 :3c060000 :24c6f5cc :50610002 :00261020 :8c410000 :00240824 :ac410000 :50610005 :003f1820 :23bdfff8 :3c020001 :24421f50 :afa20000 :2007006d :afa70004 :0c000cdc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000cb4 :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070000 :24e7f530 :afa70000 :8ca10000 :afa10004 :afa30008 :50210002 :00260820 :8c210000 :afa1000c :0c00844c :54000000 :23bd0010 :3c010000 :2421f5c8 :8c220000 :2042ffff :ac220000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f564:46726565 :64207061 :67652030 :7825782c :20256420 :72656d61 :696e696e :672e0a00 00003e14:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc60000 :20030001 :00061020 :74c10000 :14200008 :54000000 :20c2001f :5c450005 :50a10005 :00c10822 :00611804 :3c010000 :2421f458 :8c210000 :00611026 :50a10002 :3c070000 :24e7f5cc :00272020 :8c810000 :00220824 :00230825 :ac810000 :23bdfff8 :3c070001 :24e71f50 :afa70000 :2007006d :afa70004 :0c000b84 :54000000 :23bd0008 :64210000 :14200034 :54000000 :23bdfff8 :3c070001 :24e71f50 :afa70000 :2007002b :afa70004 :0c000b54 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7f45c :afa70000 :afa50004 :8c840000 :afa40008 :0c0082fc :54000000 :23bd0010 :3c020000 :2442f5c8 :8c410000 :20210001 :ac410000 :23bdfff8 :3c030001 :24631f50 :afa30000 :2007006d :afa70004 :0c000ae8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0c000ac0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c070000 :24e7f564 :afa70000 :afa60004 :8c420000 :afa20008 :0c008268 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc10004 :583f0010 :3022ffff :8c6100a0 :03e1082b :14200024 :54000000 :53e10002 :00230820 :8c210060 :2004fff8 :00240824 :00220820 :08000008 :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50004 :8fc40008 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce100a0 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afa50000 :afbf0004 :afa20008 :0c000c9c :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :8fc70000 :8fc50008 :8fc40004 :8fc3000c :20060000 :6c610000 :102000a4 :54000000 :3c080001 :25080000 :58820010 :309fffff :8ce100a0 :0041082b :10200010 :54000000 :201f0000 :0800001c :54000000 :50410002 :00270820 :8c210060 :2009fff8 :00290824 :003ff820 :67e10000 :10200054 :54000000 :33e1ffff :01011022 :0043082b :10200008 :54000000 :00031020 :23bdfff0 :afbf0000 :afa50004 :afa20008 :0c000b74 :54000000 :23bd0010 :00621822 :00c23020 :00a22820 :00822020 :6c610000 :1420ff6c :54000000 :00060820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :50210010 :34210001 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :23bdfff8 :97c10000 :afa10000 :0ffffb14 :54000000 :23bd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :201ffff8 :003f0824 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0000f584:00003404 :4f706572 :616e6420 :666f7220 :696e7374 :72756374 :696f6e20 :25303878 :20697320 :30782578 :20287265 :673d3c25 :642c3078 :25783e29 :0a00 0000434c:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc50004 :58a1001a :203fffe0 :6fe1000f :14200020 :54000000 :3c010000 :2421f584 :8c210000 :003f0806 :30210001 :10200010 :54000000 :2001ffff :080000c4 :54000000 :58a10015 :3026001f :30bfffff :5be1000f :10200010 :54000000 :3c07ffff :24e70000 :03e7f825 :8c420000 :50c10002 :00220820 :8c230028 :007f2020 :23bdfff8 :3c020001 :24421f50 :afa20000 :2007006d :afa70004 :0c00062c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0c000604 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070000 :24e7f588 :afa70000 :afa50004 :afa40008 :afa6000c :afa30010 :0c007da8 :54000000 :23bd0018 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000044a4:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fffc2f0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fffc2ac :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fffc268 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000115cc:00002710 :456e7465 :72696e67 :2050726f :63657373 :4d6f6475 :6c65496e :69740a00 000115ec:496e6974 :69616c69 :7a696e67 :20504342 :20256420 :40203078 :25782e0a :00 0001160c:4c656176 :696e6720 :50726f63 :6573734d :6f64756c :65496e69 :740a00 0000533c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080070 :afa80004 :0ffff6b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff68c :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080001 :250815d0 :afa80000 :0c006e40 :54000000 :23bd0008 :23bdfff8 :3c020001 :2442201c :afa20000 :0c00380c :54000000 :3c080001 :25082028 :afa80000 :0c0037f8 :54000000 :3c080001 :25082034 :afa80000 :0c0037e4 :54000000 :3c080001 :25082040 :afa80000 :0c0037d0 :54000000 :20040000 :23bd0008 :3c070001 :24e71f50 :3c010001 :2421204c :00022820 :202200a4 :00011820 :00033020 :23bdfff8 :afa70000 :20080070 :afa80004 :0ffff5cc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa70000 :2008002b :afa80004 :0ffff5a4 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c080001 :250815ec :afa80000 :afa40004 :afa60008 :0c006d50 :54000000 :23bd0010 :20080001 :ac68000c :20080000 :ac480000 :ac43000c :ac450008 :ac450004 :8ca80000 :ac480000 :aca20000 :8c410000 :ac220004 :8ca10008 :20210001 :aca10008 :204200b4 :206300b4 :20c600b4 :20840001 :7081001f :1420ff38 :54000000 :3c010001 :24212018 :20080000 :ac280000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080070 :afa80004 :0ffff4e8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff4c0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c080001 :2508160c :afa80000 :0c006c74 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8c61000c :201fffc0 :003f0824 :00220825 :ac61000c :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :2463201c :208200a4 :8c610004 :ac8300ac :ac8100a8 :8c250000 :ac450000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :8c8300a0 :20020000 :0043082a :10200030 :54000000 :23bdfff8 :afa40000 :afa20004 :0fffc640 :54000000 :23bd0008 :20420001 :0043082a :1420ffdc :54000000 :20020000 :8c8100a0 :0041082a :10200038 :54000000 :00041820 :23bdfff8 :8c650060 :afa50000 :0fffebf8 :54000000 :23bd0008 :20630004 :20420001 :8c8100a0 :0041082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe6fc :54000000 :23bd0008 :8c81000c :2005ffc0 :00250824 :34210001 :ac81000c :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdf0004 :ac3f002c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011628:4e6f7720 :656e7465 :72696e67 :2050726f :63657373 :53636865 :64756c65 :20286375 :723d3078 :25782c20 :25642072 :65616479 :290a00 0001165c:4e6f2072 :756e6e61 :626c6520 :70726f63 :65737365 :73202d20 :65786974 :696e6721 :0a00 00011680:41626f75 :7420746f :20737769 :74636820 :746f2050 :43422030 :7825782c :666c6167 :733d3078 :25782040 :20307825 :780a00 000116b0:46726565 :696e6720 :7a6f6d62 :69652050 :43422030 :7825782e :0a00 000116cc:4c656176 :696e6720 :50726f63 :65737353 :63686564 :756c6520 :28637572 :3d307825 :78290a00 0000578c:afbefffc :001df020 :afbffff8 :2fbd0028 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080070 :afa80004 :0ffff264 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff23c :54000000 :23bd0008 :64210000 :10200040 :54000000 :3c010001 :24212028 :8c220008 :23bdfff0 :3c080001 :25081628 :afa80000 :3c010001 :24212018 :8c210000 :afa10004 :afa20008 :0c0069d0 :54000000 :23bd0010 :3c050001 :24a52028 :8ca10008 :60210000 :10200028 :54000000 :23bdfff8 :3c080001 :2508165c :afa80000 :0c00699c :54000000 :0c00697c :54000000 :23bd0008 :8ca10000 :8c24000c :208300a4 :8c8100ac :8c210008 :6c210000 :1020002c :54000000 :8c8100a8 :8c680000 :ac280000 :8c610000 :8c8800a8 :ac280004 :8c8200ac :8c410008 :2021ffff :ac410008 :20080000 :ac680000 :8ca10004 :ac8500ac :ac8100a8 :8c280000 :ac680000 :ac230000 :8c610000 :ac230004 :8ca10008 :20210001 :aca10008 :8ca10000 :8c24000c :3c010001 :24212018 :ac240000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20080070 :afa80004 :0ffff104 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0ffff0dc :54000000 :23bd0008 :64210000 :10200038 :54000000 :23bdfff0 :3c080001 :25081680 :afa80000 :afa40004 :8c88000c :afa80008 :8c810004 :8c210128 :afa1000c :0c006878 :54000000 :23bd0010 :3c070001 :24e72040 :3c060001 :24c61f50 :3c050001 :24a5201c :8ce10008 :60210000 :142001a8 :54000000 :8ce10000 :8c24000c :23bdfff8 :afa60000 :20080070 :afa80004 :0ffff050 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa60000 :2008002b :afa80004 :0ffff028 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c080001 :250816b0 :afa80000 :afa40004 :0c0067d8 :54000000 :23bd0008 :209f00a4 :8c8100ac :8c210008 :6c210000 :1020002c :54000000 :8c8100a8 :8fe80000 :ac280000 :8fe10000 :8c8800a8 :ac280004 :8c8200ac :8c410008 :2021ffff :ac410008 :20080000 :afe80000 :8ca10004 :ac8500ac :ac8100a8 :8c280000 :afe80000 :ac3f0000 :8fe10000 :ac3f0004 :8ca10008 :20210001 :aca10008 :8c8300a0 :20020000 :0043082a :10200030 :54000000 :23bdfff8 :afa40000 :afa20004 :0fffc20c :54000000 :23bd0008 :20420001 :0043082a :1420ffdc :54000000 :20020000 :8c8100a0 :0041082a :10200038 :54000000 :00041820 :23bdfff8 :8c680060 :afa80000 :0fffe7c4 :54000000 :23bd0008 :20630004 :20420001 :8c8100a0 :0041082a :1420ffd4 :54000000 :23bdfff8 :94810008 :afa10000 :0fffe2c8 :54000000 :23bd0008 :8c81000c :2008ffc0 :00280824 :34210001 :ac81000c :0bfffe50 :54000000 :23bdfff8 :3c010001 :242115cc :8c210000 :afa10000 :0c0044e4 :54000000 :3c020001 :24421f50 :afa20000 :20080070 :afa80004 :0fffee94 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2008002b :afa80004 :0fffee6c :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff8 :3c080001 :250816cc :afa80000 :3c010001 :24212018 :8c210000 :afa10004 :0c006610 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000116f0:53757370 :656e6469 :6e672050 :43422030 :78257820 :28257329 :2e0a00 0001170c:25733a20 :25730a00 00011714:50726f63 :65737353 :75737065 :6e6400 00011724:54727969 :6e672074 :6f207375 :7370656e :64206120 :6e6f6e2d :72756e6e :696e6720 :70726f63 :65737321 :0a00 00005c3c:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20040070 :afa40004 :0fffedc0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffed98 :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c040001 :248416f0 :afa40000 :afa30004 :20610010 :afa10008 :0c006540 :54000000 :23bd0010 :8064000f :58810001 :30210001 :14200038 :54000000 :23bdfff0 :3c040001 :2484170c :afa40000 :3c010001 :24211714 :afa10004 :3c040001 :24841724 :afa40008 :0c0064f8 :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210004 :ac61000c :207f00a4 :8c6100ac :8c210008 :6c210000 :1020002c :54000000 :8c6100a8 :8fe40000 :ac240000 :8fe10000 :8c6400a8 :ac240004 :8c6200ac :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24422034 :8c410004 :ac6200ac :ac6100a8 :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011750:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 00011768:50726f63 :65737357 :616b6575 :7000 00011778:54727969 :6e672074 :6f207761 :6b652075 :70206120 :6e6f6e2d :736c6565 :70696e67 :2070726f :63657373 :210a00 00005dd4:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20040070 :afa40004 :0fffec28 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffec00 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :24841750 :afa40000 :afa30004 :0c0063b0 :54000000 :23bd0008 :8064000f :58810002 :30210001 :14200038 :54000000 :23bdfff0 :3c040001 :2484170c :afa40000 :3c010001 :24211768 :afa10004 :3c040001 :24841778 :afa40008 :0c006368 :54000000 :23bd0010 :8c61000c :2004ffc0 :00240824 :34210002 :ac61000c :207f00a4 :8c6100ac :8c210008 :6c210000 :1020002c :54000000 :8c6100a8 :8fe40000 :ac240000 :8fe10000 :8c6400a8 :ac240004 :8c6200ac :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24422028 :8c410004 :ac6200ac :ac6100a8 :8c240000 :afe40000 :ac3f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000117a4:456e7465 :72696e67 :2050726f :63657373 :44657374 :726f7920 :666f7220 :30782578 :2e0a00 000117c8:4c656176 :696e6720 :50726f63 :65737344 :65737472 :6f792066 :6f722030 :7825782e :0a00 00005f64:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20040070 :afa40004 :0fffea98 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffea70 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :248417a4 :afa40000 :afa30004 :0c006220 :54000000 :23bd0008 :8c61000c :2004ffc0 :00240824 :34210010 :ac61000c :207f00a4 :8c6100ac :8c210008 :6c210000 :1020002c :54000000 :8c6100a8 :8fe40000 :ac240000 :8fe10000 :8c6400a8 :ac240004 :8c6200ac :8c410008 :2021ffff :ac410008 :20040000 :afe40000 :3c020001 :24422040 :ac6200ac :ac6200a8 :8c440000 :afe40000 :ac5f0000 :8fe10000 :ac3f0004 :8c410008 :20210001 :ac410008 :23bdfff8 :3c020001 :24421f50 :afa20000 :20040070 :afa40004 :0fffe994 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2004002b :afa40004 :0fffe96c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c040001 :248417c8 :afa40000 :afa30004 :0c00611c :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000117ec:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 0001180c:456e7465 :72696e67 :2050726f :63657373 :466f726b :20617267 :733d3078 :25782030 :78257820 :25732025 :640a00 00011838:46415441 :4c206572 :726f723a :206e6f20 :66726565 :2070726f :63657373 :6573210a :00 0001185c:476f7420 :61206c69 :6e6b2040 :20307825 :780a00 00011870:4265666f :72652072 :6573746f :72652069 :6e746572 :72757074 :2076616c :75652069 :73203078 :25782e0a :00 0001189c:4e657720 :696e7465 :72727570 :74207661 :6c756520 :69732030 :7825782e :0a00 000118bc:61464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65206d65 :6d6f7279 :202d206e :6f206672 :65652070 :61676573 :210a00 000118f0:62464154 :414c3a20 :636f756c :646e2774 :20616c6c :6f636174 :65207379 :7374656d :20737461 :636b202d :206e6f20 :66726565 :20706167 :6573210a :00 0001192c:53657474 :696e6720 :75702050 :43422040 :20307825 :78202873 :79732073 :7461636b :3d307825 :782c206d :656d3d30 :7825782c :2073697a :653d3078 :2578290a :00 0001196c:41626f75 :7420746f :206c6f61 :64202573 :0a00 00011980:46696c65 :20257320 :2d3e2073 :74617274 :3d307825 :3038780a :00 0001199c:46696c65 :20257320 :2d3e2063 :6f646520 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 000119c4:46696c65 :20257320 :2d3e2064 :61746120 :40203078 :25303878 :20287369 :7a653d30 :78253038 :78290a00 000119ec:506c6163 :696e6720 :25642062 :79746573 :20617420 :76616464 :72202530 :38782e0a :00 00011a10:53657474 :696e6720 :63757272 :656e7450 :43423d30 :7825782c :20737461 :636b6672 :616d653d :30782578 :0a00 00011a3c:4c656176 :696e6720 :50726f63 :65737346 :6f726b20 :28257329 :0a00 00006120:afbefffc :001df020 :afbffff8 :2fbd02d8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc70000 :8fcb0004 :8fca0008 :8fc4000c :200c0000 :afccfd58 :23bdfff8 :200c000f :afac0000 :0fffb104 :54000000 :00011820 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0049 :afac0004 :0fffe88c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe864 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c17ec :afac0000 :afa30004 :0c006014 :54000000 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe814 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe7ec :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c0c0001 :258c180c :afac0000 :afa70004 :afab0008 :afaa000c :afa40010 :0c005f90 :54000000 :23bd0018 :3c020001 :2442201c :8c410008 :60210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c1838 :afac0000 :0c005f5c :54000000 :0c005f3c :54000000 :23bd0008 :8c480000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe750 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe728 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c185c :afac0000 :afa80004 :0c005ed8 :54000000 :23bd0008 :8d010008 :8c210008 :6c210000 :1020002c :54000000 :8d010004 :8d0c0000 :ac2c0000 :8d010000 :8d0c0004 :ac2c0004 :8d020008 :8c410008 :2021ffff :ac410008 :200c0000 :ad0c0000 :8d05000c :8ca1000c :200cffc0 :002c0824 :34210002 :aca1000c :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0049 :afac0004 :0fffe67c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe654 :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffaec8 :54000000 :23bdfff8 :3c0c0001 :258c1870 :afac0000 :afa10004 :0c005dfc :54000000 :23bd0008 :23bdfff8 :afa30000 :0fffae5c :54000000 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0049 :afac0004 :0fffe5e8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe5c0 :54000000 :23bd0008 :64210000 :1020002c :54000000 :0fffae34 :54000000 :23bdfff8 :3c0c0001 :258c189c :afac0000 :afa10004 :0c005d68 :54000000 :23bd0008 :23bdfff8 :20a10010 :afa10000 :afaa0004 :0fffe0b0 :54000000 :200c0001 :acac00a0 :0fffd674 :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0c0001 :258c18bc :afac0000 :0c005d10 :54000000 :0c005cf0 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fffdd90 :54000000 :aca10060 :0fffd620 :54000000 :00011020 :23bd0008 :64410000 :14200028 :54000000 :23bdfff8 :3c0c0001 :258c18f0 :afac0000 :0c005cbc :54000000 :0c005c9c :54000000 :23bd0008 :50410010 :aca10008 :3426fe8c :aca60004 :aca60000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe4a0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe478 :54000000 :23bd0008 :64210000 :10200040 :54000000 :23bdffe8 :3c0c0001 :258c192c :afac0000 :afa50004 :8cac0008 :afac0008 :8cac0060 :afac000c :8ca100a0 :50210010 :afa10010 :0c005c0c :54000000 :23bd0018 :200c0000 :accc0028 :20a10060 :acc10138 :8cac00a0 :accc013c :3c010010 :24210010 :acc10140 :64810000 :10200550 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe3dc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe3b4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c196c :afac0000 :afaa0004 :0c005b64 :54000000 :23bd0008 :23bdffe8 :afaa0000 :23c1fd6c :afa10004 :23c1fd68 :afa10008 :23c1fd64 :afa1000c :23c1fd60 :afa10010 :23c1fd5c :afa10014 :0c0006b8 :54000000 :00013820 :23bd0018 :68e10000 :102000f8 :54000000 :3c030001 :2463201c :20a200a4 :8c610004 :aca300ac :aca100a8 :8c2c0000 :ac4c0000 :ac220000 :8c410000 :ac220004 :8c610008 :20210001 :ac610008 :8ca300a0 :20020000 :0043082a :10200030 :54000000 :23bdfff8 :afa50000 :afa20004 :0fffb588 :54000000 :23bd0008 :20420001 :0043082a :1420ffdc :54000000 :20020000 :8ca100a0 :0041082a :10200038 :54000000 :00051820 :23bdfff8 :8c6c0060 :afac0000 :0fffdb40 :54000000 :23bd0008 :20630004 :20420001 :8ca100a0 :0041082a :1420ffd4 :54000000 :23bdfff8 :94a10008 :afa10000 :0fffd644 :54000000 :23bd0008 :8ca1000c :200cffc0 :002c0824 :34210001 :aca1000c :2001ffff :08000570 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe224 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe1fc :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0c0001 :258c1980 :afac0000 :afaa0004 :8fccfd6c :afac0008 :0c0059a4 :54000000 :23bd0010 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe1a4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe17c :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0001 :258c199c :afac0000 :afaa0004 :8fccfd68 :afac0008 :8fccfd64 :afac000c :0c00591c :54000000 :23bd0010 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffe11c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffe0f4 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0001 :258c19c4 :afac0000 :afaa0004 :8fccfd60 :afac0008 :8fccfd5c :afac000c :0c005894 :54000000 :23bd0010 :23c3ff90 :23c9fd58 :3c040001 :24841f50 :23bdfff0 :afa70000 :afa30004 :afa90008 :200c0064 :afac000c :0c000850 :54000000 :00011020 :23bd0010 :6c410000 :102000b0 :54000000 :23bdfff8 :afa40000 :200c0070 :afac0004 :0fffe058 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :200c002b :afac0004 :0fffe030 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0c0001 :258c19ec :afac0000 :afa20004 :8fc1fd58 :00220822 :afa10008 :0c0057d4 :54000000 :23bd0010 :23bdfff0 :afa50000 :afa30004 :8fc1fd58 :00220822 :afa10008 :afa2000c :0fffd5f8 :54000000 :23bd0010 :0bffff24 :54000000 :23bdfff8 :afa70000 :0fffbc74 :54000000 :200c0100 :accc012c :2402fc00 :acc2009c :23bdfff8 :afa50000 :afab0004 :8ccc009c :afac0008 :200c03e0 :afac000c :0fffd5a8 :54000000 :afab0000 :0c001954 :54000000 :00220820 :afc1fd78 :20040003 :23bd0010 :00023820 :23c20004 :23bdfff8 :200c0000 :afac0000 :0c001928 :54000000 :00011820 :00670820 :ac41fd78 :23bd0008 :64610000 :10200014 :54000000 :20420004 :20840001 :0bffffc4 :54000000 :2081fffe :afc1fd70 :50210002 :00e10822 :afc1fd74 :23bdfff0 :afa50000 :23c1fd70 :afa10004 :50820002 :8cc1009c :00220822 :afa10008 :afa2000c :0fffd504 :54000000 :8cc1009c :00220822 :acc1009c :8fccfd6c :accc0128 :8ca1000c :34210200 :aca1000c :23bd0010 :08000038 :54000000 :3c0c0000 :258c8620 :accc00a4 :8ca10008 :2421ffe0 :acc1009c :ac2b0000 :acc70128 :200c0140 :accc012c :8ca1000c :34210100 :aca1000c :23bdfff8 :200c000f :afac0000 :0fffa6b8 :54000000 :23bd0008 :3c030001 :24632028 :8c620004 :ad030008 :ad020004 :8c4c0000 :ad0c0000 :ac480000 :8d020000 :ac480004 :8c620008 :20420001 :ac620008 :23bdfff8 :afa10000 :0fffa670 :54000000 :23bd0008 :3c010001 :24212018 :8c210000 :64210000 :14200090 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffdde4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffddbc :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c0c0001 :258c1a10 :afac0000 :afa50004 :8cac0000 :afac0008 :0c005564 :54000000 :23bd0010 :3c010001 :24212018 :ac250000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0070 :afac0004 :0fffdd58 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffdd30 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c1a3c :afac0000 :afaa0004 :0c0054e0 :54000000 :23bd0008 :3c0c0001 :258c204c :00ac1022 :3c01a4fa :24214fa5 :00400035 :00200835 :0401000e :00000834 :5c210002 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011a58:50726f63 :65737347 :6574436f :6465496e :666f3a20 :6f70656e :206f6620 :25732066 :61696c65 :64202825 :64292e0a :00 00011a88:46696c65 :20646573 :63726970 :746f7220 :6973206e :6f772025 :642e0a00 00011aa4:50726f63 :65737347 :6574436f :6465496e :666f3a20 :72656164 :20676f74 :20256420 :286e6f74 :20256429 :20627974 :65732066 :726f6d20 :25730a00 00011adc:73746172 :743a00 00011ae4:50726f63 :65737347 :6574436f :6465496e :666f3a20 :2573206d :69737369 :6e672073 :74617274 :206c696e :6520286e :6f742061 :20444c58 :20657865 :63757461 :626c653f :290a00 00006da4:afbefffc :001df020 :afbffff8 :2fbd00a8 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc60000 :8fc70004 :8fc80008 :8fc9000c :8fca0010 :8fcb0014 :23bdfff8 :afa60000 :200c0001 :afac0004 :0fffb590 :54000000 :00011820 :23bd0008 :68610000 :10200088 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffdbf8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffdbd0 :54000000 :23bd0008 :64210000 :10200224 :54000000 :23bdfff0 :3c0c0001 :258c1a58 :afac0000 :afa60004 :afa30008 :0c00537c :54000000 :23bd0010 :080001f8 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffdb74 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffdb4c :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c1a88 :afac0000 :afa30004 :0c0052fc :54000000 :23bd0008 :23bdfff0 :afa30000 :23c4ff90 :afa40004 :200c0064 :afac0008 :0fffb8c4 :54000000 :00012820 :23bd0010 :64a10064 :102000a8 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffdac8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffdaa0 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdfff0 :3c0c0001 :258c1aa4 :afac0000 :afa50004 :200c0064 :afac0008 :afa6000c :0c005244 :54000000 :23bd0010 :23bdfff8 :afa30000 :0fffb714 :54000000 :2001ffff :23bd0008 :080001d0 :54000000 :23bdfff8 :afa40000 :3c010001 :24211adc :afa10004 :0fffd810 :54000000 :23bd0008 :64210000 :14200088 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffd9f8 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd9d0 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c1ae4 :afac0000 :afa60004 :0c005180 :54000000 :23bd0008 :2001ffff :08000120 :54000000 :23bdfff8 :afa40000 :200c003a :afac0004 :0fffd97c :54000000 :20210001 :afc1ff8c :23bdfff8 :afa10000 :23c2ff8c :afa20004 :200c0010 :afac0008 :0fffdadc :54000000 :ace10000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffdabc :54000000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffdaa0 :54000000 :ad010000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffda80 :54000000 :ad210000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffda60 :54000000 :ad410000 :8fccff8c :afac0000 :afa20004 :200c0010 :afac0008 :0fffda40 :54000000 :ad610000 :afa40000 :200c000a :afac0004 :0fffd8a0 :54000000 :23c2ff8f :00220822 :afa30000 :afa10004 :200c0000 :afac0008 :0fffb840 :54000000 :00030820 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011b28:476f7420 :25642062 :79746573 :20617420 :6f666673 :65742025 :64202e2e :2e00 00011b48:20746572 :6d696e61 :74656420 :61742025 :642e0a00 00011b5c:42756666 :65722069 :73202725 :73270a00 00011b6c:4e657720 :61646472 :65737320 :69732030 :7825782e :0a00 00011b84:5365656b :696e6720 :746f2025 :6420616e :64207265 :7475726e :696e6720 :25642062 :79746573 :210a00 00007204:afbefffc :001df020 :afbffff8 :2fbd0110 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fca0000 :8fc70008 :8fc2000c :8fcb0004 :23c3ff28 :afc3ff24 :23bdfff0 :afaa0000 :200c0000 :afac0004 :200c0001 :afac0008 :0fffb784 :54000000 :00014820 :50420001 :23bd0010 :6c4100c8 :10200008 :54000000 :200200c8 :23bdfff0 :afaa0000 :afa30004 :afa20008 :0fffb558 :54000000 :00012820 :23bd0010 :70a10000 :10200010 :54000000 :20010000 :08000594 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffd750 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd728 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff0 :3c0c0001 :258c1b28 :afac0000 :afa50004 :afa90008 :0c004ed4 :54000000 :23bd0010 :20a5ffff :23c1ff28 :00251020 :0800000c :54000000 :2042ffff :20a5ffff :90410000 :6421000a :1420ffec :54000000 :23c1ff29 :00250820 :200c005a :a02c0000 :23c1ff2a :00250820 :200c0000 :a02c0000 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffd688 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd660 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c0c0001 :258c1b48 :afac0000 :afa50004 :0c004e10 :54000000 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffd610 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd5e8 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c1b5c :afac0000 :23c1ff28 :afa10004 :0c004d94 :54000000 :23bd0008 :20050000 :3c080001 :25081f50 :23bdfff8 :8fccff24 :afac0000 :200c005a :afac0004 :0fffd58c :54000000 :23bd0008 :64210000 :102002ec :54000000 :23bdfff8 :8fccff24 :afac0000 :200c003a :afac0004 :0fffd560 :54000000 :23bd0008 :64210000 :102002c0 :54000000 :8fc2ff24 :90410000 :6421003a :102000b8 :54000000 :6ca10000 :142002a0 :54000000 :23bdfff0 :afa20000 :23c1ff24 :afa10004 :200c0010 :afac0008 :0fffd698 :54000000 :ace10000 :afa80000 :200c0066 :afac0004 :0fffd4f8 :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa80000 :200c002b :afac0004 :0fffd4d0 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c1b6c :afac0000 :8ce10000 :afa10004 :0c004c7c :54000000 :23bd0008 :8fc1ff24 :90210000 :6421003a :142001f8 :54000000 :8fc1ff24 :20210001 :afc1ff24 :00ab3020 :8fc1ff24 :08000010 :54000000 :8fc1ff24 :20210001 :afc1ff24 :903f0000 :63e10020 :1420ffe8 :54000000 :63e10009 :1420ffdc :54000000 :8fc2ff24 :805f0000 :33e300ff :6061000a :10200014 :54000000 :20410001 :afc1ff24 :0bfffe78 :54000000 :20020000 :23e1ffd0 :302100ff :70210009 :14200024 :54000000 :23e1ff9f :302100ff :70210005 :14200010 :54000000 :64610041 :14200008 :54000000 :20020001 :64410000 :1020fe30 :54000000 :8fc1ff24 :80220001 :20030000 :2041ffd0 :302100ff :70210009 :14200028 :54000000 :2041ff9f :302100ff :70210005 :14200014 :54000000 :304100ff :64210041 :14200008 :54000000 :20030001 :64610000 :1020fddc :54000000 :8fc1ff24 :90220000 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f2020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2044ffa9 :0800001c :54000000 :2061ffbf :70210005 :20040000 :10200008 :54000000 :2064ffc9 :8fc1ff24 :90220001 :00021820 :205fffd0 :73e10009 :10200010 :54000000 :001f1020 :08000038 :54000000 :2041ff9f :70210005 :10200010 :54000000 :2042ffa9 :0800001c :54000000 :2061ffbf :70210005 :20020000 :10200008 :54000000 :2062ffc9 :50810004 :00220820 :a0c10000 :20c60001 :20a50001 :8fc1ff24 :20210002 :afc1ff24 :8ce10000 :20210001 :ace10000 :0bfffe20 :54000000 :23bdfff0 :afaa0000 :8fc1ff24 :00290820 :23c3ff28 :00230822 :afa10004 :200c0000 :afac0008 :0fffb228 :54000000 :3c020001 :24421f50 :afa20000 :200c0066 :afac0004 :0fffd24c :54000000 :23bd0010 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :200c002b :afac0004 :0fffd224 :54000000 :23bd0008 :64210000 :10200034 :54000000 :23bdfff0 :3c0c0001 :258c1b84 :afac0000 :8fc1ff24 :00290820 :00230822 :afa10004 :afa50008 :0c0049c4 :54000000 :23bd0010 :00050820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00011c60:476f7420 :25642061 :7267756d :656e7473 :2e0a00 00011c74:41766169 :6c61626c :65206d65 :6d6f7279 :3a203078 :2578202d :3e203078 :25782e0a :00 00011c98:41726775 :6d656e74 :20636f75 :6e742069 :73202564 :2e0a00 00011cb0:41726775 :6d656e74 :20256420 :69732025 :732e0a00 00011cc4:436f6e76 :65727465 :64202573 :20746f20 :25643d25 :730a00 00011da4:25303878 :3a202530 :32782530 :32782530 :32782530 :32780a00 00011dbc:4f707469 :6f6e2025 :73206e6f :74207265 :636f676e :697a6564 :2e0a00 00011dd8:41626f75 :7420746f :20696e69 :7469616c :697a6520 :71756575 :65732e0a :00 00011df8:41667465 :7220696e :69746961 :6c697a69 :6e672071 :75657565 :732e0a00 00011e14:41667465 :7220696e :69746961 :6c697a69 :6e67206d :656d6f72 :792e0a00 00011e30:41667465 :7220696e :69746961 :6c697a69 :6e672070 :726f6365 :73736573 :2e0a00 00011e50:41667465 :7220696e :69746961 :6c697a69 :6e672073 :68617265 :64206d65 :6d6f7279 :2e0a00 00011e74:41667465 :7220696e :69746961 :6c697a69 :6e672073 :796e6368 :726f6e69 :7a617469 :6f6e2074 :6f6f6c73 :2e0a00 00011ea0:41667465 :7220696e :69746961 :6c697a69 :6e67206b :6579626f :6172642e :0a00 00011ec0:766d00 00011ec4:564d2044 :65736372 :6970746f :72206973 :2025640a :00 00011edc:43726561 :74656420 :70726f63 :65737365 :73202d20 :61626f75 :7420746f :20736574 :2074696d :65722071 :75616e74 :756d2e0a :00 00011f10:53657420 :74696d65 :72207175 :616e7475 :6d20746f :2025642c :2061626f :75742074 :6f207275 :6e206669 :72737420 :70726f63 :6573732e :0a00 0000789c:afbefffc :001df020 :afbffff8 :2fbd00c8 :8fce0000 :8fd40004 :0c0048c4 :54000000 :20100000 :20150000 :afd5ff50 :afd5ff54 :afd5ff58 :afd5ff5c :afd5ff60 :afd5ff64 :afd5ff68 :afd5ff6c :afd5ff70 :afd5ff74 :afd5ff78 :afd5ff7c :3c010001 :24211f50 :20150000 :a0350000 :23bdfff8 :3c150001 :26b51c60 :afb50000 :afae0004 :0c0048f8 :54000000 :0fffbcec :54000000 :23bdfff8 :3c150001 :26b51c74 :afb50000 :3c020001 :24425804 :8c420000 :afa20004 :afa10008 :0c0048c4 :54000000 :3c150001 :26b51c98 :afb50000 :afae0004 :0c0048ac :54000000 :20090000 :23bd0010 :012e082a :10200044 :54000000 :00141020 :23bdfff0 :3c150001 :26b51cb0 :afb50000 :afa90004 :8c550000 :afb50008 :0c004870 :54000000 :23bd0010 :20420004 :21290001 :012e082a :1420ffc8 :54000000 :0fffb6c0 :54000000 :20090000 :012e082a :1020033c :54000000 :23ccff80 :23cdff38 :3c0f0001 :25ef1cdb :21f20001 :21f10002 :00144020 :8d020000 :90410000 :6021002d :102002f8 :54000000 :90420001 :60410066 :142000e0 :54000000 :6c410066 :14200018 :54000000 :60410044 :102002a0 :54000000 :08000024 :54000000 :60410069 :14200048 :54000000 :60410075 :10200280 :54000000 :08000260 :54000000 :23bdfff8 :3c150001 :26b51f50 :afb50000 :21080004 :21290001 :8d010000 :afa10004 :0fffcafc :54000000 :08000268 :54000000 :23bdfff0 :21080004 :21290001 :8d150000 :afb50000 :20150000 :afb50004 :afb50008 :0fffd114 :54000000 :00011820 :afa10000 :afac0004 :0fffcff4 :54000000 :3c150001 :26b51cc4 :afb50000 :8d010000 :afa10004 :afa30008 :afac000c :0c004730 :54000000 :23bd0010 :08000200 :54000000 :20150000 :afd5ff38 :23bdffe8 :21080004 :21290001 :8d150000 :afb50000 :23c1ff4c :afa10004 :23c1ff48 :afa10008 :23c1ff44 :afa1000c :23c1ff40 :afa10010 :23c1ff3c :afa10014 :0ffff268 :54000000 :00015020 :3c150001 :26b51980 :afb50000 :8d010000 :afa10004 :8fd5ff4c :afb50008 :0c0046b0 :54000000 :3c150001 :26b5199c :afb50000 :8d010000 :afa10004 :8fd5ff48 :afb50008 :8fd5ff44 :afb5000c :0c004684 :54000000 :3c150001 :26b519c4 :afb50000 :8d010000 :afa10004 :8fd5ff40 :afb50008 :8fd5ff3c :afb5000c :0c004658 :54000000 :23bd0018 :3c0b0001 :256b1cde :23bdfff0 :afaa0000 :3c150001 :26b51cdb :afb50004 :afad0008 :201500c8 :afb5000c :0ffff614 :54000000 :00011820 :23bd0010 :6c610000 :10200098 :54000000 :20020000 :0043082a :1020ffb8 :54000000 :000b3820 :00113020 :00122820 :000f2020 :23bdffe8 :3c150001 :26b51da4 :afb50000 :8fc1ff38 :00220820 :00230822 :afa10004 :90810000 :afa10008 :90a10000 :afa1000c :90c10000 :afa10010 :90e10000 :afa10014 :0c0045a8 :54000000 :23bd0018 :20e70004 :20c60004 :20a50004 :20840004 :20420004 :0043082a :1420ff98 :54000000 :0bffff34 :54000000 :23bdfff8 :afaa0000 :0c0044e8 :54000000 :0800003c :54000000 :21080004 :21290001 :8d100000 :00099820 :08000028 :54000000 :23bdfff8 :3c150001 :26b51dbc :afb50000 :8d010000 :afa10004 :0c00452c :54000000 :23bd0008 :66010000 :14200018 :54000000 :21080004 :21290001 :012e082a :1420fce8 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffcd0c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcce4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51dd8 :afb50000 :0c004498 :54000000 :23bd0008 :0c000d60 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffcc90 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcc68 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51df8 :afb50000 :0c00441c :54000000 :23bd0008 :0fffb96c :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffcc14 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcbec :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51e14 :afb50000 :0c0043a0 :54000000 :23bd0008 :0fffd4bc :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffcb98 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcb70 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51e30 :afb50000 :0c004324 :54000000 :23bd0008 :0fff989c :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffcb1c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffcaf4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51e50 :afb50000 :0c0042a8 :54000000 :23bd0008 :0c0012fc :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffcaa0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffca78 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51e74 :afb50000 :0c00422c :54000000 :23bd0008 :0c0020ac :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffca24 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc9fc :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51ea0 :afb50000 :0c0041b0 :54000000 :23bd0008 :23c2ff80 :23c3ffe3 :20150061 :a0550000 :20420001 :0043082c :1420ffec :54000000 :23bdfff8 :3c150001 :26b51ec0 :afb50000 :20150002 :afb50004 :0fffa2f4 :54000000 :00014820 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffc970 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc948 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c150001 :26b51ec4 :afb50000 :afa90004 :0c0040f8 :54000000 :23bd0008 :23bdfff0 :afa90000 :20150000 :afb50004 :afb50008 :0fffa8bc :54000000 :afa90000 :23c1ff80 :afa10004 :20150050 :afb50008 :0fffa7a4 :54000000 :afa90000 :0fffa594 :54000000 :23bd0010 :66010000 :102000c4 :54000000 :00134820 :026e082a :10200044 :54000000 :23c4fff8 :51210002 :00341820 :01331022 :7041000a :10200028 :54000000 :50410002 :00240820 :8c750000 :ac35ff58 :20630004 :21290001 :012e082a :1420ffd0 :54000000 :23bdffd0 :8fd5ff50 :afb50000 :8fc1ff54 :afa10004 :8fd5ff58 :afb50008 :8fd5ff5c :afb5000c :8fd5ff60 :afb50010 :8fd5ff64 :afb50014 :8fd5ff68 :afb50018 :8fd5ff6c :afb5001c :8fd5ff70 :afb50020 :8fd5ff74 :afb50024 :8fd5ff78 :afb50028 :8fd5ff7c :afb5002c :0c0002f0 :54000000 :23bd0030 :0c003ec0 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffc7dc :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc7b4 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c150001 :26b51edc :afb50000 :0c003f68 :54000000 :23bd0008 :23bdfff8 :3c030001 :246315cc :8c750000 :afb50000 :0c001da0 :54000000 :3c020001 :24421f50 :afa20000 :20150069 :afb50004 :0fffc750 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2015002b :afb50004 :0fffc728 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c150001 :26b51f10 :afb50000 :8c610000 :afa10004 :0c003ed4 :54000000 :23bd0008 :0fff8e1c :54000000 :0c003ea8 :54000000 :0c003eac :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :3c010001 :24212018 :8c210000 :3c1f0001 :27ff204c :003f1022 :3c01a4fa :24214fa5 :00400035 :00200835 :0401000e :00000834 :5c210002 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :3c1f0001 :27ff204c :003f1022 :3c01a4fa :24214fa5 :00400035 :00200835 :0401000e :00000834 :5c210002 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :00000000 00008418:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :64410000 :10200020 :54000000 :3c010001 :24211f48 :ac220000 :3c010001 :24211f4c :20050000 :ac250000 :3c1f0001 :27ff1f4c :8fe30000 :3c010001 :24211f48 :8c220000 :00430820 :90210000 :64210000 :10200010 :54000000 :6c610062 :10200020 :54000000 :20010000 :08000058 :54000000 :23e10001 :ac410000 :08000044 :54000000 :70610063 :10200038 :54000000 :00022020 :001f1020 :8c5f0000 :009f0820 :90210000 :64210000 :1020ffc8 :54000000 :23e10001 :ac410000 :70210063 :1420ffd8 :54000000 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0408 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :20040000 :8fc10000 :64210000 :1020005c :54000000 :23c5fc10 :001ef820 :20020000 :00851820 :8fe10000 :00220820 :80210000 :a0610000 :20420001 :20630001 :20840001 :8fe10000 :00410820 :9021ffff :64210000 :1420ffd0 :54000000 :23ff0004 :8fe10000 :64210000 :1420ffb4 :54000000 :23c3fc10 :00641020 :23c1fc11 :00240820 :20060000 :a0260000 :a0460000 :23bdfff0 :20060000 :afa60000 :afa30004 :8fc60000 :afa60008 :20060001 :afa6000c :0fffdb30 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :0c003bd4 :54000000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff8b44 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff8b00 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8abc :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000136cc:496e6974 :69616c69 :7a696e67 :20717565 :7565206c :696e6b20 :25642e0a :00 00008ae8:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :3c050001 :24a53738 :afa50000 :0c0000e0 :54000000 :20030000 :23bd0008 :3c040001 :24841f50 :3c020001 :24423744 :23bdfff8 :afa40000 :20050069 :afa50004 :0fffbeec :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa40000 :2005002b :afa50004 :0fffbec4 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c050001 :24a536cc :afa50000 :afa30004 :0c003674 :54000000 :23bd0008 :20050000 :ac450000 :23bdfff8 :afa20000 :0c000078 :54000000 :23bd0008 :20420010 :20630001 :7061018f :1420ff64 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :ac210000 :ac210004 :201f0000 :ac3f0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000136ec:25733a20 :25730a00 000136f4:51756575 :65467265 :654c696e :6b00 00013704:4c696e6b :206e6f74 :20656d70 :747900 00008c34:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8c610000 :64210000 :10200038 :54000000 :23bdfff0 :3c040001 :248436ec :afa40000 :3c010001 :242136f4 :afa10004 :3c040001 :24843704 :afa40008 :0c003584 :54000000 :23bd0010 :3c020001 :24423738 :8c410004 :ac620008 :ac610004 :8c240000 :ac640000 :ac230000 :8c610000 :ac230004 :8c410008 :20210001 :ac410008 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00013714:51756575 :65416c6c :6f634c69 :6e6b00 00013724:4c696e6b :206e6f74 :20616c6c :6f636174 :65642100 00008cec:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :24423738 :8c410008 :60210000 :14200054 :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c640000 :ac240000 :8c610000 :8c640004 :ac240004 :8c620008 :8c410008 :2021ffff :ac410008 :20040000 :ac640000 :08000008 :54000000 :20030000 :64610000 :14200038 :54000000 :23bdfff0 :3c040001 :248436ec :afa40000 :3c010001 :24213714 :afa10004 :3c040001 :24843724 :afa40008 :0c003468 :54000000 :23bd0010 :00030820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff83b8 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff8374 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff8330 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00015044:456e7465 :72696e67 :2053796e :63684d6f :64756c65 :496e6974 :0a00 00015060:4c656176 :696e6720 :53796e63 :684d6f64 :756c6549 :6e69740a :00 00009274:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :23bdfff8 :3c020001 :24421f50 :afa20000 :20030070 :afa30004 :0fffb790 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb768 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :24635044 :afa30000 :0c002f1c :54000000 :23bd0008 :3c1f0001 :27ff5128 :23e2026c :20030000 :afe30010 :23ff0014 :03e2082c :1420ffec :54000000 :201f0000 :23ff0001 :73e1003f :1420fff4 :54000000 :201f0000 :23ff0001 :73e1001f :1420fff4 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20030070 :afa30004 :0fffb6d0 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2003002b :afa30004 :0fffb6a8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c030001 :24635060 :afa30000 :0c002e5c :54000000 :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :23bdfff8 :afa20000 :0ffff7f4 :54000000 :ac43000c :23bd0008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :23bdfff8 :2005000f :afa50000 :0fff7e28 :54000000 :00012020 :23bd0008 :20030000 :3c1f0001 :27ff5128 :001f1020 :8fe10010 :64210000 :10200078 :54000000 :205f0014 :20630001 :7061001f :1420ffdc :54000000 :23bdfff8 :afa40000 :0fff7ddc :54000000 :23bd0008 :60610020 :14200054 :54000000 :50610002 :00230820 :50210002 :3c050001 :24a55128 :00251020 :23bdfff8 :afa20000 :0ffff718 :54000000 :8fc50000 :ac45000c :23bd0008 :00030820 :08000018 :54000000 :20050001 :afe50010 :0bffff94 :54000000 :2001ffff :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 0001507c:4f6c6420 :696e7465 :72727570 :74207661 :6c756520 :77617320 :30782578 :2e0a00 0001509c:50726f63 :20307825 :78207761 :6974696e :67206f6e :2073656d :20307825 :782c2063 :6f756e74 :3d25642e :0a00 000150c8:53757370 :656e6469 :6e672063 :75727265 :6e742070 :726f6320 :28307825 :78292e0a :00 00009538:afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc40000 :23bdfff8 :2007000f :afa70000 :0fff7d14 :54000000 :00013020 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070049 :afa70004 :0fffb49c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb474 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c070001 :24e7507c :afa70000 :afa60004 :0c002c24 :54000000 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070073 :afa70004 :0fffb424 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffb3fc :54000000 :23bd0008 :64210000 :1020003c :54000000 :23bdfff0 :3c070001 :24e7509c :afa70000 :3c010001 :24212018 :8c210000 :afa10004 :afa40008 :8c87000c :afa7000c :0c002b94 :54000000 :23bd0010 :8c81000c :2021ffff :ac81000c :68210000 :102000d8 :54000000 :0ffff648 :54000000 :00011020 :3c050001 :24a52018 :8ca10000 :20070000 :ac470000 :ac41000c :23bdfff8 :3c030001 :24631f50 :afa30000 :20070073 :afa70004 :0fffb358 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2007002b :afa70004 :0fffb330 :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c070001 :24e750c8 :afa70000 :8ca10000 :afa10004 :0c002adc :54000000 :23bd0008 :8c810004 :ac440008 :ac410004 :8c270000 :ac470000 :ac220000 :8c410000 :ac220004 :8c810008 :20210001 :ac810008 :0fff7b64 :54000000 :23bdfff8 :afa60000 :0fff7b08 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :24425128 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffd2c :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000150ec:5369676e :616c6c69 :6e67206f :6e207365 :6d203078 :25782c20 :636f756e :743d2564 :2e0a00 00015110:57616b69 :6e672075 :70205043 :42203078 :25782e0a :00 00009848:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc20000 :23bdfff8 :2005000f :afa50000 :0fff7a0c :54000000 :00012020 :23bd0008 :23bdfff8 :3c030001 :24631f50 :afa30000 :20050073 :afa50004 :0fffb194 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa30000 :2005002b :afa50004 :0fffb16c :54000000 :23bd0008 :64210000 :1020002c :54000000 :23bdfff0 :3c050001 :24a550ec :afa50000 :afa20004 :8c45000c :afa50008 :0c002914 :54000000 :23bd0010 :8c41000c :20210001 :ac41000c :70210000 :102000ec :54000000 :8c430000 :8c610008 :8c210008 :6c210000 :1020002c :54000000 :8c610004 :8c650000 :ac250000 :8c610000 :8c650004 :ac250004 :8c620008 :8c410008 :2021ffff :ac410008 :20050000 :ac650000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20050073 :afa50004 :0fffb0b4 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2005002b :afa50004 :0fffb08c :54000000 :23bd0008 :64210000 :10200028 :54000000 :23bdfff8 :3c050001 :24a55110 :afa50000 :8c61000c :afa10004 :0c002838 :54000000 :23bd0008 :23bdfff8 :8c65000c :afa50000 :0fffc3e0 :54000000 :afa30000 :0ffff234 :54000000 :23bd0008 :23bdfff8 :afa40000 :0fff7874 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :73e1001f :10200058 :54000000 :53e10002 :003f0820 :50210002 :3c020001 :24425128 :0022f820 :8fe10010 :64210000 :10200024 :54000000 :23bdfff8 :afbf0000 :0ffffdb0 :54000000 :20010000 :23bd0008 :08000014 :54000000 :20010001 :08000008 :54000000 :20010001 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000153a8:3a207472 :6170732e :632c7620 :312e3120 :32303030 :2f30392f :32302030 :313a3530 :3a313920 :656c6d20 :45787020 :656c6d20 :303030 00009bd0:afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff75c0 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff757c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff7538 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :24210010 :8fdf0000 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :3c01fff0 :242101c0 :201f0001 :ac3f0000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000153dc:46617461 :6c3a2043 :756d756c :61746976 :65206c65 :6e677468 :206f6620 :616c6c20 :61726775 :6d656e74 :73203e20 :3130300a :00 0000a0d4:afbefffc :001df020 :afbffff8 :2fbd06a0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :afac0028 :8fc40000 :8fc60004 :23c2fbf8 :23c3fc5b :200c0000 :a04c0000 :20420001 :0043082c :1420ffec :54000000 :20050000 :64c10000 :142000a0 :54000000 :23bdfff0 :3c020001 :24422018 :8c4c0000 :afac0000 :afa40004 :23c1f990 :afa10008 :200c0200 :afac000c :0fffa014 :54000000 :23bd0010 :23c4fb8f :23c3fb90 :23bdfff0 :8c4c0000 :afac0000 :8fc1f990 :00250820 :afa10004 :afa30008 :200c0001 :afac000c :0fff9fdc :54000000 :20840001 :20630001 :20a50001 :23bd0010 :70a10063 :10200060 :54000000 :90810000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1f990 :afa10004 :200c0200 :afac0008 :0fffabc8 :54000000 :8fccf990 :afac0000 :23c1fb90 :afa10004 :200c0064 :afac0008 :0fffa3bc :54000000 :23bd0010 :200c0000 :a3ccfbf3 :20050000 :64c10000 :142000b0 :54000000 :3c080001 :25082018 :23cbfbf8 :23cafbf7 :23c6fff8 :23c90020 :8cc1f998 :64210000 :1020012c :54000000 :20020000 :00063820 :00aa2020 :00ab1820 :23bdfff0 :8d0c0000 :afac0000 :8ce1f998 :00220820 :afa10004 :afa30008 :200c0001 :afac000c :0fff9ee8 :54000000 :20840001 :20630001 :20a50001 :20420001 :23bd0010 :70a103ff :10200014 :54000000 :90810000 :64210000 :1420ffa8 :54000000 :20c60004 :00c9082c :102000b0 :54000000 :0bffff70 :54000000 :23c5fbf8 :00053820 :23c3fff8 :23c60020 :2064f998 :8c820000 :64410000 :10200084 :54000000 :23bdfff8 :afa20000 :0fffa4ac :54000000 :00a11020 :00470822 :23bd0008 :6c210064 :10200028 :54000000 :23bdfff8 :3c0c0001 :258c53dc :afac0000 :0c001ec8 :54000000 :0c001ea8 :54000000 :23bd0008 :23bdfff8 :afa50000 :8c810000 :afa10004 :0fffa208 :54000000 :200c0000 :a04c0000 :23bd0008 :20630004 :0066082c :1420ff70 :54000000 :200c0000 :a3ccfff7 :23bdfff0 :200c0000 :afac0000 :23c1fbf8 :afa10004 :23c1fb90 :afa10008 :200c0001 :afac000c :0fffbd60 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fac0028 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd00d0 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :afa9001c :afaa0020 :afab0024 :8fc40000 :8fc10004 :20080000 :00081820 :64210000 :142000a0 :54000000 :23bdfff0 :3c020001 :24422018 :8c4b0000 :afab0000 :afa40004 :23c1ff58 :afa10008 :200b0028 :afab000c :0fff9d00 :54000000 :23bd0010 :23c5ffa7 :23c4ffa8 :23bdfff0 :8c4b0000 :afab0000 :8fc1ff58 :00230820 :afa10004 :afa40008 :200b0001 :afab000c :0fff9cc8 :54000000 :20a50001 :20840001 :20630001 :23bd0010 :7061004f :10200060 :54000000 :90a10000 :64210000 :10200050 :54000000 :0bffffa4 :54000000 :23bdfff0 :afa40000 :23c1ff58 :afa10004 :200b0028 :afab0008 :0fffa8b4 :54000000 :8fcbff58 :afab0000 :23c1ffa8 :afa10004 :200b0050 :afab0008 :0fffa0a8 :54000000 :23bd0010 :200b0000 :a3cbfff7 :23c3ffa8 :80620000 :304100ff :64210000 :102000f0 :54000000 :23cafff8 :23c9ff5c :51010002 :00293820 :002a3020 :304100ff :60210025 :102000b4 :54000000 :90610001 :60210025 :10200010 :54000000 :20630001 :08000098 :54000000 :8ceb0000 :accbff88 :51010002 :00292820 :002a2020 :20630001 :807f0000 :33e200ff :60410073 :14200060 :54000000 :6041006c :1420ffe0 :54000000 :23e1ff9a :302100ff :70210001 :14200010 :54000000 :60410065 :10200020 :54000000 :20e70004 :20c60004 :21080001 :8ca50004 :ac85ff8c :08000018 :54000000 :23e1ff9f :302100ff :70210019 :1020ff90 :54000000 :20e70004 :20c60004 :21080001 :20630001 :80620000 :304100ff :64210000 :1420ff2c :54000000 :23bdffd8 :23c1ffa8 :afa10000 :8fc1ff80 :afa10004 :8fcbff84 :afab0008 :8fcbff88 :afab000c :8fcbff8c :afab0010 :8fcbff90 :afab0014 :8fcbff94 :afab0018 :8fcbff98 :afab001c :8fcbff9c :afab0020 :0c001b7c :54000000 :23bd0028 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fa9001c :8faa0020 :8fab0024 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00015410:496e7465 :72727570 :74206361 :7573653d :30782578 :20696172 :3d307825 :78206973 :723d3078 :25782061 :7267733d :30782530 :38782e0a :00 00015448:476f7420 :6120636f :6e746578 :74207377 :69746368 :20747261 :70210a00 00015464:476f7420 :616e2065 :78697420 :74726170 :210a00 00015478:476f7420 :6120666f :726b2074 :72617021 :0a00 0001548c:476f7420 :61207072 :6f636573 :7320736c :65657020 :74726170 :210a00 000154a8:476f7420 :61207072 :696e7466 :20747261 :70210a00 000154bc:476f7420 :616e206f :70656e20 :77697468 :20706172 :616d6574 :65727320 :28272573 :272c3078 :2578290a :00 000154e8:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :74726170 :20283078 :25782920 :2d206578 :6974696e :67210a00 00015514:476f7420 :61207469 :6d657220 :696e7465 :72727570 :74210a00 0001552c:476f7420 :61206b65 :79626f61 :72642069 :6e746572 :72757074 :20286368 :61723d30 :78257828 :2563292c :206e6c65 :66743d25 :6429210a :00 00015564:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c206163 :63657373 :20617420 :6961723d :30782578 :2c206973 :723d3078 :25780a00 00015598:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c206164 :64726573 :73206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 000155d0:45786974 :696e6720 :61667465 :7220696c :6c656761 :6c20696e :73747275 :6374696f :6e206174 :20696172 :3d307825 :782c2069 :73723d30 :7825780a :00 0001560c:45786974 :696e6720 :61667465 :72207061 :67652066 :61756c74 :20617420 :6961723d :30782578 :2c206973 :723d3078 :25780a00 0001563c:476f7420 :616e2075 :6e726563 :6f676e69 :7a656420 :73797374 :656d2069 :6e746572 :72757074 :20283078 :25782920 :2d206578 :6974696e :67210a00 00015674:41626f75 :7420746f :20726574 :75726e20 :66726f6d :20646f69 :6e746572 :72757074 :2e0a00 0000a6dc:afbefffc :001df020 :afbffff8 :2fbd0058 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc20000 :8fc60004 :8fc40008 :8fc3000c :23bdfff8 :3c050001 :24a51f50 :afa50000 :20070074 :afa70004 :0fffa308 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa50000 :2007002b :afa70004 :0fffa2e0 :54000000 :23bd0008 :64210000 :10200030 :54000000 :23bdffe8 :3c070001 :24e75410 :afa70000 :afa20004 :afa60008 :afa4000c :afa30010 :0c001a84 :54000000 :23bd0018 :3c070800 :24e70000 :00470824 :64210000 :10200ef8 :54000000 :3c07f7ff :24e7ffff :00471024 :60410440 :142007c4 :54000000 :6c410440 :142000ec :54000000 :60410214 :1420058c :54000000 :6c410214 :1420005c :54000000 :60410211 :1420062c :54000000 :6c410211 :14200024 :54000000 :60410201 :142003a8 :54000000 :60410210 :10200e78 :54000000 :080005a4 :54000000 :60410212 :142006ac :54000000 :60410213 :10200e58 :54000000 :08000408 :54000000 :60410410 :142002c8 :54000000 :6c410410 :14200024 :54000000 :60410300 :14200198 :54000000 :60410400 :10200e20 :54000000 :08000118 :54000000 :60410431 :142006b0 :54000000 :6c410431 :14200018 :54000000 :60410430 :10200df4 :54000000 :080001f8 :54000000 :60410432 :10200de0 :54000000 :080006b0 :54000000 :60410454 :142009dc :54000000 :6c410454 :1420005c :54000000 :60410451 :14200840 :54000000 :6c410451 :14200024 :54000000 :60410441 :142006d0 :54000000 :60410450 :10200d90 :54000000 :0800076c :54000000 :60410452 :142008b0 :54000000 :60410453 :10200d70 :54000000 :08000944 :54000000 :60410457 :14200b64 :54000000 :6c410457 :14200024 :54000000 :60410455 :142009fc :54000000 :60410456 :10200d38 :54000000 :08000a90 :54000000 :60410459 :14200c7c :54000000 :68410459 :14200bc8 :54000000 :60410580 :10200d0c :54000000 :080004f0 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fffa08c :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fffa064 :54000000 :23bd0008 :64210000 :10200dac :54000000 :23bdfff8 :3c070001 :24e75448 :08000d88 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fffa020 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9ff8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e75464 :afa70000 :0c0017ac :54000000 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :0fffb4dc :54000000 :0fffacfc :54000000 :08000df0 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fff9f80 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9f58 :54000000 :23bd0008 :64210000 :10200d9c :54000000 :23bdfff8 :3c070001 :24e75478 :afa70000 :0c00170c :54000000 :08000d78 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fff9f08 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9ee0 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e7548c :afa70000 :0c001694 :54000000 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :0fffb09c :54000000 :0fffabe4 :54000000 :08000cd8 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fff9e68 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9e40 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e754a8 :afa70000 :0c0015f4 :54000000 :23bd0008 :23bdfff8 :afa30000 :30810040 :afa10004 :0ffff7cc :54000000 :08000c44 :54000000 :30810040 :64210000 :1020001c :54000000 :8c670000 :afc7ffe8 :8c630004 :afc3ffec :0800006c :54000000 :23bdfff0 :3c020001 :24422018 :8c470000 :afa70000 :afa30004 :23c1ffe8 :afa10008 :20070008 :afa7000c :0fff94ec :54000000 :8c420000 :afa20000 :8fc1ffe8 :afa10004 :23c2ffc8 :afa20008 :2007001f :afa7000c :0fff94c4 :54000000 :20070000 :a3c7ffe7 :afc2ffe8 :23bd0010 :23bdfff8 :20070000 :afa70000 :0fff65a0 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :8fc1ffec :3c070001 :24e70000 :00270820 :afa10004 :0fffaa38 :54000000 :23bdfff8 :3c070001 :24e754bc :afa70000 :8fc1ffe8 :afa10004 :8fc7ffec :afa70008 :0c0014cc :54000000 :23bd0010 :23bdfff8 :afa20000 :0fff652c :54000000 :08000b24 :54000000 :23bdfff8 :20070000 :afa70000 :0fff6510 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa9b4 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff64d0 :54000000 :08000ac8 :54000000 :23bdfff8 :20070000 :afa70000 :0fff64b4 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa958 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff6474 :54000000 :08000a6c :54000000 :23bdfff8 :20070000 :afa70000 :0fff6458 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa8fc :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff6418 :54000000 :08000a10 :54000000 :23bdfff8 :20070000 :afa70000 :0fff63fc :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa8a0 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff63bc :54000000 :080009b4 :54000000 :23bdfff8 :20070000 :afa70000 :0fff63a0 :54000000 :00011020 :23bd0008 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :2007ffff :afa70004 :0fffa844 :54000000 :23bd0008 :23bdfff8 :afa20000 :0fff6360 :54000000 :08000958 :54000000 :0fffd428 :54000000 :00011020 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa7fc :54000000 :08000924 :54000000 :23bdfff8 :afa30000 :30810040 :afa10004 :0ffff158 :54000000 :08000904 :54000000 :23bdfff8 :3c020001 :24422018 :8c470000 :afa70000 :0fff696c :54000000 :0001f820 :8c420000 :afa20000 :afbf0004 :0fffa7a0 :54000000 :080008c8 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff9188 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9da0 :54000000 :23bd0010 :8fdfffc4 :23bdfff8 :3c020001 :24422018 :8c470000 :afa70000 :afbf0004 :0fff6a8c :54000000 :0001f820 :8c420000 :afa20000 :afbf0004 :0fffa6f0 :54000000 :08000818 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff90d8 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9cf0 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe340 :54000000 :00011020 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa648 :54000000 :08000770 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff9030 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9c48 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe61c :54000000 :0001f820 :3c010001 :24212018 :8c210000 :afa10000 :afbf0004 :0fffa5a0 :54000000 :080006c8 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8f88 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9ba0 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe800 :54000000 :0001f820 :3c010001 :24212018 :8c210000 :afa10000 :afbf0004 :0fffa4f8 :54000000 :08000620 :54000000 :0fffe864 :54000000 :00011020 :23bdfff8 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa4c4 :54000000 :080005ec :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8eac :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9ac4 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe7dc :54000000 :0001f820 :3c010001 :24212018 :8c210000 :afa10000 :afbf0004 :0fffa41c :54000000 :08000544 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8e04 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9a1c :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe758 :54000000 :0001f820 :3c010001 :24212018 :8c210000 :afa10000 :afbf0004 :0fffa374 :54000000 :0800049c :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8d5c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9974 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe6d4 :54000000 :00011020 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa2cc :54000000 :080003f4 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8cb4 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff98cc :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe650 :54000000 :00011020 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa224 :54000000 :0800034c :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8c0c :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff9824 :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe5cc :54000000 :00011020 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa17c :54000000 :080002a4 :54000000 :30810040 :64210000 :1420003c :54000000 :23bdfff0 :3c010001 :24212018 :8c210000 :afa10000 :afa30004 :23c1ffc4 :afa10008 :20070004 :afa7000c :0fff8b64 :54000000 :08000024 :54000000 :23bdfff0 :afa30000 :23c1ffc4 :afa10004 :20070004 :afa70008 :0fff977c :54000000 :23bd0010 :23bdfff8 :8fc7ffc4 :afa70000 :0fffe548 :54000000 :00011020 :3c010001 :24212018 :8c210000 :afa10000 :afa20004 :0fffa0d4 :54000000 :080001fc :54000000 :23bdfff8 :3c070001 :24e754e8 :080001d0 :54000000 :60410003 :14200148 :54000000 :6c410003 :14200024 :54000000 :60410001 :14200158 :54000000 :60410002 :10200194 :54000000 :08000130 :54000000 :60410040 :14200038 :54000000 :6c410040 :14200018 :54000000 :60410020 :10200168 :54000000 :0800012c :54000000 :60410048 :10200154 :54000000 :08000088 :54000000 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fff9300 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff92d8 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e75514 :afa70000 :0c000a8c :54000000 :23bd0008 :0fff9ff8 :54000000 :080000f0 :54000000 :3c04fff0 :248401a0 :3c03fff0 :24630180 :8c820000 :8c610000 :23bdfff0 :3c070001 :24e7552c :afa70000 :afa10004 :afa10008 :afa2000c :0c000a3c :54000000 :23bd0010 :6c410001 :102000a4 :54000000 :0bffffc0 :54000000 :23bdfff0 :3c070001 :24e75564 :08000038 :54000000 :23bdfff0 :3c070001 :24e75598 :08000024 :54000000 :23bdfff0 :3c070001 :24e755d0 :08000010 :54000000 :23bdfff0 :3c070001 :24e7560c :afa70000 :afa60004 :afa40008 :0c0009c8 :54000000 :0c0009a8 :54000000 :23bd0010 :0800002c :54000000 :23bdfff8 :3c070001 :24e7563c :afa70000 :afa20004 :0c000998 :54000000 :0c000978 :54000000 :23bd0008 :23bdfff8 :3c020001 :24421f50 :afa20000 :20070074 :afa70004 :0fff9190 :54000000 :23bd0008 :64210000 :1420002c :54000000 :23bdfff8 :afa20000 :2007002b :afa70004 :0fff9168 :54000000 :23bd0008 :64210000 :10200020 :54000000 :23bdfff8 :3c070001 :24e75674 :afa70000 :0c00091c :54000000 :23bd0008 :0fff5864 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :2002000f :afa20000 :0fff585c :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :20020000 :afa20000 :0fff5818 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :23bdfff8 :8fc20000 :afa20000 :0fff57d4 :54000000 :23bd0008 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fc10000 :8fc20004 :201f0000 :ac3f0000 :ac22000c :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc20004 :8fc10008 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :ac230008 :ac230004 :8c7f0000 :ac3f0000 :ac610000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc30000 :8fc10004 :8c620004 :ac230008 :ac220004 :8c5f0000 :ac3f0000 :ac410000 :8c220000 :ac410004 :8c610008 :20210001 :ac610008 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fe10008 :8c210008 :6c210000 :1020002c :54000000 :8fe10004 :8fe30000 :ac230000 :8fe10000 :8fe30004 :ac230004 :8fe20008 :8c410008 :2021ffff :ac410008 :20030000 :afe30000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0008 :8fc10000 :8c210008 :60210000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00015698:50726f63 :65737320 :2300 000156a4:52756e6e :696e6720 :70726f63 :65737320 :25642028 :69746572 :6174696f :6e202564 :29210a00 0000bdd0:afbefffc :001df020 :afbffff8 :2fbd0078 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :afa80018 :8fc60000 :2001000a :00c00035 :00200835 :0401000f :00001034 :50410002 :00220820 :50210001 :00c13822 :70c10063 :102000dc :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :2508573c :00280820 :afa10000 :20080001 :afa80004 :0fffd580 :54000000 :20030001 :23bd0008 :23c4ffd0 :23c5ffa8 :00061020 :23bdfff8 :afa40000 :3c080001 :25085698 :afa80004 :0fff86ec :54000000 :afa30000 :afa50004 :0fff8c18 :54000000 :afa40000 :afa50004 :0fff87bc :54000000 :23bdfff8 :3c080000 :2508bdd0 :afa80000 :50410005 :00220822 :50210002 :00220820 :50210003 :00260820 :afa10004 :afa40008 :20080000 :afa8000c :0fffa234 :54000000 :23bd0010 :00461020 :20630001 :70610006 :1420ff70 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :2508573c :00280820 :afa10000 :0fffd60c :54000000 :20030000 :23bd0008 :50c20001 :0062082a :10200070 :54000000 :200503e8 :00022020 :00600035 :00a00835 :0401000f :00001034 :50410005 :00220822 :50210002 :00220820 :50210003 :00610829 :14200028 :54000000 :23bdfff0 :3c080001 :250856a4 :afa80000 :afa60004 :afa30008 :0c000278 :54000000 :23bd0010 :20630001 :0064082a :1420ffa0 :54000000 :23bdfff8 :50e10002 :00270820 :50210002 :3c080001 :2508573c :00280820 :afa10000 :0fffd870 :54000000 :23bd0008 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fa80018 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 000156c8:63686173 :65746169 :6c00 000156d4:43686173 :696e6720 :7461696c :2025642e :0a00 000156e8:4f70656e :206f6620 :2825732c :30782578 :29207265 :7475726e :73203078 :25782e0a :00 0001570c:43686173 :65546169 :6c00 0000c010:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc40000 :3c030001 :246356c8 :23bdfff8 :3c050001 :24a556d4 :afa50000 :afa40004 :0c0001c0 :54000000 :afa30000 :20822000 :afa20004 :0c000158 :54000000 :23bdfff8 :3c050001 :24a556e8 :afa50000 :afa30004 :afa20008 :afa1000c :0c000188 :54000000 :23bd0010 :70810027 :1020003c :54000000 :23bdfff0 :3c050000 :24a5c010 :afa50000 :20810001 :afa10004 :3c050001 :24a5570c :afa50008 :20050000 :afa5000c :0fffa050 :54000000 :23bd0010 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00015718:25642000 :52616e64 :6f6d206e :756d6265 :72202530 :32692069 :73203078 :25303878 :2e0a00 0000c0fc:afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :3c020001 :2442573c :204300b4 :23bdfff8 :afa20000 :20040001 :afa40004 :0fffd2a4 :54000000 :23bd0008 :20420014 :0043082c :1420ffd8 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 00015804:0001580c 0000c170:44000300 :4be00000 :54000000 :4be00000 :54000000 :44002013 :4be00000 :54000000 :44002014 :4be00000 :54000000 :44002010 :4be00000 :54000000 :44002011 :4be00000 :54000000 :44002012 :4be00000 :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44002f00 :4be00000 :54000000 :44000300 :4be00000 :54000000 :44002001 :4be00000 :54000000
home/bshapir/cs314/project2/execs/userprog.dlx.obj
start:00001000 0000207e 00001000 00000d00 00002000 0000007e 00002000:53657474 :696e6720 :6e756d62 :6572203d :2025640a :00 00002018:55736167 :653a2000 00002020:206e756d :6265720a :00 0000202c:436f756c :64206e6f :74206d61 :70207468 :65207368 :61726564 :20706167 :6520746f :20766972 :7475616c :20616464 :72657373 :2c206578 :6974696e :672e2e0a :00 0000206c:75736572 :70726f67 :322e646c :782e6f62 :6a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0038 :8fc20000 :8fc30004 :0c000cd8 :54000000 :60410002 :10200050 :54000000 :23bdfff0 :8c630004 :afa30000 :20080000 :afa80004 :2008000a :afa80008 :0c0009bc :54000000 :00012820 :3c080000 :25082000 :afa80000 :afa50004 :0c0001d0 :54000000 :23bd0010 :08000048 :54000000 :23bdfff8 :3c080000 :25082018 :afa80000 :0c0001ac :54000000 :8c630000 :afa30000 :0c00019c :54000000 :3c080000 :25082020 :afa80000 :0c000188 :54000000 :0c000c30 :54000000 :0c00019c :54000000 :00011820 :23bdfff8 :afa30000 :0c000194 :54000000 :00011020 :23bd0008 :64410000 :14200024 :54000000 :23bdfff8 :3c080000 :2508202c :afa80000 :0c000138 :54000000 :0c000be0 :54000000 :ac450000 :20080041 :a0480004 :23bdfff8 :20080000 :afa80000 :0c00014c :54000000 :00013820 :20080005 :afa80000 :0c000138 :54000000 :00011020 :afa30000 :23c6ffe8 :afa60004 :0c0007a8 :54000000 :afa70000 :23c4ffd8 :afa40004 :0c000794 :54000000 :afa20000 :23c3ffc8 :afa30004 :0c000780 :54000000 :20020000 :23bd0008 :0045082a :10200044 :54000000 :23bdffe8 :3c080000 :2508206c :afa80000 :afa60004 :afa40008 :afa3000c :20080000 :afa80010 :0c000094 :54000000 :23bd0018 :20420001 :0045082a :1420ffc4 :54000000 :23bdfff8 :afa70000 :0c0000a0 :54000000 :23bd0008 :0c000afc :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000440 :4be00000 :54000000 :44000441 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :44000453 :4be00000 :54000000 :44000454 :4be00000 :54000000 :44000455 :4be00000 :54000000 :44000456 :4be00000 :54000000 :44000457 :4be00000 :54000000 :44000458 :4be00000 :54000000 :44000459 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000
home/bshapir/cs314/project2/execs/userprog2.dlx.obj
start:00001000 000020ee 00001000 00000cd0 00002000 000000ee 00002000:55736167 :653a2000 00002008:2068616e :646c655f :73747220 :73706167 :655f7374 :72207365 :6d617068 :6f72655f :7374720a :00 00002030:436f756c :64206e6f :74206d61 :70207468 :65207669 :72747561 :6c206164 :64726573 :7320746f :20746865 :206d656d :6f72792c :20657869 :74696e67 :2e2e2e0a :00 00002070:42616420 :73656d61 :70686f72 :65207370 :6167652e :2e2e2e20 :45786974 :696e6721 :0a00 00002094:54686973 :20697320 :6f6e6520 :6f662074 :68652025 :6420696e :7374616e :63657320 :796f7520 :63726561 :7465640a :00 000020c4:54686520 :73686172 :65642063 :68617261 :63746572 :20697320 :25630a00 000020e0:4d792050 :49442069 :73202564 :0a00 00001000:afbefffc :001df020 :afbffff8 :2fbd0008 :8fc20000 :8fc30004 :0c000cac :54000000 :64410004 :10200048 :54000000 :23bdfff8 :3c050000 :24a52000 :afa50000 :0c0001cc :54000000 :8c630000 :afa30000 :0c0001bc :54000000 :3c050000 :24a52008 :afa50000 :0c0001a8 :54000000 :0c000c50 :54000000 :23bdfff0 :8c650004 :afa50000 :20050000 :afa50004 :2005000a :afa50008 :0c00094c :54000000 :00011020 :8c650008 :afa50000 :20050000 :afa50004 :2005000a :afa50008 :0c000928 :54000000 :00012020 :8c630008 :afa30000 :20050000 :afa50004 :2005000a :afa50008 :0c000904 :54000000 :afa20000 :0c000158 :54000000 :00011020 :23bd0010 :64410000 :14200024 :54000000 :23bdfff8 :3c050000 :24a52030 :afa50000 :0c0000fc :54000000 :0c000ba4 :54000000 :23bdfff8 :afa40000 :0c000138 :54000000 :23bd0008 :64210000 :10200024 :54000000 :23bdfff8 :3c050000 :24a52070 :afa50000 :0c0000bc :54000000 :0c000b64 :54000000 :23bdfff8 :3c050000 :24a52094 :afa50000 :8c410000 :afa10004 :0c000094 :54000000 :3c050000 :24a520c4 :afa50000 :90410004 :afa10004 :0c000078 :54000000 :0c00007c :54000000 :3c050000 :24a520e0 :afa50000 :afa10004 :0c000058 :54000000 :23bd0008 :0c000afc :54000000 :44000213 :4be00000 :54000000 :44000214 :4be00000 :54000000 :44000210 :4be00000 :54000000 :44000211 :4be00000 :54000000 :44000212 :4be00000 :54000000 :44000280 :4be00000 :54000000 :44000201 :4be00000 :54000000 :44000431 :4be00000 :54000000 :44000432 :4be00000 :54000000 :44000440 :4be00000 :54000000 :44000441 :4be00000 :54000000 :44000450 :4be00000 :54000000 :44000451 :4be00000 :54000000 :44000452 :4be00000 :54000000 :44000453 :4be00000 :54000000 :44000454 :4be00000 :54000000 :44000455 :4be00000 :54000000 :44000456 :4be00000 :54000000 :44000457 :4be00000 :54000000 :44000458 :4be00000 :54000000 :44000459 :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83c20003 :201f0000 :304100ff :60210020 :14200018 :54000000 :2041fff7 :302100ff :70210001 :10200008 :54000000 :201f0001 :001f0820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :83df0003 :20020000 :23e1ffd0 :302100ff :70210009 :14200028 :54000000 :23e1ff9f :302100ff :70210005 :14200014 :54000000 :33e100ff :64210041 :14200008 :54000000 :20020001 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :8fc20004 :001f1820 :80410000 :a3e10000 :20420001 :23ff0001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc20000 :8fc30004 :8fdf0008 :00022020 :08000024 :54000000 :80610000 :a0410000 :20630001 :20420001 :302100ff :64210000 :10200018 :54000000 :001f0820 :23ffffff :70210000 :1020ffd0 :54000000 :00040820 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fdf0000 :001f1820 :90610000 :64210000 :10200018 :54000000 :23ff0001 :93e10000 :64210000 :1420fff0 :54000000 :001f1020 :8fdf0004 :83e10000 :a0410000 :23ff0001 :20420001 :302100ff :64210000 :1420ffe4 :54000000 :00030820 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :afa5000c :8fc30000 :8fc40004 :8fc50008 :20020000 :0045082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0045082a :1420ffcc :54000000 :00450828 :10200010 :54000000 :20010000 :08000028 :54000000 :907f0000 :90830000 :03e30822 :74210000 :2002ffff :10200008 :54000000 :03e31029 :00020820 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :8fdf0000 :20020000 :08000008 :54000000 :20420001 :93e10000 :23ff0001 :64210000 :1420ffec :54000000 :00020820 :8fa20000 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :afa70014 :8fc50000 :8fc70004 :20030000 :90e10000 :20e20001 :64210000 :1020001c :54000000 :20630001 :90410000 :20420001 :64210000 :1420ffec :54000000 :00033020 :080000ac :54000000 :00051820 :00072020 :20020000 :0046082a :1020003c :54000000 :909f0000 :67e10000 :10200038 :54000000 :90610000 :003f0829 :1420001c :54000000 :20630001 :20840001 :20420001 :0046082a :1420ffcc :54000000 :00460828 :10200010 :54000000 :20010000 :08000028 :54000000 :90630000 :90820000 :00620822 :74210000 :201fffff :10200008 :54000000 :0062f829 :001f0820 :64210000 :14200010 :54000000 :00050820 :0800001c :54000000 :20a50001 :90a10000 :64210000 :1420ff4c :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fa70014 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc40000 :8fc60004 :90810000 :64210000 :10200060 :54000000 :00012820 :00061020 :80df0000 :33e100ff :64210000 :1020003c :54000000 :90830000 :33e100ff :00610828 :10200010 :54000000 :00040820 :08000028 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :14a0ffac :54000000 :20010000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fc30004 :08000024 :54000000 :33e100ff :00230828 :10200010 :54000000 :00020820 :08000020 :54000000 :20420001 :805f0000 :33e100ff :64210000 :1420ffd0 :54000000 :20010000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc30000 :8fc40004 :68610000 :10200010 :54000000 :2006002d :08000014 :54000000 :64610000 :14200018 :54000000 :20060030 :a0860000 :20840001 :0800007c :54000000 :201f0001 :03e3082c :1020001c :54000000 :53e10002 :003f0820 :503f0001 :03e3082c :1420ffec :54000000 :2005000a :03e00035 :00a00835 :0401000f :0000f834 :00600035 :03e00835 :0401000f :00001034 :20410030 :a0810000 :20840001 :00400035 :03e00835 :0401000e :00000834 :00611822 :6fe10001 :1420ffb8 :54000000 :20060000 :a0860000 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0020 :afa20000 :afa30004 :afa40008 :afa5000c :afa60010 :8fc20000 :8fc50004 :8fc40008 :20030000 :08000008 :54000000 :20420001 :805f0000 :33e100ff :60210020 :1420ffec :54000000 :23e1fff7 :302100ff :70210001 :1420ffd8 :54000000 :64a10000 :10200008 :54000000 :aca20000 :905f0000 :67e10000 :10200090 :54000000 :63e1002d :10200014 :54000000 :2006ffff :20420001 :08000008 :54000000 :20060001 :64810000 :14200054 :54000000 :90410000 :60210030 :10200040 :54000000 :20420001 :905f0000 :63e10078 :14200010 :54000000 :63e10058 :10200014 :54000000 :20040010 :20420001 :08000014 :54000000 :20040008 :08000008 :54000000 :2004000a :2081ffff :6c21000f :10200010 :54000000 :00030820 :080000c4 :54000000 :805f0000 :23e1ffd0 :302100ff :70210009 :10200014 :54000000 :33e100ff :2021ffd0 :08000050 :54000000 :23e1ff9f :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffa9 :0800002c :54000000 :23e1ffbf :302100ff :70210019 :10200014 :54000000 :33e100ff :2021ffc9 :08000008 :54000000 :200103e8 :0024f82a :13e00024 :54000000 :00600035 :00800835 :0401000e :00001834 :00611820 :20420001 :17e0ff64 :54000000 :64a10000 :10200008 :54000000 :aca20000 :00600035 :00c00835 :0401000e :00000834 :8fa20000 :8fa30004 :8fa40008 :8fa5000c :8fa60010 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0018 :afa20000 :afa30004 :afa40008 :8fc30000 :8fc20004 :8fdf0008 :08000014 :54000000 :80640000 :a0440000 :20630001 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe0 :54000000 :8fa20000 :8fa30004 :8fa40008 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :afbefffc :001df020 :afbffff8 :2fbd0010 :afa20000 :afa30004 :8fc20000 :8fdf0004 :08000010 :54000000 :20030000 :a0430000 :20420001 :001f0820 :23ffffff :6c210000 :1420ffe4 :54000000 :8fa20000 :8fa30004 :8fdffff8 :001ee820 :8fdefffc :4be00000 :54000000 :44000300 :4be00000 :54000000 :4be00000 :54000000
home/bshapir/cs314/project2/project2.tgz
home/bshapir/cs314/project2/project2.tar
src/dlx.h
// // Definitions of flags and other things defined by the DLX processor. // #ifndef _dlx_h_ #define _dlx_h_ #define DLX_STATUS_INTRMASK 0x0f // up to 16 interrupt levels #define DLX_STATUS_FPTRUE 0x20 // Set if last FP comparison was true #define DLX_STATUS_SYSMODE 0x40 // Set if CPU is in system mode #define DLX_STATUS_PAGE_TABLE 0x100 // Set -> use a page table #define DLX_STATUS_TLB 0x200 // Set -> use a software-loaded TLB #endif // _dlx_h_
src/dlxos.h
// // Routines used by the entire operating system. // #ifndef _dlxos_h_ #define _dlxos_h_ #include "misc.h" typedef unsigned int uint32; #define DLX_PROCESS_QUANTUM 10000 // in microseconds extern void SetTimer (int); extern char debugstr[]; #define ASSERT(cond,s) (cond ? 0 : printf ("%s: %s\n", __FUNCTION__,s)) // dbprintf() is a VERY useful macro. It gets used as follows: // dbprintf ('x', "This prints %d and %x\n", val1, val2); // This will print the expected string only if the debugging options contain // the letter 'x'. This allows users to turn on different debugging // statements at different times by using different letters. For example, // process debugging statements could use 'p', and memory 'm'. Specifying // a '+' in the debugging string will turn on all debugging printfs. #define dbprintf(flag, format, args...) \ if ((dindex(debugstr,flag)!=(char *)0) || \ (dindex(debugstr,'+')!=(char *)0)) { \ printf (format, ## args); \ } extern int CurrentIntrs (); extern int SetIntrs (int); extern void KbdModuleInit (); extern void intrreturn (); inline int DisableIntrs () { return (SetIntrs (0xf)); } inline int EnableIntrs () { return (SetIntrs (0x0)); } inline int RestoreIntrs (int intrs) { return (SetIntrs (intrs)); } #endif // _dlxos_h_
src/dlxos.s
;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep
src/filesys.c
// // filesys.c // // This file has handlers for the file systems supported by the DLX // operating system. These include both the basic, simulator-provided // file system and the more complex file system from the file system // assignment. static char rcsid[] = "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "process.h" #include "filesys.h" // One entry for each type of file system. Currently, the file systems // are native Unix (0) and DLX (1). static Fs fs[2]; // One entry for each open file in the operating system. static FsOpenFile openfiles[FS_MAX_OPEN_FILES]; //---------------------------------------------------------------------- // // FdValid // // Return 1 if the file descriptor is valid, 0 otherwise. // //---------------------------------------------------------------------- static inline int FdValid (int fd) { return ((fd > 0) && (fd < FS_MAX_OPEN_FILES) && (openfiles[fd].flags != 0)); } //---------------------------------------------------------------------- // // FsFreeEntry // // Free an entry in the open files table. // //---------------------------------------------------------------------- static inline void FsFreeEntry (int x) { openfiles[x].flags = 0; } � //---------------------------------------------------------------------- // // FsOpen // // Open a file. The name of the file is passed, along with the file // mode (read or write). // // This function figures out which file system is desired using a // simple heuristic. Basically, if the file starts with "dlx:", it's // a DLX file system file. Otherwise, it's a UNIX file. // // Once the file system is figured out, this routine allocates a // file descriptor and calls the file-system specific open routine. // //---------------------------------------------------------------------- int FsOpen (const char *name, int mode) { int i, retval; dbprintf ('f', "Attepmting to open %s mode=%d.\n", name, mode); // Mask off all but the mode bits mode &= FS_MODE_RW; // ERROR if the caller hasn't specified a file mode. if (mode == 0) { return (-1); } for (i = 0; i < FS_MAX_OPEN_FILES; i++) { if (openfiles[i].flags == 0) { break; } } if (i >= FS_MAX_OPEN_FILES) { return (-1); } openfiles[i].flags = mode; // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxOpen. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" openfiles[i].fs = 1; } else { openfiles[i].fs = 0; } dbprintf ('f', "File %s opening in file system %d.\n",name,openfiles[i].fs); retval = fs[openfiles[i].fs].Open (i, name, mode); if (retval < 0) { // Open failed, so return error code FsFreeEntry (i); return (retval); } dbprintf ('f', "Opened %s in FS %d, mode=%d slot=%d.\n", name, openfiles[i].fs, mode, i); return (i); } //---------------------------------------------------------------------- // // FsClose // // Close an open file. Call the FS-specific routine, and then mark // the file table entry unused. // //---------------------------------------------------------------------- int FsClose (int fd) { int retval; if (!FdValid (fd)) { return (-1); } retval = fs[openfiles[fd].fs].Close (fd); FsFreeEntry (fd); return (retval); } � //---------------------------------------------------------------------- // // FsRead // // Read data from a file. // //---------------------------------------------------------------------- int FsRead (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Read (fd, buf, n)); } //---------------------------------------------------------------------- // // FsWrite // // Write data to a file. // //---------------------------------------------------------------------- int FsWrite (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Write (fd, buf, n)); } //---------------------------------------------------------------------- // // FsSeek // // Seek in a file. // //---------------------------------------------------------------------- int FsSeek (int fd, int offset, int whence) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Seek (fd, offset, whence)); } //---------------------------------------------------------------------- // // FsDelete // // Delete a file. // //---------------------------------------------------------------------- int FsDelete (const char *name) { // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxDelete. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" return (fs[1].Delete (name)); } else { return (fs[0].Delete (name)); } } � //---------------------------------------------------------------------- // // FsUnixOpen // FsUnixRead // FsUnixWrite // FsUnixSeek // FsUnixClose // // Unix file I/O routines. These are pretty simple, and just call // the simulator traps directly using the file descriptor stored in // the open file table. // //---------------------------------------------------------------------- int FsUnixOpen (int x, const char *name, int mode) { dbprintf ('f', "Attempting to open file %s into desc %d, mode %d.\n", name, x, mode); if ((openfiles[x].u.Unix.fd = open (name, mode)) < 0) { return (openfiles[x].u.Unix.fd); } return (1); } int FsUnixRead (int x, char *buf, int n) { return (read (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixWrite (int x, char *buf, int n) { return (write (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixSeek (int x, int offset, int where) { return (lseek (openfiles[x].u.Unix.fd, offset, where)); } int FsUnixClose (int x) { int retval; retval = close (openfiles[x].u.Unix.fd); return (retval); } int FsUnixDelete (const char *name) { // Refuse to delete Unix files via the simulator. This is for safety // reasons. return (-1); } � //---------------------------------------------------------------------- // // FsDlxIo // // Perform a read or a write on a DLX file. // //---------------------------------------------------------------------- int FsDlxIo (int fd, char *buf, int n, int which) { // Your code to read or write a DLX file goes here. return (1); } //---------------------------------------------------------------------- // // FsDlxRead // FsDlxWrite // // This is just a stub that calls FsDlxIo to do either a read or a // write in the DLX file system. // //---------------------------------------------------------------------- int FsDlxRead (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 0)); } int FsDlxWrite (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 1)); } � //---------------------------------------------------------------------- // // FsDlxOpen // // Open a file in the DLX file system. Currently, this just means // to set current position to 0. However, it should also check to // make sure that the file exists. // //---------------------------------------------------------------------- int FsDlxOpen (int f, const char *name, int mode) { openfiles[f].u.Dlx.curpos = 0; // You may want to put additional code here (checking to see if the // file exists, etc.) return (1); } //---------------------------------------------------------------------- // // FsDlxSeek // // Seek in a DLX file. This just requires adjusting the current // position as recorded in the open files table. // //---------------------------------------------------------------------- int FsDlxSeek (int f, int offset, int whence) { switch (whence) { case FS_SEEK_SET: break; case FS_SEEK_CUR: break; case FS_SEEK_END: break; }; return (openfiles[f].u.Dlx.curpos); } //---------------------------------------------------------------------- // // FsDlxClose // // Close a DLX file system file. //---------------------------------------------------------------------- int FsDlxClose (int f) { // You may want to add code to this routine. return (1); } � //---------------------------------------------------------------------- // // FsDlxDelete // // Delete a file in the DLX file system. // //---------------------------------------------------------------------- int FsDlxDelete (const char *file) { // Your code goes here. return (1); } � //---------------------------------------------------------------------- // // FsModuleInit // // Initialize the file system module. This consists simply of marking // all the file slots as available. // //---------------------------------------------------------------------- void FsModuleInit () { int i; for (i = 0; i < FS_MAX_OPEN_FILES; i++) { openfiles[i].flags = 0; } fs[0].Open = FsUnixOpen; fs[0].Close = FsUnixClose; fs[0].Read = FsUnixRead; fs[0].Write = FsUnixWrite; fs[0].Seek = FsUnixSeek; fs[0].Delete = FsUnixDelete; fs[1].Open = FsDlxOpen; fs[1].Close = FsDlxClose; fs[1].Read = FsDlxRead; fs[1].Write = FsDlxWrite; fs[1].Seek = FsDlxSeek; fs[1].Delete = FsDlxDelete; }
src/filesys.h
// // filesys.h // // Includes for the file system. Includes the definition of the file // system interface structure. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: filesys.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _filesys_h_ #define _filesys_h_ #define FS_FS_BUILTIN 1 #define FS_FS_DLXOS 2 #define FS_MODE_READ 0x1 #define FS_MODE_WRITE 0x2 #define FS_MODE_RW (FS_MODE_READ | FS_MODE_WRITE) // If this flag is set, a new file is created if no file already exists. // This flag only works with the DLX file system. #define FS_MODE_CREATE 0x4 // IMPORTANT: These must match the underlying UNIX seek parameters. // These values are correct for Linux and should work elsewhere, but // be careful.... #define FS_SEEK_SET 0 #define FS_SEEK_CUR 1 #define FS_SEEK_END 2 #define FS_BUFFER_SIZE 256 #define FS_MAX_OPEN_FILES 32 typedef struct Fs { int (*Open)(int, const char *, int); int (*Read)(int, char *, int); int (*Write)(int, char *, int); int (*Seek)(int, int, int); int (*Close)(int); int (*Delete)(const char *); } Fs; typedef struct FsUnixInfo { int fd; // Unix file descriptor } FsUnixInfo; typedef struct FsDlxInfo { int curpos; // What's our current position in the file? } FsDlxInfo; typedef struct FsOpenFile { int fs; // which file system is this file in? int flags; char buffer[FS_BUFFER_SIZE]; union { FsUnixInfo Unix; FsDlxInfo Dlx; } u; } FsOpenFile; extern int FsOpen (const char *, int); extern int FsRead (int, char *, int); extern int FsWrite (int, char *, int); extern int FsSeek (int, int, int); extern int FsClose (int); extern int FsDelete (const char *); #endif // _filesys_h_
src/lab2-api.h
/***************************************************************** * * Various APIs for Lab 2 of OS469 * Copyright: Uday Savagaonkar, Jan 2002 * *****************************************************************/ #ifndef _LAB2_API_H_ #define _LAB2_API_H_ #define NULL (void *)0x0 #define INVALID_SEM -1 #define BUFFERSIZE 5 typedef unsigned int uint32; typedef int sem_t; typedef int lock_t; typedef int cond_t; //Related to processes uint32 getpid(); //trap 0x431 void process_create(char *arg1, ...); //trap 0x432 //Related to shared memory uint32 shmget(); //trap 0x440 void *shmat(uint32 handle); //trap 0x441 //Related to semaphores sem_t sem_create(int count); //trap 0x450 Calls SemCreate() int sem_wait(sem_t sem); //trap 0x451 Calls SemHandleWait() int sem_signal(sem_t sem); //trap 0x452 Calls SemHandleSignal() //----------------------------------------------------------------------- // You need to write OS handler routines for the following functions // We have already provided the trap interface. All you need to do is fill in // the missing parts in synch.c and synch.h. The routines that need to be // modified are also given in front of each system call. For detailed // description of thses routines, see synch.c. //------------------------------------------------------------------------ lock_t lock_create(); //trap 0x452 Calls LockCreate() int lock_acquire(lock_t lock); //trap 0x453 Calls LockHandleAcquire() int lock_release(lock_t lock); //trap 0x454 Calls LockHandleRelease() cond_t cond_create(lock_t lock); //trap 0x455 Calls CondCreate() int cond_wait(cond_t cond); //trap 0x456 Calls CondHandleWait() int cond_signal(cond_t cond); //trap 0x457 Calls CondHandleSignal() int cond_broadcast(cond_t cond); //trap 0x458 Calls CondHandleBroadcast() #endif _LAB2_API_H_
src/Makefile
# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h share_memory.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o share_memory.o $(CC) -mtraps -O3 dlxos.o trap_random.o share_memory.o $(OBJS) osend.o -o os.dlx share_memory.o: cp share_memory.api share_memory.o osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog : userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -l userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog2 : userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -l userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend
src/Makefile.depend
src/memory.c
// // memory.c // // Routines for dealing with memory management. static char rcsid[] = "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "memory.h" #include "process.h" #include "queue.h" static uint32 pagestart; static int freemapmax; static int nfreepages; static uint32 freepages[MEMORY_MAX_PAGES/32]; static uint32 negativeone = 0xffffffff; //---------------------------------------------------------------------- // // This silliness is required because the compiler believes that // it can invert a number by subtracting it from zero and subtracting // an additional 1. This works unless you try to negate 0x80000000, // which causes an overflow when subtracted from 0. Simply // trying to do an XOR with 0xffffffff results in the same code // being emitted. // //---------------------------------------------------------------------- static inline uint32 invert (uint32 n) { return (n ^ negativeone); } //---------------------------------------------------------------------- // // MemoryGetSize // // Return the total size of memory in the simulator. This is // available by reading a special location. // //---------------------------------------------------------------------- int MemoryGetSize () { return (*((int *)DLX_MEMSIZE_ADDRESS)); } //---------------------------------------------------------------------- // // MemorySetFreemap // //---------------------------------------------------------------------- inline void MemorySetFreemap (int p, int b) { uint32 wd = p / 32; uint32 bitnum = p % 32; freepages[wd] = (freepages[wd] & invert(1 << bitnum)) | (b << bitnum); dbprintf ('m', "Set freemap entry %d to 0x%x.\n", wd, freepages[wd]); } � //---------------------------------------------------------------------- // // MemoryInitModule // // Initialize the memory module of the operating system. // //---------------------------------------------------------------------- void MemoryModuleInit () { int i; int maxpage = MemoryGetSize () / MEMORY_PAGE_SIZE; int curpage; pagestart = (lastosaddress + MEMORY_PAGE_SIZE - 4) / MEMORY_PAGE_SIZE; freemapmax = (maxpage+31) / 32; dbprintf ('m', "Map has %d entries, memory size is 0x%x.\n", freemapmax, maxpage); dbprintf ('m', "Free pages start with page # 0x%x.\n", pagestart); for (i = 0; i < freemapmax; i++) { // Initially, all pages are considered in use. This is done to make // sure we don't have any partially initialized freemap entries. freepages[i] = 0; } nfreepages = 0; for (curpage = pagestart; curpage < maxpage; curpage++) { nfreepages += 1; MemorySetFreemap (curpage, 1); } dbprintf ('m', "Initialized %d free pages.\n", nfreepages); } � //---------------------------------------------------------------------- // // MemoryAllocPage // // Allocate a page of memory. // //---------------------------------------------------------------------- inline int MemoryAllocPage () { static int mapnum = 0; int bitnum; uint32 v; if (nfreepages == 0) { printf("ERROR AT THIS POINT\n"); return (0); } dbprintf ('m', "Allocating memory, starting with page %d\n", mapnum); while (freepages[mapnum] == 0) { mapnum += 1; if (mapnum >= freemapmax) { mapnum = 0; } } v = freepages[mapnum]; for (bitnum = 0; (v & (1 << bitnum)) == 0; bitnum++) { } freepages[mapnum] &= invert(1 << bitnum); v = (mapnum * 32) + bitnum; dbprintf ('m', "Allocated memory, from map %d, page %d, map=0x%x.\n", mapnum, v, freepages[mapnum]); nfreepages -= 1; return (v); } //---------------------------------------------------------------------- // // MemoryFreePage // // Free a page of memory. // //---------------------------------------------------------------------- void MemoryFreePage(uint32 page) { MemorySetFreemap (page, 1); nfreepages += 1; dbprintf ('m',"Freed page 0x%x, %d remaining.\n", page, nfreepages); } � //---------------------------------------------------------------------- // // MemoryTranslateUserToSystem // // Translate a user address (in the process referenced by pcb) // into an OS (physical) address. This works for simple one-level // page tables, but will have to be modified for two-level page // tables. // //---------------------------------------------------------------------- uint32 MemoryTranslateUserToSystem (PCB *pcb, uint32 addr) { int page = addr / MEMORY_PAGE_SIZE; int offset = addr % MEMORY_PAGE_SIZE; if (page > pcb->npages) { return (0); } return ((pcb->pagetable[page] & MEMORY_PTE_MASK) + offset); } � //---------------------------------------------------------------------- // // moveBetweenSpaces // // Copy data between user and system spaces. This is done page by // page by: // * Translating the user address into system space. // * Copying all of the data in that page // * Repeating until all of the data is copied. // A positive direction means the copy goes from system to user // space; negative direction means the copy goes from user to system // space. // // This routine returns the number of bytes copied. Note that this // may be less than the number requested if there were unmapped pages // in the user range. If this happens, the copy stops at the // first unmapped address. // //---------------------------------------------------------------------- static int moveBetweenSpaces (PCB *pcb, unsigned char *s, unsigned char *u, int n, int dir) { unsigned char *curUser; int bytesCopied = 0; int bytesToCopy; while (n > 0) { // Translate current user page to system address. If this fails, return // the number of bytes copied so far. curUser = (unsigned char *)MemoryTranslateUserToSystem (pcb, (uint32)u); if (curUser == (unsigned char *)0) { // Leave the loop if translation fails. break; } // Calculate the number of bytes to copy this time. This is the minimum // of the bytes left on this page and the bytes left to copy. bytesToCopy = MEMORY_PAGE_SIZE - ((uint32)curUser % MEMORY_PAGE_SIZE); if (bytesToCopy > n) { bytesToCopy = n; } // Perform the copy. if (dir >= 0) { bcopy (s, curUser, bytesToCopy); } else { bcopy (curUser, s, bytesToCopy); } // Keep track of bytes copied and adjust addresses appropriately. n -= bytesToCopy; bytesCopied += bytesToCopy; s += bytesToCopy; u += bytesToCopy; } return (bytesCopied); } //---------------------------------------------------------------------- // // These two routines copy data between user and system spaces. // They call a common routine to do the copying; the only difference // between the calls is the actual call to do the copying. Everything // else is identical. // //---------------------------------------------------------------------- int MemoryCopySystemToUser (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, from, to, n, 1)); } int MemoryCopyUserToSystem (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, to, from, n, -1)); } � //---------------------------------------------------------------------- // // MemorySetupPte // // Set up a PTE given a page number. // //---------------------------------------------------------------------- uint32 MemorySetupPte (uint32 page) { return ((page * MEMORY_PAGE_SIZE) | MEMORY_PTE_VALID); } //---------------------------------------------------------------------- // // MemoryFreePte // // Free a page given its PTE. // //---------------------------------------------------------------------- void MemoryFreePte (uint32 pte) { MemoryFreePage ((pte & MEMORY_PTE_MASK) / MEMORY_PAGE_SIZE); } //---------------------------------------------------------------------- // // MemoryPteToPage // // Given a PTE, return the base address for the (virtual) page the // PTE references. // //---------------------------------------------------------------------- uint32 MemoryPteToPage (uint32 pte) { return (pte & MEMORY_PTE_MASK); } � //---------------------------------------------------------------------- // // MemoryGetOperandAddress // // This routine takes an instruction and a pointer to a PCB, and // returns the address that the instruction is trying to use // for its memory operand. If the instruction doesn't access memory, // it returns 0xffffffff. Note that this means it's impossible to // distinguish between a valid access to 0xffffffff and an instruction // without an operand.... // //---------------------------------------------------------------------- uint32 MemoryGetOperandAddress (PCB *pcb, uint32 instr) { static uint32 invalidOps = 0x3404; uint32 opcode = (instr >> 26) & 0x3f; uint32 reg; uint32 addr; uint32 offset; uint32 regValue; if ((opcode<0x20) || (opcode>0x2f) || ((invalidOps >> (opcode-0x20) & 1))) { return (0xffffffff); } reg = (instr >> 21) & 0x1f; offset = instr & 0xffff; if (offset & 0x8000) { offset |= 0xffff0000; } regValue = pcb->currentSavedFrame[PROCESS_STACK_IREG+reg]; addr = regValue + offset; dbprintf ('m', "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n", instr, addr, reg, regValue); return (addr); }
src/memory.h
// // memory.h // // Definitions for dealing with memory. // // // $Id: memory.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ #ifndef _memory_h_ #define _memory_h_ // We can read this address in I/O space to figure out how much memory // is available on the system. #define DLX_MEMSIZE_ADDRESS 0xffff0000 // We currently support 64 KB pages. This is done as 64 KB pages in // the level 1 page table and no level 2 page table // These two constants should be set as follows: // L1_PAGE_SIZE_BITS -> amount mapped by a single entry in the L1 table // L2_PAGE_SIZE_BITS -> amount mapped by a single entry in the L2 table // // For example, if you have 4KB pages and each L2 page table has 512 entries, // you'd have 2MB per entry in a L1 table. That would mean L1_BITS=21 and // L2_BITS=12. #define MEMORY_L1_PAGE_SIZE_BITS 16 // each entry in L1 is 64 KB #define MEMORY_L2_PAGE_SIZE_BITS 16 // if L1 == L2, there's no L2 tables #define MEMORY_PAGE_SIZE (1 << MEMORY_L2_PAGE_SIZE_BITS) #define MEMORY_PAGE_MASK (MEMORY_PAGE_SIZE-1) #define MEMORY_MAX_PAGES 0x10000 // The PTE is valid if this bit is set in the PTE! #define MEMORY_PTE_VALID 0x00000001 // The page is dirty if this bit is set in the PTE #define MEMORY_PTE_DIRTY 0x00000002 // The page has been referenced if this bit is set in the PTE #define MEMORY_PTE_REFERENCED 0x00000004 #define MEMORY_PTE_MASK (~(MEMORY_PTE_VALID|MEMORY_PTE_DIRTY|MEMORY_PTE_REFERENCED)) extern int lastosaddress; // Defined in an assembly file extern int MemoryGetSize (); extern int MemoryAllocPage (); extern void MemoryFreePage (uint32 page); extern uint32 MemorySetupPte (uint32 page); extern void MemoryFreePte (uint32 pte); extern uint32 MemoryPteToPage (); extern void MemoryModuleInit (); extern uint32 MemoryTranslateUserToSystem (); extern int MemoryCopySystemToUser (); extern int MemoryCopyUserToSystem (); #endif // _memory_h_
src/misc.c
// // misc.c // // Miscellaneous routines for the operating system. These include // basic routines that would be in libc if we had access to it. // #include "misc.h" //---------------------------------------------------------------------- // // dstrcpy // dstrncpy // dstrcat // // These three functions do exactly what their counterparts in the // standard C library do. // //---------------------------------------------------------------------- char* dstrcpy (char *to, const char *from) { char *tokeep = to; char last; do { last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char* dstrncpy (char *to, const char *from, int n) { char *tokeep = to; char last; int cur = 0; do { // Stop if we're exceeded the maximum string length if (n-- <= 0) { break; } last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char * dstrcat (char *onto, const char *addn) { char *konto = onto; while (*onto != '\0') { onto++; } dstrcpy (onto, addn); return (konto); } int dstrncmp (const char *s1, const char *s2, int n) { int i; for (i = 0; i < n; i++) { // If they don't match, end the loop if (*s2 == '\0') { // If the second string is NULL, we're at the end of the string and // have a match. return (0); } else if (*s1 != *s2) { break; } s1++; s2++; } if (i == n) { return (0); } else { return (((*s1 - *s2) < 0) ? -1 : ((*s1 == *s2) ? 0 : 1)); } } int dstrlen (const char *s) { int i = 0; while (*(s++) != '\0') { i++; } return (i); } const char * dstrstr (const char *buf, const char *pattern) { int n = dstrlen (pattern); while (*buf != '\0') { if (dstrncmp (buf, pattern, n) == 0) { return (buf); } buf++; } return ((char *)0); } � //---------------------------------------------------------------------- // // dindex // dmindex // // dindex is identical to the libc function index. dmindex is // similar to dindex, but it reports the index in the string of the // first match for any one of the characters passed (rather than // matching only on a single specific character). // //---------------------------------------------------------------------- const char * dmindex (const char *s, const char *match) { const char *c; while (*s != '\0') { for (c = match; *c != '\0'; c++) { if (*s == *c) { return (s); } } } return ((const char *)0); } const char* dindex (const char *s, int c) { while (*s != '\0') { if (*s == c) { return (s); } s++; } return ((char *)0); } � //---------------------------------------------------------------------- // // ditoa: Convert an integer into an ASCII number. // dstrtol: Convert ASCII into an integer // //---------------------------------------------------------------------- void ditoa (int n, char *buf) { int k; if (n < 0) { *(buf++) = '-'; n = -n; } else if (n == 0) { *(buf++) = '0'; } else { for (k = 1; k <= n; k *= 10) { } do { k /= 10; *(buf++) = (n / k) + '0'; n %= k; } while (k > 1); } *buf = '\0'; } int dstrtol (char *c, char **newpos, int base) { int v = 0; int curdigit; int sign; while ((*c == ' ') || (*c == '\t') || (*c == '\n')) { c++; } if (newpos != (char **)0) { *newpos = c; } if (*c == '\0') { return (v); } if (*c == '-') { sign = -1; c++; } else { sign = 1; } if (base == 0) { if (*c == '0') { c++; if ((*c == 'x') || (*c == 'X')) { base = 16; c++; } else { base = 8; } } else { base = 10; } } if ((base <= 0) || (base > 16)) { return (v); } do { if ((*c >= '0') && (*c <= '9')) { curdigit = (*c) - '0'; } else if ((*c >= 'a') && (*c <= 'z')) { curdigit = (*c) + 10 - 'a'; } else if ((*c >= 'A') && (*c <= 'Z')) { curdigit = (*c) + 10 - 'A'; } else { curdigit = 1000; } if (curdigit < base) { v *= base; v += curdigit; c++; } } while (curdigit < base); if (newpos != (char **)0) { *newpos = c; } v *= sign; return (v); } � //---------------------------------------------------------------------- // // bcopy: Copy bytes from one location to another. // bzero: Set all the bytes in a region to zero. // //---------------------------------------------------------------------- void bcopy (char *src, char *dst, int count) { while (count-- > 0) { *(dst++) = *(src++); } } void bzero (char *dst, int count) { while (count-- > 0) { *(dst++) = 0; } }
src/misc.h
// // Routines used by the entire operating system. // #ifndef _misc_h_ #define _misc_h_ extern char* dstrcpy(char*, const char*); extern char* dstrncpy(char*, const char*, int n); extern const char *dstrstr (const char *, const char *); extern int dstrlen (const char *); extern int dstrncmp (const char *, const char *, int); extern int dstrtol(char*, char**, int); extern const char* dindex(const char*, int); extern const char* dmindex(const char*, const char *); inline int isspace (char c) { return ((c == ' ') || (c == '\t') || (c == '\n')); } inline int isxdigit (char c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || ((c >= 'A') && (c <= 'A'))); } #endif // !_misc_h_
src/osend.s
;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8
src/out
dlx.h dlxos.h filesys.c filesys.h lab2-api.h 10a11,12 > #include "queue.h" > 13d14 < #define BUFFERSIZE 5 29,31c30,40 < sem_t sem_create(int count); //trap 0x450 Calls SemCreate() < int sem_wait(sem_t sem); //trap 0x451 Calls SemHandleWait() < int sem_signal(sem_t sem); //trap 0x452 Calls SemHandleSignal() --- > sem_t sem_create(int count); //trap 0x450 > int sem_wait(sem_t sem); //trap 0x451 > int sem_signal(sem_t sem); //trap 0x452 > > typedef struct buffer{ > sem_t buff_sem; > sem_t oxy_sem; > sem_t hyd_sem; > int num_hyd; > int num_oxy; > }buffer; memory.c memory.h misc.c misc.h process.c 15a16 > float MyFuncRetZero(); 452c453 < dum[2] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; --- > dum[2] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; 709c710 < char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, --- > char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 712c713 < --- > 713a715,716 > printf("Hi Uday, How are you?\n"); > MyFuncRetZero(); 723c726 < for (i = 0; i < argc; i++) --- > for (i = 0; i < argc; i++) 725c728 < if (argv[i][0] == '-') --- > if (argv[i][0] == '-') 727c730 < switch (argv[i][1]) --- > switch (argv[i][1]) 749c752 < while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) --- > while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) 751c754 < for (j = 0; j < n; j += 4) --- > for (j = 0; j < n; j += 4) 814a818,822 > float MyFuncRetZero() > { > return 0; > } > 830c838 < --- > 836c844 < --- > 859c867 < --- > process.h 9c9 < #ifndef _process_h_ --- > #ifndef _process_h__ queue.c 59a60 > queue.h 18a19 > 32,38d32 < inline < void < QueueLinkInit (Link *l, void *obj) < { < l->next = NULL; < l->object = obj; < } 83c77 < QueueInsertFirst (Queue *q, Link *l) --- > QueueRemove (Link *l) 85c79,84 < QueueInsertAfter (q, (Link *)q, l); --- > if (l->queue->nitems > 0) { > l->prev->next = l->next; > l->next->prev = l->prev; > l->queue->nitems -= 1; > } > l->next = NULL; 90c89 < QueueInsertLast (Queue *q, Link *l) --- > QueueInsertFirst (Queue *q, Link *l) 92c91 < QueueInsertAfter (q, QueueLast(q), l); --- > QueueInsertAfter (q, (Link *)q, l); 97c96 < QueueRemove (Link *l) --- > QueueInsertLast (Queue *q, Link *l) 99,104c98 < if (l->queue->nitems > 0) { < l->prev->next = l->next; < l->next->prev = l->prev; < l->queue->nitems -= 1; < } < l->next = NULL; --- > QueueInsertAfter (q, QueueLast(q), l); 106a101 > 123c118 < extern Link *QueueAllocLink (); --- > extern Link *QueueAllocLink (); share_memory.h synch.c 12a13,14 > static Lock locks[MAX_LOCKS]; > static Cond conds[MAX_CONDS]; 14c16 < extern struct PCB *currentPCB; --- > extern struct PCB *currentPCB; 20c22 < void --- > void 31c33,34 < // Your stuff for initializing locks goes here --- > locks[i].inuse = 0; > 35c38,39 < // Your stuff for initializing Condition variables goes here --- > conds[i].inuse = 0; > 51a56 > 61c66 < sem_t --- > sem_t 78c83 < --- > 87c92 < � --- > 93d97 < // OR section 2.3 of Modern Operating Systems, 144c148 < // _OSC_ OR section 2.3 of Modern Operating Systems. --- > // _OSC_. 206c210,232 < // Your stuff goes here --- > lock_t x; > uint32 intrval; > > intrval = DisableIntrs(); > for(x=0; x < MAX_LOCKS; x++) > { > if(locks[x].inuse == 0) > { > locks[x].inuse = 1; > locks[x].pid = -1; > break; > } > } > RestoreIntrs(intrval); > > if(x==MAX_LOCKS) > return INVALID_LOCK; > > SemInit(&(locks[x].semlock), 1); > > > return x; > 212,213c238,239 < // This routine acquires a lock given its handle. The handle must be a < // valid handle for this routine to succeed. In that case this routine --- > // This routine acquires a lock given its handle. The handle must be a > // valid handle for this routine to succeed. In that case this routine 222c248,265 < //Your stuff goes here --- > if ( (lock < 0) > || (lock >= 64) ) > { > return 1; > } > > if ( locks[lock].pid == GetCurrentPid() ) > { > return 0; > } > > > SemWait(&(locks[lock].semlock)); > > locks[lock].pid = GetCurrentPid(); > > return 0; > 237,238c280,304 < // Your stuff goes here < } --- > > if ( (lock < 0) > || (lock >= 64) ) > { > return 1; > } > > if ( locks[lock].inuse == 0) > { > return 1; > } > > if ( (locks[lock].pid) == GetCurrentPid() ) > { > locks[lock].pid = -1; > > SemSignal(&(locks[lock].semlock)); > > > > > return 0; > } > return 1; > } 247,248c313,314 < // it should have been obtained via previous call to LockCreate(). < // --- > // it should have been obtained via previous call to LockCreate(). > // 257c323,361 < // Your stuff goes here --- > int I; > uint32 intrval; > intrval = DisableIntrs(); > > if ( lock <0 > || lock > 63 ) > { > printf("Invalid lock in condcreate\n"); > return 1; > } > > > for(I=0; I< MAX_CONDS; I++) > { > if(conds[I].inuse == 0) > { > conds[I].inuse = 1; > conds[I].lockcond = lock; > conds[I].condcounter = 0; > break; > } > } > > RestoreIntrs(intrval); > > > if(I == MAX_CONDS) > { > return INVALID_COND; > } > > > SemInit(&(conds[I].semcond), 0); > > > return I; > > > 286c390,417 < // Your stuff goes here --- > if ( (cond < 0) > || (cond > 31) ) > { > printf ("Invalid Cond\n"); > return 1; > } > > if ( locks[conds[cond].lockcond].pid != GetCurrentPid()) > { > return 1; > } > > if ( (conds[cond].inuse) != 1) > { > printf("Invalid Cond\n"); > return 1; > } > > > conds[cond].condcounter++; > LockHandleRelease(conds[cond].lockcond); > > SemWait(&(conds[cond].semcond)); > > LockHandleAcquire(conds[cond].lockcond); > > return 0; > 311c442,468 < // Your stuff goes here --- > if (conds[cond].inuse != 1) > { > printf("Lock is not is use\n "); > return 1; > } > > if ( (cond < 0) > || (cond > 31) ) > { > printf ("Invalid Cond\n"); > return 1; > } > > > if ( locks[conds[cond].lockcond].pid != GetCurrentPid()) > { > return 1; > } > > if (conds[cond].condcounter >= 1) > { > SemSignal(&(conds[cond].semcond)); > conds[cond].condcounter--; > return 0; > } > return 0; > 332c489,521 < // Your stuff goes here --- > > if (conds[cond].inuse != 1) > { > printf("Lock is not is use\n "); > return 1; > } > > if ( (cond < 0) > || (cond > 31) ) > { > printf ("Invalid Cond\n"); > return 1; > } > > > if ( locks[conds[cond].lockcond].pid != GetCurrentPid()) > { > return 1; > } > > > if ( conds[cond].condcounter > 0 ) > { > do > { > SemSignal(&(conds[cond].semcond)); > conds[cond].condcounter--; > }while(conds[cond].condcounter > 0); > > return 0; > } > > synch.h 2,26c2,26 < // synch.h < // < // Include file for synchronization stuff. The synchronization < // primitives include: < // Semaphore < // Lock < // Condition < // < // Semaphores are the only "native" synchronization primitive. < // Condition variables and locks are implemented using semaphores. < // < < #ifndef _synch_h_ < #define _synch_h_ < < #include "queue.h" < < #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system < #define MAX_LOCKS 64 //Maximum 64 locks allowed in the system < //This is because condition vars also use < //locks from the same pool < #define MAX_CONDS 32 //Maximum 32 conds allowed in the system < < typedef int sem_t; < typedef int lock_t; --- > // synch.h > // > // Include file for synchronization stuff. The synchronization > // primitives include: > // Semaphore > // Lock > // Condition > // > // Semaphores are the only "native" synchronization primitive. > // Condition variables and locks are implemented using semaphores. > // > > #ifndef _synch_h_ > #define _synch_h_ > > #include "queue.h" > > #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system > #define MAX_LOCKS 64 //Maximum 64 locks allowed in the system > //This is because condition vars also use > //locks from the same pool > #define MAX_CONDS 32 //Maximum 32 conds allowed in the system > > typedef int sem_t; > typedef int lock_t; 28,43c28,43 < < #define INVALID_SEM -1 < #define INVALID_LOCK -1 < #define INVALID_PROC -1 < #define INVALID_COND -1 < typedef struct Sem { < Queue waiting; < int count; < uint32 inuse; //indicates whether the semaphore is being < //used by any process < } Sem; < < extern void SemInit (Sem *, int); < extern void SemWait (Sem *); < extern void SemSignal (Sem *); < --- > > #define INVALID_SEM -1 > #define INVALID_LOCK -1 > #define INVALID_PROC -1 > #define INVALID_COND -1 > typedef struct Sem { > Queue waiting; > int count; > uint32 inuse; //indicates whether the semaphore is being > //used by any process > } Sem; > > extern void SemInit (Sem *, int); > extern void SemWait (Sem *); > extern void SemSignal (Sem *); > 45,46c45,47 < < //Your stuff goes here --- > Sem semlock; > int pid; > uint32 inuse; 50,51c51,54 < < //Your stuff goes here --- > int condcounter; > uint32 inuse; > lock_t lockcond; > Sem semcond; 54a58 > syscall.h sysproc.c traps.c traps.h userprog.c userprog2.c
src/process.c
// // process.c // // This file defines routines for dealing with processes. This // includes the "main" routine for the OS, which creates a process // for the initial thread of execution. It also includes // code to create and delete processes, as well as context switch // code. Note, however, that the actual context switching is // done in assembly language elsewhere. #include "dlxos.h" #include "process.h" #include "synch.h" #include "memory.h" #include "filesys.h" // Pointer to the current PCB. This is used by the assembly language // routines for context switches. PCB *currentPCB; // List of free PCBs. static Queue freepcbs; // List of processes that are ready to run (ie, not waiting for something // to happen). static Queue runQueue; // List of processes that are waiting for something to happen. There's no // reason why this must be a single list; there could be many lists for many // different conditions. static Queue waitQueue; // List of processes waiting to be deleted. See below for a description of // the reason that we need a separate queue for processes about to die. static Queue zombieQueue; // Static area for all process control blocks. This is necessary because // we can't use malloc() inside the OS. static PCB pcbs[PROCESS_MAX_PROCS]; // Default value for scheduler quantum. This could be set to any value. // In fact, it could even be dynamic, though that would require modifying // the timer trap handler.... static processQuantum = DLX_PROCESS_QUANTUM; // String listing debugging options to print out. char debugstr[200]; � //---------------------------------------------------------------------- // // ProcessModuleInit // // Initialize the process module. This involves initializing all // of the process control blocks to appropriate values (ie, free // and available). We also need to initialize all of the queues. // //---------------------------------------------------------------------- void ProcessModuleInit () { int i; dbprintf ('p', "Entering ProcessModuleInit\n"); QueueInit (&freepcbs); QueueInit (&runQueue); QueueInit (&waitQueue); QueueInit (&zombieQueue); for (i = 0; i < PROCESS_MAX_PROCS; i++) { dbprintf ('p', "Initializing PCB %d @ 0x%x.\n", i, &(pcbs[i])); pcbs[i].flags = PROCESS_STATUS_FREE; QueueLinkInit (&(pcbs[i].l), (void *)&pcbs[i]); QueueInsertFirst(&freepcbs, &(pcbs[i].l)); } currentPCB = NULL; dbprintf ('p', "Leaving ProcessModuleInit\n"); } � //---------------------------------------------------------------------- // // ProcessSetStatus // // Set the status of a process. // //---------------------------------------------------------------------- void ProcessSetStatus (PCB *pcb, int status) { pcb->flags &= ~PROCESS_STATUS_MASK; pcb->flags |= status; } //---------------------------------------------------------------------- // // ProcessFreeResources // // Free the resources associated with a process. This assumes the // process isn't currently on any queue. // //---------------------------------------------------------------------- void ProcessFreeResources (PCB *pcb) { int i; int npages; QueueInsertLast (&freepcbs, &pcb->l); // Free the process's memory. This is easy with a one-level page // table, but could get more complex with two-level page tables. npages = pcb->npages; for (i=0; i<npages; i++) { MemoryFreeSharedPte(pcb, i); // *MUST* be called before calling // MemoryFreePte. MemoryFreePte does not know // anything about shared pages, and hence it // might screw up big time } for (i = 0; i < pcb->npages; i++) { MemoryFreePte (pcb->pagetable[i]); } // Free the page allocated for the system stack MemoryFreePage (pcb->sysStackArea / MEMORY_PAGE_SIZE); ProcessSetStatus (pcb, PROCESS_STATUS_FREE); } //---------------------------------------------------------------------- // // ProcessSetResult // // Set the result returned to a process. This is done by storing // the value into the current register save area for r1. When the // context is restored, r1 will contain the return value. This // routine should only be called from a trap. Calling it at other // times (such as an interrupt handler) will cause unpredictable // results. // //---------------------------------------------------------------------- void ProcessSetResult (PCB * pcb, uint32 result) { pcb->currentSavedFrame[PROCESS_STACK_IREG+1] = result; } � //---------------------------------------------------------------------- // // ProcessSchedule // // Schedule the next process to run. If there are no processes to // run, exit. This means that there should be an idle loop process // if you want to allow the system to "run" when there's no real // work to be done. // // NOTE: the scheduler should only be called from a trap or interrupt // handler. This way, interrupts are disabled. Also, it must be // called consistently, and because it might be called from an interrupt // handler (the timer interrupt), it must ALWAYS be called from a trap // or interrupt handler. // // Note that this procedure doesn't actually START the next process. // It only changes the currentPCB and other variables so the next // return from interrupt will restore a different context from that // which was saved. // //---------------------------------------------------------------------- void ProcessSchedule () { PCB *pcb; int i; dbprintf ('p', "Now entering ProcessSchedule (cur=0x%x, %d ready)\n", currentPCB, QueueLength (&runQueue)); // The OS exits if there's no runnable process. This is a feature, not a // bug. An easy solution to allowing no runnable "user" processes is to // have an "idle" process that's simply an infinite loop. if (QueueEmpty (&runQueue)) { printf ("No runnable processes - exiting!\n"); exitsim (); // NEVER RETURNS } // Move the front of the queue to the end. The running process was the // one in front. pcb = (PCB *)((QueueFirst (&runQueue))->object); QueueRemove (&pcb->l); QueueInsertLast (&runQueue, &pcb->l); // Now, run the one at the head of the queue. pcb = (PCB *)((QueueFirst (&runQueue))->object); currentPCB = pcb; dbprintf ('p',"About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n", pcb, pcb->flags, pcb->sysStackPtr[PROCESS_STACK_IAR]); // Clean up zombie processes here. This is done at interrupt time // because it can't be done while the process might still be running while (!QueueEmpty (&zombieQueue)) { pcb = (PCB *)(QueueFirst (&zombieQueue)->object); dbprintf ('p', "Freeing zombie PCB 0x%x.\n", pcb); QueueRemove (&pcb->l); ProcessFreeResources (pcb); } // Set the timer so this process gets at most a fixed quantum of time. TimerSet (processQuantum); dbprintf ('p', "Leaving ProcessSchedule (cur=0x%x)\n", currentPCB); } � //---------------------------------------------------------------------- // // ProcessSuspend // // Place a process in suspended animation until it's // awakened by ProcessAwaken. // // NOTE: This must only be called from an interrupt or trap. It // should be immediately followed by ProcessSchedule(). // //---------------------------------------------------------------------- void ProcessSuspend (PCB *suspend) { // Make sure it's already a runnable process. dbprintf ('p', "Suspending PCB 0x%x (%s).\n", suspend, suspend->name); ASSERT (suspend->flags & PROCESS_STATUS_RUNNABLE, "Trying to suspend a non-running process!\n"); ProcessSetStatus (suspend, PROCESS_STATUS_WAITING); QueueRemove (&suspend->l); QueueInsertLast (&waitQueue, &suspend->l); } //---------------------------------------------------------------------- // // ProcessWakeup // // Wake up a process from its slumber. This only involves putting // it on the run queue; it's not guaranteed to be the next one to // run. // // NOTE: This must only be called from an interrupt or trap. It // need not be followed immediately by ProcessSchedule() because // the currently running process is unaffected. // //---------------------------------------------------------------------- void ProcessWakeup (PCB *wakeup) { dbprintf ('p',"Waking up PCB 0x%x.\n", wakeup); // Make sure it's not yet a runnable process. ASSERT (wakeup->flags & PROCESS_STATUS_WAITING, "Trying to wake up a non-sleeping process!\n"); ProcessSetStatus (wakeup, PROCESS_STATUS_RUNNABLE); QueueRemove (&wakeup->l); QueueInsertLast (&runQueue, &wakeup->l); } � //---------------------------------------------------------------------- // // ProcessDestroy // // Destroy a process by setting its status to zombie and putting it // on the zombie queue. The next time the scheduler is called, this // process will be marked as free. We can't necessarily do it now // because we might be the currently running process. // // NOTE: This must only be called from an interrupt or trap. However, // it need not be followed immediately by a ProcessSchedule() because // the process can continue running. // //---------------------------------------------------------------------- void ProcessDestroy (PCB *pcb) { dbprintf('p', "Entering ProcessDestroy for 0x%x.\n", pcb); ProcessSetStatus (pcb, PROCESS_STATUS_ZOMBIE); QueueRemove (&pcb->l); QueueInsertFirst (&zombieQueue, &pcb->l); dbprintf('p', "Leaving ProcessDestroy for 0x%x.\n", pcb); } //---------------------------------------------------------------------- // // ProcessExit // // This routine is called to exit from a system process. It simply // calls an exit trap, which will be caught to exit the process. // //---------------------------------------------------------------------- static void ProcessExit () { exit (); } � //---------------------------------------------------------------------- // // ProcessFork // // Create a new process and make it runnable. This involves the // following steps: // * Allocate resources for the process (PCB, memory, etc.) // * Initialize the resources // * Place the PCB on the runnable queue // // NOTE: This code has been tested for system processes, but not // for user processes. // //---------------------------------------------------------------------- int ProcessFork (VoidFunc func, uint32 param, char *name, int isUser) { int i, j, fd, n; Link *l; int start, codeS, codeL, dataS, dataL; uint32 *stackframe; int newPage; PCB *pcb; int addr = 0; int intrs; unsigned char buf[100]; uint32 dum[MAX_ARGS+8], count, offset; char *str; intrs = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrs); dbprintf ('p', "Entering ProcessFork args=0x%x 0x%x %s %d\n", func, param, name, isUser); // Get a free PCB for the new process if (QueueEmpty (&freepcbs)) { printf ("FATAL error: no free processes!\n"); exitsim (); // NEVER RETURNS! } l = QueueFirst (&freepcbs); dbprintf ('p', "Got a link @ 0x%x\n", l); QueueRemove (l); pcb = (PCB *)(l->object); // This prevents someone else from grabbing this process ProcessSetStatus (pcb, PROCESS_STATUS_RUNNABLE); // At this point, the PCB is allocated and nobody else can get it. // However, it's not in the run queue, so it won't be run. Thus, we // can turn on interrupts here. dbprintf ('I', "Before restore interrupt value is 0x%x.\n", CurrentIntrs()); RestoreIntrs (intrs); dbprintf ('I', "New interrupt value is 0x%x.\n", CurrentIntrs()); // Copy the process name into the PCB. dstrcpy (pcb->name, name); //---------------------------------------------------------------------- // This section initializes the memory for this process //---------------------------------------------------------------------- // For now, we'll use one user page and a page for the system stack. // For system processes, though, all pages must be contiguous. // Of course, system processes probably need just a single page for // their stack, and don't need any code or data pages allocated for them. pcb->npages = 1; newPage = MemoryAllocPage (); if (newPage == 0) { printf ("aFATAL: couldn't allocate memory - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->pagetable[0] = MemorySetupPte (newPage); newPage = MemoryAllocPage (); if (newPage == 0) { printf ("bFATAL: couldn't allocate system stack - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->sysStackArea = newPage * MEMORY_PAGE_SIZE; //---------------------------------------------------------------------- // Stacks grow down from the top. The current system stack pointer has // to be set to the bottom of the interrupt stack frame, which is at the // high end (address-wise) of the system stack. stackframe = ((uint32 *)(pcb->sysStackArea + MEMORY_PAGE_SIZE)) - (PROCESS_STACK_FRAME_SIZE + 8); // The system stack pointer is set to the base of the current interrupt // stack frame. pcb->sysStackPtr = stackframe; // The current stack frame pointer is set to the same thing. pcb->currentSavedFrame = stackframe; dbprintf ('p', "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n", pcb, pcb->sysStackArea, pcb->pagetable[0], pcb->npages * MEMORY_PAGE_SIZE); //---------------------------------------------------------------------- // This section sets up the stack frame for the process. This is done // so that the frame looks to the interrupt handler like the process // was "suspended" right before it began execution. The standard // mechanism of swapping in the registers and returning to the place // where it was "interrupted" will then work. //---------------------------------------------------------------------- // The previous stack frame pointer is set to 0, meaning there is no // previous frame. stackframe[PROCESS_STACK_PREV_FRAME] = 0; // Set the base of the level 1 page table. If there's only one page // table level, this is it. For 2-level page tables, put the address // of the level 1 page table here. For 2-level page tables, we'll also // have to build up the necessary tables.... stackframe[PROCESS_STACK_PTBASE] = (uint32)&(pcb->pagetable[0]); // Set the size (maximum number of entries) of the level 1 page table. // In our case, it's just one page, but it could be larger. stackframe[PROCESS_STACK_PTSIZE] = pcb->npages; // Set the number of bits for both the level 1 and level 2 page tables. // This can be changed on a per-process basis if desired. For now, // though, it's fixed. stackframe[PROCESS_STACK_PTBITS] = (MEMORY_L1_PAGE_SIZE_BITS + (MEMORY_L2_PAGE_SIZE_BITS << 16)); if (isUser) { dbprintf ('p', "About to load %s\n", name); fd = ProcessGetCodeInfo (name, &start, &codeS, &codeL, &dataS, &dataL); if (fd < 0) { // Free newpage and pcb so we don't run out... ProcessFreeResources (pcb); return (-1); } dbprintf ('p', "File %s -> start=0x%08x\n", name, start); dbprintf ('p', "File %s -> code @ 0x%08x (size=0x%08x)\n", name, codeS, codeL); dbprintf ('p', "File %s -> data @ 0x%08x (size=0x%08x)\n", name, dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { dbprintf ('p', "Placing %d bytes at vaddr %08x.\n", n, addr - n); // Copy the data to user memory. Note that the user memory needs to // have enough space so that this copy will succeed! MemoryCopySystemToUser (pcb, buf, addr - n, n); } FsClose (fd); stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_USER; // Set the initial stack pointer correctly. Currently, it's just set // to the top of the (single) user address space allocated to this // process. str = (char *)param; stackframe[PROCESS_STACK_IREG+29] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF; // Copy the initial parameter to the top of stack MemoryCopySystemToUser (pcb, (char *)str, (char *)stackframe[PROCESS_STACK_IREG+29], SIZE_ARG_BUFF-32); offset = get_argument((char *)param); dum[2] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; for(count=3;;count++) { offset=get_argument(NULL); dum[count] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; if(offset==0) { break; } } dum[0] = count-2; dum[1] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF - (count-2)*4; MemoryCopySystemToUser (pcb, (char *)dum, (char *)(stackframe[PROCESS_STACK_IREG+29]-count*4), (count)*sizeof(uint32)); stackframe[PROCESS_STACK_IREG+29] -= 4*count; // Set the correct address at which to execute a user process. stackframe[PROCESS_STACK_IAR] = (uint32)start; pcb->flags |= PROCESS_TYPE_USER; } else { // Set r31 to ProcessExit(). This will only be called for a system // process; user processes do an exit() trap. stackframe[PROCESS_STACK_IREG+31] = (uint32)ProcessExit; // Set the stack register to the base of the system stack. stackframe[PROCESS_STACK_IREG+29]=pcb->sysStackArea + MEMORY_PAGE_SIZE-32; // Set the initial parameter properly by placing it on the stack frame // at the location pointed to by the "saved" stack pointer (r29). *((uint32 *)(stackframe[PROCESS_STACK_IREG+29])) = param; // Set up the initial address at which to execute. This is done by // placing the address into the IAR slot of the stack frame. stackframe[PROCESS_STACK_IAR] = (uint32)func; // Set the initial value for the interrupt status register stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_SYS; // Mark this as a system process. pcb->flags |= PROCESS_TYPE_SYSTEM; } // Place the PCB onto the run queue. intrs = DisableIntrs (); QueueInsertLast (&runQueue, l); RestoreIntrs (intrs); // If this is the first process, make it the current one if (currentPCB == NULL) { dbprintf ('p', "Setting currentPCB=0x%x, stackframe=0x%x\n", pcb, pcb->currentSavedFrame); currentPCB = pcb; } dbprintf ('p', "Leaving ProcessFork (%s)\n", name); // Return the process number (found by subtracting the PCB number // from the base of the PCB array). return (pcb - pcbs); } � //---------------------------------------------------------------------- // // getxvalue // // Convert a hex digit into an actual value. // //---------------------------------------------------------------------- static inline int getxvalue (int x) { if ((x >= '0') && (x <= '9')) { return (x - '0'); } else if ((x >= 'a') && (x <= 'f')) { return (x + 10 - 'a'); } else if ((x >= 'A') && (x <= 'F')) { return (x + 10 - 'A'); } else { return (0); } } � //---------------------------------------------------------------------- // // ProcessGetCodeSizes // // Get the code sizes (stack & data) for a file. A file descriptor // for the named file is returned. This descriptor MUST be closed // (presumably by the caller) at some point. // //---------------------------------------------------------------------- int ProcessGetCodeInfo (const char *file, uint32 *startAddr, uint32 *codeStart, uint32 *codeSize, uint32 *dataStart, uint32 *dataSize) { int fd; int totalsize; char buf[100]; char *pos; // Open the file for reading. If it returns a negative number, the open // didn't work. if ((fd = FsOpen (file, FS_MODE_READ)) < 0) { dbprintf ('f', "ProcessGetCodeInfo: open of %s failed (%d).\n", file, fd); return (-1); } dbprintf ('f', "File descriptor is now %d.\n", fd); if ((totalsize = FsRead (fd, buf, sizeof (buf))) != sizeof (buf)) { dbprintf ('f', "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n", totalsize, sizeof (buf), file); FsClose (fd); return (-1); } if (dstrstr (buf, "start:") == NULL) { dbprintf ('f', "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n", file); return (-1); } pos = (char *)dindex (buf, ':') + 1; // Get the start address and overall size *startAddr = dstrtol (pos, &pos, 16); totalsize = dstrtol (pos, &pos, 16); // Get code & data section start & sizes *codeStart = dstrtol (pos, &pos, 16); *codeSize = dstrtol (pos, &pos, 16); *dataStart = dstrtol (pos, &pos, 16); *dataSize = dstrtol (pos, &pos, 16); // Seek to start of first real line FsSeek (fd, 1 + dindex (buf, '\n') - buf, 0); return (fd); } � //---------------------------------------------------------------------- // // ProcessGetFromFile // // Inputs: // addr - points to an integer that contains the address of // the byte past that previously returned. If this is the // first call to this routine, *addr should be set to 0. // fd - File descriptor from which to read data. The file format // is the same as that used by the DLX simulator. // buf - points to a buffer that will receive data from the input // file. Note that the data is NOT 0-terminated, and may // include any number of 0 bytes. // max - maximum length of data to return. The routine collects data // until either the address changes or it has read max bytes. // // Returns the number of bytes actually stored into buf. In addition, // *addr is updated to point to the byte following the last byte in // the buffer. // // Load a file into memory. The file format consists of a // leading address, followed by a colon, followed by the data // to go at that address. If the address is omitted, the data // follows that from the previous line of the file. // //---------------------------------------------------------------------- int ProcessGetFromFile (int fd, unsigned char *buf, uint32 *addr, int max) { char localbuf[204]; int nbytes; int seekpos; unsigned char *pos = buf; char *lpos = localbuf; // Remember our position at the start of the routine so we can adjust // it later. seekpos = FsSeek (fd, 0, FS_SEEK_CUR); // The maximum number of characters we could read is limited to the // maximum buffer space available to the caller * 2 because each 2 // characters in the input file result in a single byte of program // info being read in. max = max * 2; // If the callers maximum is greater than the available buffer space, // limit the buffer space further. if (max > (sizeof(localbuf)-4)) { max = sizeof(localbuf)-4; } if ((nbytes = FsRead (fd, localbuf, max)) <= 0) { return (0); } // 'Z' is unused in load file, so use it to mark the end of the buffer // Back up until just after the last newline in the data we read. dbprintf ('f', "Got %d bytes at offset %d ...", nbytes, seekpos); while (localbuf[--nbytes] != '\n') { } localbuf[nbytes+1] = 'Z'; localbuf[nbytes+2] = '\0'; dbprintf ('f', " terminated at %d.\n", nbytes); dbprintf ('f', "Buffer is '%s'\n", localbuf); nbytes = 0; while (dindex (lpos, 'Z') != NULL) { if (dindex (lpos, ':') == NULL) { break; } if (*lpos != ':') { // If we're going to go to a new address, we break out of the // loop and return what we've got already. if (nbytes > 0) { break; } *addr = dstrtol (lpos, &lpos, 16); dbprintf ('f', "New address is 0x%x.\n", *addr); } if (*lpos != ':') { break; } lpos++; // skip past colon while (1) { while (((*lpos) == ' ') || (*lpos == '\t')) { lpos++; } if (*lpos == '\n') { lpos++; break; } else if (!(isxdigit (*lpos) && isxdigit (*(lpos+1)))) { // Exit loop if at least one digit isn't a hex digit. break; } pos[nbytes++] = (getxvalue(*lpos) * 16) + getxvalue(*(lpos+1)); lpos += 2; (*addr)++; } } // Seek to just past the last line we read. FsSeek (fd, seekpos + lpos - localbuf, FS_SEEK_SET); dbprintf ('f', "Seeking to %d and returning %d bytes!\n", seekpos + lpos - localbuf, nbytes); return (nbytes); } � //---------------------------------------------------------------------- // // main // // This routine is called when the OS starts up. It allocates a // PCB for the first process - the one corresponding to the initial // thread of execution. Note that the stack pointer is already // set correctly by _osinit (assembly language code) to point // to the stack for the 0th process. This stack isn't very big, // though, so it should be replaced by the system stack of the // currently running process. // //---------------------------------------------------------------------- main (int argc, char *argv[]) { int i, j; int n; char buf[120]; char *userprog = (char *)0; static PCB temppcb; uint32 addr; extern void SysprocCreateProcesses (); char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int base; debugstr[0] = '\0'; printf ("Got %d arguments.\n", argc); printf ("Available memory: 0x%x -> 0x%x.\n", lastosaddress, MemoryGetSize ()); printf ("Argument count is %d.\n", argc); for (i = 0; i < argc; i++) { printf ("Argument %d is %s.\n", i, argv[i]); } // *((int *)0xfff00100) = 't'; FsModuleInit (); for (i = 0; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'D': dstrcpy (debugstr, argv[++i]); break; case 'i': n = dstrtol (argv[++i], (void *)0, 0); ditoa (n, buf); printf ("Converted %s to %d=%s\n", argv[i], n, buf); break; case 'f': { int start, codeS, codeL, dataS, dataL, fd, j; int addr = 0; static unsigned char buf[200]; fd = ProcessGetCodeInfo (argv[++i], &start, &codeS, &codeL, &dataS, &dataL); printf ("File %s -> start=0x%08x\n", argv[i], start); printf ("File %s -> code @ 0x%08x (size=0x%08x)\n", argv[i], codeS, codeL); printf ("File %s -> data @ 0x%08x (size=0x%08x)\n", argv[i], dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { for (j = 0; j < n; j += 4) { printf ("%08x: %02x%02x%02x%02x\n", addr + j - n, buf[j], buf[j+1], buf[j+2], buf[j+3]); } } close (fd); break; } case 'u': userprog = argv[++i]; base = i; break; default: printf ("Option %s not recognized.\n", argv[i]); break; } if(userprog) break; } } dbprintf ('i', "About to initialize queues.\n"); QueueModuleInit (); dbprintf ('i', "After initializing queues.\n"); MemoryModuleInit (); dbprintf ('i', "After initializing memory.\n"); ProcessModuleInit (); dbprintf ('i', "After initializing processes.\n"); ShareModuleInit (); dbprintf ('i', "After initializing shared memory.\n"); SynchModuleInit (); dbprintf ('i', "After initializing synchronization tools.\n"); KbdModuleInit (); dbprintf ('i', "After initializing keyboard.\n"); for (i = 0; i < 100; i++) { buf[i] = 'a'; } i = FsOpen ("vm", FS_MODE_WRITE); dbprintf ('i', "VM Descriptor is %d\n", i); FsSeek (i, 0, FS_SEEK_SET); FsWrite (i, buf, 80); FsClose (i); if (userprog != (char *)0) { for(i=base;i<argc&&i-base<11; i++) { param[i-base] = argv[i]; } process_create(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7], param[8], param[9], param[10], param[11]); // ProcessFork (0, (uint32)"Help Me man!", userprog, 1); } SysprocCreateProcesses (); dbprintf ('i', "Created processes - about to set timer quantum.\n"); TimerSet (processQuantum); dbprintf ('i', "Set timer quantum to %d, about to run first process.\n", processQuantum); intrreturn (); // Should never be called because the scheduler exits when there // are no runnable processes left. exitsim(); // NEVER RETURNS! } unsigned GetCurrentPid() { return (unsigned)(currentPCB - pcbs); } unsigned findpid(PCB *pcb) { return (unsigned)(pcb - pcbs); } uint32 get_argument(char *string) { static char *str; static int location=0; int location2; if(string) { str=string; location = 0; } location2 = location; if(str[location]=='\0'||location>=99) return 0; for(;location<100;location++) { if(str[location]=='\0') { location++; break; } } return location2; } void process_create(char *name, ...) { char **args; int i, j, k; char allargs[1000]; args = &name; k=0; for(i=0; args[i]!=NULL; i++) { j=0; do { allargs[k] = args[i][j]; j++; k++; } while(args[i][j-1]!='\0'); } allargs[k] = allargs[k+1] = 0; ProcessFork(0, (uint32)allargs, name, 1); }
src/process.h
// // process.h // // Definitions for process creation and manipulation. These include // the process control block (PCB) structure as well as information // about the stack format for a saved process. // #ifndef _process_h_ #define _process_h_ #include "dlxos.h" #include "queue.h" //#include "share_memory.h" #define PROCESS_MAX_PROCS 32 // Maximum number of active processes #define PROCESS_INIT_ISR_SYS 0x140 // Initial status reg value for system processes #define PROCESS_INIT_ISR_USER 0x100 // Initial status reg value for user processes #define PROCESS_STATUS_FREE 0x1 #define PROCESS_STATUS_RUNNABLE 0x2 #define PROCESS_STATUS_WAITING 0x4 #define PROCESS_STATUS_STARTING 0x8 #define PROCESS_STATUS_ZOMBIE 0x10 #define PROCESS_STATUS_MASK 0x3f #define PROCESS_TYPE_SYSTEM 0x100 #define PROCESS_TYPE_USER 0x200 typedef void (*VoidFunc)(); // Process control block typedef struct PCB { uint32 *currentSavedFrame; // -> current saved frame. MUST BE 1ST! uint32 *sysStackPtr; // Current system stack pointer. MUST BE 2ND! uint32 sysStackArea; // System stack area for this process unsigned int flags; char name[80]; // Process name uint32 pagetable[16]; // Statically allocated page table int npages; // Number of pages allocated to this process Link l; // Used for keeping PCB in queues } PCB; // Offsets of various registers from the stack pointer in the register // save frame. Offsets are in WORDS (4 byte chunks) #define PROCESS_STACK_IREG 10 // Offset of r0 (grows upwards) // NOTE: r0 isn't actually stored! This is for convenience - r1 is the // first stored register, and is at location PROCESS_STACK_IREG+1 #define PROCESS_STACK_FREG (PROCESS_STACK_IREG+32) // Offset of f0 #define PROCESS_STACK_IAR (PROCESS_STACK_FREG+32) // Offset of IAR #define PROCESS_STACK_ISR (PROCESS_STACK_IAR+1) #define PROCESS_STACK_CAUSE (PROCESS_STACK_IAR+2) #define PROCESS_STACK_FAULT (PROCESS_STACK_IAR+3) #define PROCESS_STACK_PTBASE (PROCESS_STACK_IAR+4) #define PROCESS_STACK_PTSIZE (PROCESS_STACK_IAR+5) #define PROCESS_STACK_PTBITS (PROCESS_STACK_IAR+6) #define PROCESS_STACK_PREV_FRAME 10 // points to previous interrupt frame #define PROCESS_STACK_FRAME_SIZE 85 // interrupt frame is 85 words #define SIZE_ARG_BUFF 1024 // Max number of characters in the // command-line arguments #define MAX_ARGS 128 // Max number of command-line // arguments extern PCB *currentPCB; extern int ProcessFork (VoidFunc, unsigned int, char *, int); extern void ProcessSchedule (); extern void ContextSwitch(void *, void *, int); extern void ProcessSuspend (PCB *); extern void ProcessWakeup (PCB *); extern void ProcessSetResult (PCB *, uint32); extern void ProcessSleep (); extern unsigned GetCurrentPid(); extern unsigned getpid(); void process_create(char *name, ...); #endif /* _process_h_ */
src/queue.c
// // queue.c // // Variables for queues, and a routine to initialize the pool of links. // // #include "dlxos.h" #include "queue.h" Queue freeLinks; static Link linkpool[QUEUE_MAX_LINKS]; void QueueModuleInit () { int i; QueueInit (&freeLinks); for (i = 0; i < QUEUE_MAX_LINKS; i++) { dbprintf ('i', "Initializing queue link %d.\n", i); linkpool[i].next = NULL; QueueFreeLink (&(linkpool[i])); } } void QueueInit (Queue *q) { q->first = (Link *)q; q->last = (Link *)q; q->nitems = 0; } void QueueFreeLink (Link *l) { extern Queue freeLinks; // Make sure the link has already been freed! ASSERT ((l->next == NULL), "Link not empty"); QueueInsertLast (&freeLinks, l); } Link * QueueAllocLink () { extern Queue freeLinks; Link *l; if (! QueueEmpty (&freeLinks)) { l = QueueFirst (&freeLinks); QueueRemove (l); } else { l = NULL; } ASSERT ((l != NULL), "Link not allocated!"); return (l); }
src/queue.h
// // queue.h // // Definitions for routines used to manage queues. The queues are // doubly-linked lists so it's easier to add and remove from them. // Also, the links themselves have pointers to objects so that objects // may be on more than one queue. // #ifndef _queue_h_ #define _queue_h_ #ifndef NULL #define NULL ((void *)0) #endif #define QUEUE_MAX_LINKS 400 typedef struct Link { struct Link *next; struct Link *prev; struct Queue *queue; void *object; } Link; typedef struct Queue { struct Link *first; struct Link *last; int nitems; } Queue; inline void QueueLinkInit (Link *l, void *obj) { l->next = NULL; l->object = obj; } inline Link * QueueNext (Link *l) { return (l->next); } inline Link * QueuePrev (Link *l) { return (l->prev); } inline Link * QueueFirst (Queue *q) { return (q->first); } inline Link * QueueLast (Queue *q) { return (q->last); } inline void QueueInsertAfter (Queue *q, Link *after, Link *l) { l->queue = q; l->prev = after; l->next = after->next; after->next = l; l->next->prev = l; q->nitems += 1; } inline void QueueInsertFirst (Queue *q, Link *l) { QueueInsertAfter (q, (Link *)q, l); } inline void QueueInsertLast (Queue *q, Link *l) { QueueInsertAfter (q, QueueLast(q), l); } inline void QueueRemove (Link *l) { if (l->queue->nitems > 0) { l->prev->next = l->next; l->next->prev = l->prev; l->queue->nitems -= 1; } l->next = NULL; } inline int QueueLength (Queue *q) { return (q->nitems); } inline int QueueEmpty (Queue *q) { return (QueueLength (q) == 0); } extern void QueueModuleInit (); extern void QueueFreeLink (Link *l); extern Link *QueueAllocLink (); extern void QueueInit (Queue *q); #endif // _queue_h_
src/share_memory.api
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ShareModuleInit .global _ShareModuleInit _ShareModuleInit: ; Function 'ShareModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L64 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L63 nop ; not filled. L64: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L63: lhi r2,((_spages)>>16)&0xffff addui r2,r2,(_spages)&0xffff addi r4,r2,#248 L68: addi r5,r0,#0 sw (r2),r5 add r31,r0,r2 add r3,r0,r2 L72: addi r1,r31,#4 addi r5,r0,#0 sw (r1),r5 add r31,r0,r1 sle r1,r31,r3 bnez r1,L72 nop ; not filled. addi r2,r2,#8 sle r1,r2,r4 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L76 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L75 nop ; not filled. L76: addi r29,r29,#-8 lhi r5,((LC1)>>16)&0xffff addui r5,r5,(LC1)&0xffff sw (r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L75: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ShareModuleInit .data .align 2 LC2: .ascii "FATAL: couldn\'t allocate memory - no free pages!\n\000" .text .align 2 .proc _MemoryCreateSharedPage .global _MemoryCreateSharedPage _MemoryCreateSharedPage: ; Function 'MemoryCreateSharedPage'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) addi r29,r29,#-8 sw (r29),r6 jal _findpid nop ; not filled. add r5,r0,r1 srli r8,r5,#0x5 slli r1,r8,#0x5 sub r5,r5,r1 addi r29,r29,#8 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r7,r0,r1 addi r29,r29,#8 lw r1,160(r6) seqi r1,r1,#16 bnez r1,L92 nop ; not filled. addi r3,r0,#0 lhi r9,((_spages)>>16)&0xffff addui r9,r9,(_spages)&0xffff add r2,r0,r9 L84: lw r1,(r2) snei r1,r1,#0 beqz r1,L82 nop ; not filled. addi r2,r2,#8 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L84 nop ; not filled. L82: seqi r1,r3,#32 beqz r1,L87 nop ; not filled. L92: addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#0 j L91 nop ; not filled. L87: jal _MemoryAllocPage nop ; not filled. add r4,r0,r1 snei r1,r4,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r10,((LC2)>>16)&0xffff addui r10,r10,(LC2)&0xffff sw (r29),r10 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L89: slli r1,r3,#0x3 add r2,r1,r9 sw (r2),r4 slli r1,r8,#0x2 add r2,r1,r2 addi r1,r0,#1 sll r1,r1,r5 sw 4(r2),r1 addi r29,r29,#-8 sw (r29),r4 jal _MemorySetupPte nop ; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r2,r1,#1 sw 160(r6),r2 lw r1,8(r6) addui r1,r1,#65164 sw 316(r1),r2 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop ; not filled. addi r29,r29,#8 add r1,r0,r4 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCreateSharedPage .align 2 .proc _mmap .global _mmap _mmap: ; Function 'mmap'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) lw r7,4(r30) snei r1,r7,#0 bnez r1,L94 nop ; not filled. addi r1,r0,#0 j L115 nop ; not filled. L94: lw r1,8(r6) addui r9,r1,#65164 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r8,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r2,((_spages)>>16)&0xffff addui r2,r2,(_spages)&0xffff L99: lw r1,(r2) seq r1,r1,r7 bnez r1,L97 nop ; not filled. addi r2,r2,#8 addi r3,r3,#1 sleui r1,r3,#31 bnez r1,L99 nop ; not filled. L97: seqi r1,r3,#32 bnez r1,L116 nop ; not filled. slli r31,r7,#0x10 addi r5,r0,#0 lw r4,160(r6) slt r1,r5,r4 beqz r1,L105 nop ; not filled. add r2,r0,r6 L107: lw r1,96(r2) addi r10,r0,#-8 and r1,r1,r10 seq r1,r1,r31 bnez r1,L105 nop ; not filled. addi r2,r2,#4 addi r5,r5,#1 slt r1,r5,r4 bnez r1,L107 nop ; not filled. L105: lw r2,160(r6) seq r1,r5,r2 beqz r1,L110 nop ; not filled. slei r1,r2,#15 bnez r1,L111 nop ; not filled. L116: addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#0 j L115 nop ; not filled. L111: addi r29,r29,#-8 sw (r29),r7 jal _MemorySetupPte nop ; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r1,r1,#1 sw 160(r6),r1 sw 316(r9),r1 addi r29,r29,#8 L110: addi r29,r29,#-8 sw (r29),r6 jal _findpid nop ; not filled. add r2,r0,r1 srli r4,r2,#0x5 slli r1,r4,#0x5 sub r2,r2,r1 slli r3,r3,#0x3 slli r1,r4,#0x2 add r1,r3,r1 lhi r10,((_spages+4)>>16)&0xffff addui r10,r10,(_spages+4)&0xffff add r3,r1,r10 addi r1,r0,#1 sll r2,r1,r2 lw r1,(r3) or r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop ; not filled. addi r29,r29,#8 slli r1,r5,#0x10 L115: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _mmap .data .align 2 LC3: .ascii "FATAL: Attempted to free memory page 0\n\000" .text .align 2 .proc _MemoryFreeSharedPte .global _MemoryFreeSharedPte _MemoryFreeSharedPte: ; Function 'MemoryFreeSharedPte'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r8,(r30) lw r2,4(r30) addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r9,r0,r1 addi r29,r29,#8 slli r1,r2,#0x2 add r1,r1,r8 lhu r7,96(r1) snei r1,r7,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 lhi r10,((LC3)>>16)&0xffff addui r10,r10,(LC3)&0xffff sw (r29),r10 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L119: addi r4,r0,#0 lhi r5,((_spages)>>16)&0xffff addui r5,r5,(_spages)&0xffff add r2,r0,r5 L123: lw r1,(r2) seq r1,r1,r7 bnez r1,L121 nop ; not filled. addi r2,r2,#8 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L123 nop ; not filled. L121: seqi r1,r4,#32 beqz r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#-1 j L141 nop ; not filled. L126: addi r29,r29,#-8 sw (r29),r8 jal _findpid nop ; not filled. add r2,r0,r1 srli r3,r1,#0x5 slli r1,r3,#0x5 sub r2,r2,r1 slli r1,r4,#0x3 add r4,r1,r5 slli r1,r3,#0x2 add r1,r1,r4 addi r3,r1,#4 addi r1,r0,#1 sll r1,r1,r2 addi r10,r0,#-1 xor r2,r1,r10 lw r1,(r3) and r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r6,r0,#0 addi r5,r0,#0 L132: addi r3,r0,#1 addi r2,r0,#0 lw r31,4(r4) L136: and r1,r31,r3 snei r1,r1,#0 add r6,r6,r1 slli r3,r3,#0x1 addi r2,r2,#1 slei r1,r2,#31 bnez r1,L136 nop ; not filled. addi r4,r4,#4 addi r5,r5,#1 slei r1,r5,#0 bnez r1,L132 nop ; not filled. lw r1,160(r8) addi r2,r1,#-1 sw 160(r8),r2 lw r1,8(r8) addui r1,r1,#65164 sw 316(r1),r2 snei r1,r6,#0 bnez r1,L139 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 L139: addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop ; not filled. addi r29,r29,#8 add r1,r0,r6 L141: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreeSharedPte .data .align 2 _spages: .space 256
src/share_memory.h
/*********************************************************************** * * share_memory.h * Copyright: Uday Savagaonkar (2002). All rights reserved. * Share memory API for dlxos * ***********************************************************************/ #ifndef _SHARE_MEMORY_H_ #define _SHARE_MEMORY_H_ #include "dlxos.h" #include "memory.h" #include "process.h" #define MEMORY_MAX_SHARED_PAGES 32 //Maximum number of pages that can be //shared amongst different processes #define PROCESS_MAX_PAGES 16 //Maximum number of pages allowed in Level //1 page table void SharedInitModule(); //Turns on the shared memory module uint32 MemoryCreateSharedPage(PCB *pcb); //Creates a shared page in the memory void *mmap(PCB *pcb, uint32 handle); //Maps a shared page to the virtual address //space int MemoryFreeSharedPage(PCB *pcb, uint32 handle); //Releases a shared page. The page is not //actually deallocated untill all the process //release it. #endif _SHARE_MEMORY_H_
src/synch.c
// // synch.c // // Routines for synchronization // // #include "dlxos.h" #include "process.h" #include "synch.h" static Sem sems[MAX_SEMS]; //All semaphores in the system extern struct PCB *currentPCB; //---------------------------------------------------------------------- // SynchModuleInit // // Initializes the synchronization primitives: the semaphores //---------------------------------------------------------------------- void SynchModuleInit() { int i; dbprintf ('p', "Entering SynchModuleInit\n"); for(i=0; i<MAX_SEMS; i++) { sems[i].inuse = 0; } for(i=0; i<MAX_LOCKS; i++) { // Your stuff for initializing locks goes here } for(i=0; i<MAX_CONDS; i++) { // Your stuff for initializing Condition variables goes here } dbprintf ('p', "Leaving SynchModuleInit\n"); } //--------------------------------------------------------------------- // // SemInit // // Initialize a semaphore to a particular value. This just means // initting the process queue and setting the counter. // //---------------------------------------------------------------------- void SemInit (Sem *sem, int count) { QueueInit (&sem->waiting); sem->count = count; } //---------------------------------------------------------------------- // SemCreate // // Grabs a Semaphore, initializes it and returns a handle to this // semaphore. All subsequent accesses to this semaphore should be made // through this handle //---------------------------------------------------------------------- sem_t SemCreate(int count) { sem_t sem; uint32 intrval; // grabbing a semaphore should be an atomic operation intrval = DisableIntrs(); for(sem=0; sem<MAX_SEMS; sem++) { if(sems[sem].inuse==0) { sems[sem].inuse = 1; break; } } RestoreIntrs(intrval); if(sem==MAX_SEMS) return INVALID_SEM; SemInit(&sems[sem], count); return sem; } � //---------------------------------------------------------------------- // // SemWait // // Wait on a semaphore. As described in Section 6.4 of _OSC_, // OR section 2.3 of Modern Operating Systems, // we decrement the counter and suspend the process if the // semaphore's value is less than 0. To ensure atomicity, // interrupts are disabled for the entire operation. Note that, // if the process is put to sleep, interrupts will be OFF when // it returns from sleep. Thus, we enable interrupts at the end of // the routine. // //---------------------------------------------------------------------- void SemWait (Sem *sem) { Link *l; int intrval; intrval = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrval); dbprintf ('s', "Proc 0x%x waiting on sem 0x%x, count=%d.\n", currentPCB, sem, sem->count); sem->count -= 1; if (sem->count < 0) { l = QueueAllocLink (); QueueLinkInit (l, (void *)currentPCB); dbprintf ('s', "Suspending current proc (0x%x).\n", currentPCB); QueueInsertLast (&sem->waiting, l); ProcessSleep (); } RestoreIntrs (intrval); } int SemHandleWait(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemWait(&sems[sem]); return 0; } return 1; } else { return 1; } } � //---------------------------------------------------------------------- // // SemSignal // // Signal on a semaphore. Again, details are in Section 6.4 of // _OSC_ OR section 2.3 of Modern Operating Systems. // //---------------------------------------------------------------------- void SemSignal (Sem *sem) { Link *l; int intrs; intrs = DisableIntrs (); dbprintf ('s', "Signalling on sem 0x%x, count=%d.\n", sem, sem->count); sem->count += 1; if (sem->count <= 0) { l = QueueFirst (&sem->waiting); QueueRemove (l); dbprintf ('s', "Waking up PCB 0x%x.\n", l->object); ProcessWakeup ((PCB *)(l->object)); QueueFreeLink (l); } RestoreIntrs (intrs); } int SemHandleSignal(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemSignal(&sems[sem]); return 0; } return 1; } else { return 1; } } //----------------------------------------------------------------------- // LockCreate // // LockCreate grabs a lock from the systeme-wide pool of locks and // initializes it. // It also sets the inuse flag of the lock to indicate that the lock is // being used by a process. It returns a unique id for the lock. All the // references to the lock should be made through the returned id. The // process of grabbing the lock should be atomic. // // If a new lock cannot be created, your implementation should return // INVALID_LOCK (see synch.h). //----------------------------------------------------------------------- lock_t LockCreate() { // Your stuff goes here } //--------------------------------------------------------------------------- // LockHandleAcquire // // This routine acquires a lock given its handle. The handle must be a // valid handle for this routine to succeed. In that case this routine // returns a zero. Otherwise the routine returns a 1. // // Your implementation should be such that if a process that already owns // the lock calls LockHandleAcquire for that lock, it should not block. //--------------------------------------------------------------------------- int LockHandleAcquire(lock_t lock) { //Your stuff goes here } //--------------------------------------------------------------------------- // LockHandleRelease // // This procedure releases the unique lock described by the handle. It // first checks whether the lock is a valid lock. If not, it returns 1. // If the lock is a valid lock, it should check whether the calling // process actually holds the lock. If not it returns 1. Otherwise it // releases the lock, and returns 0. //--------------------------------------------------------------------------- int LockHandleRelease(lock_t lock) { // Your stuff goes here } //-------------------------------------------------------------------------- // CondCreate // // This function grabs a condition variable from the system-wide pool of // condition variables and associates the specified lock with // it. It should also initialize all the fields that need to initialized. // The lock being associated should be a valid lock, which means that // it should have been obtained via previous call to LockCreate(). // // If for some reason a condition variable cannot be created (no more // condition variables left, or the specified lock is not a valid lock), // this function should return INVALID_COND (see synch.h). Otherwise it // should return handle of the condition variable. //-------------------------------------------------------------------------- cond_t CondCreate(lock_t lock) { // Your stuff goes here } //--------------------------------------------------------------------------- // CondHandleWait // // This function makes the calling process block on the condition variable // till either ConditionHandleSignal or ConditionHandleBroadcast is // received. The process calling CondHandleWait must have acquired the // lock associated with the condition variable (the lock that was passed // to CondCreate. This implies the lock handle needs to be stored // somewhere. hint! hint!) for this function to // succeed. If the calling process has not acquired the lock, it does not // block on the condition variable, but a value of 1 is returned // indicating that the call was not successful. Return value of 0 implies // that the call was successful. // // This function should be written in such a way that the calling process // should release the lock associated with this condition variable before // going to sleep, so that the process that intends to signal this // process could acquire the lock for that purpose. After waking up, the // blocked process should acquire (i.e. wait on) the lock associated with // the condition variable. In other words, this process does not // "actually" wake up until the process calling CondHandleSignal or // CondHandleBroadcast releases the lock explicitly. //--------------------------------------------------------------------------- int CondHandleWait(cond_t cond) { // Your stuff goes here } //--------------------------------------------------------------------------- // CondHandleSignal // // This call wakes up exactly one process waiting on the condition // variable, if at least one is waiting. If there are no processes // waiting on the condition variable, it does nothing. In either case, // the calling process must have acquired the lock associated with // condition variable for this call to succeed, in which case it returns // 0. If the calling process does not own the lock, it returns 1, // indicating that the call was not successful. This function should be // written in such a way that the calling process should retain the // acquired lock even after the call completion (in other words, it // should not release the lock it has already acquired before the call). // // Note that the process woken up by this call tries to acquire the lock // associated with the condition variable as soon as it wakes up. Thus, // for such a process to run, the process invoking CondHandleSignal // must explicitly release the lock after the call is complete. //--------------------------------------------------------------------------- int CondHandleSignal(cond_t cond) { // Your stuff goes here } //--------------------------------------------------------------------------- // CondHandleBroadcast // // This function is very similar to CondHandleSignal. But instead of // waking only one process, it wakes up all the processes waiting on the // condition variable. For this call to succeed, the calling process must // have acquired the lock associated with the condition variable. This // function should be written in such a way that the calling process // should retain the lock even after call completion. // // Note that the process woken up by this call tries to acquire the lock // associated with the condition variable as soon as it wakes up. Thus, // for such a process to run, the process invoking CondHandleBroadcast // must explicitly release the lock after the call completion. //--------------------------------------------------------------------------- int CondHandleBroadcast(cond_t cond) { // Your stuff goes here }
src/synch.h
// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // Lock // Condition // // Semaphores are the only "native" synchronization primitive. // Condition variables and locks are implemented using semaphores. // #ifndef _synch_h_ #define _synch_h_ #include "queue.h" #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system #define MAX_LOCKS 64 //Maximum 64 locks allowed in the system //This is because condition vars also use //locks from the same pool #define MAX_CONDS 32 //Maximum 32 conds allowed in the system typedef int sem_t; typedef int lock_t; typedef int cond_t; #define INVALID_SEM -1 #define INVALID_LOCK -1 #define INVALID_PROC -1 #define INVALID_COND -1 typedef struct Sem { Queue waiting; int count; uint32 inuse; //indicates whether the semaphore is being //used by any process } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); typedef struct Lock { //Your stuff goes here } Lock; typedef struct Cond { //Your stuff goes here } Cond; #endif //_synch_h_
src/syscall.h
// // syscall.h // // This file declares all of the system calls available as builtins // in the simulator. // #ifndef _syscall_h_ #define _syscall_h_ extern int open(const char *, int); extern int read(int, char *, int); extern int write(int, char *, int); extern int lseek(int, int, int); extern int close(int); #endif // _syscall_h_
src/sysproc.c
// // sysproc.c // // This file defines system processes run by the OS. It also // includes a routine to initialize system processes. #include "process.h" #include "synch.h" //---------------------------------------------------------------------- // // doSomething // // A useless little function that does some small stuff to test // process switching and the like. // //---------------------------------------------------------------------- static Sem mysems[10]; static void doSomething (int me) { int i; int j; int mygrp = me % 10; char buf[40]; char buf2[40]; if (me < 100) { SemInit (&(mysems[mygrp]), 1); for (i = 1; i <= 6; i++) { dstrcpy (buf, "Process #"); ditoa (i, buf2); dstrcat (buf, buf2); ProcessFork (&doSomething, i * me * 1000 + me, buf, 0); } } SemWait (&mysems[mygrp]); for (i = 0, j = 0; i < (me * 2); i++) { if ((i % 1000) == 0) { printf ("Running process %d (iteration %d)!\n", me, i); } j += (i & 3); } SemSignal (&mysems[mygrp]); } � //---------------------------------------------------------------------- // // chaseTail // // A little function that chases its tail, forking off other // processes before exiting. This can be used to test resource // allocation and reclamation. // //---------------------------------------------------------------------- static void chaseTail (int me) { char *str = "chasetail"; printf ("Chasing tail %d.\n", me); printf ("Open of (%s,0x%x) returns 0x%x.\n", str, me+0x2000, Open (str, me + 0x2000)); if (me < 40) { ProcessFork (&chaseTail, me + 1, "ChaseTail", 0); } } //---------------------------------------------------------------------- // // emptyLoop // // This is an empty loop. It's used to test running code. A similar // loop could be used as the "idle" process. // //---------------------------------------------------------------------- static void emptyLoop (int me) { int i; int limit = me * 50000; i = 0; while (1) { i += 1; if (i > limit) { i = 0; printf ("%d ", me); } } } � //---------------------------------------------------------------------- // // randomStuff // // This routine tests random number usage in DLXOS. // //---------------------------------------------------------------------- static void randomStuff (int seed) { int i,rn; extern int random(),srandom(); srandom (seed); for (i = 0; i < 40; i++) { rn = random (); printf ("Random number %02i is 0x%08x.\n", i, rn); } } //---------------------------------------------------------------------- // // SysprocCreateProcesses // // This is the routine that is called by main to create processes. // It must create at least one process, and there must always be // at least one runnable process. If there isn't, the OS will // exit. // //---------------------------------------------------------------------- void SysprocCreateProcesses () { int i; for (i = 0; i < 10; i++) { SemInit (&mysems[i], 1); } // ProcessFork (&emptyLoop, 1, "Loop1", 0); // ProcessFork (&emptyLoop, 2, "Loop1", 0); // ProcessFork (&emptyLoop, 3, "Loop1", 0); // ProcessFork (&doSomething, 1, "Creator1", 0); // ProcessFork (&doSomething, 2, "Creator2", 0); // ProcessFork (&randomStuff, 1234, "randomStuff", 0); // ProcessFork (&chaseTail, 10, "ChaseTail", 0); }
src/trap_random.s
; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom
src/traps.c
// // traps.c // // This file handles the low-level trap stuff for an operating system // running under DLX. static char rcsid[] = "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlx.h" #include "dlxos.h" #include "traps.h" #include "process.h" //---------------------------------------------------------------------- // // TimerSet // // Set the timer to go off after a particular number of microseconds. // The number of microseconds is passed to the routine. // //---------------------------------------------------------------------- void TimerSet (int us) { *((int *)DLX_TIMER_ADDRESS) = us; } � //---------------------------------------------------------------------- // // KbdModuleInit // // Initialize the keyboard module. This involves turning on // interrupts for the keyboard. // //---------------------------------------------------------------------- void KbdModuleInit () { *((uint32 *)DLX_KBD_INTR) = 1; } //-------------------------------------------------------------------- // GetUintFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static uint32 GetUintFromTrapArg(uint32 *trapArgs, int sysmode) { uint32 arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // GetIntFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static int GetIntFromTrapArg(uint32 *trapArgs, int sysmode) { int arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // Here we support reading the arguments // Maximum 10 command-line arguments are allowed // Also the total length of the arguments including the terminating // '\0' should be less than or equal to 100 //-------------------------------------------------------------------- static void TrapProcessCreateHandler(uint32 *trapArgs, int sysmode) { char allargs[SIZE_ARG_BUFF]; char name[100]; int i=0, j=0, k=0; uint32 args[MAX_ARGS]; char *destination; // The first argument is the name of the executable file i=0; for(i=0;i<100; i++) allargs[i] = 0; i=0; if(!sysmode) { //Get the arguments into the sytem space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,name+i,1); i++; } while ((i < sizeof (name)) && (name[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], name, sizeof (name)); } name[sizeof(name)-1] = '\0'; // null terminate the name i=0; if(!sysmode) { //Copy the rest of the arguments to the system space for(j=0; (j<11)&&(args[j]!=0); j++) { k=0; do { MemoryCopyUserToSystem (currentPCB,((char*)args[j])+k,allargs+i,1); i++; k++; } while ((i<sizeof(allargs)) && (allargs[i-1]!='\0')); } } else { destination = &allargs[0]; for(j=0; (j<11)&&(args[j]!=0); j++) { k = dstrlen((char *)args[j]); //length of the argument if(&destination[k]-allargs>100) { printf("Fatal: Cumulative length of all arguments > 100\n"); exitsim(); } dstrcpy(destination, (char *)args[j]); destination[k] = '\0'; } } allargs[sizeof(allargs)-1] = '\0'; // null terminate the name ProcessFork(0, (uint32)allargs, name, 1); } � //---------------------------------------------------------------------- // // TrapPrintfHandler // // Handle a printf trap.here. This printf code will correctly // handle integers but will not correctly handle strings (yet). // Also, note that the maximum format string length is 79 characters. // Exceeding this length will cause the format to be truncated. // //---------------------------------------------------------------------- static void TrapPrintfHandler (uint32 *trapArgs, int sysMode) { char formatstr[80]; int i = 0; uint32 printfArgs[10]; uint32 args[10]; int nargs = 0; char *c; // The first argument is the print format string. Copy it to system // space, truncating if necessary. i = 0; if (!sysMode) { // Get the arguments themselves into system space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,formatstr+i,1); i++; } while ((i < sizeof (formatstr)) && (formatstr[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], formatstr, sizeof (formatstr)); } formatstr[sizeof(formatstr)-1] = '\0'; // null terminate the fmt str for (c = formatstr; *c != '\0'; c++) { if (*c == '%') { // if this is a %%, skip past second % if (*(c+1) == '%') { c++; continue; } // Get the current argument off the stack printfArgs[nargs] = args[nargs+1]; // dbprintf ('t', "Argument %d at 0x%x is %d (0x%x).\n", nargs, // args[nargs], args[nargs]); while (1) { c++; if (*c == 's') { // Handle strings here. They don't work for user programs (yet...) break; } else if (*c == 'l') { continue; } else if ((*c == 'f') || (*c == 'g') || (*c == 'e')) { // If it's a floating point number, it'll be passed as // a double, so grab the second word also. nargs += 1; printfArgs[nargs] = args[nargs+1]; break; } else if ((*c >= 'a') && (*c <= 'z')) { // If it's another formatting character, it's not // a string, but we can leave the loop anyway. break; } } nargs += 1; } } printf (formatstr,printfArgs[0],printfArgs[1],printfArgs[2], printfArgs[3], printfArgs[4], printfArgs[5], printfArgs[6], printfArgs[7]); } � //---------------------------------------------------------------------- // // doInterrupt // // Handle an interrupt or trap. // //---------------------------------------------------------------------- void dointerrupt (unsigned int cause, unsigned int iar, unsigned int isr, uint32 *trapArgs) { int result; int i; uint32 args[4]; int intrs; uint32 handle; int ihandle; dbprintf ('t',"Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n", cause, iar, isr, trapArgs); // If the TRAP_INSTR bit is set, this was from a trap instruction. // If the bit isn't set, this was a system interrupt. if (cause & TRAP_TRAP_INSTR) { cause &= ~TRAP_TRAP_INSTR; switch (cause) { case TRAP_CONTEXT_SWITCH: dbprintf ('t', "Got a context switch trap!\n"); ProcessSchedule (); break; case TRAP_EXIT: dbprintf ('t', "Got an exit trap!\n"); ProcessDestroy (currentPCB); ProcessSchedule (); break; case TRAP_PROCESS_FORK: dbprintf ('t', "Got a fork trap!\n"); break; case TRAP_PROCESS_SLEEP: dbprintf ('t', "Got a process sleep trap!\n"); ProcessSuspend (currentPCB); ProcessSchedule (); break; case TRAP_PRINTF: // Call the trap printf handler and pass the arguments and a flag // indicating whether the trap was called from system mode. dbprintf ('t', "Got a printf trap!\n"); TrapPrintfHandler (trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_OPEN: // Get the arguments to the trap handler. If this is a user mode trap, // copy them from user space. if (isr & DLX_STATUS_SYSMODE) { args[0] = trapArgs[0]; args[1] = trapArgs[1]; } else { char filename[32]; // trapArgs points to the trap arguments in user space. There are // two of them, so copy them to to system space. The first argument // is a string, so it has to be copied to system space and the // argument replaced with a pointer to the string in system space. MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof(args[0])*2); MemoryCopyUserToSystem (currentPCB, args[0], filename, 31); // Null-terminate the string in case it's longer than 31 characters. filename[31] = '\0'; // Set the argument to be the filename args[0] = (uint32)filename; } // Allow Open() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, args[1] + 0x10000); printf ("Got an open with parameters ('%s',0x%x)\n", args[0], args[1]); RestoreIntrs (intrs); break; case TRAP_CLOSE: // Allow Close() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_READ: // Allow Read() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_WRITE: // Allow Write() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_DELETE: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_SEEK: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_PROCESS_GETPID: ProcessSetResult(currentPCB, GetCurrentPid()); break; case TRAP_PROCESS_CREATE: TrapProcessCreateHandler(trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_SHARE_CREATE_PAGE: handle = MemoryCreateSharedPage(currentPCB); ProcessSetResult(currentPCB, handle); break; case TRAP_SHARE_MAP_PAGE: handle = GetUintFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = (uint32)mmap(currentPCB, handle); ProcessSetResult(currentPCB, handle); break; case TRAP_SEM_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = SemCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_SEM_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleWait(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_SEM_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleSignal(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_LOCK_CREATE: ihandle = LockCreate(); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_LOCK_ACQUIRE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = LockHandleAcquire(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_LOCK_RELEASE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = LockHandleRelease(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_COND_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_COND_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondHandleWait(ihandle); ProcessSetResult(currentPCB, ihandle); //Return 1 or 0 break; case TRAP_COND_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondHandleSignal(ihandle); ProcessSetResult(currentPCB, ihandle); //Return 1 or 0 break; case TRAP_COND_BROADCAST: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondHandleBroadcast(ihandle); ProcessSetResult(currentPCB, ihandle); //Return 1 or 0 break; default: printf ("Got an unrecognized trap (0x%x) - exiting!\n", cause); exitsim (); break; } } else { switch (cause) { case TRAP_TIMER: dbprintf ('t', "Got a timer interrupt!\n"); ProcessSchedule (); break; case TRAP_KBD: do { i = *((uint32 *)DLX_KBD_NCHARSIN); result = *((uint32 *)DLX_KBD_GETCHAR); printf ("Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n", result, result, i); } while (i > 1); break; case TRAP_ACCESS: printf ("Exiting after illegal access at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_ADDRESS: printf ("Exiting after illegal address at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_ILLEGALINST: printf ("Exiting after illegal instruction at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_PAGEFAULT: printf ("Exiting after page fault at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; default: printf ("Got an unrecognized system interrupt (0x%x) - exiting!\n", cause); exitsim (); break; } } dbprintf ('t',"About to return from dointerrupt.\n"); // Note that this return may schedule a new process! intrreturn (); }
src/traps.h
// // dlxtraps.h // // Traps used by the DLX simulator. These traps have to be handled by the // operating system. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: traps.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _dlxtraps_h_ #define _dlxtraps_h_ #define TRAP_ILLEGALINST 0x1 // Illegal instruction #define TRAP_ADDRESS 0x2 // Bad address #define TRAP_ACCESS 0x3 // Attempted to access illegal memory #define TRAP_OVERFLOW 0x4 // Math overflow #define TRAP_DIV0 0x5 // Divide by 0 #define TRAP_PRIVILEGE 0x6 // Instruction must be executed as sys #define TRAP_FORMAT 0x7 // Instruction is malformed #define TRAP_PAGEFAULT 0x20 #define TRAP_TLBFAULT 0x30 #define TRAP_TIMER 0x40 // timer interrupt #define TRAP_KBD 0x48 // keyboard interrupt // This bit is set in CAUSE if the interrupt was a trap instruction #define TRAP_TRAP_INSTR 0x08000000 // The following traps are all defined in the basic traps library. To // call TRAP_READ, use a Read() call from a user-level program. This applies // to every trap except EXIT, which is called via exit() [no uppercase]. #define TRAP_PRINTF 0x201 #define TRAP_READ 0x210 #define TRAP_WRITE 0x211 #define TRAP_LSEEK 0x212 #define TRAP_SEEK TRAP_LSEEK // SEEK and LSEEK are synonyms #define TRAP_OPEN 0x213 #define TRAP_CLOSE 0x214 #define TRAP_DELETE 0x580 #define TRAP_EXIT 0x300 // Following are user-defined traps. Traps should be in the range // 0x400 - 0xfff #define TRAP_CONTEXT_SWITCH 0x400 //#define TRAP_SEM_WAIT 0x401 //#define TRAP_SEM_SIGNAL 0x402 #define TRAP_PROCESS_SLEEP 0x410 #define TRAP_PROCESS_WAKEUP 0x420 #define TRAP_PROCESS_FORK 0x430 #define TRAP_PROCESS_GETPID 0x431 #define TRAP_PROCESS_CREATE 0x432 #define TRAP_SHARE_CREATE_PAGE 0x440 #define TRAP_SHARE_MAP_PAGE 0x441 #define TRAP_SEM_CREATE 0x450 #define TRAP_SEM_WAIT 0x451 #define TRAP_SEM_SIGNAL 0x452 #define TRAP_LOCK_CREATE 0x453 #define TRAP_LOCK_ACQUIRE 0x454 #define TRAP_LOCK_RELEASE 0x455 #define TRAP_COND_CREATE 0x456 #define TRAP_COND_WAIT 0x457 #define TRAP_COND_SIGNAL 0x458 #define TRAP_COND_BROADCAST 0x459 // The following are special I/O addresses for DLX. #define DLX_TIMER_ADDRESS 0xfff00010 #define DLX_KBD_PUTCHAR 0xfff00100 #define DLX_KBD_NCHARSOUT 0xfff00120 #define DLX_KBD_GETCHAR 0xfff00180 #define DLX_KBD_NCHARSIN 0xfff001a0 #define DLX_KBD_INTR 0xfff001c0 #define TRAP_STACK_SIZE 0x800 // interrupt stack is 2K words #endif /* _dlxtraps_h_ */
src/userprog.c
#include "lab2-api.h" typedef struct DB { int some_int; char some_char; } DB; main (int argc, char *argv[]) { int number, i; DB *db; uint32 handle; sem_t spage; sem_t semaphore; char handle_str[10], spage_str[10], semaphore_str[10]; switch(argc) { case 2: number = dstrtol(argv[1], NULL, 10); Printf("Setting number = %d\n", number); break; default: Printf("Usage: "); Printf(argv[0]); Printf(" number\n"); exit(); } handle = shmget(); //Get a shared memory page db = (DB *)shmat(handle); if(db==NULL) { Printf("Could not map the shared page to virtual address, exiting..\n"); exit(); } db->some_int = number; db->some_char = 'A'; spage = sem_create(0); //Get a semaphore to wait till this memory //page is mapped to some other process's //virtual address space semaphore = sem_create(5); ditoa(handle, handle_str); //Convert the shared page handle to a string ditoa(spage, spage_str); //Convert the semaphore spage to a string ditoa(semaphore, semaphore_str); //Convert the semaphore to a string for(i=0; i<number; i++) process_create("userprog2.dlx.obj", handle_str, spage_str, semaphore_str, NULL); sem_wait(spage); //Wait till at least one process grabs the //shared memory page. Otherwise the page could //be released before anyone grabs it! }
src/userprog2.c
#include "lab2-api.h" typedef struct DB { int some_int; char some_char; } DB; main (int argc, char *argv[]) { int i; DB *db; uint32 handle; //Handle of the shared page sem_t spage, semaphore; //Various semaphores if(argc!=4) { Printf("Usage: "); Printf(argv[0]); Printf(" handle_str spage_str semaphore_str\n"); exit(); } handle = dstrtol(argv[1], NULL, 10); //Get the handle from the arguments spage = dstrtol(argv[2], NULL, 10); //Get semaphore spage semaphore = dstrtol(argv[2], NULL, 10); //Get semaphore db = (DB *)shmat(handle); //Map the shared page to address spac if(db == NULL) { Printf("Could not map the virtual address to the memory, exiting...\n"); exit(); } //Now let us wake up the calling process so that it can quit if(sem_signal(spage)) { Printf("Bad semaphore spage.... Exiting!\n"); exit(); } //Now let us print the message Printf("This is one of the %d instances you created\n", db->some_int); Printf("The shared character is %c\n", db->some_char); Printf("My PID is %d\n", getpid()); }
src/usertraps.s
;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _shmget .global _shmget _shmget: trap #0x440 jr r31 nop .endproc _shmget .proc _shmat .global _shmat _shmat: trap #0x441 jr r31 nop .endproc _shmat .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal .proc _lock_create .global _lock_create _lock_create: trap #0x453 jr r31 nop .endproc _lock_create .proc _lock_acquire .global _lock_acquire _lock_acquire: trap #0x454 jr r31 nop .endproc _lock_acquire .proc _lock_release .global _lock_release _lock_release: trap #0x455 jr r31 nop .endproc _lock_release .proc _cond_create .global _cond_create _cond_create: trap #0x456 jr r31 nop .endproc _cond_create .proc _cond_wait .global _cond_wait _cond_wait: trap #0x457 jr r31 nop .endproc _cond_wait .proc _cond_signal .global _cond_signal _cond_signal: trap #0x458 jr r31 nop .endproc _cond_signal .proc _cond_broadcast .global _cond_broadcast _cond_broadcast: trap #0x459 jr r31 nop .endproc _cond_broadcast
home/bshapir/cs314/project2/src/usertraps.s
;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _shmget .global _shmget _shmget: trap #0x440 jr r31 nop .endproc _shmget .proc _shmat .global _shmat _shmat: trap #0x441 jr r31 nop .endproc _shmat .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal .proc _lock_create .global _lock_create _lock_create: trap #0x453 jr r31 nop .endproc _lock_create .proc _lock_acquire .global _lock_acquire _lock_acquire: trap #0x454 jr r31 nop .endproc _lock_acquire .proc _lock_release .global _lock_release _lock_release: trap #0x455 jr r31 nop .endproc _lock_release .proc _cond_create .global _cond_create _cond_create: trap #0x456 jr r31 nop .endproc _cond_create .proc _cond_wait .global _cond_wait _cond_wait: trap #0x457 jr r31 nop .endproc _cond_wait .proc _cond_signal .global _cond_signal _cond_signal: trap #0x458 jr r31 nop .endproc _cond_signal .proc _cond_broadcast .global _cond_broadcast _cond_broadcast: trap #0x459 jr r31 nop .endproc _cond_broadcast
home/bshapir/cs314/project2/src/memory.h
// // memory.h // // Definitions for dealing with memory. // // // $Id: memory.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ #ifndef _memory_h_ #define _memory_h_ // We can read this address in I/O space to figure out how much memory // is available on the system. #define DLX_MEMSIZE_ADDRESS 0xffff0000 // We currently support 64 KB pages. This is done as 64 KB pages in // the level 1 page table and no level 2 page table // These two constants should be set as follows: // L1_PAGE_SIZE_BITS -> amount mapped by a single entry in the L1 table // L2_PAGE_SIZE_BITS -> amount mapped by a single entry in the L2 table // // For example, if you have 4KB pages and each L2 page table has 512 entries, // you'd have 2MB per entry in a L1 table. That would mean L1_BITS=21 and // L2_BITS=12. #define MEMORY_L1_PAGE_SIZE_BITS 16 // each entry in L1 is 64 KB #define MEMORY_L2_PAGE_SIZE_BITS 16 // if L1 == L2, there's no L2 tables #define MEMORY_PAGE_SIZE (1 << MEMORY_L2_PAGE_SIZE_BITS) #define MEMORY_PAGE_MASK (MEMORY_PAGE_SIZE-1) #define MEMORY_MAX_PAGES 0x10000 // The PTE is valid if this bit is set in the PTE! #define MEMORY_PTE_VALID 0x00000001 // The page is dirty if this bit is set in the PTE #define MEMORY_PTE_DIRTY 0x00000002 // The page has been referenced if this bit is set in the PTE #define MEMORY_PTE_REFERENCED 0x00000004 #define MEMORY_PTE_MASK (~(MEMORY_PTE_VALID|MEMORY_PTE_DIRTY|MEMORY_PTE_REFERENCED)) extern int lastosaddress; // Defined in an assembly file extern int MemoryGetSize (); extern int MemoryAllocPage (); extern void MemoryFreePage (uint32 page); extern uint32 MemorySetupPte (uint32 page); extern void MemoryFreePte (uint32 pte); extern uint32 MemoryPteToPage (); extern void MemoryModuleInit (); extern uint32 MemoryTranslateUserToSystem (); extern int MemoryCopySystemToUser (); extern int MemoryCopyUserToSystem (); #endif // _memory_h_
home/bshapir/cs314/project2/src/filesys.h
// // filesys.h // // Includes for the file system. Includes the definition of the file // system interface structure. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: filesys.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _filesys_h_ #define _filesys_h_ #define FS_FS_BUILTIN 1 #define FS_FS_DLXOS 2 #define FS_MODE_READ 0x1 #define FS_MODE_WRITE 0x2 #define FS_MODE_RW (FS_MODE_READ | FS_MODE_WRITE) // If this flag is set, a new file is created if no file already exists. // This flag only works with the DLX file system. #define FS_MODE_CREATE 0x4 // IMPORTANT: These must match the underlying UNIX seek parameters. // These values are correct for Linux and should work elsewhere, but // be careful.... #define FS_SEEK_SET 0 #define FS_SEEK_CUR 1 #define FS_SEEK_END 2 #define FS_BUFFER_SIZE 256 #define FS_MAX_OPEN_FILES 32 typedef struct Fs { int (*Open)(int, const char *, int); int (*Read)(int, char *, int); int (*Write)(int, char *, int); int (*Seek)(int, int, int); int (*Close)(int); int (*Delete)(const char *); } Fs; typedef struct FsUnixInfo { int fd; // Unix file descriptor } FsUnixInfo; typedef struct FsDlxInfo { int curpos; // What's our current position in the file? } FsDlxInfo; typedef struct FsOpenFile { int fs; // which file system is this file in? int flags; char buffer[FS_BUFFER_SIZE]; union { FsUnixInfo Unix; FsDlxInfo Dlx; } u; } FsOpenFile; extern int FsOpen (const char *, int); extern int FsRead (int, char *, int); extern int FsWrite (int, char *, int); extern int FsSeek (int, int, int); extern int FsClose (int); extern int FsDelete (const char *); #endif // _filesys_h_
home/bshapir/cs314/project2/src/os.lst
line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 98304 3 ; Data size: 34832 4 ; Text size: 45600 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0xd000 8 ;;; 9 ;;; Initialization code for programs running in the DLX simulator. 10 ;;; Copyright (c) 1999 by Ethan Miller 11 ;;; 12 ;;; 14 0000d000 .text 15 00001000 .align 2 17 ;;;---------------------------------------------------------------------- 18 ;;; osinit 19 ;;; 20 ;;; This is the first function called by the simulator, even before main. 21 ;;; Since it's called BEFORE any "real" routines, we can use any registers 22 ;;; we want as long as we don't mess up the stack or frame pointers. 23 ;;; 24 ;;; This routine loads the interrupt vector to point to the interrupt 25 ;;; handler later in this file. It should never return, because _main 26 ;;; should call exitsim() or exit() rather than returning here. 27 ;;; 28 ;;; After initialization is done, this routine jumps to _main to start the 29 ;;; C code portion of the operating system. 30 ;;;---------------------------------------------------------------------- 31 00001000 .proc _osinit 32 00001000 .global _osinit 33 00001000 _osinit: 34 ;; Set up the interrupt handler 35 00001000 3c010000 lhi r1,(_intrhandler>>16)&0xffff 36 00001004 24211010 addui r1,r1,_intrhandler&0xffff 37 00001008 00204030 movi2s intrvec,r1 38 ;; Never returns because exitsim is called first 39 0000100c 0800688c j _main 40 00001010 .endproc _osinit 42 ;;;---------------------------------------------------------------------- 43 ;;; intrhandler 44 ;;; 45 ;;; Called when an interrupt or trap is received by the CPU. It stores the 46 ;;; current register set on the system stack. It then pushes the parameters 47 ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE 48 ;;; registers along with the original stack pointer. The C interrupt 49 ;;; handler can then copy arguments from the original stack, performing 50 ;;; user -> system translations if necessary. 51 ;;; 52 ;;;---------------------------------------------------------------------- 53 00001010 .proc _intrhandler 54 00001010 .global _intrhandler 55 00001010 _intrhandler: 56 ;; We can use r31 as scratch space because its value was saved in 57 ;; ir31. However, we must save the "real" value of r31 on the 58 ;; stack. 60 ;; Always store the registers on the system stack. This way, we don't 61 ;; have to worry about translating things from user -> system. We 62 ;; use r31 as the base register because its value was saved in ir31. 64 ;; If this was a user process, load r29 with the current system 65 ;; stack pointer. If it was a system process, just use the 66 ;; current stack pointer. 67 00001010 0060f831 movs2i r31,isr 68 00001014 33ff0040 andi r31,r31,0x40 69 00001018 17e0001c bnez r31,intrSystem_LF0 70 0000101c 3c1f0001 lhi r31,(_currentPCB>>16)&0xffff 71 00001020 27ff2018 addui r31,r31,_currentPCB&0xffff 72 00001024 8fff0000 lw r31,(r31) 73 00001028 8fff0004 lw r31,4(r31) 74 ;; Save the original (user) stack pointer 75 0000102c affdff48 sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 76 ;; Copy the system stack pointer into r29 (current stack pointer) 77 00001030 37fd0000 ori r29,r31,0 78 00001034 10000004 beqz r0,intrSaveReg_LF0; skip over the system part.... 79 00001038 intrSystem_LF0: 80 ;; Use the stack pointer we're already using 81 ;; Save r29 because we won't save it later 82 00001038 afbdff48 sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 83 0000103c intrSaveReg_LF0: 84 ;; Adjust stack pointer for all the stuff we're going to push. This 85 ;; is a bit more space than we need currently, but it leaves room 86 ;; for more stuff if needed. 87 0000103c 2fbd0154 subui r29,r29,#340 88 ;; Push all the stuff onto the stack 89 00001040 afa1002c sw 44(r29),r1 90 00001044 afa20030 sw 48(r29),r2 91 00001048 afa30034 sw 52(r29),r3 92 0000104c afa40038 sw 56(r29),r4 93 00001050 afa5003c sw 60(r29),r5 94 00001054 afa60040 sw 64(r29),r6 95 00001058 afa70044 sw 68(r29),r7 96 0000105c afa80048 sw 72(r29),r8 97 00001060 afa9004c sw 76(r29),r9 98 00001064 afaa0050 sw 80(r29),r10 99 00001068 afab0054 sw 84(r29),r11 100 0000106c afac0058 sw 88(r29),r12 101 00001070 afad005c sw 92(r29),r13 102 00001074 afae0060 sw 96(r29),r14 103 00001078 afaf0064 sw 100(r29),r15 104 0000107c afb00068 sw 104(r29),r16 105 00001080 afb1006c sw 108(r29),r17 106 00001084 afb20070 sw 112(r29),r18 107 00001088 afb30074 sw 116(r29),r19 108 0000108c afb40078 sw 120(r29),r20 109 00001090 afb5007c sw 124(r29),r21 110 00001094 afb60080 sw 128(r29),r22 111 00001098 afb70084 sw 132(r29),r23 112 0000109c afb80088 sw 136(r29),r24 113 000010a0 afb9008c sw 140(r29),r25 114 000010a4 afba0090 sw 144(r29),r26 115 000010a8 afbb0094 sw 148(r29),r27 116 000010ac afbc0098 sw 152(r29),r28 117 ;; Skip r29 - stored earlier! 118 000010b0 afbe00a0 sw 160(r29),r30 119 ;; Load the value of r31 from the special register and then save it 120 000010b4 00401831 movs2i r3,ir31 121 000010b8 afa300a4 sw 164(r29),r3 122 ;; Store the floating-point registers 123 000010bc bfa000a8 sd 168(r29),f0 124 000010c0 bfa200b0 sd 176(r29),f2 125 000010c4 bfa400b8 sd 184(r29),f4 126 000010c8 bfa600c0 sd 192(r29),f6 127 000010cc bfa800c8 sd 200(r29),f8 128 000010d0 bfaa00d0 sd 208(r29),f10 129 000010d4 bfac00d8 sd 216(r29),f12 130 000010d8 bfae00e0 sd 224(r29),f14 131 000010dc bfb000e8 sd 232(r29),f16 132 000010e0 bfb200f0 sd 240(r29),f18 133 000010e4 bfb400f8 sd 248(r29),f20 134 000010e8 bfb60100 sd 256(r29),f22 135 000010ec bfb80108 sd 264(r29),f24 136 000010f0 bfba0110 sd 272(r29),f26 137 000010f4 bfbc0118 sd 280(r29),f28 138 000010f8 bfbe0120 sd 288(r29),f30 139 ;; NOTE: we don't save the interrupt vector register because it 140 ;; doesn't change from process to process. 141 ;; NOTE: we don't save the status register because most of the flags 142 ;; are the same from process to process if they're in the interrupt 143 ;; handler. Of course, we DO save the ISR. 144 000010fc 00802031 movs2i r4,iar 145 00001100 afa40128 sw 296(r29),r4 146 00001104 00602831 movs2i r5,isr 147 00001108 afa5012c sw 300(r29),r5 148 0000110c 00c03031 movs2i r6,cause 149 00001110 afa60130 sw 304(r29),r6 150 00001114 01201831 movs2i r3,fault 151 00001118 afa30134 sw 308(r29),r3 152 0000111c 01801831 movs2i r3,ptbase 153 00001120 afa30138 sw 312(r29),r3 154 00001124 01a01831 movs2i r3,ptsize 155 00001128 afa3013c sw 316(r29),r3 156 0000112c 01c01831 movs2i r3,ptbits 157 00001130 afa30140 sw 320(r29),r3 159 ;; Push the interrupt information onto the stack 160 00001134 afa60000 sw 0(r29),r6; push CAUSE 161 00001138 afa40004 sw 4(r29),r4; push IAR 162 0000113c afa50008 sw 8(r29),r5; push ISR 163 ;; Get the original stack pointer 164 00001140 8fa1009c lw r1,156(r29) 165 00001144 afa1000c sw 12(r29),r1 166 ;; Save the previous interrupt stack frame address in the current frame 167 00001148 3c010001 lhi r1,(_currentPCB>>16)&0xffff 168 0000114c 24212018 addui r1,r1,_currentPCB&0xffff 169 00001150 8c210000 lw r1,(r1) 170 00001154 8c220000 lw r2,0(r1) 171 00001158 afa20028 sw 40(r29),r2 172 ;; Save this frame address in the PCB. This is used so the OS can 173 ;; easily access the current interrupt save frame 174 0000115c ac3d0000 sw 0(r1),r29 175 ;; Call the "real" interrupt handler. This will possibly switch 176 ;; contexts. This call never returns; instead, a separate routine 177 ;; (_intrreturn) is called to return from interrupts after restoring 178 ;; the current context. 179 00001160 08009578 j _dointerrupt 180 00001164 54000000 nop 181 00001168 .endproc _intrhandler 183 ;;;---------------------------------------------------------------------- 184 ;;; intrreturn 185 ;;; 186 ;;; Return from an interrupt or trap. This restores all of the previously 187 ;;; saved registers and then returns to where the program left off. The 188 ;;; current contents of the registers are destroyed. This routine uses 189 ;;; the saved interrupt frame pointer, so the stack pointer need not 190 ;;; be correct. Note, though, that the register contents from the previous 191 ;;; process must have previously been saved - in other words, call this 192 ;;; routine from a trap or interrupt handler. 193 ;;;---------------------------------------------------------------------- 194 00001168 .proc _intrreturn 195 00001168 .global _intrreturn 196 00001168 _intrreturn: 197 ;; Disable interrupts - this routine must be atomic, and interrupts 198 ;; may not be currently disabled. Don't worry about saving registers 199 ;; because we're about to reload them anyway. 200 00001168 0c00a89c jal _DisableIntrs 201 ;; Get our interrupt stack frame location and load it into the stack 202 ;; pointer. 203 0000116c 3c010001 lhi r1,(_currentPCB>>16)&0xffff 204 00001170 24212018 addui r1,r1,_currentPCB&0xffff 205 00001174 8c210000 lw r1,0(r1) 206 00001178 8c3d0000 lw r29,0(r1) 207 ;; Get the previous interrupt stack frame location and make it the 208 ;; current interrupt save frame. 209 0000117c 8fa20028 lw r2,40(r29) 210 00001180 ac220000 sw 0(r1),r2 212 ;; Reload the registers for the new process. We don't have to 213 ;; load in the exact opposite order as long as we're careful to 214 ;; get the right values back in. 215 00001184 8fa30128 lw r3,296(r29) 216 00001188 00602030 movi2s iar,r3 217 0000118c 8fa3012c lw r3,300(r29) 218 00001190 00601830 movi2s isr,r3 219 00001194 8fa30130 lw r3,304(r29) 220 00001198 00603030 movi2s cause,r3 221 0000119c 8fa30134 lw r3,308(r29) 222 000011a0 00604830 movi2s fault,r3 223 000011a4 8fa30138 lw r3,312(r29) 224 000011a8 00606030 movi2s ptbase,r3 225 000011ac 8fa3013c lw r3,316(r29) 226 000011b0 00606830 movi2s ptsize,r3 227 000011b4 8fa30140 lw r3,320(r29) 228 000011b8 00607030 movi2s ptbits,r3 230 ;; Reload the floating point registers 231 000011bc 9fa000a8 ld f0,168(r29) 232 000011c0 9fa200b0 ld f2,176(r29) 233 000011c4 9fa400b8 ld f4,184(r29) 234 000011c8 9fa600c0 ld f6,192(r29) 235 000011cc 9fa800c8 ld f8,200(r29) 236 000011d0 9faa00d0 ld f10,208(r29) 237 000011d4 9fac00d8 ld f12,216(r29) 238 000011d8 9fae00e0 ld f14,224(r29) 239 000011dc 9fb000e8 ld f16,232(r29) 240 000011e0 9fb200f0 ld f18,240(r29) 241 000011e4 9fb400f8 ld f20,248(r29) 242 000011e8 9fb60100 ld f22,256(r29) 243 000011ec 9fb80108 ld f24,264(r29) 244 000011f0 9fba0110 ld f26,272(r29) 245 000011f4 9fbc0118 ld f28,280(r29) 246 000011f8 9fbe0120 ld f30,288(r29) 248 ;; Reload the integer registers. We don't reload r0 because it's 249 ;; always 0. We won't reload r29 here because we're using it as 250 ;; the stack pointer. The same goes for r1, which we'll use as 251 ;; scratch so we can store r29. 252 ;; Skip r1 - restored later 253 000011fc 8fa20030 lw r2,48(r29) 254 00001200 8fa30034 lw r3,52(r29) 255 00001204 8fa40038 lw r4,56(r29) 256 00001208 8fa5003c lw r5,60(r29) 257 0000120c 8fa60040 lw r6,64(r29) 258 00001210 8fa70044 lw r7,68(r29) 259 00001214 8fa80048 lw r8,72(r29) 260 00001218 8fa9004c lw r9,76(r29) 261 0000121c 8faa0050 lw r10,80(r29) 262 00001220 8fab0054 lw r11,84(r29) 263 00001224 8fac0058 lw r12,88(r29) 264 00001228 8fad005c lw r13,92(r29) 265 0000122c 8fae0060 lw r14,96(r29) 266 00001230 8faf0064 lw r15,100(r29) 267 00001234 8fb00068 lw r16,104(r29) 268 00001238 8fb1006c lw r17,108(r29) 269 0000123c 8fb20070 lw r18,112(r29) 270 00001240 8fb30074 lw r19,116(r29) 271 00001244 8fb40078 lw r20,120(r29) 272 00001248 8fb5007c lw r21,124(r29) 273 0000124c 8fb60080 lw r22,128(r29) 274 00001250 8fb70084 lw r23,132(r29) 275 00001254 8fb80088 lw r24,136(r29) 276 00001258 8fb9008c lw r25,140(r29) 277 0000125c 8fba0090 lw r26,144(r29) 278 00001260 8fbb0094 lw r27,148(r29) 279 00001264 8fbc0098 lw r28,152(r29) 280 ;; Skip r29 - restored later 281 00001268 8fbe00a0 lw r30,160(r29) 282 0000126c 8fbf00a4 lw r31,164(r29) 284 00001270 27bd0154 addui r29,r29,#340 285 ;; Save the current value of the stack pointer after adjusting it 286 ;; Note that this will "destroy" the stack values below this interrupt 287 ;; stack frame. This is exactly what we want! 288 00001274 ac3d0004 sw 4(r1),r29 289 00001278 37a10000 ori r1,r29,#0 290 0000127c 8c3dff48 lw r29,-184(r1); 156-340 = -184 291 00001280 8c21fed8 lw r1,-296(r1); 44-340 = -296 292 00001284 40000000 rfe 293 00001288 .endproc _intrreturn 295 ;;;---------------------------------------------------------------------- 296 ;;; SetIntrs 297 ;;; 298 ;;; This routine sets the interrupt level to the value passed (0 -> all 299 ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the 300 ;;; former value for the interrupt flags. 301 ;;;---------------------------------------------------------------------- 302 00001288 .proc _SetIntrs 303 00001288 .global _SetIntrs 304 00001288 _SetIntrs: 305 00001288 2fbd0010 subui r29,r29,#16 306 0000128c afa2000c sw 12(r29),r2; save r2 307 00001290 8fa20010 lw r2,16(r29); Get the new interrupt level 308 00001294 3042000f andi r2,r2,#0x0f; Mask off interrupt levels 309 00001298 00a00831 movs2i r1,status 310 0000129c afa10008 sw 8(r29),r1; Store the old interrupt values 311 000012a0 3021fff0 andi r1,r1,#0xfff0; Mask off old interrupt level 312 000012a4 00410825 or r1,r2,r1; OR in new interrupt level 313 000012a8 00202830 movi2s status,r1 314 000012ac 8fa10008 lw r1,8(r29); Get back the original interrupt level 315 000012b0 3021000f andi r1,r1,#0x0f; Mask off all but interrupt levels 316 000012b4 8fa2000c lw r2,12(r29); restore r2 317 000012b8 27bd0010 addui r29,r29,#16; restore stack pointer 318 000012bc 4be00000 jr r31 319 000012c0 54000000 nop 320 000012c4 .endproc _SetIntrs 322 000012c4 .proc _CurrentIntrs 323 000012c4 .global _CurrentIntrs 324 000012c4 _CurrentIntrs: 325 000012c4 00a00831 movs2i r1,status 326 000012c8 3021000f andi r1,r1,#0xf 327 000012cc 4be00000 jr r31 328 000012d0 54000000 nop 329 000012d4 .endproc _CurrentIntrs 330 ;;;---------------------------------------------------------------------- 331 ;;; _ProcessSleep 332 ;;; 333 ;;; If a context switch from elsewhere in the kernel is desired, take a 334 ;;; trap and call this routine from the trap handler. 335 ;;;---------------------------------------------------------------------- 336 000012d4 .proc _ProcessSleep 337 000012d4 .global _ProcessSleep 338 000012d4 _ProcessSleep: 339 000012d4 44000410 trap #0x410; This is a process sleep trap 340 000012d8 54000000 nop 341 000012dc 4be00000 jr r31 342 000012e0 54000000 nop 343 000012e4 .endproc _ProcessSleep 344 ; 345 ; Stub functions for DLX traps. 346 ; 347 ; Aaron Sawdey 1996; released to the Public Domain. 348 ; 350 000012e4 .align 2 351 000012e4 .proc _random 352 000012e4 .global _random 353 000012e4 _random: 354 000012e4 44002020 trap #0x2020 355 000012e8 4be00000 jr r31 356 000012ec 54000000 nop 357 000012f0 .endproc _random 359 000012f0 .proc _srandom 360 000012f0 .global _srandom 361 000012f0 _srandom: 362 000012f0 44002021 trap #0x2021 363 000012f4 4be00000 jr r31 364 000012f8 54000000 nop 365 000012fc .endproc _srandom 367 ; Compiled by GCC 369 000012fc .align 2 370 000012fc .proc _isspace 371 000012fc .global _isspace 372 000012fc _isspace: 373 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 374 000012fc afbefffc sw -4(r29),r30; push fp 375 00001300 001df020 add r30,r0,r29; fp = sp 376 00001304 afbffff8 sw -8(r29),r31; push ret addr 377 00001308 2fbd0010 subui r29,r29,#16; alloc local storage 378 0000130c afa20000 sw 0(r29),r2 379 00001310 83c20003 lb r2,3(r30) 380 00001314 201f0000 addi r31,r0,#0 381 00001318 304100ff andi r1,r2,#0x00ff 382 0000131c 60210020 seqi r1,r1,#32 383 00001320 14200018 bnez r1,L6_LF2 384 00001324 54000000 nop; not filled. 385 00001328 2041fff7 addi r1,r2,#-9 386 0000132c 302100ff andi r1,r1,#0x00ff 387 00001330 70210001 sleui r1,r1,#1 388 00001334 10200008 beqz r1,L5_LF2 389 00001338 54000000 nop; not filled. 390 0000133c L6_LF2: 391 0000133c 201f0001 addi r31,r0,#1 392 00001340 L5_LF2: 393 00001340 001f0820 add r1,r0,r31 394 00001344 8fa20000 lw r2,0(r29) 395 00001348 8fdffff8 lw r31,-8(r30) 396 0000134c 001ee820 add r29,r0,r30 397 00001350 8fdefffc lw r30,-4(r30) 398 00001354 4be00000 jr r31 399 00001358 54000000 nop 400 0000135c .endproc _isspace 401 0000135c .align 2 402 0000135c .proc _isxdigit 403 0000135c .global _isxdigit 404 0000135c _isxdigit: 405 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 406 0000135c afbefffc sw -4(r29),r30; push fp 407 00001360 001df020 add r30,r0,r29; fp = sp 408 00001364 afbffff8 sw -8(r29),r31; push ret addr 409 00001368 2fbd0010 subui r29,r29,#16; alloc local storage 410 0000136c afa20000 sw 0(r29),r2 411 00001370 83df0003 lb r31,3(r30) 412 00001374 20020000 addi r2,r0,#0 413 00001378 23e1ffd0 addi r1,r31,#-48 414 0000137c 302100ff andi r1,r1,#0x00ff 415 00001380 70210009 sleui r1,r1,#9 416 00001384 14200028 bnez r1,L12_LF2 417 00001388 54000000 nop; not filled. 418 0000138c 23e1ff9f addi r1,r31,#-97 419 00001390 302100ff andi r1,r1,#0x00ff 420 00001394 70210005 sleui r1,r1,#5 421 00001398 14200014 bnez r1,L12_LF2 422 0000139c 54000000 nop; not filled. 423 000013a0 33e100ff andi r1,r31,#0x00ff 424 000013a4 64210041 snei r1,r1,#65 425 000013a8 14200008 bnez r1,L11_LF2 426 000013ac 54000000 nop; not filled. 427 000013b0 L12_LF2: 428 000013b0 20020001 addi r2,r0,#1 429 000013b4 L11_LF2: 430 000013b4 00020820 add r1,r0,r2 431 000013b8 8fa20000 lw r2,0(r29) 432 000013bc 8fdffff8 lw r31,-8(r30) 433 000013c0 001ee820 add r29,r0,r30 434 000013c4 8fdefffc lw r30,-4(r30) 435 000013c8 4be00000 jr r31 436 000013cc 54000000 nop 437 000013d0 .endproc _isxdigit 438 000013d0 .align 2 439 000013d0 .proc _DisableIntrs 440 000013d0 .global _DisableIntrs 441 000013d0 _DisableIntrs: 442 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 443 000013d0 afbefffc sw -4(r29),r30; push fp 444 000013d4 001df020 add r30,r0,r29; fp = sp 445 000013d8 afbffff8 sw -8(r29),r31; push ret addr 446 000013dc 2fbd0010 subui r29,r29,#16; alloc local storage 447 000013e0 afa20000 sw 0(r29),r2 448 000013e4 23bdfff8 addi r29,r29,#-8 449 000013e8 2002000f addi r2,r0,#15 450 000013ec afa20000 sw (r29),r2 451 000013f0 0ffffe94 jal _SetIntrs 452 000013f4 54000000 nop; not filled. 453 000013f8 23bd0008 addi r29,r29,#8 454 000013fc 8fa20000 lw r2,0(r29) 455 00001400 8fdffff8 lw r31,-8(r30) 456 00001404 001ee820 add r29,r0,r30 457 00001408 8fdefffc lw r30,-4(r30) 458 0000140c 4be00000 jr r31 459 00001410 54000000 nop 460 00001414 .endproc _DisableIntrs 461 00001414 .align 2 462 00001414 .proc _EnableIntrs 463 00001414 .global _EnableIntrs 464 00001414 _EnableIntrs: 465 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 466 00001414 afbefffc sw -4(r29),r30; push fp 467 00001418 001df020 add r30,r0,r29; fp = sp 468 0000141c afbffff8 sw -8(r29),r31; push ret addr 469 00001420 2fbd0010 subui r29,r29,#16; alloc local storage 470 00001424 afa20000 sw 0(r29),r2 471 00001428 23bdfff8 addi r29,r29,#-8 472 0000142c 20020000 addi r2,r0,#0 473 00001430 afa20000 sw (r29),r2 474 00001434 0ffffe50 jal _SetIntrs 475 00001438 54000000 nop; not filled. 476 0000143c 23bd0008 addi r29,r29,#8 477 00001440 8fa20000 lw r2,0(r29) 478 00001444 8fdffff8 lw r31,-8(r30) 479 00001448 001ee820 add r29,r0,r30 480 0000144c 8fdefffc lw r30,-4(r30) 481 00001450 4be00000 jr r31 482 00001454 54000000 nop 483 00001458 .endproc _EnableIntrs 484 00001458 .align 2 485 00001458 .proc _RestoreIntrs 486 00001458 .global _RestoreIntrs 487 00001458 _RestoreIntrs: 488 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 489 00001458 afbefffc sw -4(r29),r30; push fp 490 0000145c 001df020 add r30,r0,r29; fp = sp 491 00001460 afbffff8 sw -8(r29),r31; push ret addr 492 00001464 2fbd0010 subui r29,r29,#16; alloc local storage 493 00001468 afa20000 sw 0(r29),r2 494 0000146c 23bdfff8 addi r29,r29,#-8 495 00001470 8fc20000 lw r2,(r30) 496 00001474 afa20000 sw (r29),r2 497 00001478 0ffffe0c jal _SetIntrs 498 0000147c 54000000 nop; not filled. 499 00001480 23bd0008 addi r29,r29,#8 500 00001484 8fa20000 lw r2,0(r29) 501 00001488 8fdffff8 lw r31,-8(r30) 502 0000148c 001ee820 add r29,r0,r30 503 00001490 8fdefffc lw r30,-4(r30) 504 00001494 4be00000 jr r31 505 00001498 54000000 nop 506 0000149c .endproc _RestoreIntrs 507 0000149c .align 2 508 0000149c .proc _QueueLinkInit 509 0000149c .global _QueueLinkInit 510 0000149c _QueueLinkInit: 511 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 512 0000149c afbefffc sw -4(r29),r30; push fp 513 000014a0 001df020 add r30,r0,r29; fp = sp 514 000014a4 afbffff8 sw -8(r29),r31; push ret addr 515 000014a8 2fbd0010 subui r29,r29,#16; alloc local storage 516 000014ac afa20000 sw 0(r29),r2 517 000014b0 8fc10000 lw r1,(r30) 518 000014b4 8fc20004 lw r2,4(r30) 519 000014b8 201f0000 addi r31,r0,#0 520 000014bc ac3f0000 sw (r1),r31 521 000014c0 ac22000c sw 12(r1),r2 522 000014c4 8fa20000 lw r2,0(r29) 523 000014c8 8fdffff8 lw r31,-8(r30) 524 000014cc 001ee820 add r29,r0,r30 525 000014d0 8fdefffc lw r30,-4(r30) 526 000014d4 4be00000 jr r31 527 000014d8 54000000 nop 528 000014dc .endproc _QueueLinkInit 529 000014dc .align 2 530 000014dc .proc _QueueNext 531 000014dc .global _QueueNext 532 000014dc _QueueNext: 533 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 534 000014dc afbefffc sw -4(r29),r30; push fp 535 000014e0 001df020 add r30,r0,r29; fp = sp 536 000014e4 afbffff8 sw -8(r29),r31; push ret addr 537 000014e8 2fbd0008 subui r29,r29,#8; alloc local storage 538 000014ec 8fc10000 lw r1,(r30) 539 000014f0 8c210000 lw r1,(r1) 540 000014f4 8fdffff8 lw r31,-8(r30) 541 000014f8 001ee820 add r29,r0,r30 542 000014fc 8fdefffc lw r30,-4(r30) 543 00001500 4be00000 jr r31 544 00001504 54000000 nop 545 00001508 .endproc _QueueNext 546 00001508 .align 2 547 00001508 .proc _QueuePrev 548 00001508 .global _QueuePrev 549 00001508 _QueuePrev: 550 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 551 00001508 afbefffc sw -4(r29),r30; push fp 552 0000150c 001df020 add r30,r0,r29; fp = sp 553 00001510 afbffff8 sw -8(r29),r31; push ret addr 554 00001514 2fbd0008 subui r29,r29,#8; alloc local storage 555 00001518 8fc10000 lw r1,(r30) 556 0000151c 8c210004 lw r1,4(r1) 557 00001520 8fdffff8 lw r31,-8(r30) 558 00001524 001ee820 add r29,r0,r30 559 00001528 8fdefffc lw r30,-4(r30) 560 0000152c 4be00000 jr r31 561 00001530 54000000 nop 562 00001534 .endproc _QueuePrev 563 00001534 .align 2 564 00001534 .proc _QueueFirst 565 00001534 .global _QueueFirst 566 00001534 _QueueFirst: 567 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 568 00001534 afbefffc sw -4(r29),r30; push fp 569 00001538 001df020 add r30,r0,r29; fp = sp 570 0000153c afbffff8 sw -8(r29),r31; push ret addr 571 00001540 2fbd0008 subui r29,r29,#8; alloc local storage 572 00001544 8fc10000 lw r1,(r30) 573 00001548 8c210000 lw r1,(r1) 574 0000154c 8fdffff8 lw r31,-8(r30) 575 00001550 001ee820 add r29,r0,r30 576 00001554 8fdefffc lw r30,-4(r30) 577 00001558 4be00000 jr r31 578 0000155c 54000000 nop 579 00001560 .endproc _QueueFirst 580 00001560 .align 2 581 00001560 .proc _QueueLast 582 00001560 .global _QueueLast 583 00001560 _QueueLast: 584 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 585 00001560 afbefffc sw -4(r29),r30; push fp 586 00001564 001df020 add r30,r0,r29; fp = sp 587 00001568 afbffff8 sw -8(r29),r31; push ret addr 588 0000156c 2fbd0008 subui r29,r29,#8; alloc local storage 589 00001570 8fc10000 lw r1,(r30) 590 00001574 8c210004 lw r1,4(r1) 591 00001578 8fdffff8 lw r31,-8(r30) 592 0000157c 001ee820 add r29,r0,r30 593 00001580 8fdefffc lw r30,-4(r30) 594 00001584 4be00000 jr r31 595 00001588 54000000 nop 596 0000158c .endproc _QueueLast 597 0000158c .align 2 598 0000158c .proc _QueueInsertAfter 599 0000158c .global _QueueInsertAfter 600 0000158c _QueueInsertAfter: 601 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 602 0000158c afbefffc sw -4(r29),r30; push fp 603 00001590 001df020 add r30,r0,r29; fp = sp 604 00001594 afbffff8 sw -8(r29),r31; push ret addr 605 00001598 2fbd0010 subui r29,r29,#16; alloc local storage 606 0000159c afa20000 sw 0(r29),r2 607 000015a0 afa30004 sw 4(r29),r3 608 000015a4 8fc30000 lw r3,(r30) 609 000015a8 8fc20004 lw r2,4(r30) 610 000015ac 8fc10008 lw r1,8(r30) 611 000015b0 ac230008 sw 8(r1),r3 612 000015b4 ac220004 sw 4(r1),r2 613 000015b8 8c5f0000 lw r31,(r2) 614 000015bc ac3f0000 sw (r1),r31 615 000015c0 ac410000 sw (r2),r1 616 000015c4 8c220000 lw r2,(r1) 617 000015c8 ac410004 sw 4(r2),r1 618 000015cc 8c610008 lw r1,8(r3) 619 000015d0 20210001 addi r1,r1,#1 620 000015d4 ac610008 sw 8(r3),r1 621 000015d8 8fa20000 lw r2,0(r29) 622 000015dc 8fa30004 lw r3,4(r29) 623 000015e0 8fdffff8 lw r31,-8(r30) 624 000015e4 001ee820 add r29,r0,r30 625 000015e8 8fdefffc lw r30,-4(r30) 626 000015ec 4be00000 jr r31 627 000015f0 54000000 nop 628 000015f4 .endproc _QueueInsertAfter 629 000015f4 .align 2 630 000015f4 .proc _QueueInsertFirst 631 000015f4 .global _QueueInsertFirst 632 000015f4 _QueueInsertFirst: 633 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 634 000015f4 afbefffc sw -4(r29),r30; push fp 635 000015f8 001df020 add r30,r0,r29; fp = sp 636 000015fc afbffff8 sw -8(r29),r31; push ret addr 637 00001600 2fbd0010 subui r29,r29,#16; alloc local storage 638 00001604 afa20000 sw 0(r29),r2 639 00001608 afa30004 sw 4(r29),r3 640 0000160c 8fc30000 lw r3,(r30) 641 00001610 8fc10004 lw r1,4(r30) 642 00001614 ac230008 sw 8(r1),r3 643 00001618 ac230004 sw 4(r1),r3 644 0000161c 8c7f0000 lw r31,(r3) 645 00001620 ac3f0000 sw (r1),r31 646 00001624 ac610000 sw (r3),r1 647 00001628 8c220000 lw r2,(r1) 648 0000162c ac410004 sw 4(r2),r1 649 00001630 8c610008 lw r1,8(r3) 650 00001634 20210001 addi r1,r1,#1 651 00001638 ac610008 sw 8(r3),r1 652 0000163c 8fa20000 lw r2,0(r29) 653 00001640 8fa30004 lw r3,4(r29) 654 00001644 8fdffff8 lw r31,-8(r30) 655 00001648 001ee820 add r29,r0,r30 656 0000164c 8fdefffc lw r30,-4(r30) 657 00001650 4be00000 jr r31 658 00001654 54000000 nop 659 00001658 .endproc _QueueInsertFirst 660 00001658 .align 2 661 00001658 .proc _QueueInsertLast 662 00001658 .global _QueueInsertLast 663 00001658 _QueueInsertLast: 664 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 665 00001658 afbefffc sw -4(r29),r30; push fp 666 0000165c 001df020 add r30,r0,r29; fp = sp 667 00001660 afbffff8 sw -8(r29),r31; push ret addr 668 00001664 2fbd0010 subui r29,r29,#16; alloc local storage 669 00001668 afa20000 sw 0(r29),r2 670 0000166c afa30004 sw 4(r29),r3 671 00001670 8fc30000 lw r3,(r30) 672 00001674 8fc10004 lw r1,4(r30) 673 00001678 8c620004 lw r2,4(r3) 674 0000167c ac230008 sw 8(r1),r3 675 00001680 ac220004 sw 4(r1),r2 676 00001684 8c5f0000 lw r31,(r2) 677 00001688 ac3f0000 sw (r1),r31 678 0000168c ac410000 sw (r2),r1 679 00001690 8c220000 lw r2,(r1) 680 00001694 ac410004 sw 4(r2),r1 681 00001698 8c610008 lw r1,8(r3) 682 0000169c 20210001 addi r1,r1,#1 683 000016a0 ac610008 sw 8(r3),r1 684 000016a4 8fa20000 lw r2,0(r29) 685 000016a8 8fa30004 lw r3,4(r29) 686 000016ac 8fdffff8 lw r31,-8(r30) 687 000016b0 001ee820 add r29,r0,r30 688 000016b4 8fdefffc lw r30,-4(r30) 689 000016b8 4be00000 jr r31 690 000016bc 54000000 nop 691 000016c0 .endproc _QueueInsertLast 692 000016c0 .align 2 693 000016c0 .proc _QueueRemove 694 000016c0 .global _QueueRemove 695 000016c0 _QueueRemove: 696 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 697 000016c0 afbefffc sw -4(r29),r30; push fp 698 000016c4 001df020 add r30,r0,r29; fp = sp 699 000016c8 afbffff8 sw -8(r29),r31; push ret addr 700 000016cc 2fbd0010 subui r29,r29,#16; alloc local storage 701 000016d0 afa20000 sw 0(r29),r2 702 000016d4 afa30004 sw 4(r29),r3 703 000016d8 8fdf0000 lw r31,(r30) 704 000016dc 8fe10008 lw r1,8(r31) 705 000016e0 8c210008 lw r1,8(r1) 706 000016e4 6c210000 sgti r1,r1,#0 707 000016e8 1020002c beqz r1,L44_LF2 708 000016ec 54000000 nop; not filled. 709 000016f0 8fe10004 lw r1,4(r31) 710 000016f4 8fe30000 lw r3,(r31) 711 000016f8 ac230000 sw (r1),r3 712 000016fc 8fe10000 lw r1,(r31) 713 00001700 8fe30004 lw r3,4(r31) 714 00001704 ac230004 sw 4(r1),r3 715 00001708 8fe20008 lw r2,8(r31) 716 0000170c 8c410008 lw r1,8(r2) 717 00001710 2021ffff addi r1,r1,#-1 718 00001714 ac410008 sw 8(r2),r1 719 00001718 L44_LF2: 720 00001718 20030000 addi r3,r0,#0 721 0000171c afe30000 sw (r31),r3 722 00001720 8fa20000 lw r2,0(r29) 723 00001724 8fa30004 lw r3,4(r29) 724 00001728 8fdffff8 lw r31,-8(r30) 725 0000172c 001ee820 add r29,r0,r30 726 00001730 8fdefffc lw r30,-4(r30) 727 00001734 4be00000 jr r31 728 00001738 54000000 nop 729 0000173c .endproc _QueueRemove 730 0000173c .align 2 731 0000173c .proc _QueueLength 732 0000173c .global _QueueLength 733 0000173c _QueueLength: 734 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 735 0000173c afbefffc sw -4(r29),r30; push fp 736 00001740 001df020 add r30,r0,r29; fp = sp 737 00001744 afbffff8 sw -8(r29),r31; push ret addr 738 00001748 2fbd0008 subui r29,r29,#8; alloc local storage 739 0000174c 8fc10000 lw r1,(r30) 740 00001750 8c210008 lw r1,8(r1) 741 00001754 8fdffff8 lw r31,-8(r30) 742 00001758 001ee820 add r29,r0,r30 743 0000175c 8fdefffc lw r30,-4(r30) 744 00001760 4be00000 jr r31 745 00001764 54000000 nop 746 00001768 .endproc _QueueLength 747 00001768 .align 2 748 00001768 .proc _QueueEmpty 749 00001768 .global _QueueEmpty 750 00001768 _QueueEmpty: 751 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 752 00001768 afbefffc sw -4(r29),r30; push fp 753 0000176c 001df020 add r30,r0,r29; fp = sp 754 00001770 afbffff8 sw -8(r29),r31; push ret addr 755 00001774 2fbd0008 subui r29,r29,#8; alloc local storage 756 00001778 8fc10000 lw r1,(r30) 757 0000177c 8c210008 lw r1,8(r1) 758 00001780 60210000 seqi r1,r1,#0 759 00001784 8fdffff8 lw r31,-8(r30) 760 00001788 001ee820 add r29,r0,r30 761 0000178c 8fdefffc lw r30,-4(r30) 762 00001790 4be00000 jr r31 763 00001794 54000000 nop 764 00001798 .endproc _QueueEmpty 765 00001798 .data 766 0000d000 .align 2 767 0000d000 LC0_LF2: 768 0000d000 456e7465 .ascii "Entering ProcessModuleInit\n\000" 768 0000d004 72696e67 768 0000d008 2050726f 768 0000d00c 63657373 768 0000d010 4d6f6475 768 0000d014 6c65496e 768 0000d018 69740a00 769 0000d01c .align 2 770 0000d01c LC1_LF2: 771 0000d01c 4c656176 .ascii "Leaving ProcessModuleInit\n\000" 771 0000d020 696e6720 771 0000d024 50726f63 771 0000d028 6573734d 771 0000d02c 6f64756c 771 0000d030 65496e69 771 0000d034 740a00 772 0000d037 .text 773 00001798 .align 2 774 00001798 .proc _ShareModuleInit 775 00001798 .global _ShareModuleInit 776 00001798 _ShareModuleInit: 777 ; Function 'ShareModuleInit'; 0 bytes of locals, 4 regs to save. 778 00001798 afbefffc sw -4(r29),r30; push fp 779 0000179c 001df020 add r30,r0,r29; fp = sp 780 000017a0 afbffff8 sw -8(r29),r31; push ret addr 781 000017a4 2fbd0018 subui r29,r29,#24; alloc local storage 782 000017a8 afa20000 sw 0(r29),r2 783 000017ac afa30004 sw 4(r29),r3 784 000017b0 afa40008 sw 8(r29),r4 785 000017b4 afa5000c sw 12(r29),r5 786 000017b8 23bdfff8 addi r29,r29,#-8 787 000017bc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 788 000017c0 24421f50 addui r2,r2,(_debugstr)&0xffff 789 000017c4 afa20000 sw (r29),r2 790 000017c8 20050070 addi r5,r0,#112 791 000017cc afa50004 sw 4(r29),r5 792 000017d0 0c003264 jal _dindex 793 000017d4 54000000 nop; not filled. 794 000017d8 23bd0008 addi r29,r29,#8 795 000017dc 64210000 snei r1,r1,#0 796 000017e0 1420002c bnez r1,L64_LF2 797 000017e4 54000000 nop; not filled. 798 000017e8 23bdfff8 addi r29,r29,#-8 799 000017ec afa20000 sw (r29),r2 800 000017f0 2005002b addi r5,r0,#43 801 000017f4 afa50004 sw 4(r29),r5 802 000017f8 0c00323c jal _dindex 803 000017fc 54000000 nop; not filled. 804 00001800 23bd0008 addi r29,r29,#8 805 00001804 64210000 snei r1,r1,#0 806 00001808 10200020 beqz r1,L63_LF2 807 0000180c 54000000 nop; not filled. 808 00001810 L64_LF2: 809 00001810 23bdfff8 addi r29,r29,#-8 810 00001814 3c050000 lhi r5,((LC0_LF2)>>16)&0xffff 811 00001818 24a5d000 addui r5,r5,(LC0_LF2)&0xffff 812 0000181c afa50000 sw (r29),r5 813 00001820 0c00a9f0 jal _printf 814 00001824 54000000 nop; not filled. 815 00001828 23bd0008 addi r29,r29,#8 816 0000182c L63_LF2: 817 0000182c 3c020000 lhi r2,((_spages_LF2)>>16)&0xffff 818 00001830 2442d094 addui r2,r2,(_spages_LF2)&0xffff 819 00001834 204400f8 addi r4,r2,#248 820 00001838 L68_LF2: 821 00001838 20050000 addi r5,r0,#0 822 0000183c ac450000 sw (r2),r5 823 00001840 0002f820 add r31,r0,r2 824 00001844 00021820 add r3,r0,r2 825 00001848 L72_LF2: 826 00001848 23e10004 addi r1,r31,#4 827 0000184c 20050000 addi r5,r0,#0 828 00001850 ac250000 sw (r1),r5 829 00001854 0001f820 add r31,r0,r1 830 00001858 03e3082c sle r1,r31,r3 831 0000185c 1420ffe8 bnez r1,L72_LF2 832 00001860 54000000 nop; not filled. 833 00001864 20420008 addi r2,r2,#8 834 00001868 0044082c sle r1,r2,r4 835 0000186c 1420ffc8 bnez r1,L68_LF2 836 00001870 54000000 nop; not filled. 837 00001874 23bdfff8 addi r29,r29,#-8 838 00001878 3c020001 lhi r2,((_debugstr)>>16)&0xffff 839 0000187c 24421f50 addui r2,r2,(_debugstr)&0xffff 840 00001880 afa20000 sw (r29),r2 841 00001884 20050070 addi r5,r0,#112 842 00001888 afa50004 sw 4(r29),r5 843 0000188c 0c0031a8 jal _dindex 844 00001890 54000000 nop; not filled. 845 00001894 23bd0008 addi r29,r29,#8 846 00001898 64210000 snei r1,r1,#0 847 0000189c 1420002c bnez r1,L76_LF2 848 000018a0 54000000 nop; not filled. 849 000018a4 23bdfff8 addi r29,r29,#-8 850 000018a8 afa20000 sw (r29),r2 851 000018ac 2005002b addi r5,r0,#43 852 000018b0 afa50004 sw 4(r29),r5 853 000018b4 0c003180 jal _dindex 854 000018b8 54000000 nop; not filled. 855 000018bc 23bd0008 addi r29,r29,#8 856 000018c0 64210000 snei r1,r1,#0 857 000018c4 10200020 beqz r1,L75_LF2 858 000018c8 54000000 nop; not filled. 859 000018cc L76_LF2: 860 000018cc 23bdfff8 addi r29,r29,#-8 861 000018d0 3c050000 lhi r5,((LC1_LF2)>>16)&0xffff 862 000018d4 24a5d01c addui r5,r5,(LC1_LF2)&0xffff 863 000018d8 afa50000 sw (r29),r5 864 000018dc 0c00a934 jal _printf 865 000018e0 54000000 nop; not filled. 866 000018e4 23bd0008 addi r29,r29,#8 867 000018e8 L75_LF2: 868 000018e8 8fa20000 lw r2,0(r29) 869 000018ec 8fa30004 lw r3,4(r29) 870 000018f0 8fa40008 lw r4,8(r29) 871 000018f4 8fa5000c lw r5,12(r29) 872 000018f8 8fdffff8 lw r31,-8(r30) 873 000018fc 001ee820 add r29,r0,r30 874 00001900 8fdefffc lw r30,-4(r30) 875 00001904 4be00000 jr r31 876 00001908 54000000 nop 877 0000190c .endproc _ShareModuleInit 878 0000190c .data 879 0000d037 .align 2 880 0000d038 LC2_LF2: 881 0000d038 46415441 .ascii "FATAL: couldn\'t allocate memory - no free pages!\n\000" 881 0000d03c 4c3a2063 881 0000d040 6f756c64 881 0000d044 6e277420 881 0000d048 616c6c6f 881 0000d04c 63617465 881 0000d050 206d656d 881 0000d054 6f727920 881 0000d058 2d206e6f 881 0000d05c 20667265 881 0000d060 65207061 881 0000d064 67657321 881 0000d068 0a00 882 0000d06a .text 883 0000190c .align 2 884 0000190c .proc _MemoryCreateSharedPage 885 0000190c .global _MemoryCreateSharedPage 886 0000190c _MemoryCreateSharedPage: 887 ; Function 'MemoryCreateSharedPage'; 0 bytes of locals, 9 regs to save. 888 0000190c afbefffc sw -4(r29),r30; push fp 889 00001910 001df020 add r30,r0,r29; fp = sp 890 00001914 afbffff8 sw -8(r29),r31; push ret addr 891 00001918 2fbd0030 subui r29,r29,#48; alloc local storage 892 0000191c afa20000 sw 0(r29),r2 893 00001920 afa30004 sw 4(r29),r3 894 00001924 afa40008 sw 8(r29),r4 895 00001928 afa5000c sw 12(r29),r5 896 0000192c afa60010 sw 16(r29),r6 897 00001930 afa70014 sw 20(r29),r7 898 00001934 afa80018 sw 24(r29),r8 899 00001938 afa9001c sw 28(r29),r9 900 0000193c afaa0020 sw 32(r29),r10 901 00001940 8fc60000 lw r6,(r30) 902 00001944 23bdfff8 addi r29,r29,#-8 903 00001948 afa60000 sw (r29),r6 904 0000194c 0c006a70 jal _findpid 905 00001950 54000000 nop; not filled. 906 00001954 00012820 add r5,r0,r1 907 00001958 58a80005 srli r8,r5,#0x5 908 0000195c 51010005 slli r1,r8,#0x5 909 00001960 00a12822 sub r5,r5,r1 910 00001964 23bd0008 addi r29,r29,#8 911 00001968 23bdfff8 addi r29,r29,#-8 912 0000196c 200a000f addi r10,r0,#15 913 00001970 afaa0000 sw (r29),r10 914 00001974 0ffff910 jal _SetIntrs 915 00001978 54000000 nop; not filled. 916 0000197c 00013820 add r7,r0,r1 917 00001980 23bd0008 addi r29,r29,#8 918 00001984 8cc100a0 lw r1,160(r6) 919 00001988 60210010 seqi r1,r1,#16 920 0000198c 14200044 bnez r1,L92_LF2 921 00001990 54000000 nop; not filled. 922 00001994 20030000 addi r3,r0,#0 923 00001998 3c090000 lhi r9,((_spages_LF2)>>16)&0xffff 924 0000199c 2529d094 addui r9,r9,(_spages_LF2)&0xffff 925 000019a0 00091020 add r2,r0,r9 926 000019a4 L84_LF2: 927 000019a4 8c410000 lw r1,(r2) 928 000019a8 64210000 snei r1,r1,#0 929 000019ac 10200018 beqz r1,L82_LF2 930 000019b0 54000000 nop; not filled. 931 000019b4 20420008 addi r2,r2,#8 932 000019b8 20630001 addi r3,r3,#1 933 000019bc 7061001f slei r1,r3,#31 934 000019c0 1420ffe0 bnez r1,L84_LF2 935 000019c4 54000000 nop; not filled. 936 000019c8 L82_LF2: 937 000019c8 60610020 seqi r1,r3,#32 938 000019cc 10200024 beqz r1,L87_LF2 939 000019d0 54000000 nop; not filled. 940 000019d4 L92_LF2: 941 000019d4 23bdfff8 addi r29,r29,#-8 942 000019d8 afa70000 sw (r29),r7 943 000019dc 0ffff8a8 jal _SetIntrs 944 000019e0 54000000 nop; not filled. 945 000019e4 23bd0008 addi r29,r29,#8 946 000019e8 20010000 addi r1,r0,#0 947 000019ec 080000b4 j L91_LF2 948 000019f0 54000000 nop; not filled. 949 000019f4 L87_LF2: 950 000019f4 0c002154 jal _MemoryAllocPage 951 000019f8 54000000 nop; not filled. 952 000019fc 00012020 add r4,r0,r1 953 00001a00 64810000 snei r1,r4,#0 954 00001a04 14200028 bnez r1,L89_LF2 955 00001a08 54000000 nop; not filled. 956 00001a0c 23bdfff8 addi r29,r29,#-8 957 00001a10 3c0a0000 lhi r10,((LC2_LF2)>>16)&0xffff 958 00001a14 254ad038 addui r10,r10,(LC2_LF2)&0xffff 959 00001a18 afaa0000 sw (r29),r10 960 00001a1c 0c00a7f4 jal _printf 961 00001a20 54000000 nop; not filled. 962 00001a24 0c00a7d4 jal _exitsim 963 00001a28 54000000 nop; not filled. 964 00001a2c 23bd0008 addi r29,r29,#8 965 00001a30 L89_LF2: 966 00001a30 50610003 slli r1,r3,#0x3 967 00001a34 00291020 add r2,r1,r9 968 00001a38 ac440000 sw (r2),r4 969 00001a3c 51010002 slli r1,r8,#0x2 970 00001a40 00221020 add r2,r1,r2 971 00001a44 20010001 addi r1,r0,#1 972 00001a48 00250804 sll r1,r1,r5 973 00001a4c ac410004 sw 4(r2),r1 974 00001a50 23bdfff8 addi r29,r29,#-8 975 00001a54 afa40000 sw (r29),r4 976 00001a58 0c002854 jal _MemorySetupPte 977 00001a5c 54000000 nop; not filled. 978 00001a60 8cc200a0 lw r2,160(r6) 979 00001a64 50420002 slli r2,r2,#0x2 980 00001a68 00461020 add r2,r2,r6 981 00001a6c ac410060 sw 96(r2),r1 982 00001a70 8cc100a0 lw r1,160(r6) 983 00001a74 20220001 addi r2,r1,#1 984 00001a78 acc200a0 sw 160(r6),r2 985 00001a7c 8cc10008 lw r1,8(r6) 986 00001a80 2421fe8c addui r1,r1,#65164 987 00001a84 ac22013c sw 316(r1),r2 988 00001a88 23bd0008 addi r29,r29,#8 989 00001a8c 23bdfff8 addi r29,r29,#-8 990 00001a90 afa70000 sw (r29),r7 991 00001a94 0ffff7f0 jal _SetIntrs 992 00001a98 54000000 nop; not filled. 993 00001a9c 23bd0008 addi r29,r29,#8 994 00001aa0 00040820 add r1,r0,r4 995 00001aa4 L91_LF2: 996 00001aa4 8fa20000 lw r2,0(r29) 997 00001aa8 8fa30004 lw r3,4(r29) 998 00001aac 8fa40008 lw r4,8(r29) 999 00001ab0 8fa5000c lw r5,12(r29) 1000 00001ab4 8fa60010 lw r6,16(r29) 1001 00001ab8 8fa70014 lw r7,20(r29) 1002 00001abc 8fa80018 lw r8,24(r29) 1003 00001ac0 8fa9001c lw r9,28(r29) 1004 00001ac4 8faa0020 lw r10,32(r29) 1005 00001ac8 8fdffff8 lw r31,-8(r30) 1006 00001acc 001ee820 add r29,r0,r30 1007 00001ad0 8fdefffc lw r30,-4(r30) 1008 00001ad4 4be00000 jr r31 1009 00001ad8 54000000 nop 1010 00001adc .endproc _MemoryCreateSharedPage 1011 00001adc .align 2 1012 00001adc .proc _mmap 1013 00001adc .global _mmap 1014 00001adc _mmap: 1015 ; Function 'mmap'; 0 bytes of locals, 9 regs to save. 1016 00001adc afbefffc sw -4(r29),r30; push fp 1017 00001ae0 001df020 add r30,r0,r29; fp = sp 1018 00001ae4 afbffff8 sw -8(r29),r31; push ret addr 1019 00001ae8 2fbd0030 subui r29,r29,#48; alloc local storage 1020 00001aec afa20000 sw 0(r29),r2 1021 00001af0 afa30004 sw 4(r29),r3 1022 00001af4 afa40008 sw 8(r29),r4 1023 00001af8 afa5000c sw 12(r29),r5 1024 00001afc afa60010 sw 16(r29),r6 1025 00001b00 afa70014 sw 20(r29),r7 1026 00001b04 afa80018 sw 24(r29),r8 1027 00001b08 afa9001c sw 28(r29),r9 1028 00001b0c afaa0020 sw 32(r29),r10 1029 00001b10 8fc60000 lw r6,(r30) 1030 00001b14 8fc70004 lw r7,4(r30) 1031 00001b18 64e10000 snei r1,r7,#0 1032 00001b1c 14200010 bnez r1,L94_LF2 1033 00001b20 54000000 nop; not filled. 1034 00001b24 20010000 addi r1,r0,#0 1035 00001b28 08000184 j L115_LF2 1036 00001b2c 54000000 nop; not filled. 1037 00001b30 L94_LF2: 1038 00001b30 8cc10008 lw r1,8(r6) 1039 00001b34 2429fe8c addui r9,r1,#65164 1040 00001b38 23bdfff8 addi r29,r29,#-8 1041 00001b3c 200a000f addi r10,r0,#15 1042 00001b40 afaa0000 sw (r29),r10 1043 00001b44 0ffff740 jal _SetIntrs 1044 00001b48 54000000 nop; not filled. 1045 00001b4c 00014020 add r8,r0,r1 1046 00001b50 23bd0008 addi r29,r29,#8 1047 00001b54 20030000 addi r3,r0,#0 1048 00001b58 3c020000 lhi r2,((_spages_LF2)>>16)&0xffff 1049 00001b5c 2442d094 addui r2,r2,(_spages_LF2)&0xffff 1050 00001b60 L99_LF2: 1051 00001b60 8c410000 lw r1,(r2) 1052 00001b64 00270828 seq r1,r1,r7 1053 00001b68 14200018 bnez r1,L97_LF2 1054 00001b6c 54000000 nop; not filled. 1055 00001b70 20420008 addi r2,r2,#8 1056 00001b74 20630001 addi r3,r3,#1 1057 00001b78 7061001f sleui r1,r3,#31 1058 00001b7c 1420ffe0 bnez r1,L99_LF2 1059 00001b80 54000000 nop; not filled. 1060 00001b84 L97_LF2: 1061 00001b84 60610020 seqi r1,r3,#32 1062 00001b88 14200068 bnez r1,L116_LF2 1063 00001b8c 54000000 nop; not filled. 1064 00001b90 50ff0010 slli r31,r7,#0x10 1065 00001b94 20050000 addi r5,r0,#0 1066 00001b98 8cc400a0 lw r4,160(r6) 1067 00001b9c 00a4082a slt r1,r5,r4 1068 00001ba0 10200034 beqz r1,L105_LF2 1069 00001ba4 54000000 nop; not filled. 1070 00001ba8 00061020 add r2,r0,r6 1071 00001bac L107_LF2: 1072 00001bac 8c410060 lw r1,96(r2) 1073 00001bb0 200afff8 addi r10,r0,#-8 1074 00001bb4 002a0824 and r1,r1,r10 1075 00001bb8 003f0828 seq r1,r1,r31 1076 00001bbc 14200018 bnez r1,L105_LF2 1077 00001bc0 54000000 nop; not filled. 1078 00001bc4 20420004 addi r2,r2,#4 1079 00001bc8 20a50001 addi r5,r5,#1 1080 00001bcc 00a4082a slt r1,r5,r4 1081 00001bd0 1420ffd8 bnez r1,L107_LF2 1082 00001bd4 54000000 nop; not filled. 1083 00001bd8 L105_LF2: 1084 00001bd8 8cc200a0 lw r2,160(r6) 1085 00001bdc 00a20828 seq r1,r5,r2 1086 00001be0 10200064 beqz r1,L110_LF2 1087 00001be4 54000000 nop; not filled. 1088 00001be8 7041000f slei r1,r2,#15 1089 00001bec 14200024 bnez r1,L111_LF2 1090 00001bf0 54000000 nop; not filled. 1091 00001bf4 L116_LF2: 1092 00001bf4 23bdfff8 addi r29,r29,#-8 1093 00001bf8 afa80000 sw (r29),r8 1094 00001bfc 0ffff688 jal _SetIntrs 1095 00001c00 54000000 nop; not filled. 1096 00001c04 23bd0008 addi r29,r29,#8 1097 00001c08 20010000 addi r1,r0,#0 1098 00001c0c 080000a0 j L115_LF2 1099 00001c10 54000000 nop; not filled. 1100 00001c14 L111_LF2: 1101 00001c14 23bdfff8 addi r29,r29,#-8 1102 00001c18 afa70000 sw (r29),r7 1103 00001c1c 0c002690 jal _MemorySetupPte 1104 00001c20 54000000 nop; not filled. 1105 00001c24 8cc200a0 lw r2,160(r6) 1106 00001c28 50420002 slli r2,r2,#0x2 1107 00001c2c 00461020 add r2,r2,r6 1108 00001c30 ac410060 sw 96(r2),r1 1109 00001c34 8cc100a0 lw r1,160(r6) 1110 00001c38 20210001 addi r1,r1,#1 1111 00001c3c acc100a0 sw 160(r6),r1 1112 00001c40 ad21013c sw 316(r9),r1 1113 00001c44 23bd0008 addi r29,r29,#8 1114 00001c48 L110_LF2: 1115 00001c48 23bdfff8 addi r29,r29,#-8 1116 00001c4c afa60000 sw (r29),r6 1117 00001c50 0c00676c jal _findpid 1118 00001c54 54000000 nop; not filled. 1119 00001c58 00011020 add r2,r0,r1 1120 00001c5c 58440005 srli r4,r2,#0x5 1121 00001c60 50810005 slli r1,r4,#0x5 1122 00001c64 00411022 sub r2,r2,r1 1123 00001c68 50630003 slli r3,r3,#0x3 1124 00001c6c 50810002 slli r1,r4,#0x2 1125 00001c70 00610820 add r1,r3,r1 1126 00001c74 3c0a0000 lhi r10,((_spages_LF2+4)>>16)&0xffff 1127 00001c78 254ad098 addui r10,r10,(_spages_LF2+4)&0xffff 1128 00001c7c 002a1820 add r3,r1,r10 1129 00001c80 20010001 addi r1,r0,#1 1130 00001c84 00221004 sll r2,r1,r2 1131 00001c88 8c610000 lw r1,(r3) 1132 00001c8c 00220825 or r1,r1,r2 1133 00001c90 ac610000 sw (r3),r1 1134 00001c94 23bd0008 addi r29,r29,#8 1135 00001c98 23bdfff8 addi r29,r29,#-8 1136 00001c9c afa80000 sw (r29),r8 1137 00001ca0 0ffff5e4 jal _SetIntrs 1138 00001ca4 54000000 nop; not filled. 1139 00001ca8 23bd0008 addi r29,r29,#8 1140 00001cac 50a10010 slli r1,r5,#0x10 1141 00001cb0 L115_LF2: 1142 00001cb0 8fa20000 lw r2,0(r29) 1143 00001cb4 8fa30004 lw r3,4(r29) 1144 00001cb8 8fa40008 lw r4,8(r29) 1145 00001cbc 8fa5000c lw r5,12(r29) 1146 00001cc0 8fa60010 lw r6,16(r29) 1147 00001cc4 8fa70014 lw r7,20(r29) 1148 00001cc8 8fa80018 lw r8,24(r29) 1149 00001ccc 8fa9001c lw r9,28(r29) 1150 00001cd0 8faa0020 lw r10,32(r29) 1151 00001cd4 8fdffff8 lw r31,-8(r30) 1152 00001cd8 001ee820 add r29,r0,r30 1153 00001cdc 8fdefffc lw r30,-4(r30) 1154 00001ce0 4be00000 jr r31 1155 00001ce4 54000000 nop 1156 00001ce8 .endproc _mmap 1157 00001ce8 .data 1158 0000d06a .align 2 1159 0000d06c LC3_LF2: 1160 0000d06c 46415441 .ascii "FATAL: Attempted to free memory page 0\n\000" 1160 0000d070 4c3a2041 1160 0000d074 7474656d 1160 0000d078 70746564 1160 0000d07c 20746f20 1160 0000d080 66726565 1160 0000d084 206d656d 1160 0000d088 6f727920 1160 0000d08c 70616765 1160 0000d090 20300a00 1161 0000d094 .text 1162 00001ce8 .align 2 1163 00001ce8 .proc _MemoryFreeSharedPte 1164 00001ce8 .global _MemoryFreeSharedPte 1165 00001ce8 _MemoryFreeSharedPte: 1166 ; Function 'MemoryFreeSharedPte'; 0 bytes of locals, 9 regs to save. 1167 00001ce8 afbefffc sw -4(r29),r30; push fp 1168 00001cec 001df020 add r30,r0,r29; fp = sp 1169 00001cf0 afbffff8 sw -8(r29),r31; push ret addr 1170 00001cf4 2fbd0030 subui r29,r29,#48; alloc local storage 1171 00001cf8 afa20000 sw 0(r29),r2 1172 00001cfc afa30004 sw 4(r29),r3 1173 00001d00 afa40008 sw 8(r29),r4 1174 00001d04 afa5000c sw 12(r29),r5 1175 00001d08 afa60010 sw 16(r29),r6 1176 00001d0c afa70014 sw 20(r29),r7 1177 00001d10 afa80018 sw 24(r29),r8 1178 00001d14 afa9001c sw 28(r29),r9 1179 00001d18 afaa0020 sw 32(r29),r10 1180 00001d1c 8fc80000 lw r8,(r30) 1181 00001d20 8fc20004 lw r2,4(r30) 1182 00001d24 23bdfff8 addi r29,r29,#-8 1183 00001d28 200a000f addi r10,r0,#15 1184 00001d2c afaa0000 sw (r29),r10 1185 00001d30 0ffff554 jal _SetIntrs 1186 00001d34 54000000 nop; not filled. 1187 00001d38 00014820 add r9,r0,r1 1188 00001d3c 23bd0008 addi r29,r29,#8 1189 00001d40 50410002 slli r1,r2,#0x2 1190 00001d44 00280820 add r1,r1,r8 1191 00001d48 94270060 lhu r7,96(r1) 1192 00001d4c 64e10000 snei r1,r7,#0 1193 00001d50 14200028 bnez r1,L119_LF2 1194 00001d54 54000000 nop; not filled. 1195 00001d58 23bdfff8 addi r29,r29,#-8 1196 00001d5c 3c0a0000 lhi r10,((LC3_LF2)>>16)&0xffff 1197 00001d60 254ad06c addui r10,r10,(LC3_LF2)&0xffff 1198 00001d64 afaa0000 sw (r29),r10 1199 00001d68 0c00a4a8 jal _printf 1200 00001d6c 54000000 nop; not filled. 1201 00001d70 0c00a488 jal _exitsim 1202 00001d74 54000000 nop; not filled. 1203 00001d78 23bd0008 addi r29,r29,#8 1204 00001d7c L119_LF2: 1205 00001d7c 20040000 addi r4,r0,#0 1206 00001d80 3c050000 lhi r5,((_spages_LF2)>>16)&0xffff 1207 00001d84 24a5d094 addui r5,r5,(_spages_LF2)&0xffff 1208 00001d88 00051020 add r2,r0,r5 1209 00001d8c L123_LF2: 1210 00001d8c 8c410000 lw r1,(r2) 1211 00001d90 00270828 seq r1,r1,r7 1212 00001d94 14200018 bnez r1,L121_LF2 1213 00001d98 54000000 nop; not filled. 1214 00001d9c 20420008 addi r2,r2,#8 1215 00001da0 20840001 addi r4,r4,#1 1216 00001da4 7081001f slei r1,r4,#31 1217 00001da8 1420ffe0 bnez r1,L123_LF2 1218 00001dac 54000000 nop; not filled. 1219 00001db0 L121_LF2: 1220 00001db0 60810020 seqi r1,r4,#32 1221 00001db4 10200024 beqz r1,L126_LF2 1222 00001db8 54000000 nop; not filled. 1223 00001dbc 23bdfff8 addi r29,r29,#-8 1224 00001dc0 afa90000 sw (r29),r9 1225 00001dc4 0ffff4c0 jal _SetIntrs 1226 00001dc8 54000000 nop; not filled. 1227 00001dcc 23bd0008 addi r29,r29,#8 1228 00001dd0 2001ffff addi r1,r0,#-1 1229 00001dd4 080000f0 j L141_LF2 1230 00001dd8 54000000 nop; not filled. 1231 00001ddc L126_LF2: 1232 00001ddc 23bdfff8 addi r29,r29,#-8 1233 00001de0 afa80000 sw (r29),r8 1234 00001de4 0c0065d8 jal _findpid 1235 00001de8 54000000 nop; not filled. 1236 00001dec 00011020 add r2,r0,r1 1237 00001df0 58230005 srli r3,r1,#0x5 1238 00001df4 50610005 slli r1,r3,#0x5 1239 00001df8 00411022 sub r2,r2,r1 1240 00001dfc 50810003 slli r1,r4,#0x3 1241 00001e00 00252020 add r4,r1,r5 1242 00001e04 50610002 slli r1,r3,#0x2 1243 00001e08 00240820 add r1,r1,r4 1244 00001e0c 20230004 addi r3,r1,#4 1245 00001e10 20010001 addi r1,r0,#1 1246 00001e14 00220804 sll r1,r1,r2 1247 00001e18 200affff addi r10,r0,#-1 1248 00001e1c 002a1026 xor r2,r1,r10 1249 00001e20 8c610000 lw r1,(r3) 1250 00001e24 00220824 and r1,r1,r2 1251 00001e28 ac610000 sw (r3),r1 1252 00001e2c 23bd0008 addi r29,r29,#8 1253 00001e30 20060000 addi r6,r0,#0 1254 00001e34 20050000 addi r5,r0,#0 1255 00001e38 L132_LF2: 1256 00001e38 20030001 addi r3,r0,#1 1257 00001e3c 20020000 addi r2,r0,#0 1258 00001e40 8c9f0004 lw r31,4(r4) 1259 00001e44 L136_LF2: 1260 00001e44 03e30824 and r1,r31,r3 1261 00001e48 64210000 snei r1,r1,#0 1262 00001e4c 00c13020 add r6,r6,r1 1263 00001e50 50630001 slli r3,r3,#0x1 1264 00001e54 20420001 addi r2,r2,#1 1265 00001e58 7041001f slei r1,r2,#31 1266 00001e5c 1420ffe4 bnez r1,L136_LF2 1267 00001e60 54000000 nop; not filled. 1268 00001e64 20840004 addi r4,r4,#4 1269 00001e68 20a50001 addi r5,r5,#1 1270 00001e6c 70a10000 slei r1,r5,#0 1271 00001e70 1420ffc4 bnez r1,L132_LF2 1272 00001e74 54000000 nop; not filled. 1273 00001e78 8d0100a0 lw r1,160(r8) 1274 00001e7c 2022ffff addi r2,r1,#-1 1275 00001e80 ad0200a0 sw 160(r8),r2 1276 00001e84 8d010008 lw r1,8(r8) 1277 00001e88 2421fe8c addui r1,r1,#65164 1278 00001e8c ac22013c sw 316(r1),r2 1279 00001e90 64c10000 snei r1,r6,#0 1280 00001e94 14200018 bnez r1,L139_LF2 1281 00001e98 54000000 nop; not filled. 1282 00001e9c 23bdfff8 addi r29,r29,#-8 1283 00001ea0 afa70000 sw (r29),r7 1284 00001ea4 0c001f6c jal _MemoryFreePage 1285 00001ea8 54000000 nop; not filled. 1286 00001eac 23bd0008 addi r29,r29,#8 1287 00001eb0 L139_LF2: 1288 00001eb0 23bdfff8 addi r29,r29,#-8 1289 00001eb4 afa90000 sw (r29),r9 1290 00001eb8 0ffff3cc jal _SetIntrs 1291 00001ebc 54000000 nop; not filled. 1292 00001ec0 23bd0008 addi r29,r29,#8 1293 00001ec4 00060820 add r1,r0,r6 1294 00001ec8 L141_LF2: 1295 00001ec8 8fa20000 lw r2,0(r29) 1296 00001ecc 8fa30004 lw r3,4(r29) 1297 00001ed0 8fa40008 lw r4,8(r29) 1298 00001ed4 8fa5000c lw r5,12(r29) 1299 00001ed8 8fa60010 lw r6,16(r29) 1300 00001edc 8fa70014 lw r7,20(r29) 1301 00001ee0 8fa80018 lw r8,24(r29) 1302 00001ee4 8fa9001c lw r9,28(r29) 1303 00001ee8 8faa0020 lw r10,32(r29) 1304 00001eec 8fdffff8 lw r31,-8(r30) 1305 00001ef0 001ee820 add r29,r0,r30 1306 00001ef4 8fdefffc lw r30,-4(r30) 1307 00001ef8 4be00000 jr r31 1308 00001efc 54000000 nop 1309 00001f00 .endproc _MemoryFreeSharedPte 1310 00001f00 .data 1311 0000d094 .align 2 1312 0000d094 _spages_LF2: 1313 0000d094 .space 256 1314 ; Compiled by GCC 1316 0000d194 .align 2 1317 0000d194 _rcsid_LF3: 1318 0000d194 3a206669 .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 1318 0000d198 6c657379 1318 0000d19c 732e632c 1318 0000d1a0 7620312e 1318 0000d1a4 31203230 1318 0000d1a8 30302f30 1318 0000d1ac 392f3230 1318 0000d1b0 2030313a 1318 0000d1b4 35303a31 1318 0000d1b8 3920656c 1318 0000d1bc 6d204578 1318 0000d1c0 7020656c 1318 0000d1c4 6d203030 1318 0000d1c8 30 1319 0000d1c9 .text 1320 00001f00 .align 2 1321 00001f00 .proc _isspace 1322 00001f00 .global _isspace 1323 00001f00 _isspace: 1324 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 1325 00001f00 afbefffc sw -4(r29),r30; push fp 1326 00001f04 001df020 add r30,r0,r29; fp = sp 1327 00001f08 afbffff8 sw -8(r29),r31; push ret addr 1328 00001f0c 2fbd0010 subui r29,r29,#16; alloc local storage 1329 00001f10 afa20000 sw 0(r29),r2 1330 00001f14 83c20003 lb r2,3(r30) 1331 00001f18 201f0000 addi r31,r0,#0 1332 00001f1c 304100ff andi r1,r2,#0x00ff 1333 00001f20 60210020 seqi r1,r1,#32 1334 00001f24 14200018 bnez r1,L6_LF3 1335 00001f28 54000000 nop; not filled. 1336 00001f2c 2041fff7 addi r1,r2,#-9 1337 00001f30 302100ff andi r1,r1,#0x00ff 1338 00001f34 70210001 sleui r1,r1,#1 1339 00001f38 10200008 beqz r1,L5_LF3 1340 00001f3c 54000000 nop; not filled. 1341 00001f40 L6_LF3: 1342 00001f40 201f0001 addi r31,r0,#1 1343 00001f44 L5_LF3: 1344 00001f44 001f0820 add r1,r0,r31 1345 00001f48 8fa20000 lw r2,0(r29) 1346 00001f4c 8fdffff8 lw r31,-8(r30) 1347 00001f50 001ee820 add r29,r0,r30 1348 00001f54 8fdefffc lw r30,-4(r30) 1349 00001f58 4be00000 jr r31 1350 00001f5c 54000000 nop 1351 00001f60 .endproc _isspace 1352 00001f60 .align 2 1353 00001f60 .proc _isxdigit 1354 00001f60 .global _isxdigit 1355 00001f60 _isxdigit: 1356 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 1357 00001f60 afbefffc sw -4(r29),r30; push fp 1358 00001f64 001df020 add r30,r0,r29; fp = sp 1359 00001f68 afbffff8 sw -8(r29),r31; push ret addr 1360 00001f6c 2fbd0010 subui r29,r29,#16; alloc local storage 1361 00001f70 afa20000 sw 0(r29),r2 1362 00001f74 83df0003 lb r31,3(r30) 1363 00001f78 20020000 addi r2,r0,#0 1364 00001f7c 23e1ffd0 addi r1,r31,#-48 1365 00001f80 302100ff andi r1,r1,#0x00ff 1366 00001f84 70210009 sleui r1,r1,#9 1367 00001f88 14200028 bnez r1,L12_LF3 1368 00001f8c 54000000 nop; not filled. 1369 00001f90 23e1ff9f addi r1,r31,#-97 1370 00001f94 302100ff andi r1,r1,#0x00ff 1371 00001f98 70210005 sleui r1,r1,#5 1372 00001f9c 14200014 bnez r1,L12_LF3 1373 00001fa0 54000000 nop; not filled. 1374 00001fa4 33e100ff andi r1,r31,#0x00ff 1375 00001fa8 64210041 snei r1,r1,#65 1376 00001fac 14200008 bnez r1,L11_LF3 1377 00001fb0 54000000 nop; not filled. 1378 00001fb4 L12_LF3: 1379 00001fb4 20020001 addi r2,r0,#1 1380 00001fb8 L11_LF3: 1381 00001fb8 00020820 add r1,r0,r2 1382 00001fbc 8fa20000 lw r2,0(r29) 1383 00001fc0 8fdffff8 lw r31,-8(r30) 1384 00001fc4 001ee820 add r29,r0,r30 1385 00001fc8 8fdefffc lw r30,-4(r30) 1386 00001fcc 4be00000 jr r31 1387 00001fd0 54000000 nop 1388 00001fd4 .endproc _isxdigit 1389 00001fd4 .align 2 1390 00001fd4 .proc _DisableIntrs 1391 00001fd4 .global _DisableIntrs 1392 00001fd4 _DisableIntrs: 1393 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 1394 00001fd4 afbefffc sw -4(r29),r30; push fp 1395 00001fd8 001df020 add r30,r0,r29; fp = sp 1396 00001fdc afbffff8 sw -8(r29),r31; push ret addr 1397 00001fe0 2fbd0010 subui r29,r29,#16; alloc local storage 1398 00001fe4 afa20000 sw 0(r29),r2 1399 00001fe8 23bdfff8 addi r29,r29,#-8 1400 00001fec 2002000f addi r2,r0,#15 1401 00001ff0 afa20000 sw (r29),r2 1402 00001ff4 0ffff290 jal _SetIntrs 1403 00001ff8 54000000 nop; not filled. 1404 00001ffc 23bd0008 addi r29,r29,#8 1405 00002000 8fa20000 lw r2,0(r29) 1406 00002004 8fdffff8 lw r31,-8(r30) 1407 00002008 001ee820 add r29,r0,r30 1408 0000200c 8fdefffc lw r30,-4(r30) 1409 00002010 4be00000 jr r31 1410 00002014 54000000 nop 1411 00002018 .endproc _DisableIntrs 1412 00002018 .align 2 1413 00002018 .proc _EnableIntrs 1414 00002018 .global _EnableIntrs 1415 00002018 _EnableIntrs: 1416 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 1417 00002018 afbefffc sw -4(r29),r30; push fp 1418 0000201c 001df020 add r30,r0,r29; fp = sp 1419 00002020 afbffff8 sw -8(r29),r31; push ret addr 1420 00002024 2fbd0010 subui r29,r29,#16; alloc local storage 1421 00002028 afa20000 sw 0(r29),r2 1422 0000202c 23bdfff8 addi r29,r29,#-8 1423 00002030 20020000 addi r2,r0,#0 1424 00002034 afa20000 sw (r29),r2 1425 00002038 0ffff24c jal _SetIntrs 1426 0000203c 54000000 nop; not filled. 1427 00002040 23bd0008 addi r29,r29,#8 1428 00002044 8fa20000 lw r2,0(r29) 1429 00002048 8fdffff8 lw r31,-8(r30) 1430 0000204c 001ee820 add r29,r0,r30 1431 00002050 8fdefffc lw r30,-4(r30) 1432 00002054 4be00000 jr r31 1433 00002058 54000000 nop 1434 0000205c .endproc _EnableIntrs 1435 0000205c .align 2 1436 0000205c .proc _RestoreIntrs 1437 0000205c .global _RestoreIntrs 1438 0000205c _RestoreIntrs: 1439 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 1440 0000205c afbefffc sw -4(r29),r30; push fp 1441 00002060 001df020 add r30,r0,r29; fp = sp 1442 00002064 afbffff8 sw -8(r29),r31; push ret addr 1443 00002068 2fbd0010 subui r29,r29,#16; alloc local storage 1444 0000206c afa20000 sw 0(r29),r2 1445 00002070 23bdfff8 addi r29,r29,#-8 1446 00002074 8fc20000 lw r2,(r30) 1447 00002078 afa20000 sw (r29),r2 1448 0000207c 0ffff208 jal _SetIntrs 1449 00002080 54000000 nop; not filled. 1450 00002084 23bd0008 addi r29,r29,#8 1451 00002088 8fa20000 lw r2,0(r29) 1452 0000208c 8fdffff8 lw r31,-8(r30) 1453 00002090 001ee820 add r29,r0,r30 1454 00002094 8fdefffc lw r30,-4(r30) 1455 00002098 4be00000 jr r31 1456 0000209c 54000000 nop 1457 000020a0 .endproc _RestoreIntrs 1458 000020a0 .align 2 1459 000020a0 .proc _QueueLinkInit 1460 000020a0 .global _QueueLinkInit 1461 000020a0 _QueueLinkInit: 1462 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 1463 000020a0 afbefffc sw -4(r29),r30; push fp 1464 000020a4 001df020 add r30,r0,r29; fp = sp 1465 000020a8 afbffff8 sw -8(r29),r31; push ret addr 1466 000020ac 2fbd0010 subui r29,r29,#16; alloc local storage 1467 000020b0 afa20000 sw 0(r29),r2 1468 000020b4 8fc10000 lw r1,(r30) 1469 000020b8 8fc20004 lw r2,4(r30) 1470 000020bc 201f0000 addi r31,r0,#0 1471 000020c0 ac3f0000 sw (r1),r31 1472 000020c4 ac22000c sw 12(r1),r2 1473 000020c8 8fa20000 lw r2,0(r29) 1474 000020cc 8fdffff8 lw r31,-8(r30) 1475 000020d0 001ee820 add r29,r0,r30 1476 000020d4 8fdefffc lw r30,-4(r30) 1477 000020d8 4be00000 jr r31 1478 000020dc 54000000 nop 1479 000020e0 .endproc _QueueLinkInit 1480 000020e0 .align 2 1481 000020e0 .proc _QueueNext 1482 000020e0 .global _QueueNext 1483 000020e0 _QueueNext: 1484 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 1485 000020e0 afbefffc sw -4(r29),r30; push fp 1486 000020e4 001df020 add r30,r0,r29; fp = sp 1487 000020e8 afbffff8 sw -8(r29),r31; push ret addr 1488 000020ec 2fbd0008 subui r29,r29,#8; alloc local storage 1489 000020f0 8fc10000 lw r1,(r30) 1490 000020f4 8c210000 lw r1,(r1) 1491 000020f8 8fdffff8 lw r31,-8(r30) 1492 000020fc 001ee820 add r29,r0,r30 1493 00002100 8fdefffc lw r30,-4(r30) 1494 00002104 4be00000 jr r31 1495 00002108 54000000 nop 1496 0000210c .endproc _QueueNext 1497 0000210c .align 2 1498 0000210c .proc _QueuePrev 1499 0000210c .global _QueuePrev 1500 0000210c _QueuePrev: 1501 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 1502 0000210c afbefffc sw -4(r29),r30; push fp 1503 00002110 001df020 add r30,r0,r29; fp = sp 1504 00002114 afbffff8 sw -8(r29),r31; push ret addr 1505 00002118 2fbd0008 subui r29,r29,#8; alloc local storage 1506 0000211c 8fc10000 lw r1,(r30) 1507 00002120 8c210004 lw r1,4(r1) 1508 00002124 8fdffff8 lw r31,-8(r30) 1509 00002128 001ee820 add r29,r0,r30 1510 0000212c 8fdefffc lw r30,-4(r30) 1511 00002130 4be00000 jr r31 1512 00002134 54000000 nop 1513 00002138 .endproc _QueuePrev 1514 00002138 .align 2 1515 00002138 .proc _QueueFirst 1516 00002138 .global _QueueFirst 1517 00002138 _QueueFirst: 1518 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 1519 00002138 afbefffc sw -4(r29),r30; push fp 1520 0000213c 001df020 add r30,r0,r29; fp = sp 1521 00002140 afbffff8 sw -8(r29),r31; push ret addr 1522 00002144 2fbd0008 subui r29,r29,#8; alloc local storage 1523 00002148 8fc10000 lw r1,(r30) 1524 0000214c 8c210000 lw r1,(r1) 1525 00002150 8fdffff8 lw r31,-8(r30) 1526 00002154 001ee820 add r29,r0,r30 1527 00002158 8fdefffc lw r30,-4(r30) 1528 0000215c 4be00000 jr r31 1529 00002160 54000000 nop 1530 00002164 .endproc _QueueFirst 1531 00002164 .align 2 1532 00002164 .proc _QueueLast 1533 00002164 .global _QueueLast 1534 00002164 _QueueLast: 1535 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 1536 00002164 afbefffc sw -4(r29),r30; push fp 1537 00002168 001df020 add r30,r0,r29; fp = sp 1538 0000216c afbffff8 sw -8(r29),r31; push ret addr 1539 00002170 2fbd0008 subui r29,r29,#8; alloc local storage 1540 00002174 8fc10000 lw r1,(r30) 1541 00002178 8c210004 lw r1,4(r1) 1542 0000217c 8fdffff8 lw r31,-8(r30) 1543 00002180 001ee820 add r29,r0,r30 1544 00002184 8fdefffc lw r30,-4(r30) 1545 00002188 4be00000 jr r31 1546 0000218c 54000000 nop 1547 00002190 .endproc _QueueLast 1548 00002190 .align 2 1549 00002190 .proc _QueueInsertAfter 1550 00002190 .global _QueueInsertAfter 1551 00002190 _QueueInsertAfter: 1552 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 1553 00002190 afbefffc sw -4(r29),r30; push fp 1554 00002194 001df020 add r30,r0,r29; fp = sp 1555 00002198 afbffff8 sw -8(r29),r31; push ret addr 1556 0000219c 2fbd0010 subui r29,r29,#16; alloc local storage 1557 000021a0 afa20000 sw 0(r29),r2 1558 000021a4 afa30004 sw 4(r29),r3 1559 000021a8 8fc30000 lw r3,(r30) 1560 000021ac 8fc20004 lw r2,4(r30) 1561 000021b0 8fc10008 lw r1,8(r30) 1562 000021b4 ac230008 sw 8(r1),r3 1563 000021b8 ac220004 sw 4(r1),r2 1564 000021bc 8c5f0000 lw r31,(r2) 1565 000021c0 ac3f0000 sw (r1),r31 1566 000021c4 ac410000 sw (r2),r1 1567 000021c8 8c220000 lw r2,(r1) 1568 000021cc ac410004 sw 4(r2),r1 1569 000021d0 8c610008 lw r1,8(r3) 1570 000021d4 20210001 addi r1,r1,#1 1571 000021d8 ac610008 sw 8(r3),r1 1572 000021dc 8fa20000 lw r2,0(r29) 1573 000021e0 8fa30004 lw r3,4(r29) 1574 000021e4 8fdffff8 lw r31,-8(r30) 1575 000021e8 001ee820 add r29,r0,r30 1576 000021ec 8fdefffc lw r30,-4(r30) 1577 000021f0 4be00000 jr r31 1578 000021f4 54000000 nop 1579 000021f8 .endproc _QueueInsertAfter 1580 000021f8 .align 2 1581 000021f8 .proc _QueueInsertFirst 1582 000021f8 .global _QueueInsertFirst 1583 000021f8 _QueueInsertFirst: 1584 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 1585 000021f8 afbefffc sw -4(r29),r30; push fp 1586 000021fc 001df020 add r30,r0,r29; fp = sp 1587 00002200 afbffff8 sw -8(r29),r31; push ret addr 1588 00002204 2fbd0010 subui r29,r29,#16; alloc local storage 1589 00002208 afa20000 sw 0(r29),r2 1590 0000220c afa30004 sw 4(r29),r3 1591 00002210 8fc30000 lw r3,(r30) 1592 00002214 8fc10004 lw r1,4(r30) 1593 00002218 ac230008 sw 8(r1),r3 1594 0000221c ac230004 sw 4(r1),r3 1595 00002220 8c7f0000 lw r31,(r3) 1596 00002224 ac3f0000 sw (r1),r31 1597 00002228 ac610000 sw (r3),r1 1598 0000222c 8c220000 lw r2,(r1) 1599 00002230 ac410004 sw 4(r2),r1 1600 00002234 8c610008 lw r1,8(r3) 1601 00002238 20210001 addi r1,r1,#1 1602 0000223c ac610008 sw 8(r3),r1 1603 00002240 8fa20000 lw r2,0(r29) 1604 00002244 8fa30004 lw r3,4(r29) 1605 00002248 8fdffff8 lw r31,-8(r30) 1606 0000224c 001ee820 add r29,r0,r30 1607 00002250 8fdefffc lw r30,-4(r30) 1608 00002254 4be00000 jr r31 1609 00002258 54000000 nop 1610 0000225c .endproc _QueueInsertFirst 1611 0000225c .align 2 1612 0000225c .proc _QueueInsertLast 1613 0000225c .global _QueueInsertLast 1614 0000225c _QueueInsertLast: 1615 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 1616 0000225c afbefffc sw -4(r29),r30; push fp 1617 00002260 001df020 add r30,r0,r29; fp = sp 1618 00002264 afbffff8 sw -8(r29),r31; push ret addr 1619 00002268 2fbd0010 subui r29,r29,#16; alloc local storage 1620 0000226c afa20000 sw 0(r29),r2 1621 00002270 afa30004 sw 4(r29),r3 1622 00002274 8fc30000 lw r3,(r30) 1623 00002278 8fc10004 lw r1,4(r30) 1624 0000227c 8c620004 lw r2,4(r3) 1625 00002280 ac230008 sw 8(r1),r3 1626 00002284 ac220004 sw 4(r1),r2 1627 00002288 8c5f0000 lw r31,(r2) 1628 0000228c ac3f0000 sw (r1),r31 1629 00002290 ac410000 sw (r2),r1 1630 00002294 8c220000 lw r2,(r1) 1631 00002298 ac410004 sw 4(r2),r1 1632 0000229c 8c610008 lw r1,8(r3) 1633 000022a0 20210001 addi r1,r1,#1 1634 000022a4 ac610008 sw 8(r3),r1 1635 000022a8 8fa20000 lw r2,0(r29) 1636 000022ac 8fa30004 lw r3,4(r29) 1637 000022b0 8fdffff8 lw r31,-8(r30) 1638 000022b4 001ee820 add r29,r0,r30 1639 000022b8 8fdefffc lw r30,-4(r30) 1640 000022bc 4be00000 jr r31 1641 000022c0 54000000 nop 1642 000022c4 .endproc _QueueInsertLast 1643 000022c4 .align 2 1644 000022c4 .proc _QueueRemove 1645 000022c4 .global _QueueRemove 1646 000022c4 _QueueRemove: 1647 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 1648 000022c4 afbefffc sw -4(r29),r30; push fp 1649 000022c8 001df020 add r30,r0,r29; fp = sp 1650 000022cc afbffff8 sw -8(r29),r31; push ret addr 1651 000022d0 2fbd0010 subui r29,r29,#16; alloc local storage 1652 000022d4 afa20000 sw 0(r29),r2 1653 000022d8 afa30004 sw 4(r29),r3 1654 000022dc 8fdf0000 lw r31,(r30) 1655 000022e0 8fe10008 lw r1,8(r31) 1656 000022e4 8c210008 lw r1,8(r1) 1657 000022e8 6c210000 sgti r1,r1,#0 1658 000022ec 1020002c beqz r1,L44_LF3 1659 000022f0 54000000 nop; not filled. 1660 000022f4 8fe10004 lw r1,4(r31) 1661 000022f8 8fe30000 lw r3,(r31) 1662 000022fc ac230000 sw (r1),r3 1663 00002300 8fe10000 lw r1,(r31) 1664 00002304 8fe30004 lw r3,4(r31) 1665 00002308 ac230004 sw 4(r1),r3 1666 0000230c 8fe20008 lw r2,8(r31) 1667 00002310 8c410008 lw r1,8(r2) 1668 00002314 2021ffff addi r1,r1,#-1 1669 00002318 ac410008 sw 8(r2),r1 1670 0000231c L44_LF3: 1671 0000231c 20030000 addi r3,r0,#0 1672 00002320 afe30000 sw (r31),r3 1673 00002324 8fa20000 lw r2,0(r29) 1674 00002328 8fa30004 lw r3,4(r29) 1675 0000232c 8fdffff8 lw r31,-8(r30) 1676 00002330 001ee820 add r29,r0,r30 1677 00002334 8fdefffc lw r30,-4(r30) 1678 00002338 4be00000 jr r31 1679 0000233c 54000000 nop 1680 00002340 .endproc _QueueRemove 1681 00002340 .align 2 1682 00002340 .proc _QueueLength 1683 00002340 .global _QueueLength 1684 00002340 _QueueLength: 1685 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 1686 00002340 afbefffc sw -4(r29),r30; push fp 1687 00002344 001df020 add r30,r0,r29; fp = sp 1688 00002348 afbffff8 sw -8(r29),r31; push ret addr 1689 0000234c 2fbd0008 subui r29,r29,#8; alloc local storage 1690 00002350 8fc10000 lw r1,(r30) 1691 00002354 8c210008 lw r1,8(r1) 1692 00002358 8fdffff8 lw r31,-8(r30) 1693 0000235c 001ee820 add r29,r0,r30 1694 00002360 8fdefffc lw r30,-4(r30) 1695 00002364 4be00000 jr r31 1696 00002368 54000000 nop 1697 0000236c .endproc _QueueLength 1698 0000236c .align 2 1699 0000236c .proc _QueueEmpty 1700 0000236c .global _QueueEmpty 1701 0000236c _QueueEmpty: 1702 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 1703 0000236c afbefffc sw -4(r29),r30; push fp 1704 00002370 001df020 add r30,r0,r29; fp = sp 1705 00002374 afbffff8 sw -8(r29),r31; push ret addr 1706 00002378 2fbd0008 subui r29,r29,#8; alloc local storage 1707 0000237c 8fc10000 lw r1,(r30) 1708 00002380 8c210008 lw r1,8(r1) 1709 00002384 60210000 seqi r1,r1,#0 1710 00002388 8fdffff8 lw r31,-8(r30) 1711 0000238c 001ee820 add r29,r0,r30 1712 00002390 8fdefffc lw r30,-4(r30) 1713 00002394 4be00000 jr r31 1714 00002398 54000000 nop 1715 0000239c .endproc _QueueEmpty 1716 0000239c .data 1717 0000d1c9 .align 2 1718 0000d1cc LC0_LF3: 1719 0000d1cc 41747465 .ascii "Attepmting to open %s mode=%d.\n\000" 1719 0000d1d0 706d7469 1719 0000d1d4 6e672074 1719 0000d1d8 6f206f70 1719 0000d1dc 656e2025 1719 0000d1e0 73206d6f 1719 0000d1e4 64653d25 1719 0000d1e8 642e0a00 1720 0000d1ec .align 2 1721 0000d1ec LC1_LF3: 1722 0000d1ec 646c783a .ascii "dlx:\000" 1722 0000d1f0 00 1723 0000d1f1 .align 2 1724 0000d1f4 LC2_LF3: 1725 0000d1f4 46696c65 .ascii "File %s opening in file system %d.\n\000" 1725 0000d1f8 20257320 1725 0000d1fc 6f70656e 1725 0000d200 696e6720 1725 0000d204 696e2066 1725 0000d208 696c6520 1725 0000d20c 73797374 1725 0000d210 656d2025 1725 0000d214 642e0a00 1726 0000d218 .align 2 1727 0000d218 LC3_LF3: 1728 0000d218 4f70656e .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" 1728 0000d21c 65642025 1728 0000d220 7320696e 1728 0000d224 20465320 1728 0000d228 25642c20 1728 0000d22c 6d6f6465 1728 0000d230 3d256420 1728 0000d234 736c6f74 1728 0000d238 3d25642e 1728 0000d23c 0a00 1729 0000d23e .text 1730 0000239c .align 2 1731 0000239c .proc _FsOpen 1732 0000239c .global _FsOpen 1733 0000239c _FsOpen: 1734 ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. 1735 0000239c afbefffc sw -4(r29),r30; push fp 1736 000023a0 001df020 add r30,r0,r29; fp = sp 1737 000023a4 afbffff8 sw -8(r29),r31; push ret addr 1738 000023a8 2fbd0028 subui r29,r29,#40; alloc local storage 1739 000023ac afa20000 sw 0(r29),r2 1740 000023b0 afa30004 sw 4(r29),r3 1741 000023b4 afa40008 sw 8(r29),r4 1742 000023b8 afa5000c sw 12(r29),r5 1743 000023bc afa60010 sw 16(r29),r6 1744 000023c0 afa70014 sw 20(r29),r7 1745 000023c4 afa80018 sw 24(r29),r8 1746 000023c8 8fc40000 lw r4,(r30) 1747 000023cc 8fc50004 lw r5,4(r30) 1748 000023d0 23bdfff8 addi r29,r29,#-8 1749 000023d4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 1750 000023d8 24421f50 addui r2,r2,(_debugstr)&0xffff 1751 000023dc afa20000 sw (r29),r2 1752 000023e0 20080066 addi r8,r0,#102 1753 000023e4 afa80004 sw 4(r29),r8 1754 000023e8 0c00264c jal _dindex 1755 000023ec 54000000 nop; not filled. 1756 000023f0 23bd0008 addi r29,r29,#8 1757 000023f4 64210000 snei r1,r1,#0 1758 000023f8 1420002c bnez r1,L56_LF3 1759 000023fc 54000000 nop; not filled. 1760 00002400 23bdfff8 addi r29,r29,#-8 1761 00002404 afa20000 sw (r29),r2 1762 00002408 2008002b addi r8,r0,#43 1763 0000240c afa80004 sw 4(r29),r8 1764 00002410 0c002624 jal _dindex 1765 00002414 54000000 nop; not filled. 1766 00002418 23bd0008 addi r29,r29,#8 1767 0000241c 64210000 snei r1,r1,#0 1768 00002420 10200028 beqz r1,L55_LF3 1769 00002424 54000000 nop; not filled. 1770 00002428 L56_LF3: 1771 00002428 23bdfff0 addi r29,r29,#-16 1772 0000242c 3c080000 lhi r8,((LC0_LF3)>>16)&0xffff 1773 00002430 2508d1cc addui r8,r8,(LC0_LF3)&0xffff 1774 00002434 afa80000 sw (r29),r8 1775 00002438 afa40004 sw 4(r29),r4 1776 0000243c afa50008 sw 8(r29),r5 1777 00002440 0c009dd0 jal _printf 1778 00002444 54000000 nop; not filled. 1779 00002448 23bd0010 addi r29,r29,#16 1780 0000244c L55_LF3: 1781 0000244c 30a50003 andi r5,r5,#3 1782 00002450 64a10000 snei r1,r5,#0 1783 00002454 10200044 beqz r1,L74_LF3 1784 00002458 54000000 nop; not filled. 1785 0000245c 20030000 addi r3,r0,#0 1786 00002460 3c060000 lhi r6,((_openfiles_LF3)>>16)&0xffff 1787 00002464 24c6d2a4 addui r6,r6,(_openfiles_LF3)&0xffff 1788 00002468 00061020 add r2,r0,r6 1789 0000246c L61_LF3: 1790 0000246c 8c410004 lw r1,4(r2) 1791 00002470 64210000 snei r1,r1,#0 1792 00002474 10200018 beqz r1,L59_LF3 1793 00002478 54000000 nop; not filled. 1794 0000247c 2042010c addi r2,r2,#268 1795 00002480 20630001 addi r3,r3,#1 1796 00002484 7061001f slei r1,r3,#31 1797 00002488 1420ffe0 bnez r1,L61_LF3 1798 0000248c 54000000 nop; not filled. 1799 00002490 L59_LF3: 1800 00002490 6c61001f sgti r1,r3,#31 1801 00002494 10200010 beqz r1,L64_LF3 1802 00002498 54000000 nop; not filled. 1803 0000249c L74_LF3: 1804 0000249c 2001ffff addi r1,r0,#-1 1805 000024a0 08000224 j L73_LF3 1806 000024a4 54000000 nop; not filled. 1807 000024a8 L64_LF3: 1808 000024a8 50610004 slli r1,r3,#0x4 1809 000024ac 00230820 add r1,r1,r3 1810 000024b0 50210002 slli r1,r1,#0x2 1811 000024b4 00230822 sub r1,r1,r3 1812 000024b8 50210002 slli r1,r1,#0x2 1813 000024bc 00261020 add r2,r1,r6 1814 000024c0 ac450004 sw 4(r2),r5 1815 000024c4 23bdfff0 addi r29,r29,#-16 1816 000024c8 afa40000 sw (r29),r4 1817 000024cc 3c010000 lhi r1,((LC1_LF3)>>16)&0xffff 1818 000024d0 2421d1ec addui r1,r1,(LC1_LF3)&0xffff 1819 000024d4 afa10004 sw 4(r29),r1 1820 000024d8 20080004 addi r8,r0,#4 1821 000024dc afa80008 sw 8(r29),r8 1822 000024e0 0c002210 jal _dstrncmp 1823 000024e4 54000000 nop; not filled. 1824 000024e8 23bd0010 addi r29,r29,#16 1825 000024ec 64210000 snei r1,r1,#0 1826 000024f0 14200014 bnez r1,L65_LF3 1827 000024f4 54000000 nop; not filled. 1828 000024f8 20840004 addi r4,r4,#4 1829 000024fc 20080001 addi r8,r0,#1 1830 00002500 08000008 j L75_LF3 1831 00002504 54000000 nop; not filled. 1832 00002508 L65_LF3: 1833 00002508 20080000 addi r8,r0,#0 1834 0000250c L75_LF3: 1835 0000250c ac480000 sw (r2),r8 1836 00002510 23bdfff8 addi r29,r29,#-8 1837 00002514 3c020001 lhi r2,((_debugstr)>>16)&0xffff 1838 00002518 24421f50 addui r2,r2,(_debugstr)&0xffff 1839 0000251c afa20000 sw (r29),r2 1840 00002520 20080066 addi r8,r0,#102 1841 00002524 afa80004 sw 4(r29),r8 1842 00002528 0c00250c jal _dindex 1843 0000252c 54000000 nop; not filled. 1844 00002530 23bd0008 addi r29,r29,#8 1845 00002534 64210000 snei r1,r1,#0 1846 00002538 1420002c bnez r1,L68_LF3 1847 0000253c 54000000 nop; not filled. 1848 00002540 23bdfff8 addi r29,r29,#-8 1849 00002544 afa20000 sw (r29),r2 1850 00002548 2008002b addi r8,r0,#43 1851 0000254c afa80004 sw 4(r29),r8 1852 00002550 0c0024e4 jal _dindex 1853 00002554 54000000 nop; not filled. 1854 00002558 23bd0008 addi r29,r29,#8 1855 0000255c 64210000 snei r1,r1,#0 1856 00002560 1020004c beqz r1,L67_LF3 1857 00002564 54000000 nop; not filled. 1858 00002568 L68_LF3: 1859 00002568 23bdfff0 addi r29,r29,#-16 1860 0000256c 3c080000 lhi r8,((LC2_LF3)>>16)&0xffff 1861 00002570 2508d1f4 addui r8,r8,(LC2_LF3)&0xffff 1862 00002574 afa80000 sw (r29),r8 1863 00002578 afa40004 sw 4(r29),r4 1864 0000257c 50610004 slli r1,r3,#0x4 1865 00002580 00230820 add r1,r1,r3 1866 00002584 50210002 slli r1,r1,#0x2 1867 00002588 00230822 sub r1,r1,r3 1868 0000258c 50210002 slli r1,r1,#0x2 1869 00002590 3c080000 lhi r8,((_openfiles_LF3)>>16)&0xffff 1870 00002594 2508d2a4 addui r8,r8,(_openfiles_LF3)&0xffff 1871 00002598 00280820 add r1,r1,r8 1872 0000259c 8c210000 lw r1,(r1) 1873 000025a0 afa10008 sw 8(r29),r1 1874 000025a4 0c009c6c jal _printf 1875 000025a8 54000000 nop; not filled. 1876 000025ac 23bd0010 addi r29,r29,#16 1877 000025b0 L67_LF3: 1878 000025b0 23bdfff0 addi r29,r29,#-16 1879 000025b4 50610004 slli r1,r3,#0x4 1880 000025b8 00230820 add r1,r1,r3 1881 000025bc 50210002 slli r1,r1,#0x2 1882 000025c0 00230822 sub r1,r1,r3 1883 000025c4 50260002 slli r6,r1,#0x2 1884 000025c8 3c080000 lhi r8,((_openfiles_LF3)>>16)&0xffff 1885 000025cc 2508d2a4 addui r8,r8,(_openfiles_LF3)&0xffff 1886 000025d0 00c83820 add r7,r6,r8 1887 000025d4 8ce20000 lw r2,(r7) 1888 000025d8 50410001 slli r1,r2,#0x1 1889 000025dc 00220820 add r1,r1,r2 1890 000025e0 50210003 slli r1,r1,#0x3 1891 000025e4 3c080000 lhi r8,((_fs_LF3)>>16)&0xffff 1892 000025e8 2508d274 addui r8,r8,(_fs_LF3)&0xffff 1893 000025ec 00280820 add r1,r1,r8 1894 000025f0 afa30000 sw (r29),r3 1895 000025f4 afa40004 sw 4(r29),r4 1896 000025f8 afa50008 sw 8(r29),r5 1897 000025fc 8c210000 lw r1,(r1) 1898 00002600 4c200000 jalr r1 1899 00002604 54000000 nop; not filled. 1900 00002608 00011020 add r2,r0,r1 1901 0000260c 23bd0010 addi r29,r29,#16 1902 00002610 68410000 slti r1,r2,#0 1903 00002614 10200024 beqz r1,L69_LF3 1904 00002618 54000000 nop; not filled. 1905 0000261c 3c080000 lhi r8,((_openfiles_LF3)>>16)&0xffff 1906 00002620 2508d2a4 addui r8,r8,(_openfiles_LF3)&0xffff 1907 00002624 00c80820 add r1,r6,r8 1908 00002628 20080000 addi r8,r0,#0 1909 0000262c ac280004 sw 4(r1),r8 1910 00002630 00020820 add r1,r0,r2 1911 00002634 08000090 j L73_LF3 1912 00002638 54000000 nop; not filled. 1913 0000263c L69_LF3: 1914 0000263c 23bdfff8 addi r29,r29,#-8 1915 00002640 3c020001 lhi r2,((_debugstr)>>16)&0xffff 1916 00002644 24421f50 addui r2,r2,(_debugstr)&0xffff 1917 00002648 afa20000 sw (r29),r2 1918 0000264c 20080066 addi r8,r0,#102 1919 00002650 afa80004 sw 4(r29),r8 1920 00002654 0c0023e0 jal _dindex 1921 00002658 54000000 nop; not filled. 1922 0000265c 23bd0008 addi r29,r29,#8 1923 00002660 64210000 snei r1,r1,#0 1924 00002664 1420002c bnez r1,L72_LF3 1925 00002668 54000000 nop; not filled. 1926 0000266c 23bdfff8 addi r29,r29,#-8 1927 00002670 afa20000 sw (r29),r2 1928 00002674 2008002b addi r8,r0,#43 1929 00002678 afa80004 sw 4(r29),r8 1930 0000267c 0c0023b8 jal _dindex 1931 00002680 54000000 nop; not filled. 1932 00002684 23bd0008 addi r29,r29,#8 1933 00002688 64210000 snei r1,r1,#0 1934 0000268c 10200034 beqz r1,L71_LF3 1935 00002690 54000000 nop; not filled. 1936 00002694 L72_LF3: 1937 00002694 23bdffe8 addi r29,r29,#-24 1938 00002698 3c080000 lhi r8,((LC3_LF3)>>16)&0xffff 1939 0000269c 2508d218 addui r8,r8,(LC3_LF3)&0xffff 1940 000026a0 afa80000 sw (r29),r8 1941 000026a4 afa40004 sw 4(r29),r4 1942 000026a8 8ce70000 lw r7,(r7) 1943 000026ac afa70008 sw 8(r29),r7 1944 000026b0 afa5000c sw 12(r29),r5 1945 000026b4 afa30010 sw 16(r29),r3 1946 000026b8 0c009b58 jal _printf 1947 000026bc 54000000 nop; not filled. 1948 000026c0 23bd0018 addi r29,r29,#24 1949 000026c4 L71_LF3: 1950 000026c4 00030820 add r1,r0,r3 1951 000026c8 L73_LF3: 1952 000026c8 8fa20000 lw r2,0(r29) 1953 000026cc 8fa30004 lw r3,4(r29) 1954 000026d0 8fa40008 lw r4,8(r29) 1955 000026d4 8fa5000c lw r5,12(r29) 1956 000026d8 8fa60010 lw r6,16(r29) 1957 000026dc 8fa70014 lw r7,20(r29) 1958 000026e0 8fa80018 lw r8,24(r29) 1959 000026e4 8fdffff8 lw r31,-8(r30) 1960 000026e8 001ee820 add r29,r0,r30 1961 000026ec 8fdefffc lw r30,-4(r30) 1962 000026f0 4be00000 jr r31 1963 000026f4 54000000 nop 1964 000026f8 .endproc _FsOpen 1965 000026f8 .align 2 1966 000026f8 .proc _FsClose 1967 000026f8 .global _FsClose 1968 000026f8 _FsClose: 1969 ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. 1970 000026f8 afbefffc sw -4(r29),r30; push fp 1971 000026fc 001df020 add r30,r0,r29; fp = sp 1972 00002700 afbffff8 sw -8(r29),r31; push ret addr 1973 00002704 2fbd0018 subui r29,r29,#24; alloc local storage 1974 00002708 afa20000 sw 0(r29),r2 1975 0000270c afa30004 sw 4(r29),r3 1976 00002710 afa40008 sw 8(r29),r4 1977 00002714 8fdf0000 lw r31,(r30) 1978 00002718 20020000 addi r2,r0,#0 1979 0000271c 23e1ffff addi r1,r31,#-1 1980 00002720 7021001e sleui r1,r1,#30 1981 00002724 10200038 beqz r1,L84_LF3 1982 00002728 54000000 nop; not filled. 1983 0000272c 53e10004 slli r1,r31,#0x4 1984 00002730 003f0820 add r1,r1,r31 1985 00002734 50210002 slli r1,r1,#0x2 1986 00002738 003f0822 sub r1,r1,r31 1987 0000273c 50210002 slli r1,r1,#0x2 1988 00002740 3c040000 lhi r4,((_openfiles_LF3)>>16)&0xffff 1989 00002744 2484d2a4 addui r4,r4,(_openfiles_LF3)&0xffff 1990 00002748 00240820 add r1,r1,r4 1991 0000274c 8c210004 lw r1,4(r1) 1992 00002750 64210000 snei r1,r1,#0 1993 00002754 10200008 beqz r1,L84_LF3 1994 00002758 54000000 nop; not filled. 1995 0000275c 20020001 addi r2,r0,#1 1996 00002760 L84_LF3: 1997 00002760 64410000 snei r1,r2,#0 1998 00002764 10200074 beqz r1,L82_LF3 1999 00002768 54000000 nop; not filled. 2000 0000276c 23bdfff8 addi r29,r29,#-8 2001 00002770 53e10004 slli r1,r31,#0x4 2002 00002774 003f0820 add r1,r1,r31 2003 00002778 50210002 slli r1,r1,#0x2 2004 0000277c 003f0822 sub r1,r1,r31 2005 00002780 50230002 slli r3,r1,#0x2 2006 00002784 3c040000 lhi r4,((_openfiles_LF3)>>16)&0xffff 2007 00002788 2484d2a4 addui r4,r4,(_openfiles_LF3)&0xffff 2008 0000278c 00640820 add r1,r3,r4 2009 00002790 8c220000 lw r2,(r1) 2010 00002794 50410001 slli r1,r2,#0x1 2011 00002798 00220820 add r1,r1,r2 2012 0000279c 50210003 slli r1,r1,#0x3 2013 000027a0 3c040000 lhi r4,((_fs_LF3)>>16)&0xffff 2014 000027a4 2484d274 addui r4,r4,(_fs_LF3)&0xffff 2015 000027a8 00240820 add r1,r1,r4 2016 000027ac afbf0000 sw (r29),r31 2017 000027b0 8c210010 lw r1,16(r1) 2018 000027b4 4c200000 jalr r1 2019 000027b8 54000000 nop; not filled. 2020 000027bc 23bd0008 addi r29,r29,#8 2021 000027c0 3c040000 lhi r4,((_openfiles_LF3)>>16)&0xffff 2022 000027c4 2484d2a4 addui r4,r4,(_openfiles_LF3)&0xffff 2023 000027c8 00641020 add r2,r3,r4 2024 000027cc 20040000 addi r4,r0,#0 2025 000027d0 ac440004 sw 4(r2),r4 2026 000027d4 08000008 j L86_LF3 2027 000027d8 54000000 nop; not filled. 2028 000027dc L82_LF3: 2029 000027dc 2001ffff addi r1,r0,#-1 2030 000027e0 L86_LF3: 2031 000027e0 8fa20000 lw r2,0(r29) 2032 000027e4 8fa30004 lw r3,4(r29) 2033 000027e8 8fa40008 lw r4,8(r29) 2034 000027ec 8fdffff8 lw r31,-8(r30) 2035 000027f0 001ee820 add r29,r0,r30 2036 000027f4 8fdefffc lw r30,-4(r30) 2037 000027f8 4be00000 jr r31 2038 000027fc 54000000 nop 2039 00002800 .endproc _FsClose 2040 00002800 .align 2 2041 00002800 .proc _FsRead 2042 00002800 .global _FsRead 2043 00002800 _FsRead: 2044 ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. 2045 00002800 afbefffc sw -4(r29),r30; push fp 2046 00002804 001df020 add r30,r0,r29; fp = sp 2047 00002808 afbffff8 sw -8(r29),r31; push ret addr 2048 0000280c 2fbd0010 subui r29,r29,#16; alloc local storage 2049 00002810 afa20000 sw 0(r29),r2 2050 00002814 afa30004 sw 4(r29),r3 2051 00002818 8fdf0000 lw r31,(r30) 2052 0000281c 20020000 addi r2,r0,#0 2053 00002820 23e1ffff addi r1,r31,#-1 2054 00002824 7021001e sleui r1,r1,#30 2055 00002828 10200038 beqz r1,L94_LF3 2056 0000282c 54000000 nop; not filled. 2057 00002830 53e10004 slli r1,r31,#0x4 2058 00002834 003f0820 add r1,r1,r31 2059 00002838 50210002 slli r1,r1,#0x2 2060 0000283c 003f0822 sub r1,r1,r31 2061 00002840 50210002 slli r1,r1,#0x2 2062 00002844 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2063 00002848 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2064 0000284c 00230820 add r1,r1,r3 2065 00002850 8c210004 lw r1,4(r1) 2066 00002854 64210000 snei r1,r1,#0 2067 00002858 10200008 beqz r1,L94_LF3 2068 0000285c 54000000 nop; not filled. 2069 00002860 20020001 addi r2,r0,#1 2070 00002864 L94_LF3: 2071 00002864 64410000 snei r1,r2,#0 2072 00002868 10200070 beqz r1,L92_LF3 2073 0000286c 54000000 nop; not filled. 2074 00002870 23bdfff0 addi r29,r29,#-16 2075 00002874 53e10004 slli r1,r31,#0x4 2076 00002878 003f0820 add r1,r1,r31 2077 0000287c 50210002 slli r1,r1,#0x2 2078 00002880 003f0822 sub r1,r1,r31 2079 00002884 50210002 slli r1,r1,#0x2 2080 00002888 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2081 0000288c 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2082 00002890 00230820 add r1,r1,r3 2083 00002894 8c220000 lw r2,(r1) 2084 00002898 50410001 slli r1,r2,#0x1 2085 0000289c 00220820 add r1,r1,r2 2086 000028a0 50210003 slli r1,r1,#0x3 2087 000028a4 3c030000 lhi r3,((_fs_LF3)>>16)&0xffff 2088 000028a8 2463d274 addui r3,r3,(_fs_LF3)&0xffff 2089 000028ac 00230820 add r1,r1,r3 2090 000028b0 afbf0000 sw (r29),r31 2091 000028b4 8fc30004 lw r3,4(r30) 2092 000028b8 afa30004 sw 4(r29),r3 2093 000028bc 8fc30008 lw r3,8(r30) 2094 000028c0 afa30008 sw 8(r29),r3 2095 000028c4 8c210004 lw r1,4(r1) 2096 000028c8 4c200000 jalr r1 2097 000028cc 54000000 nop; not filled. 2098 000028d0 23bd0010 addi r29,r29,#16 2099 000028d4 08000008 j L91_LF3 2100 000028d8 54000000 nop; not filled. 2101 000028dc L92_LF3: 2102 000028dc 2001ffff addi r1,r0,#-1 2103 000028e0 L91_LF3: 2104 000028e0 8fa20000 lw r2,0(r29) 2105 000028e4 8fa30004 lw r3,4(r29) 2106 000028e8 8fdffff8 lw r31,-8(r30) 2107 000028ec 001ee820 add r29,r0,r30 2108 000028f0 8fdefffc lw r30,-4(r30) 2109 000028f4 4be00000 jr r31 2110 000028f8 54000000 nop 2111 000028fc .endproc _FsRead 2112 000028fc .align 2 2113 000028fc .proc _FsWrite 2114 000028fc .global _FsWrite 2115 000028fc _FsWrite: 2116 ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. 2117 000028fc afbefffc sw -4(r29),r30; push fp 2118 00002900 001df020 add r30,r0,r29; fp = sp 2119 00002904 afbffff8 sw -8(r29),r31; push ret addr 2120 00002908 2fbd0010 subui r29,r29,#16; alloc local storage 2121 0000290c afa20000 sw 0(r29),r2 2122 00002910 afa30004 sw 4(r29),r3 2123 00002914 8fdf0000 lw r31,(r30) 2124 00002918 20020000 addi r2,r0,#0 2125 0000291c 23e1ffff addi r1,r31,#-1 2126 00002920 7021001e sleui r1,r1,#30 2127 00002924 10200038 beqz r1,L103_LF3 2128 00002928 54000000 nop; not filled. 2129 0000292c 53e10004 slli r1,r31,#0x4 2130 00002930 003f0820 add r1,r1,r31 2131 00002934 50210002 slli r1,r1,#0x2 2132 00002938 003f0822 sub r1,r1,r31 2133 0000293c 50210002 slli r1,r1,#0x2 2134 00002940 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2135 00002944 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2136 00002948 00230820 add r1,r1,r3 2137 0000294c 8c210004 lw r1,4(r1) 2138 00002950 64210000 snei r1,r1,#0 2139 00002954 10200008 beqz r1,L103_LF3 2140 00002958 54000000 nop; not filled. 2141 0000295c 20020001 addi r2,r0,#1 2142 00002960 L103_LF3: 2143 00002960 64410000 snei r1,r2,#0 2144 00002964 10200070 beqz r1,L101_LF3 2145 00002968 54000000 nop; not filled. 2146 0000296c 23bdfff0 addi r29,r29,#-16 2147 00002970 53e10004 slli r1,r31,#0x4 2148 00002974 003f0820 add r1,r1,r31 2149 00002978 50210002 slli r1,r1,#0x2 2150 0000297c 003f0822 sub r1,r1,r31 2151 00002980 50210002 slli r1,r1,#0x2 2152 00002984 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2153 00002988 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2154 0000298c 00230820 add r1,r1,r3 2155 00002990 8c220000 lw r2,(r1) 2156 00002994 50410001 slli r1,r2,#0x1 2157 00002998 00220820 add r1,r1,r2 2158 0000299c 50210003 slli r1,r1,#0x3 2159 000029a0 3c030000 lhi r3,((_fs_LF3)>>16)&0xffff 2160 000029a4 2463d274 addui r3,r3,(_fs_LF3)&0xffff 2161 000029a8 00230820 add r1,r1,r3 2162 000029ac afbf0000 sw (r29),r31 2163 000029b0 8fc30004 lw r3,4(r30) 2164 000029b4 afa30004 sw 4(r29),r3 2165 000029b8 8fc30008 lw r3,8(r30) 2166 000029bc afa30008 sw 8(r29),r3 2167 000029c0 8c210008 lw r1,8(r1) 2168 000029c4 4c200000 jalr r1 2169 000029c8 54000000 nop; not filled. 2170 000029cc 23bd0010 addi r29,r29,#16 2171 000029d0 08000008 j L100_LF3 2172 000029d4 54000000 nop; not filled. 2173 000029d8 L101_LF3: 2174 000029d8 2001ffff addi r1,r0,#-1 2175 000029dc L100_LF3: 2176 000029dc 8fa20000 lw r2,0(r29) 2177 000029e0 8fa30004 lw r3,4(r29) 2178 000029e4 8fdffff8 lw r31,-8(r30) 2179 000029e8 001ee820 add r29,r0,r30 2180 000029ec 8fdefffc lw r30,-4(r30) 2181 000029f0 4be00000 jr r31 2182 000029f4 54000000 nop 2183 000029f8 .endproc _FsWrite 2184 000029f8 .align 2 2185 000029f8 .proc _FsSeek 2186 000029f8 .global _FsSeek 2187 000029f8 _FsSeek: 2188 ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. 2189 000029f8 afbefffc sw -4(r29),r30; push fp 2190 000029fc 001df020 add r30,r0,r29; fp = sp 2191 00002a00 afbffff8 sw -8(r29),r31; push ret addr 2192 00002a04 2fbd0010 subui r29,r29,#16; alloc local storage 2193 00002a08 afa20000 sw 0(r29),r2 2194 00002a0c afa30004 sw 4(r29),r3 2195 00002a10 8fdf0000 lw r31,(r30) 2196 00002a14 20020000 addi r2,r0,#0 2197 00002a18 23e1ffff addi r1,r31,#-1 2198 00002a1c 7021001e sleui r1,r1,#30 2199 00002a20 10200038 beqz r1,L112_LF3 2200 00002a24 54000000 nop; not filled. 2201 00002a28 53e10004 slli r1,r31,#0x4 2202 00002a2c 003f0820 add r1,r1,r31 2203 00002a30 50210002 slli r1,r1,#0x2 2204 00002a34 003f0822 sub r1,r1,r31 2205 00002a38 50210002 slli r1,r1,#0x2 2206 00002a3c 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2207 00002a40 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2208 00002a44 00230820 add r1,r1,r3 2209 00002a48 8c210004 lw r1,4(r1) 2210 00002a4c 64210000 snei r1,r1,#0 2211 00002a50 10200008 beqz r1,L112_LF3 2212 00002a54 54000000 nop; not filled. 2213 00002a58 20020001 addi r2,r0,#1 2214 00002a5c L112_LF3: 2215 00002a5c 64410000 snei r1,r2,#0 2216 00002a60 10200070 beqz r1,L110_LF3 2217 00002a64 54000000 nop; not filled. 2218 00002a68 23bdfff0 addi r29,r29,#-16 2219 00002a6c 53e10004 slli r1,r31,#0x4 2220 00002a70 003f0820 add r1,r1,r31 2221 00002a74 50210002 slli r1,r1,#0x2 2222 00002a78 003f0822 sub r1,r1,r31 2223 00002a7c 50210002 slli r1,r1,#0x2 2224 00002a80 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2225 00002a84 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2226 00002a88 00230820 add r1,r1,r3 2227 00002a8c 8c220000 lw r2,(r1) 2228 00002a90 50410001 slli r1,r2,#0x1 2229 00002a94 00220820 add r1,r1,r2 2230 00002a98 50210003 slli r1,r1,#0x3 2231 00002a9c 3c030000 lhi r3,((_fs_LF3)>>16)&0xffff 2232 00002aa0 2463d274 addui r3,r3,(_fs_LF3)&0xffff 2233 00002aa4 00230820 add r1,r1,r3 2234 00002aa8 afbf0000 sw (r29),r31 2235 00002aac 8fc30004 lw r3,4(r30) 2236 00002ab0 afa30004 sw 4(r29),r3 2237 00002ab4 8fc30008 lw r3,8(r30) 2238 00002ab8 afa30008 sw 8(r29),r3 2239 00002abc 8c21000c lw r1,12(r1) 2240 00002ac0 4c200000 jalr r1 2241 00002ac4 54000000 nop; not filled. 2242 00002ac8 23bd0010 addi r29,r29,#16 2243 00002acc 08000008 j L109_LF3 2244 00002ad0 54000000 nop; not filled. 2245 00002ad4 L110_LF3: 2246 00002ad4 2001ffff addi r1,r0,#-1 2247 00002ad8 L109_LF3: 2248 00002ad8 8fa20000 lw r2,0(r29) 2249 00002adc 8fa30004 lw r3,4(r29) 2250 00002ae0 8fdffff8 lw r31,-8(r30) 2251 00002ae4 001ee820 add r29,r0,r30 2252 00002ae8 8fdefffc lw r30,-4(r30) 2253 00002aec 4be00000 jr r31 2254 00002af0 54000000 nop 2255 00002af4 .endproc _FsSeek 2256 00002af4 .align 2 2257 00002af4 .proc _FsDelete 2258 00002af4 .global _FsDelete 2259 00002af4 _FsDelete: 2260 ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. 2261 00002af4 afbefffc sw -4(r29),r30; push fp 2262 00002af8 001df020 add r30,r0,r29; fp = sp 2263 00002afc afbffff8 sw -8(r29),r31; push ret addr 2264 00002b00 2fbd0010 subui r29,r29,#16; alloc local storage 2265 00002b04 afa20000 sw 0(r29),r2 2266 00002b08 afa30004 sw 4(r29),r3 2267 00002b0c 8fc20000 lw r2,(r30) 2268 00002b10 23bdfff0 addi r29,r29,#-16 2269 00002b14 afa20000 sw (r29),r2 2270 00002b18 3c010000 lhi r1,((LC1_LF3)>>16)&0xffff 2271 00002b1c 2421d1ec addui r1,r1,(LC1_LF3)&0xffff 2272 00002b20 afa10004 sw 4(r29),r1 2273 00002b24 20030004 addi r3,r0,#4 2274 00002b28 afa30008 sw 8(r29),r3 2275 00002b2c 0c001bc4 jal _dstrncmp 2276 00002b30 54000000 nop; not filled. 2277 00002b34 23bd0010 addi r29,r29,#16 2278 00002b38 64210000 snei r1,r1,#0 2279 00002b3c 1420001c bnez r1,L118_LF3 2280 00002b40 54000000 nop; not filled. 2281 00002b44 20420004 addi r2,r2,#4 2282 00002b48 23bdfff8 addi r29,r29,#-8 2283 00002b4c 3c010000 lhi r1,((_fs_LF3+44)>>16)&0xffff 2284 00002b50 2421d2a0 addui r1,r1,(_fs_LF3+44)&0xffff 2285 00002b54 08000010 j L120_LF3 2286 00002b58 54000000 nop; not filled. 2287 00002b5c L118_LF3: 2288 00002b5c 23bdfff8 addi r29,r29,#-8 2289 00002b60 3c010000 lhi r1,((_fs_LF3+20)>>16)&0xffff 2290 00002b64 2421d288 addui r1,r1,(_fs_LF3+20)&0xffff 2291 00002b68 L120_LF3: 2292 00002b68 afa20000 sw (r29),r2 2293 00002b6c 8c210000 lw r1,(r1) 2294 00002b70 4c200000 jalr r1 2295 00002b74 54000000 nop; not filled. 2296 00002b78 23bd0008 addi r29,r29,#8 2297 00002b7c 8fa20000 lw r2,0(r29) 2298 00002b80 8fa30004 lw r3,4(r29) 2299 00002b84 8fdffff8 lw r31,-8(r30) 2300 00002b88 001ee820 add r29,r0,r30 2301 00002b8c 8fdefffc lw r30,-4(r30) 2302 00002b90 4be00000 jr r31 2303 00002b94 54000000 nop 2304 00002b98 .endproc _FsDelete 2305 00002b98 .data 2306 0000d23e .align 2 2307 0000d240 LC4_LF3: 2308 0000d240 41747465 .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" 2308 0000d244 6d707469 2308 0000d248 6e672074 2308 0000d24c 6f206f70 2308 0000d250 656e2066 2308 0000d254 696c6520 2308 0000d258 25732069 2308 0000d25c 6e746f20 2308 0000d260 64657363 2308 0000d264 2025642c 2308 0000d268 206d6f64 2308 0000d26c 65202564 2308 0000d270 2e0a00 2309 0000d273 .text 2310 00002b98 .align 2 2311 00002b98 .proc _FsUnixOpen 2312 00002b98 .global _FsUnixOpen 2313 00002b98 _FsUnixOpen: 2314 ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. 2315 00002b98 afbefffc sw -4(r29),r30; push fp 2316 00002b9c 001df020 add r30,r0,r29; fp = sp 2317 00002ba0 afbffff8 sw -8(r29),r31; push ret addr 2318 00002ba4 2fbd0020 subui r29,r29,#32; alloc local storage 2319 00002ba8 afa20000 sw 0(r29),r2 2320 00002bac afa30004 sw 4(r29),r3 2321 00002bb0 afa40008 sw 8(r29),r4 2322 00002bb4 afa5000c sw 12(r29),r5 2323 00002bb8 afa60010 sw 16(r29),r6 2324 00002bbc 8fc40000 lw r4,(r30) 2325 00002bc0 8fc30004 lw r3,4(r30) 2326 00002bc4 8fc50008 lw r5,8(r30) 2327 00002bc8 23bdfff8 addi r29,r29,#-8 2328 00002bcc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 2329 00002bd0 24421f50 addui r2,r2,(_debugstr)&0xffff 2330 00002bd4 afa20000 sw (r29),r2 2331 00002bd8 20060066 addi r6,r0,#102 2332 00002bdc afa60004 sw 4(r29),r6 2333 00002be0 0c001e54 jal _dindex 2334 00002be4 54000000 nop; not filled. 2335 00002be8 23bd0008 addi r29,r29,#8 2336 00002bec 64210000 snei r1,r1,#0 2337 00002bf0 1420002c bnez r1,L127_LF3 2338 00002bf4 54000000 nop; not filled. 2339 00002bf8 23bdfff8 addi r29,r29,#-8 2340 00002bfc afa20000 sw (r29),r2 2341 00002c00 2006002b addi r6,r0,#43 2342 00002c04 afa60004 sw 4(r29),r6 2343 00002c08 0c001e2c jal _dindex 2344 00002c0c 54000000 nop; not filled. 2345 00002c10 23bd0008 addi r29,r29,#8 2346 00002c14 64210000 snei r1,r1,#0 2347 00002c18 1020002c beqz r1,L126_LF3 2348 00002c1c 54000000 nop; not filled. 2349 00002c20 L127_LF3: 2350 00002c20 23bdfff0 addi r29,r29,#-16 2351 00002c24 3c060000 lhi r6,((LC4_LF3)>>16)&0xffff 2352 00002c28 24c6d240 addui r6,r6,(LC4_LF3)&0xffff 2353 00002c2c afa60000 sw (r29),r6 2354 00002c30 afa30004 sw 4(r29),r3 2355 00002c34 afa40008 sw 8(r29),r4 2356 00002c38 afa5000c sw 12(r29),r5 2357 00002c3c 0c0095d4 jal _printf 2358 00002c40 54000000 nop; not filled. 2359 00002c44 23bd0010 addi r29,r29,#16 2360 00002c48 L126_LF3: 2361 00002c48 23bdfff8 addi r29,r29,#-8 2362 00002c4c afa30000 sw (r29),r3 2363 00002c50 afa50004 sw 4(r29),r5 2364 00002c54 0c00952c jal _open 2365 00002c58 54000000 nop; not filled. 2366 00002c5c 00011820 add r3,r0,r1 2367 00002c60 50810004 slli r1,r4,#0x4 2368 00002c64 00240820 add r1,r1,r4 2369 00002c68 50210002 slli r1,r1,#0x2 2370 00002c6c 00240822 sub r1,r1,r4 2371 00002c70 50210002 slli r1,r1,#0x2 2372 00002c74 3c060000 lhi r6,((_openfiles_LF3)>>16)&0xffff 2373 00002c78 24c6d2a4 addui r6,r6,(_openfiles_LF3)&0xffff 2374 00002c7c 00260820 add r1,r1,r6 2375 00002c80 ac230108 sw 264(r1),r3 2376 00002c84 23bd0008 addi r29,r29,#8 2377 00002c88 68620000 slti r2,r3,#0 2378 00002c8c 00030820 add r1,r0,r3 2379 00002c90 14400008 bnez r2,L128_LF3 2380 00002c94 54000000 nop; not filled. 2381 00002c98 20010001 addi r1,r0,#1 2382 00002c9c L128_LF3: 2383 00002c9c 8fa20000 lw r2,0(r29) 2384 00002ca0 8fa30004 lw r3,4(r29) 2385 00002ca4 8fa40008 lw r4,8(r29) 2386 00002ca8 8fa5000c lw r5,12(r29) 2387 00002cac 8fa60010 lw r6,16(r29) 2388 00002cb0 8fdffff8 lw r31,-8(r30) 2389 00002cb4 001ee820 add r29,r0,r30 2390 00002cb8 8fdefffc lw r30,-4(r30) 2391 00002cbc 4be00000 jr r31 2392 00002cc0 54000000 nop 2393 00002cc4 .endproc _FsUnixOpen 2394 00002cc4 .align 2 2395 00002cc4 .proc _FsUnixRead 2396 00002cc4 .global _FsUnixRead 2397 00002cc4 _FsUnixRead: 2398 ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. 2399 00002cc4 afbefffc sw -4(r29),r30; push fp 2400 00002cc8 001df020 add r30,r0,r29; fp = sp 2401 00002ccc afbffff8 sw -8(r29),r31; push ret addr 2402 00002cd0 2fbd0018 subui r29,r29,#24; alloc local storage 2403 00002cd4 afa20000 sw 0(r29),r2 2404 00002cd8 afa30004 sw 4(r29),r3 2405 00002cdc afa40008 sw 8(r29),r4 2406 00002ce0 afa5000c sw 12(r29),r5 2407 00002ce4 8fc20000 lw r2,(r30) 2408 00002ce8 8fc30004 lw r3,4(r30) 2409 00002cec 8fc40008 lw r4,8(r30) 2410 00002cf0 23bdfff0 addi r29,r29,#-16 2411 00002cf4 50410004 slli r1,r2,#0x4 2412 00002cf8 00220820 add r1,r1,r2 2413 00002cfc 50210002 slli r1,r1,#0x2 2414 00002d00 00220822 sub r1,r1,r2 2415 00002d04 50210002 slli r1,r1,#0x2 2416 00002d08 3c050000 lhi r5,((_openfiles_LF3)>>16)&0xffff 2417 00002d0c 24a5d2a4 addui r5,r5,(_openfiles_LF3)&0xffff 2418 00002d10 00250820 add r1,r1,r5 2419 00002d14 8c210108 lw r1,264(r1) 2420 00002d18 afa10000 sw (r29),r1 2421 00002d1c afa30004 sw 4(r29),r3 2422 00002d20 afa40008 sw 8(r29),r4 2423 00002d24 0c009474 jal _read 2424 00002d28 54000000 nop; not filled. 2425 00002d2c 23bd0010 addi r29,r29,#16 2426 00002d30 8fa20000 lw r2,0(r29) 2427 00002d34 8fa30004 lw r3,4(r29) 2428 00002d38 8fa40008 lw r4,8(r29) 2429 00002d3c 8fa5000c lw r5,12(r29) 2430 00002d40 8fdffff8 lw r31,-8(r30) 2431 00002d44 001ee820 add r29,r0,r30 2432 00002d48 8fdefffc lw r30,-4(r30) 2433 00002d4c 4be00000 jr r31 2434 00002d50 54000000 nop 2435 00002d54 .endproc _FsUnixRead 2436 00002d54 .align 2 2437 00002d54 .proc _FsUnixWrite 2438 00002d54 .global _FsUnixWrite 2439 00002d54 _FsUnixWrite: 2440 ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. 2441 00002d54 afbefffc sw -4(r29),r30; push fp 2442 00002d58 001df020 add r30,r0,r29; fp = sp 2443 00002d5c afbffff8 sw -8(r29),r31; push ret addr 2444 00002d60 2fbd0018 subui r29,r29,#24; alloc local storage 2445 00002d64 afa20000 sw 0(r29),r2 2446 00002d68 afa30004 sw 4(r29),r3 2447 00002d6c afa40008 sw 8(r29),r4 2448 00002d70 afa5000c sw 12(r29),r5 2449 00002d74 8fc20000 lw r2,(r30) 2450 00002d78 8fc30004 lw r3,4(r30) 2451 00002d7c 8fc40008 lw r4,8(r30) 2452 00002d80 23bdfff0 addi r29,r29,#-16 2453 00002d84 50410004 slli r1,r2,#0x4 2454 00002d88 00220820 add r1,r1,r2 2455 00002d8c 50210002 slli r1,r1,#0x2 2456 00002d90 00220822 sub r1,r1,r2 2457 00002d94 50210002 slli r1,r1,#0x2 2458 00002d98 3c050000 lhi r5,((_openfiles_LF3)>>16)&0xffff 2459 00002d9c 24a5d2a4 addui r5,r5,(_openfiles_LF3)&0xffff 2460 00002da0 00250820 add r1,r1,r5 2461 00002da4 8c210108 lw r1,264(r1) 2462 00002da8 afa10000 sw (r29),r1 2463 00002dac afa30004 sw 4(r29),r3 2464 00002db0 afa40008 sw 8(r29),r4 2465 00002db4 0c0093f0 jal _write 2466 00002db8 54000000 nop; not filled. 2467 00002dbc 23bd0010 addi r29,r29,#16 2468 00002dc0 8fa20000 lw r2,0(r29) 2469 00002dc4 8fa30004 lw r3,4(r29) 2470 00002dc8 8fa40008 lw r4,8(r29) 2471 00002dcc 8fa5000c lw r5,12(r29) 2472 00002dd0 8fdffff8 lw r31,-8(r30) 2473 00002dd4 001ee820 add r29,r0,r30 2474 00002dd8 8fdefffc lw r30,-4(r30) 2475 00002ddc 4be00000 jr r31 2476 00002de0 54000000 nop 2477 00002de4 .endproc _FsUnixWrite 2478 00002de4 .align 2 2479 00002de4 .proc _FsUnixSeek 2480 00002de4 .global _FsUnixSeek 2481 00002de4 _FsUnixSeek: 2482 ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. 2483 00002de4 afbefffc sw -4(r29),r30; push fp 2484 00002de8 001df020 add r30,r0,r29; fp = sp 2485 00002dec afbffff8 sw -8(r29),r31; push ret addr 2486 00002df0 2fbd0018 subui r29,r29,#24; alloc local storage 2487 00002df4 afa20000 sw 0(r29),r2 2488 00002df8 afa30004 sw 4(r29),r3 2489 00002dfc afa40008 sw 8(r29),r4 2490 00002e00 afa5000c sw 12(r29),r5 2491 00002e04 8fc20000 lw r2,(r30) 2492 00002e08 8fc30004 lw r3,4(r30) 2493 00002e0c 8fc40008 lw r4,8(r30) 2494 00002e10 23bdfff0 addi r29,r29,#-16 2495 00002e14 50410004 slli r1,r2,#0x4 2496 00002e18 00220820 add r1,r1,r2 2497 00002e1c 50210002 slli r1,r1,#0x2 2498 00002e20 00220822 sub r1,r1,r2 2499 00002e24 50210002 slli r1,r1,#0x2 2500 00002e28 3c050000 lhi r5,((_openfiles_LF3)>>16)&0xffff 2501 00002e2c 24a5d2a4 addui r5,r5,(_openfiles_LF3)&0xffff 2502 00002e30 00250820 add r1,r1,r5 2503 00002e34 8c210108 lw r1,264(r1) 2504 00002e38 afa10000 sw (r29),r1 2505 00002e3c afa30004 sw 4(r29),r3 2506 00002e40 afa40008 sw 8(r29),r4 2507 00002e44 0c00936c jal _lseek 2508 00002e48 54000000 nop; not filled. 2509 00002e4c 23bd0010 addi r29,r29,#16 2510 00002e50 8fa20000 lw r2,0(r29) 2511 00002e54 8fa30004 lw r3,4(r29) 2512 00002e58 8fa40008 lw r4,8(r29) 2513 00002e5c 8fa5000c lw r5,12(r29) 2514 00002e60 8fdffff8 lw r31,-8(r30) 2515 00002e64 001ee820 add r29,r0,r30 2516 00002e68 8fdefffc lw r30,-4(r30) 2517 00002e6c 4be00000 jr r31 2518 00002e70 54000000 nop 2519 00002e74 .endproc _FsUnixSeek 2520 00002e74 .align 2 2521 00002e74 .proc _FsUnixClose 2522 00002e74 .global _FsUnixClose 2523 00002e74 _FsUnixClose: 2524 ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. 2525 00002e74 afbefffc sw -4(r29),r30; push fp 2526 00002e78 001df020 add r30,r0,r29; fp = sp 2527 00002e7c afbffff8 sw -8(r29),r31; push ret addr 2528 00002e80 2fbd0010 subui r29,r29,#16; alloc local storage 2529 00002e84 afa20000 sw 0(r29),r2 2530 00002e88 afa30004 sw 4(r29),r3 2531 00002e8c 8fc20000 lw r2,(r30) 2532 00002e90 23bdfff8 addi r29,r29,#-8 2533 00002e94 50410004 slli r1,r2,#0x4 2534 00002e98 00220820 add r1,r1,r2 2535 00002e9c 50210002 slli r1,r1,#0x2 2536 00002ea0 00220822 sub r1,r1,r2 2537 00002ea4 50210002 slli r1,r1,#0x2 2538 00002ea8 3c030000 lhi r3,((_openfiles_LF3)>>16)&0xffff 2539 00002eac 2463d2a4 addui r3,r3,(_openfiles_LF3)&0xffff 2540 00002eb0 00230820 add r1,r1,r3 2541 00002eb4 8c210108 lw r1,264(r1) 2542 00002eb8 afa10000 sw (r29),r1 2543 00002ebc 0c0092d0 jal _close 2544 00002ec0 54000000 nop; not filled. 2545 00002ec4 23bd0008 addi r29,r29,#8 2546 00002ec8 8fa20000 lw r2,0(r29) 2547 00002ecc 8fa30004 lw r3,4(r29) 2548 00002ed0 8fdffff8 lw r31,-8(r30) 2549 00002ed4 001ee820 add r29,r0,r30 2550 00002ed8 8fdefffc lw r30,-4(r30) 2551 00002edc 4be00000 jr r31 2552 00002ee0 54000000 nop 2553 00002ee4 .endproc _FsUnixClose 2554 00002ee4 .align 2 2555 00002ee4 .proc _FsUnixDelete 2556 00002ee4 .global _FsUnixDelete 2557 00002ee4 _FsUnixDelete: 2558 ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. 2559 00002ee4 afbefffc sw -4(r29),r30; push fp 2560 00002ee8 001df020 add r30,r0,r29; fp = sp 2561 00002eec afbffff8 sw -8(r29),r31; push ret addr 2562 00002ef0 2fbd0008 subui r29,r29,#8; alloc local storage 2563 00002ef4 2001ffff addi r1,r0,#-1 2564 00002ef8 8fdffff8 lw r31,-8(r30) 2565 00002efc 001ee820 add r29,r0,r30 2566 00002f00 8fdefffc lw r30,-4(r30) 2567 00002f04 4be00000 jr r31 2568 00002f08 54000000 nop 2569 00002f0c .endproc _FsUnixDelete 2570 00002f0c .align 2 2571 00002f0c .proc _FsDlxIo 2572 00002f0c .global _FsDlxIo 2573 00002f0c _FsDlxIo: 2574 ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. 2575 00002f0c afbefffc sw -4(r29),r30; push fp 2576 00002f10 001df020 add r30,r0,r29; fp = sp 2577 00002f14 afbffff8 sw -8(r29),r31; push ret addr 2578 00002f18 2fbd0008 subui r29,r29,#8; alloc local storage 2579 00002f1c 20010001 addi r1,r0,#1 2580 00002f20 8fdffff8 lw r31,-8(r30) 2581 00002f24 001ee820 add r29,r0,r30 2582 00002f28 8fdefffc lw r30,-4(r30) 2583 00002f2c 4be00000 jr r31 2584 00002f30 54000000 nop 2585 00002f34 .endproc _FsDlxIo 2586 00002f34 .align 2 2587 00002f34 .proc _FsDlxRead 2588 00002f34 .global _FsDlxRead 2589 00002f34 _FsDlxRead: 2590 ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. 2591 00002f34 afbefffc sw -4(r29),r30; push fp 2592 00002f38 001df020 add r30,r0,r29; fp = sp 2593 00002f3c afbffff8 sw -8(r29),r31; push ret addr 2594 00002f40 2fbd0008 subui r29,r29,#8; alloc local storage 2595 00002f44 20010001 addi r1,r0,#1 2596 00002f48 8fdffff8 lw r31,-8(r30) 2597 00002f4c 001ee820 add r29,r0,r30 2598 00002f50 8fdefffc lw r30,-4(r30) 2599 00002f54 4be00000 jr r31 2600 00002f58 54000000 nop 2601 00002f5c .endproc _FsDlxRead 2602 00002f5c .align 2 2603 00002f5c .proc _FsDlxWrite 2604 00002f5c .global _FsDlxWrite 2605 00002f5c _FsDlxWrite: 2606 ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. 2607 00002f5c afbefffc sw -4(r29),r30; push fp 2608 00002f60 001df020 add r30,r0,r29; fp = sp 2609 00002f64 afbffff8 sw -8(r29),r31; push ret addr 2610 00002f68 2fbd0008 subui r29,r29,#8; alloc local storage 2611 00002f6c 20010001 addi r1,r0,#1 2612 00002f70 8fdffff8 lw r31,-8(r30) 2613 00002f74 001ee820 add r29,r0,r30 2614 00002f78 8fdefffc lw r30,-4(r30) 2615 00002f7c 4be00000 jr r31 2616 00002f80 54000000 nop 2617 00002f84 .endproc _FsDlxWrite 2618 00002f84 .align 2 2619 00002f84 .proc _FsDlxOpen 2620 00002f84 .global _FsDlxOpen 2621 00002f84 _FsDlxOpen: 2622 ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. 2623 00002f84 afbefffc sw -4(r29),r30; push fp 2624 00002f88 001df020 add r30,r0,r29; fp = sp 2625 00002f8c afbffff8 sw -8(r29),r31; push ret addr 2626 00002f90 2fbd0010 subui r29,r29,#16; alloc local storage 2627 00002f94 afa20000 sw 0(r29),r2 2628 00002f98 8fc10000 lw r1,(r30) 2629 00002f9c 50220004 slli r2,r1,#0x4 2630 00002fa0 00411020 add r2,r2,r1 2631 00002fa4 50420002 slli r2,r2,#0x2 2632 00002fa8 00410822 sub r1,r2,r1 2633 00002fac 50210002 slli r1,r1,#0x2 2634 00002fb0 3c1f0000 lhi r31,((_openfiles_LF3)>>16)&0xffff 2635 00002fb4 27ffd2a4 addui r31,r31,(_openfiles_LF3)&0xffff 2636 00002fb8 003f0820 add r1,r1,r31 2637 00002fbc 201f0000 addi r31,r0,#0 2638 00002fc0 ac3f0108 sw 264(r1),r31 2639 00002fc4 20010001 addi r1,r0,#1 2640 00002fc8 8fa20000 lw r2,0(r29) 2641 00002fcc 8fdffff8 lw r31,-8(r30) 2642 00002fd0 001ee820 add r29,r0,r30 2643 00002fd4 8fdefffc lw r30,-4(r30) 2644 00002fd8 4be00000 jr r31 2645 00002fdc 54000000 nop 2646 00002fe0 .endproc _FsDlxOpen 2647 00002fe0 .align 2 2648 00002fe0 .proc _FsDlxSeek 2649 00002fe0 .global _FsDlxSeek 2650 00002fe0 _FsDlxSeek: 2651 ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. 2652 00002fe0 afbefffc sw -4(r29),r30; push fp 2653 00002fe4 001df020 add r30,r0,r29; fp = sp 2654 00002fe8 afbffff8 sw -8(r29),r31; push ret addr 2655 00002fec 2fbd0010 subui r29,r29,#16; alloc local storage 2656 00002ff0 afa20000 sw 0(r29),r2 2657 00002ff4 8fc10000 lw r1,(r30) 2658 00002ff8 50220004 slli r2,r1,#0x4 2659 00002ffc 00411020 add r2,r2,r1 2660 00003000 50420002 slli r2,r2,#0x2 2661 00003004 00410822 sub r1,r2,r1 2662 00003008 50210002 slli r1,r1,#0x2 2663 0000300c 3c1f0000 lhi r31,((_openfiles_LF3)>>16)&0xffff 2664 00003010 27ffd2a4 addui r31,r31,(_openfiles_LF3)&0xffff 2665 00003014 003f0820 add r1,r1,r31 2666 00003018 8c210108 lw r1,264(r1) 2667 0000301c 8fa20000 lw r2,0(r29) 2668 00003020 8fdffff8 lw r31,-8(r30) 2669 00003024 001ee820 add r29,r0,r30 2670 00003028 8fdefffc lw r30,-4(r30) 2671 0000302c 4be00000 jr r31 2672 00003030 54000000 nop 2673 00003034 .endproc _FsDlxSeek 2674 00003034 .align 2 2675 00003034 .proc _FsDlxClose 2676 00003034 .global _FsDlxClose 2677 00003034 _FsDlxClose: 2678 ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. 2679 00003034 afbefffc sw -4(r29),r30; push fp 2680 00003038 001df020 add r30,r0,r29; fp = sp 2681 0000303c afbffff8 sw -8(r29),r31; push ret addr 2682 00003040 2fbd0008 subui r29,r29,#8; alloc local storage 2683 00003044 20010001 addi r1,r0,#1 2684 00003048 8fdffff8 lw r31,-8(r30) 2685 0000304c 001ee820 add r29,r0,r30 2686 00003050 8fdefffc lw r30,-4(r30) 2687 00003054 4be00000 jr r31 2688 00003058 54000000 nop 2689 0000305c .endproc _FsDlxClose 2690 0000305c .align 2 2691 0000305c .proc _FsDlxDelete 2692 0000305c .global _FsDlxDelete 2693 0000305c _FsDlxDelete: 2694 ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. 2695 0000305c afbefffc sw -4(r29),r30; push fp 2696 00003060 001df020 add r30,r0,r29; fp = sp 2697 00003064 afbffff8 sw -8(r29),r31; push ret addr 2698 00003068 2fbd0008 subui r29,r29,#8; alloc local storage 2699 0000306c 20010001 addi r1,r0,#1 2700 00003070 8fdffff8 lw r31,-8(r30) 2701 00003074 001ee820 add r29,r0,r30 2702 00003078 8fdefffc lw r30,-4(r30) 2703 0000307c 4be00000 jr r31 2704 00003080 54000000 nop 2705 00003084 .endproc _FsDlxDelete 2706 00003084 .align 2 2707 00003084 .proc _FsModuleInit 2708 00003084 .global _FsModuleInit 2709 00003084 _FsModuleInit: 2710 ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. 2711 00003084 afbefffc sw -4(r29),r30; push fp 2712 00003088 001df020 add r30,r0,r29; fp = sp 2713 0000308c afbffff8 sw -8(r29),r31; push ret addr 2714 00003090 2fbd0010 subui r29,r29,#16; alloc local storage 2715 00003094 afa20000 sw 0(r29),r2 2716 00003098 afa30004 sw 4(r29),r3 2717 0000309c 3c1f0000 lhi r31,((_openfiles_LF3)>>16)&0xffff 2718 000030a0 27ffd2a4 addui r31,r31,(_openfiles_LF3)&0xffff 2719 000030a4 23e22074 addi r2,r31,#8308 2720 000030a8 L182_LF3: 2721 000030a8 20030000 addi r3,r0,#0 2722 000030ac afe30004 sw 4(r31),r3 2723 000030b0 23ff010c addi r31,r31,#268 2724 000030b4 03e2082c sle r1,r31,r2 2725 000030b8 1420ffec bnez r1,L182_LF3 2726 000030bc 54000000 nop; not filled. 2727 000030c0 3c010000 lhi r1,((_fs_LF3)>>16)&0xffff 2728 000030c4 2421d274 addui r1,r1,(_fs_LF3)&0xffff 2729 000030c8 3c030000 lhi r3,((_FsUnixOpen)>>16)&0xffff 2730 000030cc 24632b98 addui r3,r3,(_FsUnixOpen)&0xffff 2731 000030d0 ac230000 sw (r1),r3 2732 000030d4 3c030000 lhi r3,((_FsUnixClose)>>16)&0xffff 2733 000030d8 24632e74 addui r3,r3,(_FsUnixClose)&0xffff 2734 000030dc ac230010 sw 16(r1),r3 2735 000030e0 3c030000 lhi r3,((_FsUnixRead)>>16)&0xffff 2736 000030e4 24632cc4 addui r3,r3,(_FsUnixRead)&0xffff 2737 000030e8 ac230004 sw 4(r1),r3 2738 000030ec 3c030000 lhi r3,((_FsUnixWrite)>>16)&0xffff 2739 000030f0 24632d54 addui r3,r3,(_FsUnixWrite)&0xffff 2740 000030f4 ac230008 sw 8(r1),r3 2741 000030f8 3c030000 lhi r3,((_FsUnixSeek)>>16)&0xffff 2742 000030fc 24632de4 addui r3,r3,(_FsUnixSeek)&0xffff 2743 00003100 ac23000c sw 12(r1),r3 2744 00003104 3c030000 lhi r3,((_FsUnixDelete)>>16)&0xffff 2745 00003108 24632ee4 addui r3,r3,(_FsUnixDelete)&0xffff 2746 0000310c ac230014 sw 20(r1),r3 2747 00003110 3c030000 lhi r3,((_FsDlxOpen)>>16)&0xffff 2748 00003114 24632f84 addui r3,r3,(_FsDlxOpen)&0xffff 2749 00003118 ac230018 sw 24(r1),r3 2750 0000311c 3c030000 lhi r3,((_FsDlxClose)>>16)&0xffff 2751 00003120 24633034 addui r3,r3,(_FsDlxClose)&0xffff 2752 00003124 ac230028 sw 40(r1),r3 2753 00003128 3c030000 lhi r3,((_FsDlxRead)>>16)&0xffff 2754 0000312c 24632f34 addui r3,r3,(_FsDlxRead)&0xffff 2755 00003130 ac23001c sw 28(r1),r3 2756 00003134 3c030000 lhi r3,((_FsDlxWrite)>>16)&0xffff 2757 00003138 24632f5c addui r3,r3,(_FsDlxWrite)&0xffff 2758 0000313c ac230020 sw 32(r1),r3 2759 00003140 3c030000 lhi r3,((_FsDlxSeek)>>16)&0xffff 2760 00003144 24632fe0 addui r3,r3,(_FsDlxSeek)&0xffff 2761 00003148 ac230024 sw 36(r1),r3 2762 0000314c 3c030000 lhi r3,((_FsDlxDelete)>>16)&0xffff 2763 00003150 2463305c addui r3,r3,(_FsDlxDelete)&0xffff 2764 00003154 ac23002c sw 44(r1),r3 2765 00003158 8fa20000 lw r2,0(r29) 2766 0000315c 8fa30004 lw r3,4(r29) 2767 00003160 8fdffff8 lw r31,-8(r30) 2768 00003164 001ee820 add r29,r0,r30 2769 00003168 8fdefffc lw r30,-4(r30) 2770 0000316c 4be00000 jr r31 2771 00003170 54000000 nop 2772 00003174 .endproc _FsModuleInit 2773 00003174 .data 2774 0000d273 .align 2 2775 0000d274 _fs_LF3: 2776 0000d274 .space 48 2777 0000d2a4 .align 2 2778 0000d2a4 _openfiles_LF3: 2779 0000d2a4 .space 8576 2780 ; Compiled by GCC 2782 0000f424 .align 2 2783 0000f424 _rcsid_LF4: 2784 0000f424 3a206d65 .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 2784 0000f428 6d6f7279 2784 0000f42c 2e632c76 2784 0000f430 20312e31 2784 0000f434 20323030 2784 0000f438 302f3039 2784 0000f43c 2f323020 2784 0000f440 30313a35 2784 0000f444 303a3139 2784 0000f448 20656c6d 2784 0000f44c 20457870 2784 0000f450 20656c6d 2784 0000f454 20303030 2785 0000f458 .text 2786 00003174 .align 2 2787 00003174 .proc _isspace 2788 00003174 .global _isspace 2789 00003174 _isspace: 2790 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 2791 00003174 afbefffc sw -4(r29),r30; push fp 2792 00003178 001df020 add r30,r0,r29; fp = sp 2793 0000317c afbffff8 sw -8(r29),r31; push ret addr 2794 00003180 2fbd0010 subui r29,r29,#16; alloc local storage 2795 00003184 afa20000 sw 0(r29),r2 2796 00003188 83c20003 lb r2,3(r30) 2797 0000318c 201f0000 addi r31,r0,#0 2798 00003190 304100ff andi r1,r2,#0x00ff 2799 00003194 60210020 seqi r1,r1,#32 2800 00003198 14200018 bnez r1,L6_LF4 2801 0000319c 54000000 nop; not filled. 2802 000031a0 2041fff7 addi r1,r2,#-9 2803 000031a4 302100ff andi r1,r1,#0x00ff 2804 000031a8 70210001 sleui r1,r1,#1 2805 000031ac 10200008 beqz r1,L5_LF4 2806 000031b0 54000000 nop; not filled. 2807 000031b4 L6_LF4: 2808 000031b4 201f0001 addi r31,r0,#1 2809 000031b8 L5_LF4: 2810 000031b8 001f0820 add r1,r0,r31 2811 000031bc 8fa20000 lw r2,0(r29) 2812 000031c0 8fdffff8 lw r31,-8(r30) 2813 000031c4 001ee820 add r29,r0,r30 2814 000031c8 8fdefffc lw r30,-4(r30) 2815 000031cc 4be00000 jr r31 2816 000031d0 54000000 nop 2817 000031d4 .endproc _isspace 2818 000031d4 .align 2 2819 000031d4 .proc _isxdigit 2820 000031d4 .global _isxdigit 2821 000031d4 _isxdigit: 2822 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 2823 000031d4 afbefffc sw -4(r29),r30; push fp 2824 000031d8 001df020 add r30,r0,r29; fp = sp 2825 000031dc afbffff8 sw -8(r29),r31; push ret addr 2826 000031e0 2fbd0010 subui r29,r29,#16; alloc local storage 2827 000031e4 afa20000 sw 0(r29),r2 2828 000031e8 83df0003 lb r31,3(r30) 2829 000031ec 20020000 addi r2,r0,#0 2830 000031f0 23e1ffd0 addi r1,r31,#-48 2831 000031f4 302100ff andi r1,r1,#0x00ff 2832 000031f8 70210009 sleui r1,r1,#9 2833 000031fc 14200028 bnez r1,L12_LF4 2834 00003200 54000000 nop; not filled. 2835 00003204 23e1ff9f addi r1,r31,#-97 2836 00003208 302100ff andi r1,r1,#0x00ff 2837 0000320c 70210005 sleui r1,r1,#5 2838 00003210 14200014 bnez r1,L12_LF4 2839 00003214 54000000 nop; not filled. 2840 00003218 33e100ff andi r1,r31,#0x00ff 2841 0000321c 64210041 snei r1,r1,#65 2842 00003220 14200008 bnez r1,L11_LF4 2843 00003224 54000000 nop; not filled. 2844 00003228 L12_LF4: 2845 00003228 20020001 addi r2,r0,#1 2846 0000322c L11_LF4: 2847 0000322c 00020820 add r1,r0,r2 2848 00003230 8fa20000 lw r2,0(r29) 2849 00003234 8fdffff8 lw r31,-8(r30) 2850 00003238 001ee820 add r29,r0,r30 2851 0000323c 8fdefffc lw r30,-4(r30) 2852 00003240 4be00000 jr r31 2853 00003244 54000000 nop 2854 00003248 .endproc _isxdigit 2855 00003248 .align 2 2856 00003248 .proc _DisableIntrs 2857 00003248 .global _DisableIntrs 2858 00003248 _DisableIntrs: 2859 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 2860 00003248 afbefffc sw -4(r29),r30; push fp 2861 0000324c 001df020 add r30,r0,r29; fp = sp 2862 00003250 afbffff8 sw -8(r29),r31; push ret addr 2863 00003254 2fbd0010 subui r29,r29,#16; alloc local storage 2864 00003258 afa20000 sw 0(r29),r2 2865 0000325c 23bdfff8 addi r29,r29,#-8 2866 00003260 2002000f addi r2,r0,#15 2867 00003264 afa20000 sw (r29),r2 2868 00003268 0fffe01c jal _SetIntrs 2869 0000326c 54000000 nop; not filled. 2870 00003270 23bd0008 addi r29,r29,#8 2871 00003274 8fa20000 lw r2,0(r29) 2872 00003278 8fdffff8 lw r31,-8(r30) 2873 0000327c 001ee820 add r29,r0,r30 2874 00003280 8fdefffc lw r30,-4(r30) 2875 00003284 4be00000 jr r31 2876 00003288 54000000 nop 2877 0000328c .endproc _DisableIntrs 2878 0000328c .align 2 2879 0000328c .proc _EnableIntrs 2880 0000328c .global _EnableIntrs 2881 0000328c _EnableIntrs: 2882 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 2883 0000328c afbefffc sw -4(r29),r30; push fp 2884 00003290 001df020 add r30,r0,r29; fp = sp 2885 00003294 afbffff8 sw -8(r29),r31; push ret addr 2886 00003298 2fbd0010 subui r29,r29,#16; alloc local storage 2887 0000329c afa20000 sw 0(r29),r2 2888 000032a0 23bdfff8 addi r29,r29,#-8 2889 000032a4 20020000 addi r2,r0,#0 2890 000032a8 afa20000 sw (r29),r2 2891 000032ac 0fffdfd8 jal _SetIntrs 2892 000032b0 54000000 nop; not filled. 2893 000032b4 23bd0008 addi r29,r29,#8 2894 000032b8 8fa20000 lw r2,0(r29) 2895 000032bc 8fdffff8 lw r31,-8(r30) 2896 000032c0 001ee820 add r29,r0,r30 2897 000032c4 8fdefffc lw r30,-4(r30) 2898 000032c8 4be00000 jr r31 2899 000032cc 54000000 nop 2900 000032d0 .endproc _EnableIntrs 2901 000032d0 .align 2 2902 000032d0 .proc _RestoreIntrs 2903 000032d0 .global _RestoreIntrs 2904 000032d0 _RestoreIntrs: 2905 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 2906 000032d0 afbefffc sw -4(r29),r30; push fp 2907 000032d4 001df020 add r30,r0,r29; fp = sp 2908 000032d8 afbffff8 sw -8(r29),r31; push ret addr 2909 000032dc 2fbd0010 subui r29,r29,#16; alloc local storage 2910 000032e0 afa20000 sw 0(r29),r2 2911 000032e4 23bdfff8 addi r29,r29,#-8 2912 000032e8 8fc20000 lw r2,(r30) 2913 000032ec afa20000 sw (r29),r2 2914 000032f0 0fffdf94 jal _SetIntrs 2915 000032f4 54000000 nop; not filled. 2916 000032f8 23bd0008 addi r29,r29,#8 2917 000032fc 8fa20000 lw r2,0(r29) 2918 00003300 8fdffff8 lw r31,-8(r30) 2919 00003304 001ee820 add r29,r0,r30 2920 00003308 8fdefffc lw r30,-4(r30) 2921 0000330c 4be00000 jr r31 2922 00003310 54000000 nop 2923 00003314 .endproc _RestoreIntrs 2924 00003314 .align 2 2925 00003314 .proc _QueueLinkInit 2926 00003314 .global _QueueLinkInit 2927 00003314 _QueueLinkInit: 2928 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 2929 00003314 afbefffc sw -4(r29),r30; push fp 2930 00003318 001df020 add r30,r0,r29; fp = sp 2931 0000331c afbffff8 sw -8(r29),r31; push ret addr 2932 00003320 2fbd0010 subui r29,r29,#16; alloc local storage 2933 00003324 afa20000 sw 0(r29),r2 2934 00003328 8fc10000 lw r1,(r30) 2935 0000332c 8fc20004 lw r2,4(r30) 2936 00003330 201f0000 addi r31,r0,#0 2937 00003334 ac3f0000 sw (r1),r31 2938 00003338 ac22000c sw 12(r1),r2 2939 0000333c 8fa20000 lw r2,0(r29) 2940 00003340 8fdffff8 lw r31,-8(r30) 2941 00003344 001ee820 add r29,r0,r30 2942 00003348 8fdefffc lw r30,-4(r30) 2943 0000334c 4be00000 jr r31 2944 00003350 54000000 nop 2945 00003354 .endproc _QueueLinkInit 2946 00003354 .align 2 2947 00003354 .proc _QueueNext 2948 00003354 .global _QueueNext 2949 00003354 _QueueNext: 2950 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 2951 00003354 afbefffc sw -4(r29),r30; push fp 2952 00003358 001df020 add r30,r0,r29; fp = sp 2953 0000335c afbffff8 sw -8(r29),r31; push ret addr 2954 00003360 2fbd0008 subui r29,r29,#8; alloc local storage 2955 00003364 8fc10000 lw r1,(r30) 2956 00003368 8c210000 lw r1,(r1) 2957 0000336c 8fdffff8 lw r31,-8(r30) 2958 00003370 001ee820 add r29,r0,r30 2959 00003374 8fdefffc lw r30,-4(r30) 2960 00003378 4be00000 jr r31 2961 0000337c 54000000 nop 2962 00003380 .endproc _QueueNext 2963 00003380 .align 2 2964 00003380 .proc _QueuePrev 2965 00003380 .global _QueuePrev 2966 00003380 _QueuePrev: 2967 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 2968 00003380 afbefffc sw -4(r29),r30; push fp 2969 00003384 001df020 add r30,r0,r29; fp = sp 2970 00003388 afbffff8 sw -8(r29),r31; push ret addr 2971 0000338c 2fbd0008 subui r29,r29,#8; alloc local storage 2972 00003390 8fc10000 lw r1,(r30) 2973 00003394 8c210004 lw r1,4(r1) 2974 00003398 8fdffff8 lw r31,-8(r30) 2975 0000339c 001ee820 add r29,r0,r30 2976 000033a0 8fdefffc lw r30,-4(r30) 2977 000033a4 4be00000 jr r31 2978 000033a8 54000000 nop 2979 000033ac .endproc _QueuePrev 2980 000033ac .align 2 2981 000033ac .proc _QueueFirst 2982 000033ac .global _QueueFirst 2983 000033ac _QueueFirst: 2984 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 2985 000033ac afbefffc sw -4(r29),r30; push fp 2986 000033b0 001df020 add r30,r0,r29; fp = sp 2987 000033b4 afbffff8 sw -8(r29),r31; push ret addr 2988 000033b8 2fbd0008 subui r29,r29,#8; alloc local storage 2989 000033bc 8fc10000 lw r1,(r30) 2990 000033c0 8c210000 lw r1,(r1) 2991 000033c4 8fdffff8 lw r31,-8(r30) 2992 000033c8 001ee820 add r29,r0,r30 2993 000033cc 8fdefffc lw r30,-4(r30) 2994 000033d0 4be00000 jr r31 2995 000033d4 54000000 nop 2996 000033d8 .endproc _QueueFirst 2997 000033d8 .align 2 2998 000033d8 .proc _QueueLast 2999 000033d8 .global _QueueLast 3000 000033d8 _QueueLast: 3001 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 3002 000033d8 afbefffc sw -4(r29),r30; push fp 3003 000033dc 001df020 add r30,r0,r29; fp = sp 3004 000033e0 afbffff8 sw -8(r29),r31; push ret addr 3005 000033e4 2fbd0008 subui r29,r29,#8; alloc local storage 3006 000033e8 8fc10000 lw r1,(r30) 3007 000033ec 8c210004 lw r1,4(r1) 3008 000033f0 8fdffff8 lw r31,-8(r30) 3009 000033f4 001ee820 add r29,r0,r30 3010 000033f8 8fdefffc lw r30,-4(r30) 3011 000033fc 4be00000 jr r31 3012 00003400 54000000 nop 3013 00003404 .endproc _QueueLast 3014 00003404 .align 2 3015 00003404 .proc _QueueInsertAfter 3016 00003404 .global _QueueInsertAfter 3017 00003404 _QueueInsertAfter: 3018 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 3019 00003404 afbefffc sw -4(r29),r30; push fp 3020 00003408 001df020 add r30,r0,r29; fp = sp 3021 0000340c afbffff8 sw -8(r29),r31; push ret addr 3022 00003410 2fbd0010 subui r29,r29,#16; alloc local storage 3023 00003414 afa20000 sw 0(r29),r2 3024 00003418 afa30004 sw 4(r29),r3 3025 0000341c 8fc30000 lw r3,(r30) 3026 00003420 8fc20004 lw r2,4(r30) 3027 00003424 8fc10008 lw r1,8(r30) 3028 00003428 ac230008 sw 8(r1),r3 3029 0000342c ac220004 sw 4(r1),r2 3030 00003430 8c5f0000 lw r31,(r2) 3031 00003434 ac3f0000 sw (r1),r31 3032 00003438 ac410000 sw (r2),r1 3033 0000343c 8c220000 lw r2,(r1) 3034 00003440 ac410004 sw 4(r2),r1 3035 00003444 8c610008 lw r1,8(r3) 3036 00003448 20210001 addi r1,r1,#1 3037 0000344c ac610008 sw 8(r3),r1 3038 00003450 8fa20000 lw r2,0(r29) 3039 00003454 8fa30004 lw r3,4(r29) 3040 00003458 8fdffff8 lw r31,-8(r30) 3041 0000345c 001ee820 add r29,r0,r30 3042 00003460 8fdefffc lw r30,-4(r30) 3043 00003464 4be00000 jr r31 3044 00003468 54000000 nop 3045 0000346c .endproc _QueueInsertAfter 3046 0000346c .align 2 3047 0000346c .proc _QueueInsertFirst 3048 0000346c .global _QueueInsertFirst 3049 0000346c _QueueInsertFirst: 3050 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 3051 0000346c afbefffc sw -4(r29),r30; push fp 3052 00003470 001df020 add r30,r0,r29; fp = sp 3053 00003474 afbffff8 sw -8(r29),r31; push ret addr 3054 00003478 2fbd0010 subui r29,r29,#16; alloc local storage 3055 0000347c afa20000 sw 0(r29),r2 3056 00003480 afa30004 sw 4(r29),r3 3057 00003484 8fc30000 lw r3,(r30) 3058 00003488 8fc10004 lw r1,4(r30) 3059 0000348c ac230008 sw 8(r1),r3 3060 00003490 ac230004 sw 4(r1),r3 3061 00003494 8c7f0000 lw r31,(r3) 3062 00003498 ac3f0000 sw (r1),r31 3063 0000349c ac610000 sw (r3),r1 3064 000034a0 8c220000 lw r2,(r1) 3065 000034a4 ac410004 sw 4(r2),r1 3066 000034a8 8c610008 lw r1,8(r3) 3067 000034ac 20210001 addi r1,r1,#1 3068 000034b0 ac610008 sw 8(r3),r1 3069 000034b4 8fa20000 lw r2,0(r29) 3070 000034b8 8fa30004 lw r3,4(r29) 3071 000034bc 8fdffff8 lw r31,-8(r30) 3072 000034c0 001ee820 add r29,r0,r30 3073 000034c4 8fdefffc lw r30,-4(r30) 3074 000034c8 4be00000 jr r31 3075 000034cc 54000000 nop 3076 000034d0 .endproc _QueueInsertFirst 3077 000034d0 .align 2 3078 000034d0 .proc _QueueInsertLast 3079 000034d0 .global _QueueInsertLast 3080 000034d0 _QueueInsertLast: 3081 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 3082 000034d0 afbefffc sw -4(r29),r30; push fp 3083 000034d4 001df020 add r30,r0,r29; fp = sp 3084 000034d8 afbffff8 sw -8(r29),r31; push ret addr 3085 000034dc 2fbd0010 subui r29,r29,#16; alloc local storage 3086 000034e0 afa20000 sw 0(r29),r2 3087 000034e4 afa30004 sw 4(r29),r3 3088 000034e8 8fc30000 lw r3,(r30) 3089 000034ec 8fc10004 lw r1,4(r30) 3090 000034f0 8c620004 lw r2,4(r3) 3091 000034f4 ac230008 sw 8(r1),r3 3092 000034f8 ac220004 sw 4(r1),r2 3093 000034fc 8c5f0000 lw r31,(r2) 3094 00003500 ac3f0000 sw (r1),r31 3095 00003504 ac410000 sw (r2),r1 3096 00003508 8c220000 lw r2,(r1) 3097 0000350c ac410004 sw 4(r2),r1 3098 00003510 8c610008 lw r1,8(r3) 3099 00003514 20210001 addi r1,r1,#1 3100 00003518 ac610008 sw 8(r3),r1 3101 0000351c 8fa20000 lw r2,0(r29) 3102 00003520 8fa30004 lw r3,4(r29) 3103 00003524 8fdffff8 lw r31,-8(r30) 3104 00003528 001ee820 add r29,r0,r30 3105 0000352c 8fdefffc lw r30,-4(r30) 3106 00003530 4be00000 jr r31 3107 00003534 54000000 nop 3108 00003538 .endproc _QueueInsertLast 3109 00003538 .align 2 3110 00003538 .proc _QueueRemove 3111 00003538 .global _QueueRemove 3112 00003538 _QueueRemove: 3113 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 3114 00003538 afbefffc sw -4(r29),r30; push fp 3115 0000353c 001df020 add r30,r0,r29; fp = sp 3116 00003540 afbffff8 sw -8(r29),r31; push ret addr 3117 00003544 2fbd0010 subui r29,r29,#16; alloc local storage 3118 00003548 afa20000 sw 0(r29),r2 3119 0000354c afa30004 sw 4(r29),r3 3120 00003550 8fdf0000 lw r31,(r30) 3121 00003554 8fe10008 lw r1,8(r31) 3122 00003558 8c210008 lw r1,8(r1) 3123 0000355c 6c210000 sgti r1,r1,#0 3124 00003560 1020002c beqz r1,L44_LF4 3125 00003564 54000000 nop; not filled. 3126 00003568 8fe10004 lw r1,4(r31) 3127 0000356c 8fe30000 lw r3,(r31) 3128 00003570 ac230000 sw (r1),r3 3129 00003574 8fe10000 lw r1,(r31) 3130 00003578 8fe30004 lw r3,4(r31) 3131 0000357c ac230004 sw 4(r1),r3 3132 00003580 8fe20008 lw r2,8(r31) 3133 00003584 8c410008 lw r1,8(r2) 3134 00003588 2021ffff addi r1,r1,#-1 3135 0000358c ac410008 sw 8(r2),r1 3136 00003590 L44_LF4: 3137 00003590 20030000 addi r3,r0,#0 3138 00003594 afe30000 sw (r31),r3 3139 00003598 8fa20000 lw r2,0(r29) 3140 0000359c 8fa30004 lw r3,4(r29) 3141 000035a0 8fdffff8 lw r31,-8(r30) 3142 000035a4 001ee820 add r29,r0,r30 3143 000035a8 8fdefffc lw r30,-4(r30) 3144 000035ac 4be00000 jr r31 3145 000035b0 54000000 nop 3146 000035b4 .endproc _QueueRemove 3147 000035b4 .align 2 3148 000035b4 .proc _QueueLength 3149 000035b4 .global _QueueLength 3150 000035b4 _QueueLength: 3151 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 3152 000035b4 afbefffc sw -4(r29),r30; push fp 3153 000035b8 001df020 add r30,r0,r29; fp = sp 3154 000035bc afbffff8 sw -8(r29),r31; push ret addr 3155 000035c0 2fbd0008 subui r29,r29,#8; alloc local storage 3156 000035c4 8fc10000 lw r1,(r30) 3157 000035c8 8c210008 lw r1,8(r1) 3158 000035cc 8fdffff8 lw r31,-8(r30) 3159 000035d0 001ee820 add r29,r0,r30 3160 000035d4 8fdefffc lw r30,-4(r30) 3161 000035d8 4be00000 jr r31 3162 000035dc 54000000 nop 3163 000035e0 .endproc _QueueLength 3164 000035e0 .align 2 3165 000035e0 .proc _QueueEmpty 3166 000035e0 .global _QueueEmpty 3167 000035e0 _QueueEmpty: 3168 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 3169 000035e0 afbefffc sw -4(r29),r30; push fp 3170 000035e4 001df020 add r30,r0,r29; fp = sp 3171 000035e8 afbffff8 sw -8(r29),r31; push ret addr 3172 000035ec 2fbd0008 subui r29,r29,#8; alloc local storage 3173 000035f0 8fc10000 lw r1,(r30) 3174 000035f4 8c210008 lw r1,8(r1) 3175 000035f8 60210000 seqi r1,r1,#0 3176 000035fc 8fdffff8 lw r31,-8(r30) 3177 00003600 001ee820 add r29,r0,r30 3178 00003604 8fdefffc lw r30,-4(r30) 3179 00003608 4be00000 jr r31 3180 0000360c 54000000 nop 3181 00003610 .endproc _QueueEmpty 3182 00003610 .data 3183 0000f458 .align 2 3184 0000f458 _negativeone_LF4: 3185 0000f458 ffffffff .word -1 3186 0000f45c .text 3187 00003610 .align 2 3188 00003610 .proc _MemoryGetSize 3189 00003610 .global _MemoryGetSize 3190 00003610 _MemoryGetSize: 3191 ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. 3192 00003610 afbefffc sw -4(r29),r30; push fp 3193 00003614 001df020 add r30,r0,r29; fp = sp 3194 00003618 afbffff8 sw -8(r29),r31; push ret addr 3195 0000361c 2fbd0008 subui r29,r29,#8; alloc local storage 3196 00003620 3c01ffff lhi r1,#-1 3197 00003624 24210000 addui r1,r1,#0 3198 00003628 8c210000 lw r1,(r1) 3199 0000362c 8fdffff8 lw r31,-8(r30) 3200 00003630 001ee820 add r29,r0,r30 3201 00003634 8fdefffc lw r30,-4(r30) 3202 00003638 4be00000 jr r31 3203 0000363c 54000000 nop 3204 00003640 .endproc _MemoryGetSize 3205 00003640 .data 3206 0000f45c .align 2 3207 0000f45c LC0_LF4: 3208 0000f45c 53657420 .ascii "Set freemap entry %d to 0x%x.\n\000" 3208 0000f460 66726565 3208 0000f464 6d617020 3208 0000f468 656e7472 3208 0000f46c 79202564 3208 0000f470 20746f20 3208 0000f474 30782578 3208 0000f478 2e0a00 3209 0000f47b .text 3210 00003640 .align 2 3211 00003640 .proc _MemorySetFreemap 3212 00003640 .global _MemorySetFreemap 3213 00003640 _MemorySetFreemap: 3214 ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. 3215 00003640 afbefffc sw -4(r29),r30; push fp 3216 00003644 001df020 add r30,r0,r29; fp = sp 3217 00003648 afbffff8 sw -8(r29),r31; push ret addr 3218 0000364c 2fbd0020 subui r29,r29,#32; alloc local storage 3219 00003650 afa20000 sw 0(r29),r2 3220 00003654 afa30004 sw 4(r29),r3 3221 00003658 afa40008 sw 8(r29),r4 3222 0000365c afa5000c sw 12(r29),r5 3223 00003660 afa60010 sw 16(r29),r6 3224 00003664 8fc30000 lw r3,(r30) 3225 00003668 8fdf0004 lw r31,4(r30) 3226 0000366c 00031020 add r2,r0,r3 3227 00003670 74610000 sgei r1,r3,#0 3228 00003674 14200008 bnez r1,L61_LF4 3229 00003678 54000000 nop; not filled. 3230 0000367c 2062001f addi r2,r3,#31 3231 00003680 L61_LF4: 3232 00003680 5c450005 srai r5,r2,#0x5 3233 00003684 50a10005 slli r1,r5,#0x5 3234 00003688 00611822 sub r3,r3,r1 3235 0000368c 20010001 addi r1,r0,#1 3236 00003690 00231004 sll r2,r1,r3 3237 00003694 3c010000 lhi r1,((_negativeone_LF4)>>16)&0xffff 3238 00003698 2421f458 addui r1,r1,(_negativeone_LF4)&0xffff 3239 0000369c 8c210000 lw r1,(r1) 3240 000036a0 00411026 xor r2,r2,r1 3241 000036a4 50a10002 slli r1,r5,#0x2 3242 000036a8 3c060000 lhi r6,((_freepages_LF4)>>16)&0xffff 3243 000036ac 24c6f5cc addui r6,r6,(_freepages_LF4)&0xffff 3244 000036b0 00262020 add r4,r1,r6 3245 000036b4 8c810000 lw r1,(r4) 3246 000036b8 00221024 and r2,r1,r2 3247 000036bc 03e30804 sll r1,r31,r3 3248 000036c0 00410825 or r1,r2,r1 3249 000036c4 ac810000 sw (r4),r1 3250 000036c8 23bdfff8 addi r29,r29,#-8 3251 000036cc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3252 000036d0 24421f50 addui r2,r2,(_debugstr)&0xffff 3253 000036d4 afa20000 sw (r29),r2 3254 000036d8 2006006d addi r6,r0,#109 3255 000036dc afa60004 sw 4(r29),r6 3256 000036e0 0c001354 jal _dindex 3257 000036e4 54000000 nop; not filled. 3258 000036e8 23bd0008 addi r29,r29,#8 3259 000036ec 64210000 snei r1,r1,#0 3260 000036f0 1420002c bnez r1,L65_LF4 3261 000036f4 54000000 nop; not filled. 3262 000036f8 23bdfff8 addi r29,r29,#-8 3263 000036fc afa20000 sw (r29),r2 3264 00003700 2006002b addi r6,r0,#43 3265 00003704 afa60004 sw 4(r29),r6 3266 00003708 0c00132c jal _dindex 3267 0000370c 54000000 nop; not filled. 3268 00003710 23bd0008 addi r29,r29,#8 3269 00003714 64210000 snei r1,r1,#0 3270 00003718 1020002c beqz r1,L64_LF4 3271 0000371c 54000000 nop; not filled. 3272 00003720 L65_LF4: 3273 00003720 23bdfff0 addi r29,r29,#-16 3274 00003724 3c060000 lhi r6,((LC0_LF4)>>16)&0xffff 3275 00003728 24c6f45c addui r6,r6,(LC0_LF4)&0xffff 3276 0000372c afa60000 sw (r29),r6 3277 00003730 afa50004 sw 4(r29),r5 3278 00003734 8c840000 lw r4,(r4) 3279 00003738 afa40008 sw 8(r29),r4 3280 0000373c 0c008ad4 jal _printf 3281 00003740 54000000 nop; not filled. 3282 00003744 23bd0010 addi r29,r29,#16 3283 00003748 L64_LF4: 3284 00003748 8fa20000 lw r2,0(r29) 3285 0000374c 8fa30004 lw r3,4(r29) 3286 00003750 8fa40008 lw r4,8(r29) 3287 00003754 8fa5000c lw r5,12(r29) 3288 00003758 8fa60010 lw r6,16(r29) 3289 0000375c 8fdffff8 lw r31,-8(r30) 3290 00003760 001ee820 add r29,r0,r30 3291 00003764 8fdefffc lw r30,-4(r30) 3292 00003768 4be00000 jr r31 3293 0000376c 54000000 nop 3294 00003770 .endproc _MemorySetFreemap 3295 00003770 .data 3296 0000f47b .align 2 3297 0000f47c LC1_LF4: 3298 0000f47c 4d617020 .ascii "Map has %d entries, memory size is 0x%x.\n\000" 3298 0000f480 68617320 3298 0000f484 25642065 3298 0000f488 6e747269 3298 0000f48c 65732c20 3298 0000f490 6d656d6f 3298 0000f494 72792073 3298 0000f498 697a6520 3298 0000f49c 69732030 3298 0000f4a0 7825782e 3298 0000f4a4 0a00 3299 0000f4a6 .align 2 3300 0000f4a8 LC2_LF4: 3301 0000f4a8 46726565 .ascii "Free pages start with page # 0x%x.\n\000" 3301 0000f4ac 20706167 3301 0000f4b0 65732073 3301 0000f4b4 74617274 3301 0000f4b8 20776974 3301 0000f4bc 68207061 3301 0000f4c0 67652023 3301 0000f4c4 20307825 3301 0000f4c8 782e0a00 3302 0000f4cc .align 2 3303 0000f4cc LC3_LF4: 3304 0000f4cc 496e6974 .ascii "Initialized %d free pages.\n\000" 3304 0000f4d0 69616c69 3304 0000f4d4 7a656420 3304 0000f4d8 25642066 3304 0000f4dc 72656520 3304 0000f4e0 70616765 3304 0000f4e4 732e0a00 3305 0000f4e8 .text 3306 00003770 .align 2 3307 00003770 .proc _MemoryModuleInit 3308 00003770 .global _MemoryModuleInit 3309 00003770 _MemoryModuleInit: 3310 ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. 3311 00003770 afbefffc sw -4(r29),r30; push fp 3312 00003774 001df020 add r30,r0,r29; fp = sp 3313 00003778 afbffff8 sw -8(r29),r31; push ret addr 3314 0000377c 2fbd0030 subui r29,r29,#48; alloc local storage 3315 00003780 afa20000 sw 0(r29),r2 3316 00003784 afa30004 sw 4(r29),r3 3317 00003788 afa40008 sw 8(r29),r4 3318 0000378c afa5000c sw 12(r29),r5 3319 00003790 afa60010 sw 16(r29),r6 3320 00003794 afa70014 sw 20(r29),r7 3321 00003798 afa80018 sw 24(r29),r8 3322 0000379c afa9001c sw 28(r29),r9 3323 000037a0 afaa0020 sw 32(r29),r10 3324 000037a4 afab0024 sw 36(r29),r11 3325 000037a8 3c01ffff lhi r1,#-1 3326 000037ac 24210000 addui r1,r1,#0 3327 000037b0 8c220000 lw r2,(r1) 3328 000037b4 74410000 sgei r1,r2,#0 3329 000037b8 14200008 bnez r1,L68_LF4 3330 000037bc 54000000 nop; not filled. 3331 000037c0 2442ffff addui r2,r2,#65535 3332 000037c4 L68_LF4: 3333 000037c4 5c480010 srai r8,r2,#0x10 3334 000037c8 3c030000 lhi r3,((_pagestart_LF4)>>16)&0xffff 3335 000037cc 2463f5c0 addui r3,r3,(_pagestart_LF4)&0xffff 3336 000037d0 3c010001 lhi r1,((_lastosaddress)>>16)&0xffff 3337 000037d4 24215804 addui r1,r1,(_lastosaddress)&0xffff 3338 000037d8 8c210000 lw r1,(r1) 3339 000037dc 2422fffc addui r2,r1,#65532 3340 000037e0 74410000 sgei r1,r2,#0 3341 000037e4 14200008 bnez r1,L69_LF4 3342 000037e8 54000000 nop; not filled. 3343 000037ec 2442ffff addui r2,r2,#65535 3344 000037f0 L69_LF4: 3345 000037f0 5c410010 srai r1,r2,#0x10 3346 000037f4 ac610000 sw (r3),r1 3347 000037f8 3c030000 lhi r3,((_freemapmax_LF4)>>16)&0xffff 3348 000037fc 2463f5c4 addui r3,r3,(_freemapmax_LF4)&0xffff 3349 00003800 2102001f addi r2,r8,#31 3350 00003804 74410000 sgei r1,r2,#0 3351 00003808 14200008 bnez r1,L70_LF4 3352 0000380c 54000000 nop; not filled. 3353 00003810 2102003e addi r2,r8,#62 3354 00003814 L70_LF4: 3355 00003814 5c410005 srai r1,r2,#0x5 3356 00003818 ac610000 sw (r3),r1 3357 0000381c 23bdfff8 addi r29,r29,#-8 3358 00003820 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3359 00003824 24421f50 addui r2,r2,(_debugstr)&0xffff 3360 00003828 afa20000 sw (r29),r2 3361 0000382c 200b006d addi r11,r0,#109 3362 00003830 afab0004 sw 4(r29),r11 3363 00003834 0c001200 jal _dindex 3364 00003838 54000000 nop; not filled. 3365 0000383c 23bd0008 addi r29,r29,#8 3366 00003840 64210000 snei r1,r1,#0 3367 00003844 1420002c bnez r1,L72_LF4 3368 00003848 54000000 nop; not filled. 3369 0000384c 23bdfff8 addi r29,r29,#-8 3370 00003850 afa20000 sw (r29),r2 3371 00003854 200b002b addi r11,r0,#43 3372 00003858 afab0004 sw 4(r29),r11 3373 0000385c 0c0011d8 jal _dindex 3374 00003860 54000000 nop; not filled. 3375 00003864 23bd0008 addi r29,r29,#8 3376 00003868 64210000 snei r1,r1,#0 3377 0000386c 1020002c beqz r1,L71_LF4 3378 00003870 54000000 nop; not filled. 3379 00003874 L72_LF4: 3380 00003874 23bdfff0 addi r29,r29,#-16 3381 00003878 3c0b0000 lhi r11,((LC1_LF4)>>16)&0xffff 3382 0000387c 256bf47c addui r11,r11,(LC1_LF4)&0xffff 3383 00003880 afab0000 sw (r29),r11 3384 00003884 8c610000 lw r1,(r3) 3385 00003888 afa10004 sw 4(r29),r1 3386 0000388c afa80008 sw 8(r29),r8 3387 00003890 0c008980 jal _printf 3388 00003894 54000000 nop; not filled. 3389 00003898 23bd0010 addi r29,r29,#16 3390 0000389c L71_LF4: 3391 0000389c 23bdfff8 addi r29,r29,#-8 3392 000038a0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3393 000038a4 24421f50 addui r2,r2,(_debugstr)&0xffff 3394 000038a8 afa20000 sw (r29),r2 3395 000038ac 200b006d addi r11,r0,#109 3396 000038b0 afab0004 sw 4(r29),r11 3397 000038b4 0c001180 jal _dindex 3398 000038b8 54000000 nop; not filled. 3399 000038bc 23bd0008 addi r29,r29,#8 3400 000038c0 64210000 snei r1,r1,#0 3401 000038c4 1420002c bnez r1,L74_LF4 3402 000038c8 54000000 nop; not filled. 3403 000038cc 23bdfff8 addi r29,r29,#-8 3404 000038d0 afa20000 sw (r29),r2 3405 000038d4 200b002b addi r11,r0,#43 3406 000038d8 afab0004 sw 4(r29),r11 3407 000038dc 0c001158 jal _dindex 3408 000038e0 54000000 nop; not filled. 3409 000038e4 23bd0008 addi r29,r29,#8 3410 000038e8 64210000 snei r1,r1,#0 3411 000038ec 10200030 beqz r1,L73_LF4 3412 000038f0 54000000 nop; not filled. 3413 000038f4 L74_LF4: 3414 000038f4 23bdfff8 addi r29,r29,#-8 3415 000038f8 3c0b0000 lhi r11,((LC2_LF4)>>16)&0xffff 3416 000038fc 256bf4a8 addui r11,r11,(LC2_LF4)&0xffff 3417 00003900 afab0000 sw (r29),r11 3418 00003904 3c010000 lhi r1,((_pagestart_LF4)>>16)&0xffff 3419 00003908 2421f5c0 addui r1,r1,(_pagestart_LF4)&0xffff 3420 0000390c 8c210000 lw r1,(r1) 3421 00003910 afa10004 sw 4(r29),r1 3422 00003914 0c0088fc jal _printf 3423 00003918 54000000 nop; not filled. 3424 0000391c 23bd0008 addi r29,r29,#8 3425 00003920 L73_LF4: 3426 00003920 20020000 addi r2,r0,#0 3427 00003924 3c040000 lhi r4,((_freemapmax_LF4)>>16)&0xffff 3428 00003928 2484f5c4 addui r4,r4,(_freemapmax_LF4)&0xffff 3429 0000392c 8c810000 lw r1,(r4) 3430 00003930 0041082a slt r1,r2,r1 3431 00003934 1020002c beqz r1,L76_LF4 3432 00003938 54000000 nop; not filled. 3433 0000393c 3c030000 lhi r3,((_freepages_LF4)>>16)&0xffff 3434 00003940 2463f5cc addui r3,r3,(_freepages_LF4)&0xffff 3435 00003944 L78_LF4: 3436 00003944 200b0000 addi r11,r0,#0 3437 00003948 ac6b0000 sw (r3),r11 3438 0000394c 20630004 addi r3,r3,#4 3439 00003950 20420001 addi r2,r2,#1 3440 00003954 8c810000 lw r1,(r4) 3441 00003958 0041082a slt r1,r2,r1 3442 0000395c 1420ffe4 bnez r1,L78_LF4 3443 00003960 54000000 nop; not filled. 3444 00003964 L76_LF4: 3445 00003964 3c020000 lhi r2,((_nfreepages_LF4)>>16)&0xffff 3446 00003968 2442f5c8 addui r2,r2,(_nfreepages_LF4)&0xffff 3447 0000396c 200b0000 addi r11,r0,#0 3448 00003970 ac4b0000 sw (r2),r11 3449 00003974 3c010000 lhi r1,((_pagestart_LF4)>>16)&0xffff 3450 00003978 2421f5c0 addui r1,r1,(_pagestart_LF4)&0xffff 3451 0000397c 8c240000 lw r4,(r1) 3452 00003980 0088082a slt r1,r4,r8 3453 00003984 10200104 beqz r1,L81_LF4 3454 00003988 54000000 nop; not filled. 3455 0000398c 00023820 add r7,r0,r2 3456 00003990 200a0001 addi r10,r0,#1 3457 00003994 3c090000 lhi r9,((_negativeone_LF4)>>16)&0xffff 3458 00003998 2529f458 addui r9,r9,(_negativeone_LF4)&0xffff 3459 0000399c L83_LF4: 3460 0000399c 8ce10000 lw r1,(r7) 3461 000039a0 20210001 addi r1,r1,#1 3462 000039a4 ace10000 sw (r7),r1 3463 000039a8 00041020 add r2,r0,r4 3464 000039ac 74810000 sgei r1,r4,#0 3465 000039b0 14200008 bnez r1,L85_LF4 3466 000039b4 54000000 nop; not filled. 3467 000039b8 2082001f addi r2,r4,#31 3468 000039bc L85_LF4: 3469 000039bc 5c460005 srai r6,r2,#0x5 3470 000039c0 50c10005 slli r1,r6,#0x5 3471 000039c4 00810822 sub r1,r4,r1 3472 000039c8 01411804 sll r3,r10,r1 3473 000039cc 8d210000 lw r1,(r9) 3474 000039d0 00611026 xor r2,r3,r1 3475 000039d4 50c10002 slli r1,r6,#0x2 3476 000039d8 3c0b0000 lhi r11,((_freepages_LF4)>>16)&0xffff 3477 000039dc 256bf5cc addui r11,r11,(_freepages_LF4)&0xffff 3478 000039e0 002b2820 add r5,r1,r11 3479 000039e4 8ca10000 lw r1,(r5) 3480 000039e8 00220824 and r1,r1,r2 3481 000039ec 00230825 or r1,r1,r3 3482 000039f0 aca10000 sw (r5),r1 3483 000039f4 23bdfff8 addi r29,r29,#-8 3484 000039f8 3c0b0001 lhi r11,((_debugstr)>>16)&0xffff 3485 000039fc 256b1f50 addui r11,r11,(_debugstr)&0xffff 3486 00003a00 afab0000 sw (r29),r11 3487 00003a04 200b006d addi r11,r0,#109 3488 00003a08 afab0004 sw 4(r29),r11 3489 00003a0c 0c001028 jal _dindex 3490 00003a10 54000000 nop; not filled. 3491 00003a14 23bd0008 addi r29,r29,#8 3492 00003a18 64210000 snei r1,r1,#0 3493 00003a1c 14200034 bnez r1,L89_LF4 3494 00003a20 54000000 nop; not filled. 3495 00003a24 23bdfff8 addi r29,r29,#-8 3496 00003a28 3c0b0001 lhi r11,((_debugstr)>>16)&0xffff 3497 00003a2c 256b1f50 addui r11,r11,(_debugstr)&0xffff 3498 00003a30 afab0000 sw (r29),r11 3499 00003a34 200b002b addi r11,r0,#43 3500 00003a38 afab0004 sw 4(r29),r11 3501 00003a3c 0c000ff8 jal _dindex 3502 00003a40 54000000 nop; not filled. 3503 00003a44 23bd0008 addi r29,r29,#8 3504 00003a48 64210000 snei r1,r1,#0 3505 00003a4c 1020002c beqz r1,L82_LF4 3506 00003a50 54000000 nop; not filled. 3507 00003a54 L89_LF4: 3508 00003a54 23bdfff0 addi r29,r29,#-16 3509 00003a58 3c0b0000 lhi r11,((LC0_LF4)>>16)&0xffff 3510 00003a5c 256bf45c addui r11,r11,(LC0_LF4)&0xffff 3511 00003a60 afab0000 sw (r29),r11 3512 00003a64 afa60004 sw 4(r29),r6 3513 00003a68 8ca50000 lw r5,(r5) 3514 00003a6c afa50008 sw 8(r29),r5 3515 00003a70 0c0087a0 jal _printf 3516 00003a74 54000000 nop; not filled. 3517 00003a78 23bd0010 addi r29,r29,#16 3518 00003a7c L82_LF4: 3519 00003a7c 20840001 addi r4,r4,#1 3520 00003a80 0088082a slt r1,r4,r8 3521 00003a84 1420ff14 bnez r1,L83_LF4 3522 00003a88 54000000 nop; not filled. 3523 00003a8c L81_LF4: 3524 00003a8c 23bdfff8 addi r29,r29,#-8 3525 00003a90 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3526 00003a94 24421f50 addui r2,r2,(_debugstr)&0xffff 3527 00003a98 afa20000 sw (r29),r2 3528 00003a9c 200b006d addi r11,r0,#109 3529 00003aa0 afab0004 sw 4(r29),r11 3530 00003aa4 0c000f90 jal _dindex 3531 00003aa8 54000000 nop; not filled. 3532 00003aac 23bd0008 addi r29,r29,#8 3533 00003ab0 64210000 snei r1,r1,#0 3534 00003ab4 1420002c bnez r1,L92_LF4 3535 00003ab8 54000000 nop; not filled. 3536 00003abc 23bdfff8 addi r29,r29,#-8 3537 00003ac0 afa20000 sw (r29),r2 3538 00003ac4 200b002b addi r11,r0,#43 3539 00003ac8 afab0004 sw 4(r29),r11 3540 00003acc 0c000f68 jal _dindex 3541 00003ad0 54000000 nop; not filled. 3542 00003ad4 23bd0008 addi r29,r29,#8 3543 00003ad8 64210000 snei r1,r1,#0 3544 00003adc 10200030 beqz r1,L91_LF4 3545 00003ae0 54000000 nop; not filled. 3546 00003ae4 L92_LF4: 3547 00003ae4 23bdfff8 addi r29,r29,#-8 3548 00003ae8 3c0b0000 lhi r11,((LC3_LF4)>>16)&0xffff 3549 00003aec 256bf4cc addui r11,r11,(LC3_LF4)&0xffff 3550 00003af0 afab0000 sw (r29),r11 3551 00003af4 3c010000 lhi r1,((_nfreepages_LF4)>>16)&0xffff 3552 00003af8 2421f5c8 addui r1,r1,(_nfreepages_LF4)&0xffff 3553 00003afc 8c210000 lw r1,(r1) 3554 00003b00 afa10004 sw 4(r29),r1 3555 00003b04 0c00870c jal _printf 3556 00003b08 54000000 nop; not filled. 3557 00003b0c 23bd0008 addi r29,r29,#8 3558 00003b10 L91_LF4: 3559 00003b10 8fa20000 lw r2,0(r29) 3560 00003b14 8fa30004 lw r3,4(r29) 3561 00003b18 8fa40008 lw r4,8(r29) 3562 00003b1c 8fa5000c lw r5,12(r29) 3563 00003b20 8fa60010 lw r6,16(r29) 3564 00003b24 8fa70014 lw r7,20(r29) 3565 00003b28 8fa80018 lw r8,24(r29) 3566 00003b2c 8fa9001c lw r9,28(r29) 3567 00003b30 8faa0020 lw r10,32(r29) 3568 00003b34 8fab0024 lw r11,36(r29) 3569 00003b38 8fdffff8 lw r31,-8(r30) 3570 00003b3c 001ee820 add r29,r0,r30 3571 00003b40 8fdefffc lw r30,-4(r30) 3572 00003b44 4be00000 jr r31 3573 00003b48 54000000 nop 3574 00003b4c .endproc _MemoryModuleInit 3575 00003b4c .data 3576 0000f4e8 .align 2 3577 0000f4e8 _mapnum42_LF4: 3578 0000f4e8 00000000 .word 0 3579 0000f4ec .align 2 3580 0000f4ec LC4_LF4: 3581 0000f4ec 4552524f .ascii "ERROR AT THIS POINT\n\000" 3581 0000f4f0 52204154 3581 0000f4f4 20544849 3581 0000f4f8 5320504f 3581 0000f4fc 494e540a 3581 0000f500 00 3582 0000f501 .align 2 3583 0000f504 LC5_LF4: 3584 0000f504 416c6c6f .ascii "Allocating memory, starting with page %d\n\000" 3584 0000f508 63617469 3584 0000f50c 6e67206d 3584 0000f510 656d6f72 3584 0000f514 792c2073 3584 0000f518 74617274 3584 0000f51c 696e6720 3584 0000f520 77697468 3584 0000f524 20706167 3584 0000f528 65202564 3584 0000f52c 0a00 3585 0000f52e .align 2 3586 0000f530 LC6_LF4: 3587 0000f530 416c6c6f .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" 3587 0000f534 63617465 3587 0000f538 64206d65 3587 0000f53c 6d6f7279 3587 0000f540 2c206672 3587 0000f544 6f6d206d 3587 0000f548 61702025 3587 0000f54c 642c2070 3587 0000f550 61676520 3587 0000f554 25642c20 3587 0000f558 6d61703d 3587 0000f55c 30782578 3587 0000f560 2e0a00 3588 0000f563 .text 3589 00003b4c .align 2 3590 00003b4c .proc _MemoryAllocPage 3591 00003b4c .global _MemoryAllocPage 3592 00003b4c _MemoryAllocPage: 3593 ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. 3594 00003b4c afbefffc sw -4(r29),r30; push fp 3595 00003b50 001df020 add r30,r0,r29; fp = sp 3596 00003b54 afbffff8 sw -8(r29),r31; push ret addr 3597 00003b58 2fbd0020 subui r29,r29,#32; alloc local storage 3598 00003b5c afa20000 sw 0(r29),r2 3599 00003b60 afa30004 sw 4(r29),r3 3600 00003b64 afa40008 sw 8(r29),r4 3601 00003b68 afa5000c sw 12(r29),r5 3602 00003b6c afa60010 sw 16(r29),r6 3603 00003b70 afa70014 sw 20(r29),r7 3604 00003b74 3c010000 lhi r1,((_nfreepages_LF4)>>16)&0xffff 3605 00003b78 2421f5c8 addui r1,r1,(_nfreepages_LF4)&0xffff 3606 00003b7c 8c210000 lw r1,(r1) 3607 00003b80 64210000 snei r1,r1,#0 3608 00003b84 1420002c bnez r1,L111_LF4 3609 00003b88 54000000 nop; not filled. 3610 00003b8c 23bdfff8 addi r29,r29,#-8 3611 00003b90 3c070000 lhi r7,((LC4_LF4)>>16)&0xffff 3612 00003b94 24e7f4ec addui r7,r7,(LC4_LF4)&0xffff 3613 00003b98 afa70000 sw (r29),r7 3614 00003b9c 0c008674 jal _printf 3615 00003ba0 54000000 nop; not filled. 3616 00003ba4 20010000 addi r1,r0,#0 3617 00003ba8 23bd0008 addi r29,r29,#8 3618 00003bac 08000238 j L110_LF4 3619 00003bb0 54000000 nop; not filled. 3620 00003bb4 L111_LF4: 3621 00003bb4 23bdfff8 addi r29,r29,#-8 3622 00003bb8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3623 00003bbc 24421f50 addui r2,r2,(_debugstr)&0xffff 3624 00003bc0 afa20000 sw (r29),r2 3625 00003bc4 2007006d addi r7,r0,#109 3626 00003bc8 afa70004 sw 4(r29),r7 3627 00003bcc 0c000e68 jal _dindex 3628 00003bd0 54000000 nop; not filled. 3629 00003bd4 23bd0008 addi r29,r29,#8 3630 00003bd8 64210000 snei r1,r1,#0 3631 00003bdc 1420002c bnez r1,L113_LF4 3632 00003be0 54000000 nop; not filled. 3633 00003be4 23bdfff8 addi r29,r29,#-8 3634 00003be8 afa20000 sw (r29),r2 3635 00003bec 2007002b addi r7,r0,#43 3636 00003bf0 afa70004 sw 4(r29),r7 3637 00003bf4 0c000e40 jal _dindex 3638 00003bf8 54000000 nop; not filled. 3639 00003bfc 23bd0008 addi r29,r29,#8 3640 00003c00 64210000 snei r1,r1,#0 3641 00003c04 10200030 beqz r1,L112_LF4 3642 00003c08 54000000 nop; not filled. 3643 00003c0c L113_LF4: 3644 00003c0c 23bdfff8 addi r29,r29,#-8 3645 00003c10 3c070000 lhi r7,((LC5_LF4)>>16)&0xffff 3646 00003c14 24e7f504 addui r7,r7,(LC5_LF4)&0xffff 3647 00003c18 afa70000 sw (r29),r7 3648 00003c1c 3c010000 lhi r1,((_mapnum42_LF4)>>16)&0xffff 3649 00003c20 2421f4e8 addui r1,r1,(_mapnum42_LF4)&0xffff 3650 00003c24 8c210000 lw r1,(r1) 3651 00003c28 afa10004 sw 4(r29),r1 3652 00003c2c 0c0085e4 jal _printf 3653 00003c30 54000000 nop; not filled. 3654 00003c34 23bd0008 addi r29,r29,#8 3655 00003c38 L112_LF4: 3656 00003c38 3c020000 lhi r2,((_mapnum42_LF4)>>16)&0xffff 3657 00003c3c 2442f4e8 addui r2,r2,(_mapnum42_LF4)&0xffff 3658 00003c40 8c410000 lw r1,(r2) 3659 00003c44 3c040000 lhi r4,((_freepages_LF4)>>16)&0xffff 3660 00003c48 2484f5cc addui r4,r4,(_freepages_LF4)&0xffff 3661 00003c4c 50210002 slli r1,r1,#0x2 3662 00003c50 00240820 add r1,r1,r4 3663 00003c54 8c210000 lw r1,(r1) 3664 00003c58 64210000 snei r1,r1,#0 3665 00003c5c 1420004c bnez r1,L115_LF4 3666 00003c60 54000000 nop; not filled. 3667 00003c64 3c010000 lhi r1,((_freemapmax_LF4)>>16)&0xffff 3668 00003c68 2421f5c4 addui r1,r1,(_freemapmax_LF4)&0xffff 3669 00003c6c 8c230000 lw r3,(r1) 3670 00003c70 L116_LF4: 3671 00003c70 8c410000 lw r1,(r2) 3672 00003c74 20210001 addi r1,r1,#1 3673 00003c78 ac410000 sw (r2),r1 3674 00003c7c 0023082d sge r1,r1,r3 3675 00003c80 1020000c beqz r1,L114_LF4 3676 00003c84 54000000 nop; not filled. 3677 00003c88 20070000 addi r7,r0,#0 3678 00003c8c ac470000 sw (r2),r7 3679 00003c90 L114_LF4: 3680 00003c90 8c410000 lw r1,(r2) 3681 00003c94 50210002 slli r1,r1,#0x2 3682 00003c98 00240820 add r1,r1,r4 3683 00003c9c 8c210000 lw r1,(r1) 3684 00003ca0 64210000 snei r1,r1,#0 3685 00003ca4 1020ffc8 beqz r1,L116_LF4 3686 00003ca8 54000000 nop; not filled. 3687 00003cac L115_LF4: 3688 00003cac 3c010000 lhi r1,((_mapnum42_LF4)>>16)&0xffff 3689 00003cb0 2421f4e8 addui r1,r1,(_mapnum42_LF4)&0xffff 3690 00003cb4 8c210000 lw r1,(r1) 3691 00003cb8 50210002 slli r1,r1,#0x2 3692 00003cbc 3c070000 lhi r7,((_freepages_LF4)>>16)&0xffff 3693 00003cc0 24e7f5cc addui r7,r7,(_freepages_LF4)&0xffff 3694 00003cc4 00270820 add r1,r1,r7 3695 00003cc8 8c230000 lw r3,(r1) 3696 00003ccc 201f0000 addi r31,r0,#0 3697 00003cd0 30610001 andi r1,r3,#1 3698 00003cd4 14200020 bnez r1,L120_LF4 3699 00003cd8 54000000 nop; not filled. 3700 00003cdc 20020001 addi r2,r0,#1 3701 00003ce0 L121_LF4: 3702 00003ce0 23ff0001 addi r31,r31,#1 3703 00003ce4 005f0804 sll r1,r2,r31 3704 00003ce8 00610824 and r1,r3,r1 3705 00003cec 64210000 snei r1,r1,#0 3706 00003cf0 1020ffec beqz r1,L121_LF4 3707 00003cf4 54000000 nop; not filled. 3708 00003cf8 L120_LF4: 3709 00003cf8 20010001 addi r1,r0,#1 3710 00003cfc 003f1004 sll r2,r1,r31 3711 00003d00 3c010000 lhi r1,((_negativeone_LF4)>>16)&0xffff 3712 00003d04 2421f458 addui r1,r1,(_negativeone_LF4)&0xffff 3713 00003d08 8c210000 lw r1,(r1) 3714 00003d0c 00412026 xor r4,r2,r1 3715 00003d10 3c050000 lhi r5,((_mapnum42_LF4)>>16)&0xffff 3716 00003d14 24a5f4e8 addui r5,r5,(_mapnum42_LF4)&0xffff 3717 00003d18 8ca30000 lw r3,(r5) 3718 00003d1c 3c060000 lhi r6,((_freepages_LF4)>>16)&0xffff 3719 00003d20 24c6f5cc addui r6,r6,(_freepages_LF4)&0xffff 3720 00003d24 50610002 slli r1,r3,#0x2 3721 00003d28 00261020 add r2,r1,r6 3722 00003d2c 8c410000 lw r1,(r2) 3723 00003d30 00240824 and r1,r1,r4 3724 00003d34 ac410000 sw (r2),r1 3725 00003d38 50610005 slli r1,r3,#0x5 3726 00003d3c 003f1820 add r3,r1,r31 3727 00003d40 23bdfff8 addi r29,r29,#-8 3728 00003d44 3c020001 lhi r2,((_debugstr)>>16)&0xffff 3729 00003d48 24421f50 addui r2,r2,(_debugstr)&0xffff 3730 00003d4c afa20000 sw (r29),r2 3731 00003d50 2007006d addi r7,r0,#109 3732 00003d54 afa70004 sw 4(r29),r7 3733 00003d58 0c000cdc jal _dindex 3734 00003d5c 54000000 nop; not filled. 3735 00003d60 23bd0008 addi r29,r29,#8 3736 00003d64 64210000 snei r1,r1,#0 3737 00003d68 1420002c bnez r1,L126_LF4 3738 00003d6c 54000000 nop; not filled. 3739 00003d70 23bdfff8 addi r29,r29,#-8 3740 00003d74 afa20000 sw (r29),r2 3741 00003d78 2007002b addi r7,r0,#43 3742 00003d7c afa70004 sw 4(r29),r7 3743 00003d80 0c000cb4 jal _dindex 3744 00003d84 54000000 nop; not filled. 3745 00003d88 23bd0008 addi r29,r29,#8 3746 00003d8c 64210000 snei r1,r1,#0 3747 00003d90 1020003c beqz r1,L125_LF4 3748 00003d94 54000000 nop; not filled. 3749 00003d98 L126_LF4: 3750 00003d98 23bdfff0 addi r29,r29,#-16 3751 00003d9c 3c070000 lhi r7,((LC6_LF4)>>16)&0xffff 3752 00003da0 24e7f530 addui r7,r7,(LC6_LF4)&0xffff 3753 00003da4 afa70000 sw (r29),r7 3754 00003da8 8ca10000 lw r1,(r5) 3755 00003dac afa10004 sw 4(r29),r1 3756 00003db0 afa30008 sw 8(r29),r3 3757 00003db4 50210002 slli r1,r1,#0x2 3758 00003db8 00260820 add r1,r1,r6 3759 00003dbc 8c210000 lw r1,(r1) 3760 00003dc0 afa1000c sw 12(r29),r1 3761 00003dc4 0c00844c jal _printf 3762 00003dc8 54000000 nop; not filled. 3763 00003dcc 23bd0010 addi r29,r29,#16 3764 00003dd0 L125_LF4: 3765 00003dd0 3c010000 lhi r1,((_nfreepages_LF4)>>16)&0xffff 3766 00003dd4 2421f5c8 addui r1,r1,(_nfreepages_LF4)&0xffff 3767 00003dd8 8c220000 lw r2,(r1) 3768 00003ddc 2042ffff addi r2,r2,#-1 3769 00003de0 ac220000 sw (r1),r2 3770 00003de4 00030820 add r1,r0,r3 3771 00003de8 L110_LF4: 3772 00003de8 8fa20000 lw r2,0(r29) 3773 00003dec 8fa30004 lw r3,4(r29) 3774 00003df0 8fa40008 lw r4,8(r29) 3775 00003df4 8fa5000c lw r5,12(r29) 3776 00003df8 8fa60010 lw r6,16(r29) 3777 00003dfc 8fa70014 lw r7,20(r29) 3778 00003e00 8fdffff8 lw r31,-8(r30) 3779 00003e04 001ee820 add r29,r0,r30 3780 00003e08 8fdefffc lw r30,-4(r30) 3781 00003e0c 4be00000 jr r31 3782 00003e10 54000000 nop 3783 00003e14 .endproc _MemoryAllocPage 3784 00003e14 .data 3785 0000f563 .align 2 3786 0000f564 LC7_LF4: 3787 0000f564 46726565 .ascii "Freed page 0x%x, %d remaining.\n\000" 3787 0000f568 64207061 3787 0000f56c 67652030 3787 0000f570 7825782c 3787 0000f574 20256420 3787 0000f578 72656d61 3787 0000f57c 696e696e 3787 0000f580 672e0a00 3788 0000f584 .text 3789 00003e14 .align 2 3790 00003e14 .proc _MemoryFreePage 3791 00003e14 .global _MemoryFreePage 3792 00003e14 _MemoryFreePage: 3793 ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. 3794 00003e14 afbefffc sw -4(r29),r30; push fp 3795 00003e18 001df020 add r30,r0,r29; fp = sp 3796 00003e1c afbffff8 sw -8(r29),r31; push ret addr 3797 00003e20 2fbd0020 subui r29,r29,#32; alloc local storage 3798 00003e24 afa20000 sw 0(r29),r2 3799 00003e28 afa30004 sw 4(r29),r3 3800 00003e2c afa40008 sw 8(r29),r4 3801 00003e30 afa5000c sw 12(r29),r5 3802 00003e34 afa60010 sw 16(r29),r6 3803 00003e38 afa70014 sw 20(r29),r7 3804 00003e3c 8fc60000 lw r6,(r30) 3805 00003e40 20030001 addi r3,r0,#1 3806 00003e44 00061020 add r2,r0,r6 3807 00003e48 74c10000 sgei r1,r6,#0 3808 00003e4c 14200008 bnez r1,L129_LF4 3809 00003e50 54000000 nop; not filled. 3810 00003e54 20c2001f addi r2,r6,#31 3811 00003e58 L129_LF4: 3812 00003e58 5c450005 srai r5,r2,#0x5 3813 00003e5c 50a10005 slli r1,r5,#0x5 3814 00003e60 00c10822 sub r1,r6,r1 3815 00003e64 00611804 sll r3,r3,r1 3816 00003e68 3c010000 lhi r1,((_negativeone_LF4)>>16)&0xffff 3817 00003e6c 2421f458 addui r1,r1,(_negativeone_LF4)&0xffff 3818 00003e70 8c210000 lw r1,(r1) 3819 00003e74 00611026 xor r2,r3,r1 3820 00003e78 50a10002 slli r1,r5,#0x2 3821 00003e7c 3c070000 lhi r7,((_freepages_LF4)>>16)&0xffff 3822 00003e80 24e7f5cc addui r7,r7,(_freepages_LF4)&0xffff 3823 00003e84 00272020 add r4,r1,r7 3824 00003e88 8c810000 lw r1,(r4) 3825 00003e8c 00220824 and r1,r1,r2 3826 00003e90 00230825 or r1,r1,r3 3827 00003e94 ac810000 sw (r4),r1 3828 00003e98 23bdfff8 addi r29,r29,#-8 3829 00003e9c 3c070001 lhi r7,((_debugstr)>>16)&0xffff 3830 00003ea0 24e71f50 addui r7,r7,(_debugstr)&0xffff 3831 00003ea4 afa70000 sw (r29),r7 3832 00003ea8 2007006d addi r7,r0,#109 3833 00003eac afa70004 sw 4(r29),r7 3834 00003eb0 0c000b84 jal _dindex 3835 00003eb4 54000000 nop; not filled. 3836 00003eb8 23bd0008 addi r29,r29,#8 3837 00003ebc 64210000 snei r1,r1,#0 3838 00003ec0 14200034 bnez r1,L133_LF4 3839 00003ec4 54000000 nop; not filled. 3840 00003ec8 23bdfff8 addi r29,r29,#-8 3841 00003ecc 3c070001 lhi r7,((_debugstr)>>16)&0xffff 3842 00003ed0 24e71f50 addui r7,r7,(_debugstr)&0xffff 3843 00003ed4 afa70000 sw (r29),r7 3844 00003ed8 2007002b addi r7,r0,#43 3845 00003edc afa70004 sw 4(r29),r7 3846 00003ee0 0c000b54 jal _dindex 3847 00003ee4 54000000 nop; not filled. 3848 00003ee8 23bd0008 addi r29,r29,#8 3849 00003eec 64210000 snei r1,r1,#0 3850 00003ef0 1020002c beqz r1,L128_LF4 3851 00003ef4 54000000 nop; not filled. 3852 00003ef8 L133_LF4: 3853 00003ef8 23bdfff0 addi r29,r29,#-16 3854 00003efc 3c070000 lhi r7,((LC0_LF4)>>16)&0xffff 3855 00003f00 24e7f45c addui r7,r7,(LC0_LF4)&0xffff 3856 00003f04 afa70000 sw (r29),r7 3857 00003f08 afa50004 sw 4(r29),r5 3858 00003f0c 8c840000 lw r4,(r4) 3859 00003f10 afa40008 sw 8(r29),r4 3860 00003f14 0c0082fc jal _printf 3861 00003f18 54000000 nop; not filled. 3862 00003f1c 23bd0010 addi r29,r29,#16 3863 00003f20 L128_LF4: 3864 00003f20 3c020000 lhi r2,((_nfreepages_LF4)>>16)&0xffff 3865 00003f24 2442f5c8 addui r2,r2,(_nfreepages_LF4)&0xffff 3866 00003f28 8c410000 lw r1,(r2) 3867 00003f2c 20210001 addi r1,r1,#1 3868 00003f30 ac410000 sw (r2),r1 3869 00003f34 23bdfff8 addi r29,r29,#-8 3870 00003f38 3c030001 lhi r3,((_debugstr)>>16)&0xffff 3871 00003f3c 24631f50 addui r3,r3,(_debugstr)&0xffff 3872 00003f40 afa30000 sw (r29),r3 3873 00003f44 2007006d addi r7,r0,#109 3874 00003f48 afa70004 sw 4(r29),r7 3875 00003f4c 0c000ae8 jal _dindex 3876 00003f50 54000000 nop; not filled. 3877 00003f54 23bd0008 addi r29,r29,#8 3878 00003f58 64210000 snei r1,r1,#0 3879 00003f5c 1420002c bnez r1,L135_LF4 3880 00003f60 54000000 nop; not filled. 3881 00003f64 23bdfff8 addi r29,r29,#-8 3882 00003f68 afa30000 sw (r29),r3 3883 00003f6c 2007002b addi r7,r0,#43 3884 00003f70 afa70004 sw 4(r29),r7 3885 00003f74 0c000ac0 jal _dindex 3886 00003f78 54000000 nop; not filled. 3887 00003f7c 23bd0008 addi r29,r29,#8 3888 00003f80 64210000 snei r1,r1,#0 3889 00003f84 1020002c beqz r1,L134_LF4 3890 00003f88 54000000 nop; not filled. 3891 00003f8c L135_LF4: 3892 00003f8c 23bdfff0 addi r29,r29,#-16 3893 00003f90 3c070000 lhi r7,((LC7_LF4)>>16)&0xffff 3894 00003f94 24e7f564 addui r7,r7,(LC7_LF4)&0xffff 3895 00003f98 afa70000 sw (r29),r7 3896 00003f9c afa60004 sw 4(r29),r6 3897 00003fa0 8c420000 lw r2,(r2) 3898 00003fa4 afa20008 sw 8(r29),r2 3899 00003fa8 0c008268 jal _printf 3900 00003fac 54000000 nop; not filled. 3901 00003fb0 23bd0010 addi r29,r29,#16 3902 00003fb4 L134_LF4: 3903 00003fb4 8fa20000 lw r2,0(r29) 3904 00003fb8 8fa30004 lw r3,4(r29) 3905 00003fbc 8fa40008 lw r4,8(r29) 3906 00003fc0 8fa5000c lw r5,12(r29) 3907 00003fc4 8fa60010 lw r6,16(r29) 3908 00003fc8 8fa70014 lw r7,20(r29) 3909 00003fcc 8fdffff8 lw r31,-8(r30) 3910 00003fd0 001ee820 add r29,r0,r30 3911 00003fd4 8fdefffc lw r30,-4(r30) 3912 00003fd8 4be00000 jr r31 3913 00003fdc 54000000 nop 3914 00003fe0 .endproc _MemoryFreePage 3915 00003fe0 .align 2 3916 00003fe0 .proc _MemoryTranslateUserToSystem 3917 00003fe0 .global _MemoryTranslateUserToSystem 3918 00003fe0 _MemoryTranslateUserToSystem: 3919 ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. 3920 00003fe0 afbefffc sw -4(r29),r30; push fp 3921 00003fe4 001df020 add r30,r0,r29; fp = sp 3922 00003fe8 afbffff8 sw -8(r29),r31; push ret addr 3923 00003fec 2fbd0018 subui r29,r29,#24; alloc local storage 3924 00003ff0 afa20000 sw 0(r29),r2 3925 00003ff4 afa30004 sw 4(r29),r3 3926 00003ff8 afa40008 sw 8(r29),r4 3927 00003ffc 8fc30000 lw r3,(r30) 3928 00004000 8fc10004 lw r1,4(r30) 3929 00004004 583f0010 srli r31,r1,#0x10 3930 00004008 3022ffff andi r2,r1,#0xffff 3931 0000400c 8c6100a0 lw r1,160(r3) 3932 00004010 03e1082b sgt r1,r31,r1 3933 00004014 14200024 bnez r1,L139_LF4 3934 00004018 54000000 nop; not filled. 3935 0000401c 53e10002 slli r1,r31,#0x2 3936 00004020 00230820 add r1,r1,r3 3937 00004024 8c210060 lw r1,96(r1) 3938 00004028 2004fff8 addi r4,r0,#-8 3939 0000402c 00240824 and r1,r1,r4 3940 00004030 00220820 add r1,r1,r2 3941 00004034 08000008 j L140_LF4 3942 00004038 54000000 nop; not filled. 3943 0000403c L139_LF4: 3944 0000403c 20010000 addi r1,r0,#0 3945 00004040 L140_LF4: 3946 00004040 8fa20000 lw r2,0(r29) 3947 00004044 8fa30004 lw r3,4(r29) 3948 00004048 8fa40008 lw r4,8(r29) 3949 0000404c 8fdffff8 lw r31,-8(r30) 3950 00004050 001ee820 add r29,r0,r30 3951 00004054 8fdefffc lw r30,-4(r30) 3952 00004058 4be00000 jr r31 3953 0000405c 54000000 nop 3954 00004060 .endproc _MemoryTranslateUserToSystem 3955 00004060 .align 2 3956 00004060 .proc _MemoryCopySystemToUser 3957 00004060 .global _MemoryCopySystemToUser 3958 00004060 _MemoryCopySystemToUser: 3959 ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. 3960 00004060 afbefffc sw -4(r29),r30; push fp 3961 00004064 001df020 add r30,r0,r29; fp = sp 3962 00004068 afbffff8 sw -8(r29),r31; push ret addr 3963 0000406c 2fbd0028 subui r29,r29,#40; alloc local storage 3964 00004070 afa20000 sw 0(r29),r2 3965 00004074 afa30004 sw 4(r29),r3 3966 00004078 afa40008 sw 8(r29),r4 3967 0000407c afa5000c sw 12(r29),r5 3968 00004080 afa60010 sw 16(r29),r6 3969 00004084 afa70014 sw 20(r29),r7 3970 00004088 afa80018 sw 24(r29),r8 3971 0000408c afa9001c sw 28(r29),r9 3972 00004090 8fc70000 lw r7,(r30) 3973 00004094 8fc50004 lw r5,4(r30) 3974 00004098 8fc40008 lw r4,8(r30) 3975 0000409c 8fc3000c lw r3,12(r30) 3976 000040a0 20060000 addi r6,r0,#0 3977 000040a4 6c610000 sgti r1,r3,#0 3978 000040a8 102000a4 beqz r1,L167_LF4 3979 000040ac 54000000 nop; not filled. 3980 000040b0 3c080001 lhi r8,#1 3981 000040b4 25080000 addui r8,r8,#0 3982 000040b8 L168_LF4: 3983 000040b8 58820010 srli r2,r4,#0x10 3984 000040bc 309fffff andi r31,r4,#0xffff 3985 000040c0 8ce100a0 lw r1,160(r7) 3986 000040c4 0041082b sgt r1,r2,r1 3987 000040c8 10200010 beqz r1,L170_LF4 3988 000040cc 54000000 nop; not filled. 3989 000040d0 201f0000 addi r31,r0,#0 3990 000040d4 0800001c j L169_LF4 3991 000040d8 54000000 nop; not filled. 3992 000040dc L170_LF4: 3993 000040dc 50410002 slli r1,r2,#0x2 3994 000040e0 00270820 add r1,r1,r7 3995 000040e4 8c210060 lw r1,96(r1) 3996 000040e8 2009fff8 addi r9,r0,#-8 3997 000040ec 00290824 and r1,r1,r9 3998 000040f0 003ff820 add r31,r1,r31 3999 000040f4 L169_LF4: 4000 000040f4 67e10000 snei r1,r31,#0 4001 000040f8 10200054 beqz r1,L167_LF4 4002 000040fc 54000000 nop; not filled. 4003 00004100 33e1ffff andi r1,r31,#65535 4004 00004104 01011022 sub r2,r8,r1 4005 00004108 0043082b sgt r1,r2,r3 4006 0000410c 10200008 beqz r1,L172_LF4 4007 00004110 54000000 nop; not filled. 4008 00004114 00031020 add r2,r0,r3 4009 00004118 L172_LF4: 4010 00004118 23bdfff0 addi r29,r29,#-16 4011 0000411c afa50000 sw (r29),r5 4012 00004120 afbf0004 sw 4(r29),r31 4013 00004124 afa20008 sw 8(r29),r2 4014 00004128 0c000c9c jal _bcopy 4015 0000412c 54000000 nop; not filled. 4016 00004130 23bd0010 addi r29,r29,#16 4017 00004134 00621822 sub r3,r3,r2 4018 00004138 00c23020 add r6,r6,r2 4019 0000413c 00a22820 add r5,r5,r2 4020 00004140 00822020 add r4,r4,r2 4021 00004144 6c610000 sgti r1,r3,#0 4022 00004148 1420ff6c bnez r1,L168_LF4 4023 0000414c 54000000 nop; not filled. 4024 00004150 L167_LF4: 4025 00004150 00060820 add r1,r0,r6 4026 00004154 8fa20000 lw r2,0(r29) 4027 00004158 8fa30004 lw r3,4(r29) 4028 0000415c 8fa40008 lw r4,8(r29) 4029 00004160 8fa5000c lw r5,12(r29) 4030 00004164 8fa60010 lw r6,16(r29) 4031 00004168 8fa70014 lw r7,20(r29) 4032 0000416c 8fa80018 lw r8,24(r29) 4033 00004170 8fa9001c lw r9,28(r29) 4034 00004174 8fdffff8 lw r31,-8(r30) 4035 00004178 001ee820 add r29,r0,r30 4036 0000417c 8fdefffc lw r30,-4(r30) 4037 00004180 4be00000 jr r31 4038 00004184 54000000 nop 4039 00004188 .endproc _MemoryCopySystemToUser 4040 00004188 .align 2 4041 00004188 .proc _MemoryCopyUserToSystem 4042 00004188 .global _MemoryCopyUserToSystem 4043 00004188 _MemoryCopyUserToSystem: 4044 ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. 4045 00004188 afbefffc sw -4(r29),r30; push fp 4046 0000418c 001df020 add r30,r0,r29; fp = sp 4047 00004190 afbffff8 sw -8(r29),r31; push ret addr 4048 00004194 2fbd0028 subui r29,r29,#40; alloc local storage 4049 00004198 afa20000 sw 0(r29),r2 4050 0000419c afa30004 sw 4(r29),r3 4051 000041a0 afa40008 sw 8(r29),r4 4052 000041a4 afa5000c sw 12(r29),r5 4053 000041a8 afa60010 sw 16(r29),r6 4054 000041ac afa70014 sw 20(r29),r7 4055 000041b0 afa80018 sw 24(r29),r8 4056 000041b4 afa9001c sw 28(r29),r9 4057 000041b8 8fc70000 lw r7,(r30) 4058 000041bc 8fc50008 lw r5,8(r30) 4059 000041c0 8fc40004 lw r4,4(r30) 4060 000041c4 8fc3000c lw r3,12(r30) 4061 000041c8 20060000 addi r6,r0,#0 4062 000041cc 6c610000 sgti r1,r3,#0 4063 000041d0 102000a4 beqz r1,L191_LF4 4064 000041d4 54000000 nop; not filled. 4065 000041d8 3c080001 lhi r8,#1 4066 000041dc 25080000 addui r8,r8,#0 4067 000041e0 L192_LF4: 4068 000041e0 58820010 srli r2,r4,#0x10 4069 000041e4 309fffff andi r31,r4,#0xffff 4070 000041e8 8ce100a0 lw r1,160(r7) 4071 000041ec 0041082b sgt r1,r2,r1 4072 000041f0 10200010 beqz r1,L194_LF4 4073 000041f4 54000000 nop; not filled. 4074 000041f8 201f0000 addi r31,r0,#0 4075 000041fc 0800001c j L193_LF4 4076 00004200 54000000 nop; not filled. 4077 00004204 L194_LF4: 4078 00004204 50410002 slli r1,r2,#0x2 4079 00004208 00270820 add r1,r1,r7 4080 0000420c 8c210060 lw r1,96(r1) 4081 00004210 2009fff8 addi r9,r0,#-8 4082 00004214 00290824 and r1,r1,r9 4083 00004218 003ff820 add r31,r1,r31 4084 0000421c L193_LF4: 4085 0000421c 67e10000 snei r1,r31,#0 4086 00004220 10200054 beqz r1,L191_LF4 4087 00004224 54000000 nop; not filled. 4088 00004228 33e1ffff andi r1,r31,#65535 4089 0000422c 01011022 sub r2,r8,r1 4090 00004230 0043082b sgt r1,r2,r3 4091 00004234 10200008 beqz r1,L197_LF4 4092 00004238 54000000 nop; not filled. 4093 0000423c 00031020 add r2,r0,r3 4094 00004240 L197_LF4: 4095 00004240 23bdfff0 addi r29,r29,#-16 4096 00004244 afbf0000 sw (r29),r31 4097 00004248 afa50004 sw 4(r29),r5 4098 0000424c afa20008 sw 8(r29),r2 4099 00004250 0c000b74 jal _bcopy 4100 00004254 54000000 nop; not filled. 4101 00004258 23bd0010 addi r29,r29,#16 4102 0000425c 00621822 sub r3,r3,r2 4103 00004260 00c23020 add r6,r6,r2 4104 00004264 00a22820 add r5,r5,r2 4105 00004268 00822020 add r4,r4,r2 4106 0000426c 6c610000 sgti r1,r3,#0 4107 00004270 1420ff6c bnez r1,L192_LF4 4108 00004274 54000000 nop; not filled. 4109 00004278 L191_LF4: 4110 00004278 00060820 add r1,r0,r6 4111 0000427c 8fa20000 lw r2,0(r29) 4112 00004280 8fa30004 lw r3,4(r29) 4113 00004284 8fa40008 lw r4,8(r29) 4114 00004288 8fa5000c lw r5,12(r29) 4115 0000428c 8fa60010 lw r6,16(r29) 4116 00004290 8fa70014 lw r7,20(r29) 4117 00004294 8fa80018 lw r8,24(r29) 4118 00004298 8fa9001c lw r9,28(r29) 4119 0000429c 8fdffff8 lw r31,-8(r30) 4120 000042a0 001ee820 add r29,r0,r30 4121 000042a4 8fdefffc lw r30,-4(r30) 4122 000042a8 4be00000 jr r31 4123 000042ac 54000000 nop 4124 000042b0 .endproc _MemoryCopyUserToSystem 4125 000042b0 .align 2 4126 000042b0 .proc _MemorySetupPte 4127 000042b0 .global _MemorySetupPte 4128 000042b0 _MemorySetupPte: 4129 ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. 4130 000042b0 afbefffc sw -4(r29),r30; push fp 4131 000042b4 001df020 add r30,r0,r29; fp = sp 4132 000042b8 afbffff8 sw -8(r29),r31; push ret addr 4133 000042bc 2fbd0008 subui r29,r29,#8; alloc local storage 4134 000042c0 8fc10000 lw r1,(r30) 4135 000042c4 50210010 slli r1,r1,#0x10 4136 000042c8 34210001 ori r1,r1,#1 4137 000042cc 8fdffff8 lw r31,-8(r30) 4138 000042d0 001ee820 add r29,r0,r30 4139 000042d4 8fdefffc lw r30,-4(r30) 4140 000042d8 4be00000 jr r31 4141 000042dc 54000000 nop 4142 000042e0 .endproc _MemorySetupPte 4143 000042e0 .align 2 4144 000042e0 .proc _MemoryFreePte 4145 000042e0 .global _MemoryFreePte 4146 000042e0 _MemoryFreePte: 4147 ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. 4148 000042e0 afbefffc sw -4(r29),r30; push fp 4149 000042e4 001df020 add r30,r0,r29; fp = sp 4150 000042e8 afbffff8 sw -8(r29),r31; push ret addr 4151 000042ec 2fbd0008 subui r29,r29,#8; alloc local storage 4152 000042f0 23bdfff8 addi r29,r29,#-8 4153 000042f4 97c10000 lhu r1,(r30) 4154 000042f8 afa10000 sw (r29),r1 4155 000042fc 0ffffb14 jal _MemoryFreePage 4156 00004300 54000000 nop; not filled. 4157 00004304 23bd0008 addi r29,r29,#8 4158 00004308 8fdffff8 lw r31,-8(r30) 4159 0000430c 001ee820 add r29,r0,r30 4160 00004310 8fdefffc lw r30,-4(r30) 4161 00004314 4be00000 jr r31 4162 00004318 54000000 nop 4163 0000431c .endproc _MemoryFreePte 4164 0000431c .align 2 4165 0000431c .proc _MemoryPteToPage 4166 0000431c .global _MemoryPteToPage 4167 0000431c _MemoryPteToPage: 4168 ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. 4169 0000431c afbefffc sw -4(r29),r30; push fp 4170 00004320 001df020 add r30,r0,r29; fp = sp 4171 00004324 afbffff8 sw -8(r29),r31; push ret addr 4172 00004328 2fbd0008 subui r29,r29,#8; alloc local storage 4173 0000432c 8fc10000 lw r1,(r30) 4174 00004330 201ffff8 addi r31,r0,#-8 4175 00004334 003f0824 and r1,r1,r31 4176 00004338 8fdffff8 lw r31,-8(r30) 4177 0000433c 001ee820 add r29,r0,r30 4178 00004340 8fdefffc lw r30,-4(r30) 4179 00004344 4be00000 jr r31 4180 00004348 54000000 nop 4181 0000434c .endproc _MemoryPteToPage 4182 0000434c .data 4183 0000f584 .align 2 4184 0000f584 _invalidOps61_LF4: 4185 0000f584 00003404 .word 13316 4186 0000f588 .align 2 4187 0000f588 LC8_LF4: 4188 0000f588 4f706572 .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" 4188 0000f58c 616e6420 4188 0000f590 666f7220 4188 0000f594 696e7374 4188 0000f598 72756374 4188 0000f59c 696f6e20 4188 0000f5a0 25303878 4188 0000f5a4 20697320 4188 0000f5a8 30782578 4188 0000f5ac 20287265 4188 0000f5b0 673d3c25 4188 0000f5b4 642c3078 4188 0000f5b8 25783e29 4188 0000f5bc 0a00 4189 0000f5be .text 4190 0000434c .align 2 4191 0000434c .proc _MemoryGetOperandAddress 4192 0000434c .global _MemoryGetOperandAddress 4193 0000434c _MemoryGetOperandAddress: 4194 ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. 4195 0000434c afbefffc sw -4(r29),r30; push fp 4196 00004350 001df020 add r30,r0,r29; fp = sp 4197 00004354 afbffff8 sw -8(r29),r31; push ret addr 4198 00004358 2fbd0020 subui r29,r29,#32; alloc local storage 4199 0000435c afa20000 sw 0(r29),r2 4200 00004360 afa30004 sw 4(r29),r3 4201 00004364 afa40008 sw 8(r29),r4 4202 00004368 afa5000c sw 12(r29),r5 4203 0000436c afa60010 sw 16(r29),r6 4204 00004370 afa70014 sw 20(r29),r7 4205 00004374 8fc20000 lw r2,(r30) 4206 00004378 8fc50004 lw r5,4(r30) 4207 0000437c 58a1001a srli r1,r5,#0x1a 4208 00004380 203fffe0 addi r31,r1,#-32 4209 00004384 6fe1000f sgtui r1,r31,#15 4210 00004388 14200020 bnez r1,L214_LF4 4211 0000438c 54000000 nop; not filled. 4212 00004390 3c010000 lhi r1,((_invalidOps61_LF4)>>16)&0xffff 4213 00004394 2421f584 addui r1,r1,(_invalidOps61_LF4)&0xffff 4214 00004398 8c210000 lw r1,(r1) 4215 0000439c 003f0806 srl r1,r1,r31 4216 000043a0 30210001 andi r1,r1,#1 4217 000043a4 10200010 beqz r1,L213_LF4 4218 000043a8 54000000 nop; not filled. 4219 000043ac L214_LF4: 4220 000043ac 2001ffff addi r1,r0,#-1 4221 000043b0 080000c4 j L218_LF4 4222 000043b4 54000000 nop; not filled. 4223 000043b8 L213_LF4: 4224 000043b8 58a10015 srli r1,r5,#0x15 4225 000043bc 3026001f andi r6,r1,#31 4226 000043c0 30bfffff andi r31,r5,#0xffff 4227 000043c4 5be1000f srli r1,r31,#0xf 4228 000043c8 10200010 beqz r1,L215_LF4 4229 000043cc 54000000 nop; not filled. 4230 000043d0 3c07ffff lhi r7,#-1 4231 000043d4 24e70000 addui r7,r7,#0 4232 000043d8 03e7f825 or r31,r31,r7 4233 000043dc L215_LF4: 4234 000043dc 8c420000 lw r2,(r2) 4235 000043e0 50c10002 slli r1,r6,#0x2 4236 000043e4 00220820 add r1,r1,r2 4237 000043e8 8c230028 lw r3,40(r1) 4238 000043ec 007f2020 add r4,r3,r31 4239 000043f0 23bdfff8 addi r29,r29,#-8 4240 000043f4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 4241 000043f8 24421f50 addui r2,r2,(_debugstr)&0xffff 4242 000043fc afa20000 sw (r29),r2 4243 00004400 2007006d addi r7,r0,#109 4244 00004404 afa70004 sw 4(r29),r7 4245 00004408 0c00062c jal _dindex 4246 0000440c 54000000 nop; not filled. 4247 00004410 23bd0008 addi r29,r29,#8 4248 00004414 64210000 snei r1,r1,#0 4249 00004418 1420002c bnez r1,L217_LF4 4250 0000441c 54000000 nop; not filled. 4251 00004420 23bdfff8 addi r29,r29,#-8 4252 00004424 afa20000 sw (r29),r2 4253 00004428 2007002b addi r7,r0,#43 4254 0000442c afa70004 sw 4(r29),r7 4255 00004430 0c000604 jal _dindex 4256 00004434 54000000 nop; not filled. 4257 00004438 23bd0008 addi r29,r29,#8 4258 0000443c 64210000 snei r1,r1,#0 4259 00004440 10200030 beqz r1,L216_LF4 4260 00004444 54000000 nop; not filled. 4261 00004448 L217_LF4: 4262 00004448 23bdffe8 addi r29,r29,#-24 4263 0000444c 3c070000 lhi r7,((LC8_LF4)>>16)&0xffff 4264 00004450 24e7f588 addui r7,r7,(LC8_LF4)&0xffff 4265 00004454 afa70000 sw (r29),r7 4266 00004458 afa50004 sw 4(r29),r5 4267 0000445c afa40008 sw 8(r29),r4 4268 00004460 afa6000c sw 12(r29),r6 4269 00004464 afa30010 sw 16(r29),r3 4270 00004468 0c007da8 jal _printf 4271 0000446c 54000000 nop; not filled. 4272 00004470 23bd0018 addi r29,r29,#24 4273 00004474 L216_LF4: 4274 00004474 00040820 add r1,r0,r4 4275 00004478 L218_LF4: 4276 00004478 8fa20000 lw r2,0(r29) 4277 0000447c 8fa30004 lw r3,4(r29) 4278 00004480 8fa40008 lw r4,8(r29) 4279 00004484 8fa5000c lw r5,12(r29) 4280 00004488 8fa60010 lw r6,16(r29) 4281 0000448c 8fa70014 lw r7,20(r29) 4282 00004490 8fdffff8 lw r31,-8(r30) 4283 00004494 001ee820 add r29,r0,r30 4284 00004498 8fdefffc lw r30,-4(r30) 4285 0000449c 4be00000 jr r31 4286 000044a0 54000000 nop 4287 000044a4 .endproc _MemoryGetOperandAddress 4288 000044a4 .data 4289 0000f5be .align 2 4290 0000f5c0 _pagestart_LF4: 4291 0000f5c0 .space 4 4292 0000f5c4 .align 2 4293 0000f5c4 _freemapmax_LF4: 4294 0000f5c4 .space 4 4295 0000f5c8 .align 2 4296 0000f5c8 _nfreepages_LF4: 4297 0000f5c8 .space 4 4298 0000f5cc .align 2 4299 0000f5cc _freepages_LF4: 4300 0000f5cc .space 8192 4301 ; Compiled by GCC 4302 000115cc .text 4303 000044a4 .align 2 4304 000044a4 .proc _isspace 4305 000044a4 .global _isspace 4306 000044a4 _isspace: 4307 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 4308 000044a4 afbefffc sw -4(r29),r30; push fp 4309 000044a8 001df020 add r30,r0,r29; fp = sp 4310 000044ac afbffff8 sw -8(r29),r31; push ret addr 4311 000044b0 2fbd0010 subui r29,r29,#16; alloc local storage 4312 000044b4 afa20000 sw 0(r29),r2 4313 000044b8 83c20003 lb r2,3(r30) 4314 000044bc 201f0000 addi r31,r0,#0 4315 000044c0 304100ff andi r1,r2,#0x00ff 4316 000044c4 60210020 seqi r1,r1,#32 4317 000044c8 14200018 bnez r1,L6_LF5 4318 000044cc 54000000 nop; not filled. 4319 000044d0 2041fff7 addi r1,r2,#-9 4320 000044d4 302100ff andi r1,r1,#0x00ff 4321 000044d8 70210001 sleui r1,r1,#1 4322 000044dc 10200008 beqz r1,L5_LF5 4323 000044e0 54000000 nop; not filled. 4324 000044e4 L6_LF5: 4325 000044e4 201f0001 addi r31,r0,#1 4326 000044e8 L5_LF5: 4327 000044e8 001f0820 add r1,r0,r31 4328 000044ec 8fa20000 lw r2,0(r29) 4329 000044f0 8fdffff8 lw r31,-8(r30) 4330 000044f4 001ee820 add r29,r0,r30 4331 000044f8 8fdefffc lw r30,-4(r30) 4332 000044fc 4be00000 jr r31 4333 00004500 54000000 nop 4334 00004504 .endproc _isspace 4335 00004504 .align 2 4336 00004504 .proc _isxdigit 4337 00004504 .global _isxdigit 4338 00004504 _isxdigit: 4339 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 4340 00004504 afbefffc sw -4(r29),r30; push fp 4341 00004508 001df020 add r30,r0,r29; fp = sp 4342 0000450c afbffff8 sw -8(r29),r31; push ret addr 4343 00004510 2fbd0010 subui r29,r29,#16; alloc local storage 4344 00004514 afa20000 sw 0(r29),r2 4345 00004518 83df0003 lb r31,3(r30) 4346 0000451c 20020000 addi r2,r0,#0 4347 00004520 23e1ffd0 addi r1,r31,#-48 4348 00004524 302100ff andi r1,r1,#0x00ff 4349 00004528 70210009 sleui r1,r1,#9 4350 0000452c 14200028 bnez r1,L12_LF5 4351 00004530 54000000 nop; not filled. 4352 00004534 23e1ff9f addi r1,r31,#-97 4353 00004538 302100ff andi r1,r1,#0x00ff 4354 0000453c 70210005 sleui r1,r1,#5 4355 00004540 14200014 bnez r1,L12_LF5 4356 00004544 54000000 nop; not filled. 4357 00004548 33e100ff andi r1,r31,#0x00ff 4358 0000454c 64210041 snei r1,r1,#65 4359 00004550 14200008 bnez r1,L11_LF5 4360 00004554 54000000 nop; not filled. 4361 00004558 L12_LF5: 4362 00004558 20020001 addi r2,r0,#1 4363 0000455c L11_LF5: 4364 0000455c 00020820 add r1,r0,r2 4365 00004560 8fa20000 lw r2,0(r29) 4366 00004564 8fdffff8 lw r31,-8(r30) 4367 00004568 001ee820 add r29,r0,r30 4368 0000456c 8fdefffc lw r30,-4(r30) 4369 00004570 4be00000 jr r31 4370 00004574 54000000 nop 4371 00004578 .endproc _isxdigit 4372 00004578 .align 2 4373 00004578 .proc _dstrcpy 4374 00004578 .global _dstrcpy 4375 00004578 _dstrcpy: 4376 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 4377 00004578 afbefffc sw -4(r29),r30; push fp 4378 0000457c 001df020 add r30,r0,r29; fp = sp 4379 00004580 afbffff8 sw -8(r29),r31; push ret addr 4380 00004584 2fbd0010 subui r29,r29,#16; alloc local storage 4381 00004588 afa20000 sw 0(r29),r2 4382 0000458c afa30004 sw 4(r29),r3 4383 00004590 8fdf0000 lw r31,(r30) 4384 00004594 8fc20004 lw r2,4(r30) 4385 00004598 001f1820 add r3,r0,r31 4386 0000459c L19_LF5: 4387 0000459c 80410000 lb r1,(r2) 4388 000045a0 a3e10000 sb (r31),r1 4389 000045a4 20420001 addi r2,r2,#1 4390 000045a8 23ff0001 addi r31,r31,#1 4391 000045ac 302100ff andi r1,r1,#0x00ff 4392 000045b0 64210000 snei r1,r1,#0 4393 000045b4 1420ffe4 bnez r1,L19_LF5 4394 000045b8 54000000 nop; not filled. 4395 000045bc 00030820 add r1,r0,r3 4396 000045c0 8fa20000 lw r2,0(r29) 4397 000045c4 8fa30004 lw r3,4(r29) 4398 000045c8 8fdffff8 lw r31,-8(r30) 4399 000045cc 001ee820 add r29,r0,r30 4400 000045d0 8fdefffc lw r30,-4(r30) 4401 000045d4 4be00000 jr r31 4402 000045d8 54000000 nop 4403 000045dc .endproc _dstrcpy 4404 000045dc .align 2 4405 000045dc .proc _dstrncpy 4406 000045dc .global _dstrncpy 4407 000045dc _dstrncpy: 4408 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 4409 000045dc afbefffc sw -4(r29),r30; push fp 4410 000045e0 001df020 add r30,r0,r29; fp = sp 4411 000045e4 afbffff8 sw -8(r29),r31; push ret addr 4412 000045e8 2fbd0018 subui r29,r29,#24; alloc local storage 4413 000045ec afa20000 sw 0(r29),r2 4414 000045f0 afa30004 sw 4(r29),r3 4415 000045f4 afa40008 sw 8(r29),r4 4416 000045f8 8fc20000 lw r2,(r30) 4417 000045fc 8fc30004 lw r3,4(r30) 4418 00004600 8fdf0008 lw r31,8(r30) 4419 00004604 00022020 add r4,r0,r2 4420 00004608 08000024 j L37_LF5 4421 0000460c 54000000 nop; not filled. 4422 00004610 L34_LF5: 4423 00004610 80610000 lb r1,(r3) 4424 00004614 a0410000 sb (r2),r1 4425 00004618 20630001 addi r3,r3,#1 4426 0000461c 20420001 addi r2,r2,#1 4427 00004620 302100ff andi r1,r1,#0x00ff 4428 00004624 64210000 snei r1,r1,#0 4429 00004628 10200018 beqz r1,L32_LF5 4430 0000462c 54000000 nop; not filled. 4431 00004630 L37_LF5: 4432 00004630 001f0820 add r1,r0,r31 4433 00004634 23ffffff addi r31,r31,#-1 4434 00004638 70210000 slei r1,r1,#0 4435 0000463c 1020ffd0 beqz r1,L34_LF5 4436 00004640 54000000 nop; not filled. 4437 00004644 L32_LF5: 4438 00004644 00040820 add r1,r0,r4 4439 00004648 8fa20000 lw r2,0(r29) 4440 0000464c 8fa30004 lw r3,4(r29) 4441 00004650 8fa40008 lw r4,8(r29) 4442 00004654 8fdffff8 lw r31,-8(r30) 4443 00004658 001ee820 add r29,r0,r30 4444 0000465c 8fdefffc lw r30,-4(r30) 4445 00004660 4be00000 jr r31 4446 00004664 54000000 nop 4447 00004668 .endproc _dstrncpy 4448 00004668 .align 2 4449 00004668 .proc _dstrcat 4450 00004668 .global _dstrcat 4451 00004668 _dstrcat: 4452 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 4453 00004668 afbefffc sw -4(r29),r30; push fp 4454 0000466c 001df020 add r30,r0,r29; fp = sp 4455 00004670 afbffff8 sw -8(r29),r31; push ret addr 4456 00004674 2fbd0010 subui r29,r29,#16; alloc local storage 4457 00004678 afa20000 sw 0(r29),r2 4458 0000467c afa30004 sw 4(r29),r3 4459 00004680 8fdf0000 lw r31,(r30) 4460 00004684 001f1820 add r3,r0,r31 4461 00004688 90610000 lbu r1,(r3) 4462 0000468c 64210000 snei r1,r1,#0 4463 00004690 10200018 beqz r1,L50_LF5 4464 00004694 54000000 nop; not filled. 4465 00004698 L51_LF5: 4466 00004698 23ff0001 addi r31,r31,#1 4467 0000469c 93e10000 lbu r1,(r31) 4468 000046a0 64210000 snei r1,r1,#0 4469 000046a4 1420fff0 bnez r1,L51_LF5 4470 000046a8 54000000 nop; not filled. 4471 000046ac L50_LF5: 4472 000046ac 001f1020 add r2,r0,r31 4473 000046b0 8fdf0004 lw r31,4(r30) 4474 000046b4 L54_LF5: 4475 000046b4 83e10000 lb r1,(r31) 4476 000046b8 a0410000 sb (r2),r1 4477 000046bc 23ff0001 addi r31,r31,#1 4478 000046c0 20420001 addi r2,r2,#1 4479 000046c4 302100ff andi r1,r1,#0x00ff 4480 000046c8 64210000 snei r1,r1,#0 4481 000046cc 1420ffe4 bnez r1,L54_LF5 4482 000046d0 54000000 nop; not filled. 4483 000046d4 00030820 add r1,r0,r3 4484 000046d8 8fa20000 lw r2,0(r29) 4485 000046dc 8fa30004 lw r3,4(r29) 4486 000046e0 8fdffff8 lw r31,-8(r30) 4487 000046e4 001ee820 add r29,r0,r30 4488 000046e8 8fdefffc lw r30,-4(r30) 4489 000046ec 4be00000 jr r31 4490 000046f0 54000000 nop 4491 000046f4 .endproc _dstrcat 4492 000046f4 .align 2 4493 000046f4 .proc _dstrncmp 4494 000046f4 .global _dstrncmp 4495 000046f4 _dstrncmp: 4496 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 4497 000046f4 afbefffc sw -4(r29),r30; push fp 4498 000046f8 001df020 add r30,r0,r29; fp = sp 4499 000046fc afbffff8 sw -8(r29),r31; push ret addr 4500 00004700 2fbd0018 subui r29,r29,#24; alloc local storage 4501 00004704 afa20000 sw 0(r29),r2 4502 00004708 afa30004 sw 4(r29),r3 4503 0000470c afa40008 sw 8(r29),r4 4504 00004710 afa5000c sw 12(r29),r5 4505 00004714 8fc30000 lw r3,(r30) 4506 00004718 8fc40004 lw r4,4(r30) 4507 0000471c 8fc50008 lw r5,8(r30) 4508 00004720 20020000 addi r2,r0,#0 4509 00004724 0045082a slt r1,r2,r5 4510 00004728 1020003c beqz r1,L73_LF5 4511 0000472c 54000000 nop; not filled. 4512 00004730 L75_LF5: 4513 00004730 909f0000 lbu r31,(r4) 4514 00004734 67e10000 snei r1,r31,#0 4515 00004738 10200038 beqz r1,L86_LF5 4516 0000473c 54000000 nop; not filled. 4517 00004740 90610000 lbu r1,(r3) 4518 00004744 003f0829 sne r1,r1,r31 4519 00004748 1420001c bnez r1,L73_LF5 4520 0000474c 54000000 nop; not filled. 4521 00004750 20630001 addi r3,r3,#1 4522 00004754 20840001 addi r4,r4,#1 4523 00004758 20420001 addi r2,r2,#1 4524 0000475c 0045082a slt r1,r2,r5 4525 00004760 1420ffcc bnez r1,L75_LF5 4526 00004764 54000000 nop; not filled. 4527 00004768 L73_LF5: 4528 00004768 00450828 seq r1,r2,r5 4529 0000476c 10200010 beqz r1,L80_LF5 4530 00004770 54000000 nop; not filled. 4531 00004774 L86_LF5: 4532 00004774 20010000 addi r1,r0,#0 4533 00004778 08000028 j L84_LF5 4534 0000477c 54000000 nop; not filled. 4535 00004780 L80_LF5: 4536 00004780 907f0000 lbu r31,(r3) 4537 00004784 90830000 lbu r3,(r4) 4538 00004788 03e30822 sub r1,r31,r3 4539 0000478c 74210000 sgei r1,r1,#0 4540 00004790 2002ffff addi r2,r0,#-1 4541 00004794 10200008 beqz r1,L82_LF5 4542 00004798 54000000 nop; not filled. 4543 0000479c 03e31029 sne r2,r31,r3 4544 000047a0 L82_LF5: 4545 000047a0 00020820 add r1,r0,r2 4546 000047a4 L84_LF5: 4547 000047a4 8fa20000 lw r2,0(r29) 4548 000047a8 8fa30004 lw r3,4(r29) 4549 000047ac 8fa40008 lw r4,8(r29) 4550 000047b0 8fa5000c lw r5,12(r29) 4551 000047b4 8fdffff8 lw r31,-8(r30) 4552 000047b8 001ee820 add r29,r0,r30 4553 000047bc 8fdefffc lw r30,-4(r30) 4554 000047c0 4be00000 jr r31 4555 000047c4 54000000 nop 4556 000047c8 .endproc _dstrncmp 4557 000047c8 .align 2 4558 000047c8 .proc _dstrlen 4559 000047c8 .global _dstrlen 4560 000047c8 _dstrlen: 4561 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 4562 000047c8 afbefffc sw -4(r29),r30; push fp 4563 000047cc 001df020 add r30,r0,r29; fp = sp 4564 000047d0 afbffff8 sw -8(r29),r31; push ret addr 4565 000047d4 2fbd0010 subui r29,r29,#16; alloc local storage 4566 000047d8 afa20000 sw 0(r29),r2 4567 000047dc 8fdf0000 lw r31,(r30) 4568 000047e0 20020000 addi r2,r0,#0 4569 000047e4 08000008 j L97_LF5 4570 000047e8 54000000 nop; not filled. 4571 000047ec L95_LF5: 4572 000047ec 20420001 addi r2,r2,#1 4573 000047f0 L97_LF5: 4574 000047f0 93e10000 lbu r1,(r31) 4575 000047f4 23ff0001 addi r31,r31,#1 4576 000047f8 64210000 snei r1,r1,#0 4577 000047fc 1420ffec bnez r1,L95_LF5 4578 00004800 54000000 nop; not filled. 4579 00004804 00020820 add r1,r0,r2 4580 00004808 8fa20000 lw r2,0(r29) 4581 0000480c 8fdffff8 lw r31,-8(r30) 4582 00004810 001ee820 add r29,r0,r30 4583 00004814 8fdefffc lw r30,-4(r30) 4584 00004818 4be00000 jr r31 4585 0000481c 54000000 nop 4586 00004820 .endproc _dstrlen 4587 00004820 .align 2 4588 00004820 .proc _dstrstr 4589 00004820 .global _dstrstr 4590 00004820 _dstrstr: 4591 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 4592 00004820 afbefffc sw -4(r29),r30; push fp 4593 00004824 001df020 add r30,r0,r29; fp = sp 4594 00004828 afbffff8 sw -8(r29),r31; push ret addr 4595 0000482c 2fbd0020 subui r29,r29,#32; alloc local storage 4596 00004830 afa20000 sw 0(r29),r2 4597 00004834 afa30004 sw 4(r29),r3 4598 00004838 afa40008 sw 8(r29),r4 4599 0000483c afa5000c sw 12(r29),r5 4600 00004840 afa60010 sw 16(r29),r6 4601 00004844 afa70014 sw 20(r29),r7 4602 00004848 8fc50000 lw r5,(r30) 4603 0000484c 8fc70004 lw r7,4(r30) 4604 00004850 20030000 addi r3,r0,#0 4605 00004854 90e10000 lbu r1,(r7) 4606 00004858 20e20001 addi r2,r7,#1 4607 0000485c 64210000 snei r1,r1,#0 4608 00004860 1020001c beqz r1,L125_LF5 4609 00004864 54000000 nop; not filled. 4610 00004868 L126_LF5: 4611 00004868 20630001 addi r3,r3,#1 4612 0000486c 90410000 lbu r1,(r2) 4613 00004870 20420001 addi r2,r2,#1 4614 00004874 64210000 snei r1,r1,#0 4615 00004878 1420ffec bnez r1,L126_LF5 4616 0000487c 54000000 nop; not filled. 4617 00004880 L125_LF5: 4618 00004880 00033020 add r6,r0,r3 4619 00004884 080000ac j L149_LF5 4620 00004888 54000000 nop; not filled. 4621 0000488c L130_LF5: 4622 0000488c 00051820 add r3,r0,r5 4623 00004890 00072020 add r4,r0,r7 4624 00004894 20020000 addi r2,r0,#0 4625 00004898 0046082a slt r1,r2,r6 4626 0000489c 1020003c beqz r1,L134_LF5 4627 000048a0 54000000 nop; not filled. 4628 000048a4 L136_LF5: 4629 000048a4 909f0000 lbu r31,(r4) 4630 000048a8 67e10000 snei r1,r31,#0 4631 000048ac 10200038 beqz r1,L150_LF5 4632 000048b0 54000000 nop; not filled. 4633 000048b4 90610000 lbu r1,(r3) 4634 000048b8 003f0829 sne r1,r1,r31 4635 000048bc 1420001c bnez r1,L134_LF5 4636 000048c0 54000000 nop; not filled. 4637 000048c4 20630001 addi r3,r3,#1 4638 000048c8 20840001 addi r4,r4,#1 4639 000048cc 20420001 addi r2,r2,#1 4640 000048d0 0046082a slt r1,r2,r6 4641 000048d4 1420ffcc bnez r1,L136_LF5 4642 000048d8 54000000 nop; not filled. 4643 000048dc L134_LF5: 4644 000048dc 00460828 seq r1,r2,r6 4645 000048e0 10200010 beqz r1,L141_LF5 4646 000048e4 54000000 nop; not filled. 4647 000048e8 L150_LF5: 4648 000048e8 20010000 addi r1,r0,#0 4649 000048ec 08000028 j L132_LF5 4650 000048f0 54000000 nop; not filled. 4651 000048f4 L141_LF5: 4652 000048f4 90630000 lbu r3,(r3) 4653 000048f8 90820000 lbu r2,(r4) 4654 000048fc 00620822 sub r1,r3,r2 4655 00004900 74210000 sgei r1,r1,#0 4656 00004904 201fffff addi r31,r0,#-1 4657 00004908 10200008 beqz r1,L143_LF5 4658 0000490c 54000000 nop; not filled. 4659 00004910 0062f829 sne r31,r3,r2 4660 00004914 L143_LF5: 4661 00004914 001f0820 add r1,r0,r31 4662 00004918 L132_LF5: 4663 00004918 64210000 snei r1,r1,#0 4664 0000491c 14200010 bnez r1,L131_LF5 4665 00004920 54000000 nop; not filled. 4666 00004924 00050820 add r1,r0,r5 4667 00004928 0800001c j L146_LF5 4668 0000492c 54000000 nop; not filled. 4669 00004930 L131_LF5: 4670 00004930 20a50001 addi r5,r5,#1 4671 00004934 L149_LF5: 4672 00004934 90a10000 lbu r1,(r5) 4673 00004938 64210000 snei r1,r1,#0 4674 0000493c 1420ff4c bnez r1,L130_LF5 4675 00004940 54000000 nop; not filled. 4676 00004944 20010000 addi r1,r0,#0 4677 00004948 L146_LF5: 4678 00004948 8fa20000 lw r2,0(r29) 4679 0000494c 8fa30004 lw r3,4(r29) 4680 00004950 8fa40008 lw r4,8(r29) 4681 00004954 8fa5000c lw r5,12(r29) 4682 00004958 8fa60010 lw r6,16(r29) 4683 0000495c 8fa70014 lw r7,20(r29) 4684 00004960 8fdffff8 lw r31,-8(r30) 4685 00004964 001ee820 add r29,r0,r30 4686 00004968 8fdefffc lw r30,-4(r30) 4687 0000496c 4be00000 jr r31 4688 00004970 54000000 nop 4689 00004974 .endproc _dstrstr 4690 00004974 .align 2 4691 00004974 .proc _dmindex 4692 00004974 .global _dmindex 4693 00004974 _dmindex: 4694 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 4695 00004974 afbefffc sw -4(r29),r30; push fp 4696 00004978 001df020 add r30,r0,r29; fp = sp 4697 0000497c afbffff8 sw -8(r29),r31; push ret addr 4698 00004980 2fbd0020 subui r29,r29,#32; alloc local storage 4699 00004984 afa20000 sw 0(r29),r2 4700 00004988 afa30004 sw 4(r29),r3 4701 0000498c afa40008 sw 8(r29),r4 4702 00004990 afa5000c sw 12(r29),r5 4703 00004994 afa60010 sw 16(r29),r6 4704 00004998 8fc40000 lw r4,(r30) 4705 0000499c 8fc60004 lw r6,4(r30) 4706 000049a0 90810000 lbu r1,(r4) 4707 000049a4 64210000 snei r1,r1,#0 4708 000049a8 10200060 beqz r1,L164_LF5 4709 000049ac 54000000 nop; not filled. 4710 000049b0 00012820 add r5,r0,r1 4711 000049b4 L165_LF5: 4712 000049b4 00061020 add r2,r0,r6 4713 000049b8 80df0000 lb r31,(r6) 4714 000049bc 33e100ff andi r1,r31,#0x00ff 4715 000049c0 64210000 snei r1,r1,#0 4716 000049c4 1020003c beqz r1,L163_LF5 4717 000049c8 54000000 nop; not filled. 4718 000049cc 90830000 lbu r3,(r4) 4719 000049d0 L169_LF5: 4720 000049d0 33e100ff andi r1,r31,#0x00ff 4721 000049d4 00610828 seq r1,r3,r1 4722 000049d8 10200010 beqz r1,L168_LF5 4723 000049dc 54000000 nop; not filled. 4724 000049e0 00040820 add r1,r0,r4 4725 000049e4 08000028 j L173_LF5 4726 000049e8 54000000 nop; not filled. 4727 000049ec L168_LF5: 4728 000049ec 20420001 addi r2,r2,#1 4729 000049f0 805f0000 lb r31,(r2) 4730 000049f4 33e100ff andi r1,r31,#0x00ff 4731 000049f8 64210000 snei r1,r1,#0 4732 000049fc 1420ffd0 bnez r1,L169_LF5 4733 00004a00 54000000 nop; not filled. 4734 00004a04 L163_LF5: 4735 00004a04 14a0ffac bnez r5,L165_LF5 4736 00004a08 54000000 nop; not filled. 4737 00004a0c L164_LF5: 4738 00004a0c 20010000 addi r1,r0,#0 4739 00004a10 L173_LF5: 4740 00004a10 8fa20000 lw r2,0(r29) 4741 00004a14 8fa30004 lw r3,4(r29) 4742 00004a18 8fa40008 lw r4,8(r29) 4743 00004a1c 8fa5000c lw r5,12(r29) 4744 00004a20 8fa60010 lw r6,16(r29) 4745 00004a24 8fdffff8 lw r31,-8(r30) 4746 00004a28 001ee820 add r29,r0,r30 4747 00004a2c 8fdefffc lw r30,-4(r30) 4748 00004a30 4be00000 jr r31 4749 00004a34 54000000 nop 4750 00004a38 .endproc _dmindex 4751 00004a38 .align 2 4752 00004a38 .proc _dindex 4753 00004a38 .global _dindex 4754 00004a38 _dindex: 4755 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 4756 00004a38 afbefffc sw -4(r29),r30; push fp 4757 00004a3c 001df020 add r30,r0,r29; fp = sp 4758 00004a40 afbffff8 sw -8(r29),r31; push ret addr 4759 00004a44 2fbd0010 subui r29,r29,#16; alloc local storage 4760 00004a48 afa20000 sw 0(r29),r2 4761 00004a4c afa30004 sw 4(r29),r3 4762 00004a50 8fc20000 lw r2,(r30) 4763 00004a54 8fc30004 lw r3,4(r30) 4764 00004a58 08000024 j L187_LF5 4765 00004a5c 54000000 nop; not filled. 4766 00004a60 L183_LF5: 4767 00004a60 33e100ff andi r1,r31,#0x00ff 4768 00004a64 00230828 seq r1,r1,r3 4769 00004a68 10200010 beqz r1,L184_LF5 4770 00004a6c 54000000 nop; not filled. 4771 00004a70 00020820 add r1,r0,r2 4772 00004a74 08000020 j L186_LF5 4773 00004a78 54000000 nop; not filled. 4774 00004a7c L184_LF5: 4775 00004a7c 20420001 addi r2,r2,#1 4776 00004a80 L187_LF5: 4777 00004a80 805f0000 lb r31,(r2) 4778 00004a84 33e100ff andi r1,r31,#0x00ff 4779 00004a88 64210000 snei r1,r1,#0 4780 00004a8c 1420ffd0 bnez r1,L183_LF5 4781 00004a90 54000000 nop; not filled. 4782 00004a94 20010000 addi r1,r0,#0 4783 00004a98 L186_LF5: 4784 00004a98 8fa20000 lw r2,0(r29) 4785 00004a9c 8fa30004 lw r3,4(r29) 4786 00004aa0 8fdffff8 lw r31,-8(r30) 4787 00004aa4 001ee820 add r29,r0,r30 4788 00004aa8 8fdefffc lw r30,-4(r30) 4789 00004aac 4be00000 jr r31 4790 00004ab0 54000000 nop 4791 00004ab4 .endproc _dindex 4792 00004ab4 .align 2 4793 00004ab4 .proc _ditoa 4794 00004ab4 .global _ditoa 4795 00004ab4 _ditoa: 4796 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 4797 00004ab4 afbefffc sw -4(r29),r30; push fp 4798 00004ab8 001df020 add r30,r0,r29; fp = sp 4799 00004abc afbffff8 sw -8(r29),r31; push ret addr 4800 00004ac0 2fbd0020 subui r29,r29,#32; alloc local storage 4801 00004ac4 afa20000 sw 0(r29),r2 4802 00004ac8 afa30004 sw 4(r29),r3 4803 00004acc afa40008 sw 8(r29),r4 4804 00004ad0 afa5000c sw 12(r29),r5 4805 00004ad4 afa60010 sw 16(r29),r6 4806 00004ad8 8fc30000 lw r3,(r30) 4807 00004adc 8fc40004 lw r4,4(r30) 4808 00004ae0 68610000 slti r1,r3,#0 4809 00004ae4 10200010 beqz r1,L203_LF5 4810 00004ae8 54000000 nop; not filled. 4811 00004aec 2006002d addi r6,r0,(#0x2d)&0xff 4812 00004af0 08000014 j L216_LF5 4813 00004af4 54000000 nop; not filled. 4814 00004af8 L203_LF5: 4815 00004af8 64610000 snei r1,r3,#0 4816 00004afc 14200018 bnez r1,L205_LF5 4817 00004b00 54000000 nop; not filled. 4818 00004b04 20060030 addi r6,r0,(#0x30)&0xff 4819 00004b08 L216_LF5: 4820 00004b08 a0860000 sb (r4),r6 4821 00004b0c 20840001 addi r4,r4,#1 4822 00004b10 0800007c j L204_LF5 4823 00004b14 54000000 nop; not filled. 4824 00004b18 L205_LF5: 4825 00004b18 201f0001 addi r31,r0,#1 4826 00004b1c 03e3082c sle r1,r31,r3 4827 00004b20 1020001c beqz r1,L208_LF5 4828 00004b24 54000000 nop; not filled. 4829 00004b28 L209_LF5: 4830 00004b28 53e10002 slli r1,r31,#0x2 4831 00004b2c 003f0820 add r1,r1,r31 4832 00004b30 503f0001 slli r31,r1,#0x1 4833 00004b34 03e3082c sle r1,r31,r3 4834 00004b38 1420ffec bnez r1,L209_LF5 4835 00004b3c 54000000 nop; not filled. 4836 00004b40 L208_LF5: 4837 00004b40 2005000a addi r5,r0,#10 4838 00004b44 L212_LF5: 4839 00004b44 03e00035 movi2fp f0,r31 4840 00004b48 00a00835 movi2fp f1,r5 4841 00004b4c 0401000f div f0,f0,f1 4842 00004b50 0000f834 movfp2i r31,f0 4843 00004b54 00600035 movi2fp f0,r3 4844 00004b58 03e00835 movi2fp f1,r31 4845 00004b5c 0401000f div f0,f0,f1 4846 00004b60 00001034 movfp2i r2,f0 4847 00004b64 20410030 addi r1,r2,#48 4848 00004b68 a0810000 sb (r4),r1 4849 00004b6c 20840001 addi r4,r4,#1 4850 00004b70 00400035 movi2fp f0,r2 4851 00004b74 03e00835 movi2fp f1,r31 4852 00004b78 0401000e mult f0,f0,f1 4853 00004b7c 00000834 movfp2i r1,f0 4854 00004b80 00611822 sub r3,r3,r1 4855 00004b84 6fe10001 sgti r1,r31,#1 4856 00004b88 1420ffb8 bnez r1,L212_LF5 4857 00004b8c 54000000 nop; not filled. 4858 00004b90 L204_LF5: 4859 00004b90 20060000 addi r6,r0,(#0x0)&0xff 4860 00004b94 a0860000 sb (r4),r6 4861 00004b98 8fa20000 lw r2,0(r29) 4862 00004b9c 8fa30004 lw r3,4(r29) 4863 00004ba0 8fa40008 lw r4,8(r29) 4864 00004ba4 8fa5000c lw r5,12(r29) 4865 00004ba8 8fa60010 lw r6,16(r29) 4866 00004bac 8fdffff8 lw r31,-8(r30) 4867 00004bb0 001ee820 add r29,r0,r30 4868 00004bb4 8fdefffc lw r30,-4(r30) 4869 00004bb8 4be00000 jr r31 4870 00004bbc 54000000 nop 4871 00004bc0 .endproc _ditoa 4872 00004bc0 .align 2 4873 00004bc0 .proc _dstrtol 4874 00004bc0 .global _dstrtol 4875 00004bc0 _dstrtol: 4876 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 4877 00004bc0 afbefffc sw -4(r29),r30; push fp 4878 00004bc4 001df020 add r30,r0,r29; fp = sp 4879 00004bc8 afbffff8 sw -8(r29),r31; push ret addr 4880 00004bcc 2fbd0020 subui r29,r29,#32; alloc local storage 4881 00004bd0 afa20000 sw 0(r29),r2 4882 00004bd4 afa30004 sw 4(r29),r3 4883 00004bd8 afa40008 sw 8(r29),r4 4884 00004bdc afa5000c sw 12(r29),r5 4885 00004be0 afa60010 sw 16(r29),r6 4886 00004be4 8fc20000 lw r2,(r30) 4887 00004be8 8fc50004 lw r5,4(r30) 4888 00004bec 8fc40008 lw r4,8(r30) 4889 00004bf0 20030000 addi r3,r0,#0 4890 00004bf4 08000008 j L247_LF5 4891 00004bf8 54000000 nop; not filled. 4892 00004bfc L220_LF5: 4893 00004bfc 20420001 addi r2,r2,#1 4894 00004c00 L247_LF5: 4895 00004c00 805f0000 lb r31,(r2) 4896 00004c04 33e100ff andi r1,r31,#0x00ff 4897 00004c08 60210020 seqi r1,r1,#32 4898 00004c0c 1420ffec bnez r1,L220_LF5 4899 00004c10 54000000 nop; not filled. 4900 00004c14 23e1fff7 addi r1,r31,#-9 4901 00004c18 302100ff andi r1,r1,#0x00ff 4902 00004c1c 70210001 sleui r1,r1,#1 4903 00004c20 1420ffd8 bnez r1,L220_LF5 4904 00004c24 54000000 nop; not filled. 4905 00004c28 64a10000 snei r1,r5,#0 4906 00004c2c 10200008 beqz r1,L222_LF5 4907 00004c30 54000000 nop; not filled. 4908 00004c34 aca20000 sw (r5),r2 4909 00004c38 L222_LF5: 4910 00004c38 905f0000 lbu r31,(r2) 4911 00004c3c 67e10000 snei r1,r31,#0 4912 00004c40 10200090 beqz r1,L248_LF5 4913 00004c44 54000000 nop; not filled. 4914 00004c48 63e1002d seqi r1,r31,#45 4915 00004c4c 10200014 beqz r1,L224_LF5 4916 00004c50 54000000 nop; not filled. 4917 00004c54 2006ffff addi r6,r0,#-1 4918 00004c58 20420001 addi r2,r2,#1 4919 00004c5c 08000008 j L225_LF5 4920 00004c60 54000000 nop; not filled. 4921 00004c64 L224_LF5: 4922 00004c64 20060001 addi r6,r0,#1 4923 00004c68 L225_LF5: 4924 00004c68 64810000 snei r1,r4,#0 4925 00004c6c 14200054 bnez r1,L226_LF5 4926 00004c70 54000000 nop; not filled. 4927 00004c74 90410000 lbu r1,(r2) 4928 00004c78 60210030 seqi r1,r1,#48 4929 00004c7c 10200040 beqz r1,L227_LF5 4930 00004c80 54000000 nop; not filled. 4931 00004c84 20420001 addi r2,r2,#1 4932 00004c88 905f0000 lbu r31,(r2) 4933 00004c8c 63e10078 seqi r1,r31,#120 4934 00004c90 14200010 bnez r1,L229_LF5 4935 00004c94 54000000 nop; not filled. 4936 00004c98 63e10058 seqi r1,r31,#88 4937 00004c9c 10200014 beqz r1,L228_LF5 4938 00004ca0 54000000 nop; not filled. 4939 00004ca4 L229_LF5: 4940 00004ca4 20040010 addi r4,r0,#16 4941 00004ca8 20420001 addi r2,r2,#1 4942 00004cac 08000014 j L226_LF5 4943 00004cb0 54000000 nop; not filled. 4944 00004cb4 L228_LF5: 4945 00004cb4 20040008 addi r4,r0,#8 4946 00004cb8 08000008 j L226_LF5 4947 00004cbc 54000000 nop; not filled. 4948 00004cc0 L227_LF5: 4949 00004cc0 2004000a addi r4,r0,#10 4950 00004cc4 L226_LF5: 4951 00004cc4 2081ffff addi r1,r4,#-1 4952 00004cc8 6c21000f sgtui r1,r1,#15 4953 00004ccc 10200010 beqz r1,L233_LF5 4954 00004cd0 54000000 nop; not filled. 4955 00004cd4 L248_LF5: 4956 00004cd4 00030820 add r1,r0,r3 4957 00004cd8 080000c4 j L245_LF5 4958 00004cdc 54000000 nop; not filled. 4959 00004ce0 L233_LF5: 4960 00004ce0 805f0000 lb r31,(r2) 4961 00004ce4 23e1ffd0 addi r1,r31,#-48 4962 00004ce8 302100ff andi r1,r1,#0x00ff 4963 00004cec 70210009 sleui r1,r1,#9 4964 00004cf0 10200014 beqz r1,L236_LF5 4965 00004cf4 54000000 nop; not filled. 4966 00004cf8 33e100ff andi r1,r31,#0x00ff 4967 00004cfc 2021ffd0 addi r1,r1,#-48 4968 00004d00 08000050 j L237_LF5 4969 00004d04 54000000 nop; not filled. 4970 00004d08 L236_LF5: 4971 00004d08 23e1ff9f addi r1,r31,#-97 4972 00004d0c 302100ff andi r1,r1,#0x00ff 4973 00004d10 70210019 sleui r1,r1,#25 4974 00004d14 10200014 beqz r1,L238_LF5 4975 00004d18 54000000 nop; not filled. 4976 00004d1c 33e100ff andi r1,r31,#0x00ff 4977 00004d20 2021ffa9 addi r1,r1,#-87 4978 00004d24 0800002c j L237_LF5 4979 00004d28 54000000 nop; not filled. 4980 00004d2c L238_LF5: 4981 00004d2c 23e1ffbf addi r1,r31,#-65 4982 00004d30 302100ff andi r1,r1,#0x00ff 4983 00004d34 70210019 sleui r1,r1,#25 4984 00004d38 10200014 beqz r1,L240_LF5 4985 00004d3c 54000000 nop; not filled. 4986 00004d40 33e100ff andi r1,r31,#0x00ff 4987 00004d44 2021ffc9 addi r1,r1,#-55 4988 00004d48 08000008 j L237_LF5 4989 00004d4c 54000000 nop; not filled. 4990 00004d50 L240_LF5: 4991 00004d50 200103e8 addi r1,r0,#1000 4992 00004d54 L237_LF5: 4993 00004d54 0024f82a slt r31,r1,r4 4994 00004d58 13e00024 beqz r31,L246_LF5 4995 00004d5c 54000000 nop; not filled. 4996 00004d60 00600035 movi2fp f0,r3 4997 00004d64 00800835 movi2fp f1,r4 4998 00004d68 0401000e mult f0,f0,f1 4999 00004d6c 00001834 movfp2i r3,f0 5000 00004d70 00611820 add r3,r3,r1 5001 00004d74 20420001 addi r2,r2,#1 5002 00004d78 17e0ff64 bnez r31,L233_LF5 5003 00004d7c 54000000 nop; not filled. 5004 00004d80 L246_LF5: 5005 00004d80 64a10000 snei r1,r5,#0 5006 00004d84 10200008 beqz r1,L244_LF5 5007 00004d88 54000000 nop; not filled. 5008 00004d8c aca20000 sw (r5),r2 5009 00004d90 L244_LF5: 5010 00004d90 00600035 movi2fp f0,r3 5011 00004d94 00c00835 movi2fp f1,r6 5012 00004d98 0401000e mult f0,f0,f1 5013 00004d9c 00000834 movfp2i r1,f0 5014 00004da0 L245_LF5: 5015 00004da0 8fa20000 lw r2,0(r29) 5016 00004da4 8fa30004 lw r3,4(r29) 5017 00004da8 8fa40008 lw r4,8(r29) 5018 00004dac 8fa5000c lw r5,12(r29) 5019 00004db0 8fa60010 lw r6,16(r29) 5020 00004db4 8fdffff8 lw r31,-8(r30) 5021 00004db8 001ee820 add r29,r0,r30 5022 00004dbc 8fdefffc lw r30,-4(r30) 5023 00004dc0 4be00000 jr r31 5024 00004dc4 54000000 nop 5025 00004dc8 .endproc _dstrtol 5026 00004dc8 .align 2 5027 00004dc8 .proc _bcopy 5028 00004dc8 .global _bcopy 5029 00004dc8 _bcopy: 5030 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 5031 00004dc8 afbefffc sw -4(r29),r30; push fp 5032 00004dcc 001df020 add r30,r0,r29; fp = sp 5033 00004dd0 afbffff8 sw -8(r29),r31; push ret addr 5034 00004dd4 2fbd0018 subui r29,r29,#24; alloc local storage 5035 00004dd8 afa20000 sw 0(r29),r2 5036 00004ddc afa30004 sw 4(r29),r3 5037 00004de0 afa40008 sw 8(r29),r4 5038 00004de4 8fc30000 lw r3,(r30) 5039 00004de8 8fc20004 lw r2,4(r30) 5040 00004dec 8fdf0008 lw r31,8(r30) 5041 00004df0 08000014 j L259_LF5 5042 00004df4 54000000 nop; not filled. 5043 00004df8 L257_LF5: 5044 00004df8 80640000 lb r4,(r3) 5045 00004dfc a0440000 sb (r2),r4 5046 00004e00 20630001 addi r3,r3,#1 5047 00004e04 20420001 addi r2,r2,#1 5048 00004e08 L259_LF5: 5049 00004e08 001f0820 add r1,r0,r31 5050 00004e0c 23ffffff addi r31,r31,#-1 5051 00004e10 6c210000 sgti r1,r1,#0 5052 00004e14 1420ffe0 bnez r1,L257_LF5 5053 00004e18 54000000 nop; not filled. 5054 00004e1c 8fa20000 lw r2,0(r29) 5055 00004e20 8fa30004 lw r3,4(r29) 5056 00004e24 8fa40008 lw r4,8(r29) 5057 00004e28 8fdffff8 lw r31,-8(r30) 5058 00004e2c 001ee820 add r29,r0,r30 5059 00004e30 8fdefffc lw r30,-4(r30) 5060 00004e34 4be00000 jr r31 5061 00004e38 54000000 nop 5062 00004e3c .endproc _bcopy 5063 00004e3c .align 2 5064 00004e3c .proc _bzero 5065 00004e3c .global _bzero 5066 00004e3c _bzero: 5067 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 5068 00004e3c afbefffc sw -4(r29),r30; push fp 5069 00004e40 001df020 add r30,r0,r29; fp = sp 5070 00004e44 afbffff8 sw -8(r29),r31; push ret addr 5071 00004e48 2fbd0010 subui r29,r29,#16; alloc local storage 5072 00004e4c afa20000 sw 0(r29),r2 5073 00004e50 afa30004 sw 4(r29),r3 5074 00004e54 8fc20000 lw r2,(r30) 5075 00004e58 8fdf0004 lw r31,4(r30) 5076 00004e5c 08000010 j L270_LF5 5077 00004e60 54000000 nop; not filled. 5078 00004e64 L268_LF5: 5079 00004e64 20030000 addi r3,r0,(#0x0)&0xff 5080 00004e68 a0430000 sb (r2),r3 5081 00004e6c 20420001 addi r2,r2,#1 5082 00004e70 L270_LF5: 5083 00004e70 001f0820 add r1,r0,r31 5084 00004e74 23ffffff addi r31,r31,#-1 5085 00004e78 6c210000 sgti r1,r1,#0 5086 00004e7c 1420ffe4 bnez r1,L268_LF5 5087 00004e80 54000000 nop; not filled. 5088 00004e84 8fa20000 lw r2,0(r29) 5089 00004e88 8fa30004 lw r3,4(r29) 5090 00004e8c 8fdffff8 lw r31,-8(r30) 5091 00004e90 001ee820 add r29,r0,r30 5092 00004e94 8fdefffc lw r30,-4(r30) 5093 00004e98 4be00000 jr r31 5094 00004e9c 54000000 nop 5095 00004ea0 .endproc _bzero 5096 ; Compiled by GCC 5098 00004ea0 .align 2 5099 00004ea0 .proc _isspace 5100 00004ea0 .global _isspace 5101 00004ea0 _isspace: 5102 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 5103 00004ea0 afbefffc sw -4(r29),r30; push fp 5104 00004ea4 001df020 add r30,r0,r29; fp = sp 5105 00004ea8 afbffff8 sw -8(r29),r31; push ret addr 5106 00004eac 2fbd0010 subui r29,r29,#16; alloc local storage 5107 00004eb0 afa20000 sw 0(r29),r2 5108 00004eb4 83c20003 lb r2,3(r30) 5109 00004eb8 201f0000 addi r31,r0,#0 5110 00004ebc 304100ff andi r1,r2,#0x00ff 5111 00004ec0 60210020 seqi r1,r1,#32 5112 00004ec4 14200018 bnez r1,L6_LF6 5113 00004ec8 54000000 nop; not filled. 5114 00004ecc 2041fff7 addi r1,r2,#-9 5115 00004ed0 302100ff andi r1,r1,#0x00ff 5116 00004ed4 70210001 sleui r1,r1,#1 5117 00004ed8 10200008 beqz r1,L5_LF6 5118 00004edc 54000000 nop; not filled. 5119 00004ee0 L6_LF6: 5120 00004ee0 201f0001 addi r31,r0,#1 5121 00004ee4 L5_LF6: 5122 00004ee4 001f0820 add r1,r0,r31 5123 00004ee8 8fa20000 lw r2,0(r29) 5124 00004eec 8fdffff8 lw r31,-8(r30) 5125 00004ef0 001ee820 add r29,r0,r30 5126 00004ef4 8fdefffc lw r30,-4(r30) 5127 00004ef8 4be00000 jr r31 5128 00004efc 54000000 nop 5129 00004f00 .endproc _isspace 5130 00004f00 .align 2 5131 00004f00 .proc _isxdigit 5132 00004f00 .global _isxdigit 5133 00004f00 _isxdigit: 5134 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 5135 00004f00 afbefffc sw -4(r29),r30; push fp 5136 00004f04 001df020 add r30,r0,r29; fp = sp 5137 00004f08 afbffff8 sw -8(r29),r31; push ret addr 5138 00004f0c 2fbd0010 subui r29,r29,#16; alloc local storage 5139 00004f10 afa20000 sw 0(r29),r2 5140 00004f14 83df0003 lb r31,3(r30) 5141 00004f18 20020000 addi r2,r0,#0 5142 00004f1c 23e1ffd0 addi r1,r31,#-48 5143 00004f20 302100ff andi r1,r1,#0x00ff 5144 00004f24 70210009 sleui r1,r1,#9 5145 00004f28 14200028 bnez r1,L12_LF6 5146 00004f2c 54000000 nop; not filled. 5147 00004f30 23e1ff9f addi r1,r31,#-97 5148 00004f34 302100ff andi r1,r1,#0x00ff 5149 00004f38 70210005 sleui r1,r1,#5 5150 00004f3c 14200014 bnez r1,L12_LF6 5151 00004f40 54000000 nop; not filled. 5152 00004f44 33e100ff andi r1,r31,#0x00ff 5153 00004f48 64210041 snei r1,r1,#65 5154 00004f4c 14200008 bnez r1,L11_LF6 5155 00004f50 54000000 nop; not filled. 5156 00004f54 L12_LF6: 5157 00004f54 20020001 addi r2,r0,#1 5158 00004f58 L11_LF6: 5159 00004f58 00020820 add r1,r0,r2 5160 00004f5c 8fa20000 lw r2,0(r29) 5161 00004f60 8fdffff8 lw r31,-8(r30) 5162 00004f64 001ee820 add r29,r0,r30 5163 00004f68 8fdefffc lw r30,-4(r30) 5164 00004f6c 4be00000 jr r31 5165 00004f70 54000000 nop 5166 00004f74 .endproc _isxdigit 5167 00004f74 .align 2 5168 00004f74 .proc _DisableIntrs 5169 00004f74 .global _DisableIntrs 5170 00004f74 _DisableIntrs: 5171 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 5172 00004f74 afbefffc sw -4(r29),r30; push fp 5173 00004f78 001df020 add r30,r0,r29; fp = sp 5174 00004f7c afbffff8 sw -8(r29),r31; push ret addr 5175 00004f80 2fbd0010 subui r29,r29,#16; alloc local storage 5176 00004f84 afa20000 sw 0(r29),r2 5177 00004f88 23bdfff8 addi r29,r29,#-8 5178 00004f8c 2002000f addi r2,r0,#15 5179 00004f90 afa20000 sw (r29),r2 5180 00004f94 0fffc2f0 jal _SetIntrs 5181 00004f98 54000000 nop; not filled. 5182 00004f9c 23bd0008 addi r29,r29,#8 5183 00004fa0 8fa20000 lw r2,0(r29) 5184 00004fa4 8fdffff8 lw r31,-8(r30) 5185 00004fa8 001ee820 add r29,r0,r30 5186 00004fac 8fdefffc lw r30,-4(r30) 5187 00004fb0 4be00000 jr r31 5188 00004fb4 54000000 nop 5189 00004fb8 .endproc _DisableIntrs 5190 00004fb8 .align 2 5191 00004fb8 .proc _EnableIntrs 5192 00004fb8 .global _EnableIntrs 5193 00004fb8 _EnableIntrs: 5194 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 5195 00004fb8 afbefffc sw -4(r29),r30; push fp 5196 00004fbc 001df020 add r30,r0,r29; fp = sp 5197 00004fc0 afbffff8 sw -8(r29),r31; push ret addr 5198 00004fc4 2fbd0010 subui r29,r29,#16; alloc local storage 5199 00004fc8 afa20000 sw 0(r29),r2 5200 00004fcc 23bdfff8 addi r29,r29,#-8 5201 00004fd0 20020000 addi r2,r0,#0 5202 00004fd4 afa20000 sw (r29),r2 5203 00004fd8 0fffc2ac jal _SetIntrs 5204 00004fdc 54000000 nop; not filled. 5205 00004fe0 23bd0008 addi r29,r29,#8 5206 00004fe4 8fa20000 lw r2,0(r29) 5207 00004fe8 8fdffff8 lw r31,-8(r30) 5208 00004fec 001ee820 add r29,r0,r30 5209 00004ff0 8fdefffc lw r30,-4(r30) 5210 00004ff4 4be00000 jr r31 5211 00004ff8 54000000 nop 5212 00004ffc .endproc _EnableIntrs 5213 00004ffc .align 2 5214 00004ffc .proc _RestoreIntrs 5215 00004ffc .global _RestoreIntrs 5216 00004ffc _RestoreIntrs: 5217 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 5218 00004ffc afbefffc sw -4(r29),r30; push fp 5219 00005000 001df020 add r30,r0,r29; fp = sp 5220 00005004 afbffff8 sw -8(r29),r31; push ret addr 5221 00005008 2fbd0010 subui r29,r29,#16; alloc local storage 5222 0000500c afa20000 sw 0(r29),r2 5223 00005010 23bdfff8 addi r29,r29,#-8 5224 00005014 8fc20000 lw r2,(r30) 5225 00005018 afa20000 sw (r29),r2 5226 0000501c 0fffc268 jal _SetIntrs 5227 00005020 54000000 nop; not filled. 5228 00005024 23bd0008 addi r29,r29,#8 5229 00005028 8fa20000 lw r2,0(r29) 5230 0000502c 8fdffff8 lw r31,-8(r30) 5231 00005030 001ee820 add r29,r0,r30 5232 00005034 8fdefffc lw r30,-4(r30) 5233 00005038 4be00000 jr r31 5234 0000503c 54000000 nop 5235 00005040 .endproc _RestoreIntrs 5236 00005040 .align 2 5237 00005040 .proc _QueueLinkInit 5238 00005040 .global _QueueLinkInit 5239 00005040 _QueueLinkInit: 5240 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 5241 00005040 afbefffc sw -4(r29),r30; push fp 5242 00005044 001df020 add r30,r0,r29; fp = sp 5243 00005048 afbffff8 sw -8(r29),r31; push ret addr 5244 0000504c 2fbd0010 subui r29,r29,#16; alloc local storage 5245 00005050 afa20000 sw 0(r29),r2 5246 00005054 8fc10000 lw r1,(r30) 5247 00005058 8fc20004 lw r2,4(r30) 5248 0000505c 201f0000 addi r31,r0,#0 5249 00005060 ac3f0000 sw (r1),r31 5250 00005064 ac22000c sw 12(r1),r2 5251 00005068 8fa20000 lw r2,0(r29) 5252 0000506c 8fdffff8 lw r31,-8(r30) 5253 00005070 001ee820 add r29,r0,r30 5254 00005074 8fdefffc lw r30,-4(r30) 5255 00005078 4be00000 jr r31 5256 0000507c 54000000 nop 5257 00005080 .endproc _QueueLinkInit 5258 00005080 .align 2 5259 00005080 .proc _QueueNext 5260 00005080 .global _QueueNext 5261 00005080 _QueueNext: 5262 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 5263 00005080 afbefffc sw -4(r29),r30; push fp 5264 00005084 001df020 add r30,r0,r29; fp = sp 5265 00005088 afbffff8 sw -8(r29),r31; push ret addr 5266 0000508c 2fbd0008 subui r29,r29,#8; alloc local storage 5267 00005090 8fc10000 lw r1,(r30) 5268 00005094 8c210000 lw r1,(r1) 5269 00005098 8fdffff8 lw r31,-8(r30) 5270 0000509c 001ee820 add r29,r0,r30 5271 000050a0 8fdefffc lw r30,-4(r30) 5272 000050a4 4be00000 jr r31 5273 000050a8 54000000 nop 5274 000050ac .endproc _QueueNext 5275 000050ac .align 2 5276 000050ac .proc _QueuePrev 5277 000050ac .global _QueuePrev 5278 000050ac _QueuePrev: 5279 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 5280 000050ac afbefffc sw -4(r29),r30; push fp 5281 000050b0 001df020 add r30,r0,r29; fp = sp 5282 000050b4 afbffff8 sw -8(r29),r31; push ret addr 5283 000050b8 2fbd0008 subui r29,r29,#8; alloc local storage 5284 000050bc 8fc10000 lw r1,(r30) 5285 000050c0 8c210004 lw r1,4(r1) 5286 000050c4 8fdffff8 lw r31,-8(r30) 5287 000050c8 001ee820 add r29,r0,r30 5288 000050cc 8fdefffc lw r30,-4(r30) 5289 000050d0 4be00000 jr r31 5290 000050d4 54000000 nop 5291 000050d8 .endproc _QueuePrev 5292 000050d8 .align 2 5293 000050d8 .proc _QueueFirst 5294 000050d8 .global _QueueFirst 5295 000050d8 _QueueFirst: 5296 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 5297 000050d8 afbefffc sw -4(r29),r30; push fp 5298 000050dc 001df020 add r30,r0,r29; fp = sp 5299 000050e0 afbffff8 sw -8(r29),r31; push ret addr 5300 000050e4 2fbd0008 subui r29,r29,#8; alloc local storage 5301 000050e8 8fc10000 lw r1,(r30) 5302 000050ec 8c210000 lw r1,(r1) 5303 000050f0 8fdffff8 lw r31,-8(r30) 5304 000050f4 001ee820 add r29,r0,r30 5305 000050f8 8fdefffc lw r30,-4(r30) 5306 000050fc 4be00000 jr r31 5307 00005100 54000000 nop 5308 00005104 .endproc _QueueFirst 5309 00005104 .align 2 5310 00005104 .proc _QueueLast 5311 00005104 .global _QueueLast 5312 00005104 _QueueLast: 5313 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 5314 00005104 afbefffc sw -4(r29),r30; push fp 5315 00005108 001df020 add r30,r0,r29; fp = sp 5316 0000510c afbffff8 sw -8(r29),r31; push ret addr 5317 00005110 2fbd0008 subui r29,r29,#8; alloc local storage 5318 00005114 8fc10000 lw r1,(r30) 5319 00005118 8c210004 lw r1,4(r1) 5320 0000511c 8fdffff8 lw r31,-8(r30) 5321 00005120 001ee820 add r29,r0,r30 5322 00005124 8fdefffc lw r30,-4(r30) 5323 00005128 4be00000 jr r31 5324 0000512c 54000000 nop 5325 00005130 .endproc _QueueLast 5326 00005130 .align 2 5327 00005130 .proc _QueueInsertAfter 5328 00005130 .global _QueueInsertAfter 5329 00005130 _QueueInsertAfter: 5330 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 5331 00005130 afbefffc sw -4(r29),r30; push fp 5332 00005134 001df020 add r30,r0,r29; fp = sp 5333 00005138 afbffff8 sw -8(r29),r31; push ret addr 5334 0000513c 2fbd0010 subui r29,r29,#16; alloc local storage 5335 00005140 afa20000 sw 0(r29),r2 5336 00005144 afa30004 sw 4(r29),r3 5337 00005148 8fc30000 lw r3,(r30) 5338 0000514c 8fc20004 lw r2,4(r30) 5339 00005150 8fc10008 lw r1,8(r30) 5340 00005154 ac230008 sw 8(r1),r3 5341 00005158 ac220004 sw 4(r1),r2 5342 0000515c 8c5f0000 lw r31,(r2) 5343 00005160 ac3f0000 sw (r1),r31 5344 00005164 ac410000 sw (r2),r1 5345 00005168 8c220000 lw r2,(r1) 5346 0000516c ac410004 sw 4(r2),r1 5347 00005170 8c610008 lw r1,8(r3) 5348 00005174 20210001 addi r1,r1,#1 5349 00005178 ac610008 sw 8(r3),r1 5350 0000517c 8fa20000 lw r2,0(r29) 5351 00005180 8fa30004 lw r3,4(r29) 5352 00005184 8fdffff8 lw r31,-8(r30) 5353 00005188 001ee820 add r29,r0,r30 5354 0000518c 8fdefffc lw r30,-4(r30) 5355 00005190 4be00000 jr r31 5356 00005194 54000000 nop 5357 00005198 .endproc _QueueInsertAfter 5358 00005198 .align 2 5359 00005198 .proc _QueueInsertFirst 5360 00005198 .global _QueueInsertFirst 5361 00005198 _QueueInsertFirst: 5362 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 5363 00005198 afbefffc sw -4(r29),r30; push fp 5364 0000519c 001df020 add r30,r0,r29; fp = sp 5365 000051a0 afbffff8 sw -8(r29),r31; push ret addr 5366 000051a4 2fbd0010 subui r29,r29,#16; alloc local storage 5367 000051a8 afa20000 sw 0(r29),r2 5368 000051ac afa30004 sw 4(r29),r3 5369 000051b0 8fc30000 lw r3,(r30) 5370 000051b4 8fc10004 lw r1,4(r30) 5371 000051b8 ac230008 sw 8(r1),r3 5372 000051bc ac230004 sw 4(r1),r3 5373 000051c0 8c7f0000 lw r31,(r3) 5374 000051c4 ac3f0000 sw (r1),r31 5375 000051c8 ac610000 sw (r3),r1 5376 000051cc 8c220000 lw r2,(r1) 5377 000051d0 ac410004 sw 4(r2),r1 5378 000051d4 8c610008 lw r1,8(r3) 5379 000051d8 20210001 addi r1,r1,#1 5380 000051dc ac610008 sw 8(r3),r1 5381 000051e0 8fa20000 lw r2,0(r29) 5382 000051e4 8fa30004 lw r3,4(r29) 5383 000051e8 8fdffff8 lw r31,-8(r30) 5384 000051ec 001ee820 add r29,r0,r30 5385 000051f0 8fdefffc lw r30,-4(r30) 5386 000051f4 4be00000 jr r31 5387 000051f8 54000000 nop 5388 000051fc .endproc _QueueInsertFirst 5389 000051fc .align 2 5390 000051fc .proc _QueueInsertLast 5391 000051fc .global _QueueInsertLast 5392 000051fc _QueueInsertLast: 5393 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 5394 000051fc afbefffc sw -4(r29),r30; push fp 5395 00005200 001df020 add r30,r0,r29; fp = sp 5396 00005204 afbffff8 sw -8(r29),r31; push ret addr 5397 00005208 2fbd0010 subui r29,r29,#16; alloc local storage 5398 0000520c afa20000 sw 0(r29),r2 5399 00005210 afa30004 sw 4(r29),r3 5400 00005214 8fc30000 lw r3,(r30) 5401 00005218 8fc10004 lw r1,4(r30) 5402 0000521c 8c620004 lw r2,4(r3) 5403 00005220 ac230008 sw 8(r1),r3 5404 00005224 ac220004 sw 4(r1),r2 5405 00005228 8c5f0000 lw r31,(r2) 5406 0000522c ac3f0000 sw (r1),r31 5407 00005230 ac410000 sw (r2),r1 5408 00005234 8c220000 lw r2,(r1) 5409 00005238 ac410004 sw 4(r2),r1 5410 0000523c 8c610008 lw r1,8(r3) 5411 00005240 20210001 addi r1,r1,#1 5412 00005244 ac610008 sw 8(r3),r1 5413 00005248 8fa20000 lw r2,0(r29) 5414 0000524c 8fa30004 lw r3,4(r29) 5415 00005250 8fdffff8 lw r31,-8(r30) 5416 00005254 001ee820 add r29,r0,r30 5417 00005258 8fdefffc lw r30,-4(r30) 5418 0000525c 4be00000 jr r31 5419 00005260 54000000 nop 5420 00005264 .endproc _QueueInsertLast 5421 00005264 .align 2 5422 00005264 .proc _QueueRemove 5423 00005264 .global _QueueRemove 5424 00005264 _QueueRemove: 5425 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 5426 00005264 afbefffc sw -4(r29),r30; push fp 5427 00005268 001df020 add r30,r0,r29; fp = sp 5428 0000526c afbffff8 sw -8(r29),r31; push ret addr 5429 00005270 2fbd0010 subui r29,r29,#16; alloc local storage 5430 00005274 afa20000 sw 0(r29),r2 5431 00005278 afa30004 sw 4(r29),r3 5432 0000527c 8fdf0000 lw r31,(r30) 5433 00005280 8fe10008 lw r1,8(r31) 5434 00005284 8c210008 lw r1,8(r1) 5435 00005288 6c210000 sgti r1,r1,#0 5436 0000528c 1020002c beqz r1,L44_LF6 5437 00005290 54000000 nop; not filled. 5438 00005294 8fe10004 lw r1,4(r31) 5439 00005298 8fe30000 lw r3,(r31) 5440 0000529c ac230000 sw (r1),r3 5441 000052a0 8fe10000 lw r1,(r31) 5442 000052a4 8fe30004 lw r3,4(r31) 5443 000052a8 ac230004 sw 4(r1),r3 5444 000052ac 8fe20008 lw r2,8(r31) 5445 000052b0 8c410008 lw r1,8(r2) 5446 000052b4 2021ffff addi r1,r1,#-1 5447 000052b8 ac410008 sw 8(r2),r1 5448 000052bc L44_LF6: 5449 000052bc 20030000 addi r3,r0,#0 5450 000052c0 afe30000 sw (r31),r3 5451 000052c4 8fa20000 lw r2,0(r29) 5452 000052c8 8fa30004 lw r3,4(r29) 5453 000052cc 8fdffff8 lw r31,-8(r30) 5454 000052d0 001ee820 add r29,r0,r30 5455 000052d4 8fdefffc lw r30,-4(r30) 5456 000052d8 4be00000 jr r31 5457 000052dc 54000000 nop 5458 000052e0 .endproc _QueueRemove 5459 000052e0 .align 2 5460 000052e0 .proc _QueueLength 5461 000052e0 .global _QueueLength 5462 000052e0 _QueueLength: 5463 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 5464 000052e0 afbefffc sw -4(r29),r30; push fp 5465 000052e4 001df020 add r30,r0,r29; fp = sp 5466 000052e8 afbffff8 sw -8(r29),r31; push ret addr 5467 000052ec 2fbd0008 subui r29,r29,#8; alloc local storage 5468 000052f0 8fc10000 lw r1,(r30) 5469 000052f4 8c210008 lw r1,8(r1) 5470 000052f8 8fdffff8 lw r31,-8(r30) 5471 000052fc 001ee820 add r29,r0,r30 5472 00005300 8fdefffc lw r30,-4(r30) 5473 00005304 4be00000 jr r31 5474 00005308 54000000 nop 5475 0000530c .endproc _QueueLength 5476 0000530c .align 2 5477 0000530c .proc _QueueEmpty 5478 0000530c .global _QueueEmpty 5479 0000530c _QueueEmpty: 5480 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 5481 0000530c afbefffc sw -4(r29),r30; push fp 5482 00005310 001df020 add r30,r0,r29; fp = sp 5483 00005314 afbffff8 sw -8(r29),r31; push ret addr 5484 00005318 2fbd0008 subui r29,r29,#8; alloc local storage 5485 0000531c 8fc10000 lw r1,(r30) 5486 00005320 8c210008 lw r1,8(r1) 5487 00005324 60210000 seqi r1,r1,#0 5488 00005328 8fdffff8 lw r31,-8(r30) 5489 0000532c 001ee820 add r29,r0,r30 5490 00005330 8fdefffc lw r30,-4(r30) 5491 00005334 4be00000 jr r31 5492 00005338 54000000 nop 5493 0000533c .endproc _QueueEmpty 5494 0000533c .data 5495 000115cc .align 2 5496 000115cc _processQuantum_LF6: 5497 000115cc 00002710 .word 10000 5498 000115d0 .align 2 5499 000115d0 LC0_LF6: 5500 000115d0 456e7465 .ascii "Entering ProcessModuleInit\n\000" 5500 000115d4 72696e67 5500 000115d8 2050726f 5500 000115dc 63657373 5500 000115e0 4d6f6475 5500 000115e4 6c65496e 5500 000115e8 69740a00 5501 000115ec .align 2 5502 000115ec LC1_LF6: 5503 000115ec 496e6974 .ascii "Initializing PCB %d @ 0x%x.\n\000" 5503 000115f0 69616c69 5503 000115f4 7a696e67 5503 000115f8 20504342 5503 000115fc 20256420 5503 00011600 40203078 5503 00011604 25782e0a 5503 00011608 00 5504 00011609 .align 2 5505 0001160c LC2_LF6: 5506 0001160c 4c656176 .ascii "Leaving ProcessModuleInit\n\000" 5506 00011610 696e6720 5506 00011614 50726f63 5506 00011618 6573734d 5506 0001161c 6f64756c 5506 00011620 65496e69 5506 00011624 740a00 5507 00011627 .text 5508 0000533c .align 2 5509 0000533c .proc _ProcessModuleInit 5510 0000533c .global _ProcessModuleInit 5511 0000533c _ProcessModuleInit: 5512 ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. 5513 0000533c afbefffc sw -4(r29),r30; push fp 5514 00005340 001df020 add r30,r0,r29; fp = sp 5515 00005344 afbffff8 sw -8(r29),r31; push ret addr 5516 00005348 2fbd0028 subui r29,r29,#40; alloc local storage 5517 0000534c afa20000 sw 0(r29),r2 5518 00005350 afa30004 sw 4(r29),r3 5519 00005354 afa40008 sw 8(r29),r4 5520 00005358 afa5000c sw 12(r29),r5 5521 0000535c afa60010 sw 16(r29),r6 5522 00005360 afa70014 sw 20(r29),r7 5523 00005364 afa80018 sw 24(r29),r8 5524 00005368 23bdfff8 addi r29,r29,#-8 5525 0000536c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5526 00005370 24421f50 addui r2,r2,(_debugstr)&0xffff 5527 00005374 afa20000 sw (r29),r2 5528 00005378 20080070 addi r8,r0,#112 5529 0000537c afa80004 sw 4(r29),r8 5530 00005380 0ffff6b4 jal _dindex 5531 00005384 54000000 nop; not filled. 5532 00005388 23bd0008 addi r29,r29,#8 5533 0000538c 64210000 snei r1,r1,#0 5534 00005390 1420002c bnez r1,L53_LF6 5535 00005394 54000000 nop; not filled. 5536 00005398 23bdfff8 addi r29,r29,#-8 5537 0000539c afa20000 sw (r29),r2 5538 000053a0 2008002b addi r8,r0,#43 5539 000053a4 afa80004 sw 4(r29),r8 5540 000053a8 0ffff68c jal _dindex 5541 000053ac 54000000 nop; not filled. 5542 000053b0 23bd0008 addi r29,r29,#8 5543 000053b4 64210000 snei r1,r1,#0 5544 000053b8 10200020 beqz r1,L52_LF6 5545 000053bc 54000000 nop; not filled. 5546 000053c0 L53_LF6: 5547 000053c0 23bdfff8 addi r29,r29,#-8 5548 000053c4 3c080001 lhi r8,((LC0_LF6)>>16)&0xffff 5549 000053c8 250815d0 addui r8,r8,(LC0_LF6)&0xffff 5550 000053cc afa80000 sw (r29),r8 5551 000053d0 0c006e40 jal _printf 5552 000053d4 54000000 nop; not filled. 5553 000053d8 23bd0008 addi r29,r29,#8 5554 000053dc L52_LF6: 5555 000053dc 23bdfff8 addi r29,r29,#-8 5556 000053e0 3c020001 lhi r2,((_freepcbs_LF6)>>16)&0xffff 5557 000053e4 2442201c addui r2,r2,(_freepcbs_LF6)&0xffff 5558 000053e8 afa20000 sw (r29),r2 5559 000053ec 0c00380c jal _QueueInit 5560 000053f0 54000000 nop; not filled. 5561 000053f4 3c080001 lhi r8,((_runQueue_LF6)>>16)&0xffff 5562 000053f8 25082028 addui r8,r8,(_runQueue_LF6)&0xffff 5563 000053fc afa80000 sw (r29),r8 5564 00005400 0c0037f8 jal _QueueInit 5565 00005404 54000000 nop; not filled. 5566 00005408 3c080001 lhi r8,((_waitQueue_LF6)>>16)&0xffff 5567 0000540c 25082034 addui r8,r8,(_waitQueue_LF6)&0xffff 5568 00005410 afa80000 sw (r29),r8 5569 00005414 0c0037e4 jal _QueueInit 5570 00005418 54000000 nop; not filled. 5571 0000541c 3c080001 lhi r8,((_zombieQueue_LF6)>>16)&0xffff 5572 00005420 25082040 addui r8,r8,(_zombieQueue_LF6)&0xffff 5573 00005424 afa80000 sw (r29),r8 5574 00005428 0c0037d0 jal _QueueInit 5575 0000542c 54000000 nop; not filled. 5576 00005430 20040000 addi r4,r0,#0 5577 00005434 23bd0008 addi r29,r29,#8 5578 00005438 3c070001 lhi r7,((_debugstr)>>16)&0xffff 5579 0000543c 24e71f50 addui r7,r7,(_debugstr)&0xffff 5580 00005440 3c010001 lhi r1,((_pcbs_LF6)>>16)&0xffff 5581 00005444 2421204c addui r1,r1,(_pcbs_LF6)&0xffff 5582 00005448 00022820 add r5,r0,r2 5583 0000544c 202200a4 addi r2,r1,#164 5584 00005450 00011820 add r3,r0,r1 5585 00005454 00033020 add r6,r0,r3 5586 00005458 L57_LF6: 5587 00005458 23bdfff8 addi r29,r29,#-8 5588 0000545c afa70000 sw (r29),r7 5589 00005460 20080070 addi r8,r0,#112 5590 00005464 afa80004 sw 4(r29),r8 5591 00005468 0ffff5cc jal _dindex 5592 0000546c 54000000 nop; not filled. 5593 00005470 23bd0008 addi r29,r29,#8 5594 00005474 64210000 snei r1,r1,#0 5595 00005478 1420002c bnez r1,L59_LF6 5596 0000547c 54000000 nop; not filled. 5597 00005480 23bdfff8 addi r29,r29,#-8 5598 00005484 afa70000 sw (r29),r7 5599 00005488 2008002b addi r8,r0,#43 5600 0000548c afa80004 sw 4(r29),r8 5601 00005490 0ffff5a4 jal _dindex 5602 00005494 54000000 nop; not filled. 5603 00005498 23bd0008 addi r29,r29,#8 5604 0000549c 64210000 snei r1,r1,#0 5605 000054a0 10200028 beqz r1,L58_LF6 5606 000054a4 54000000 nop; not filled. 5607 000054a8 L59_LF6: 5608 000054a8 23bdfff0 addi r29,r29,#-16 5609 000054ac 3c080001 lhi r8,((LC1_LF6)>>16)&0xffff 5610 000054b0 250815ec addui r8,r8,(LC1_LF6)&0xffff 5611 000054b4 afa80000 sw (r29),r8 5612 000054b8 afa40004 sw 4(r29),r4 5613 000054bc afa60008 sw 8(r29),r6 5614 000054c0 0c006d50 jal _printf 5615 000054c4 54000000 nop; not filled. 5616 000054c8 23bd0010 addi r29,r29,#16 5617 000054cc L58_LF6: 5618 000054cc 20080001 addi r8,r0,#1 5619 000054d0 ac68000c sw 12(r3),r8 5620 000054d4 20080000 addi r8,r0,#0 5621 000054d8 ac480000 sw (r2),r8 5622 000054dc ac43000c sw 12(r2),r3 5623 000054e0 ac450008 sw 8(r2),r5 5624 000054e4 ac450004 sw 4(r2),r5 5625 000054e8 8ca80000 lw r8,(r5) 5626 000054ec ac480000 sw (r2),r8 5627 000054f0 aca20000 sw (r5),r2 5628 000054f4 8c410000 lw r1,(r2) 5629 000054f8 ac220004 sw 4(r1),r2 5630 000054fc 8ca10008 lw r1,8(r5) 5631 00005500 20210001 addi r1,r1,#1 5632 00005504 aca10008 sw 8(r5),r1 5633 00005508 204200b4 addi r2,r2,#180 5634 0000550c 206300b4 addi r3,r3,#180 5635 00005510 20c600b4 addi r6,r6,#180 5636 00005514 20840001 addi r4,r4,#1 5637 00005518 7081001f slei r1,r4,#31 5638 0000551c 1420ff38 bnez r1,L57_LF6 5639 00005520 54000000 nop; not filled. 5640 00005524 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 5641 00005528 24212018 addui r1,r1,(_currentPCB)&0xffff 5642 0000552c 20080000 addi r8,r0,#0 5643 00005530 ac280000 sw (r1),r8 5644 00005534 23bdfff8 addi r29,r29,#-8 5645 00005538 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5646 0000553c 24421f50 addui r2,r2,(_debugstr)&0xffff 5647 00005540 afa20000 sw (r29),r2 5648 00005544 20080070 addi r8,r0,#112 5649 00005548 afa80004 sw 4(r29),r8 5650 0000554c 0ffff4e8 jal _dindex 5651 00005550 54000000 nop; not filled. 5652 00005554 23bd0008 addi r29,r29,#8 5653 00005558 64210000 snei r1,r1,#0 5654 0000555c 1420002c bnez r1,L65_LF6 5655 00005560 54000000 nop; not filled. 5656 00005564 23bdfff8 addi r29,r29,#-8 5657 00005568 afa20000 sw (r29),r2 5658 0000556c 2008002b addi r8,r0,#43 5659 00005570 afa80004 sw 4(r29),r8 5660 00005574 0ffff4c0 jal _dindex 5661 00005578 54000000 nop; not filled. 5662 0000557c 23bd0008 addi r29,r29,#8 5663 00005580 64210000 snei r1,r1,#0 5664 00005584 10200020 beqz r1,L64_LF6 5665 00005588 54000000 nop; not filled. 5666 0000558c L65_LF6: 5667 0000558c 23bdfff8 addi r29,r29,#-8 5668 00005590 3c080001 lhi r8,((LC2_LF6)>>16)&0xffff 5669 00005594 2508160c addui r8,r8,(LC2_LF6)&0xffff 5670 00005598 afa80000 sw (r29),r8 5671 0000559c 0c006c74 jal _printf 5672 000055a0 54000000 nop; not filled. 5673 000055a4 23bd0008 addi r29,r29,#8 5674 000055a8 L64_LF6: 5675 000055a8 8fa20000 lw r2,0(r29) 5676 000055ac 8fa30004 lw r3,4(r29) 5677 000055b0 8fa40008 lw r4,8(r29) 5678 000055b4 8fa5000c lw r5,12(r29) 5679 000055b8 8fa60010 lw r6,16(r29) 5680 000055bc 8fa70014 lw r7,20(r29) 5681 000055c0 8fa80018 lw r8,24(r29) 5682 000055c4 8fdffff8 lw r31,-8(r30) 5683 000055c8 001ee820 add r29,r0,r30 5684 000055cc 8fdefffc lw r30,-4(r30) 5685 000055d0 4be00000 jr r31 5686 000055d4 54000000 nop 5687 000055d8 .endproc _ProcessModuleInit 5688 000055d8 .align 2 5689 000055d8 .proc _ProcessSetStatus 5690 000055d8 .global _ProcessSetStatus 5691 000055d8 _ProcessSetStatus: 5692 ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. 5693 000055d8 afbefffc sw -4(r29),r30; push fp 5694 000055dc 001df020 add r30,r0,r29; fp = sp 5695 000055e0 afbffff8 sw -8(r29),r31; push ret addr 5696 000055e4 2fbd0010 subui r29,r29,#16; alloc local storage 5697 000055e8 afa20000 sw 0(r29),r2 5698 000055ec afa30004 sw 4(r29),r3 5699 000055f0 8fc30000 lw r3,(r30) 5700 000055f4 8fc20004 lw r2,4(r30) 5701 000055f8 8c61000c lw r1,12(r3) 5702 000055fc 201fffc0 addi r31,r0,#-64 5703 00005600 003f0824 and r1,r1,r31 5704 00005604 00220825 or r1,r1,r2 5705 00005608 ac61000c sw 12(r3),r1 5706 0000560c 8fa20000 lw r2,0(r29) 5707 00005610 8fa30004 lw r3,4(r29) 5708 00005614 8fdffff8 lw r31,-8(r30) 5709 00005618 001ee820 add r29,r0,r30 5710 0000561c 8fdefffc lw r30,-4(r30) 5711 00005620 4be00000 jr r31 5712 00005624 54000000 nop 5713 00005628 .endproc _ProcessSetStatus 5714 00005628 .align 2 5715 00005628 .proc _ProcessFreeResources 5716 00005628 .global _ProcessFreeResources 5717 00005628 _ProcessFreeResources: 5718 ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. 5719 00005628 afbefffc sw -4(r29),r30; push fp 5720 0000562c 001df020 add r30,r0,r29; fp = sp 5721 00005630 afbffff8 sw -8(r29),r31; push ret addr 5722 00005634 2fbd0018 subui r29,r29,#24; alloc local storage 5723 00005638 afa20000 sw 0(r29),r2 5724 0000563c afa30004 sw 4(r29),r3 5725 00005640 afa40008 sw 8(r29),r4 5726 00005644 afa5000c sw 12(r29),r5 5727 00005648 8fc40000 lw r4,(r30) 5728 0000564c 3c030001 lhi r3,((_freepcbs_LF6)>>16)&0xffff 5729 00005650 2463201c addui r3,r3,(_freepcbs_LF6)&0xffff 5730 00005654 208200a4 addi r2,r4,#164 5731 00005658 8c610004 lw r1,4(r3) 5732 0000565c ac8300ac sw 172(r4),r3 5733 00005660 ac8100a8 sw 168(r4),r1 5734 00005664 8c250000 lw r5,(r1) 5735 00005668 ac450000 sw (r2),r5 5736 0000566c ac220000 sw (r1),r2 5737 00005670 8c410000 lw r1,(r2) 5738 00005674 ac220004 sw 4(r1),r2 5739 00005678 8c610008 lw r1,8(r3) 5740 0000567c 20210001 addi r1,r1,#1 5741 00005680 ac610008 sw 8(r3),r1 5742 00005684 8c8300a0 lw r3,160(r4) 5743 00005688 20020000 addi r2,r0,#0 5744 0000568c 0043082a slt r1,r2,r3 5745 00005690 10200030 beqz r1,L98_LF6 5746 00005694 54000000 nop; not filled. 5747 00005698 L90_LF6: 5748 00005698 23bdfff8 addi r29,r29,#-8 5749 0000569c afa40000 sw (r29),r4 5750 000056a0 afa20004 sw 4(r29),r2 5751 000056a4 0fffc640 jal _MemoryFreeSharedPte 5752 000056a8 54000000 nop; not filled. 5753 000056ac 23bd0008 addi r29,r29,#8 5754 000056b0 20420001 addi r2,r2,#1 5755 000056b4 0043082a slt r1,r2,r3 5756 000056b8 1420ffdc bnez r1,L90_LF6 5757 000056bc 54000000 nop; not filled. 5758 000056c0 20020000 addi r2,r0,#0 5759 000056c4 L98_LF6: 5760 000056c4 8c8100a0 lw r1,160(r4) 5761 000056c8 0041082a slt r1,r2,r1 5762 000056cc 10200038 beqz r1,L93_LF6 5763 000056d0 54000000 nop; not filled. 5764 000056d4 00041820 add r3,r0,r4 5765 000056d8 L95_LF6: 5766 000056d8 23bdfff8 addi r29,r29,#-8 5767 000056dc 8c650060 lw r5,96(r3) 5768 000056e0 afa50000 sw (r29),r5 5769 000056e4 0fffebf8 jal _MemoryFreePte 5770 000056e8 54000000 nop; not filled. 5771 000056ec 23bd0008 addi r29,r29,#8 5772 000056f0 20630004 addi r3,r3,#4 5773 000056f4 20420001 addi r2,r2,#1 5774 000056f8 8c8100a0 lw r1,160(r4) 5775 000056fc 0041082a slt r1,r2,r1 5776 00005700 1420ffd4 bnez r1,L95_LF6 5777 00005704 54000000 nop; not filled. 5778 00005708 L93_LF6: 5779 00005708 23bdfff8 addi r29,r29,#-8 5780 0000570c 94810008 lhu r1,8(r4) 5781 00005710 afa10000 sw (r29),r1 5782 00005714 0fffe6fc jal _MemoryFreePage 5783 00005718 54000000 nop; not filled. 5784 0000571c 23bd0008 addi r29,r29,#8 5785 00005720 8c81000c lw r1,12(r4) 5786 00005724 2005ffc0 addi r5,r0,#-64 5787 00005728 00250824 and r1,r1,r5 5788 0000572c 34210001 ori r1,r1,#1 5789 00005730 ac81000c sw 12(r4),r1 5790 00005734 8fa20000 lw r2,0(r29) 5791 00005738 8fa30004 lw r3,4(r29) 5792 0000573c 8fa40008 lw r4,8(r29) 5793 00005740 8fa5000c lw r5,12(r29) 5794 00005744 8fdffff8 lw r31,-8(r30) 5795 00005748 001ee820 add r29,r0,r30 5796 0000574c 8fdefffc lw r30,-4(r30) 5797 00005750 4be00000 jr r31 5798 00005754 54000000 nop 5799 00005758 .endproc _ProcessFreeResources 5800 00005758 .align 2 5801 00005758 .proc _ProcessSetResult 5802 00005758 .global _ProcessSetResult 5803 00005758 _ProcessSetResult: 5804 ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. 5805 00005758 afbefffc sw -4(r29),r30; push fp 5806 0000575c 001df020 add r30,r0,r29; fp = sp 5807 00005760 afbffff8 sw -8(r29),r31; push ret addr 5808 00005764 2fbd0008 subui r29,r29,#8; alloc local storage 5809 00005768 8fc10000 lw r1,(r30) 5810 0000576c 8c210000 lw r1,(r1) 5811 00005770 8fdf0004 lw r31,4(r30) 5812 00005774 ac3f002c sw 44(r1),r31 5813 00005778 8fdffff8 lw r31,-8(r30) 5814 0000577c 001ee820 add r29,r0,r30 5815 00005780 8fdefffc lw r30,-4(r30) 5816 00005784 4be00000 jr r31 5817 00005788 54000000 nop 5818 0000578c .endproc _ProcessSetResult 5819 0000578c .data 5820 00011627 .align 2 5821 00011628 LC3_LF6: 5822 00011628 4e6f7720 .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" 5822 0001162c 656e7465 5822 00011630 72696e67 5822 00011634 2050726f 5822 00011638 63657373 5822 0001163c 53636865 5822 00011640 64756c65 5822 00011644 20286375 5822 00011648 723d3078 5822 0001164c 25782c20 5822 00011650 25642072 5822 00011654 65616479 5822 00011658 290a00 5823 0001165b .align 2 5824 0001165c LC4_LF6: 5825 0001165c 4e6f2072 .ascii "No runnable processes - exiting!\n\000" 5825 00011660 756e6e61 5825 00011664 626c6520 5825 00011668 70726f63 5825 0001166c 65737365 5825 00011670 73202d20 5825 00011674 65786974 5825 00011678 696e6721 5825 0001167c 0a00 5826 0001167e .align 2 5827 00011680 LC5_LF6: 5828 00011680 41626f75 .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" 5828 00011684 7420746f 5828 00011688 20737769 5828 0001168c 74636820 5828 00011690 746f2050 5828 00011694 43422030 5828 00011698 7825782c 5828 0001169c 666c6167 5828 000116a0 733d3078 5828 000116a4 25782040 5828 000116a8 20307825 5828 000116ac 780a00 5829 000116af .align 2 5830 000116b0 LC6_LF6: 5831 000116b0 46726565 .ascii "Freeing zombie PCB 0x%x.\n\000" 5831 000116b4 696e6720 5831 000116b8 7a6f6d62 5831 000116bc 69652050 5831 000116c0 43422030 5831 000116c4 7825782e 5831 000116c8 0a00 5832 000116ca .align 2 5833 000116cc LC7_LF6: 5834 000116cc 4c656176 .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" 5834 000116d0 696e6720 5834 000116d4 50726f63 5834 000116d8 65737353 5834 000116dc 63686564 5834 000116e0 756c6520 5834 000116e4 28637572 5834 000116e8 3d307825 5834 000116ec 78290a00 5835 000116f0 .text 5836 0000578c .align 2 5837 0000578c .proc _ProcessSchedule 5838 0000578c .global _ProcessSchedule 5839 0000578c _ProcessSchedule: 5840 ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. 5841 0000578c afbefffc sw -4(r29),r30; push fp 5842 00005790 001df020 add r30,r0,r29; fp = sp 5843 00005794 afbffff8 sw -8(r29),r31; push ret addr 5844 00005798 2fbd0028 subui r29,r29,#40; alloc local storage 5845 0000579c afa20000 sw 0(r29),r2 5846 000057a0 afa30004 sw 4(r29),r3 5847 000057a4 afa40008 sw 8(r29),r4 5848 000057a8 afa5000c sw 12(r29),r5 5849 000057ac afa60010 sw 16(r29),r6 5850 000057b0 afa70014 sw 20(r29),r7 5851 000057b4 afa80018 sw 24(r29),r8 5852 000057b8 23bdfff8 addi r29,r29,#-8 5853 000057bc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5854 000057c0 24421f50 addui r2,r2,(_debugstr)&0xffff 5855 000057c4 afa20000 sw (r29),r2 5856 000057c8 20080070 addi r8,r0,#112 5857 000057cc afa80004 sw 4(r29),r8 5858 000057d0 0ffff264 jal _dindex 5859 000057d4 54000000 nop; not filled. 5860 000057d8 23bd0008 addi r29,r29,#8 5861 000057dc 64210000 snei r1,r1,#0 5862 000057e0 1420002c bnez r1,L103_LF6 5863 000057e4 54000000 nop; not filled. 5864 000057e8 23bdfff8 addi r29,r29,#-8 5865 000057ec afa20000 sw (r29),r2 5866 000057f0 2008002b addi r8,r0,#43 5867 000057f4 afa80004 sw 4(r29),r8 5868 000057f8 0ffff23c jal _dindex 5869 000057fc 54000000 nop; not filled. 5870 00005800 23bd0008 addi r29,r29,#8 5871 00005804 64210000 snei r1,r1,#0 5872 00005808 10200040 beqz r1,L102_LF6 5873 0000580c 54000000 nop; not filled. 5874 00005810 L103_LF6: 5875 00005810 3c010001 lhi r1,((_runQueue_LF6)>>16)&0xffff 5876 00005814 24212028 addui r1,r1,(_runQueue_LF6)&0xffff 5877 00005818 8c220008 lw r2,8(r1) 5878 0000581c 23bdfff0 addi r29,r29,#-16 5879 00005820 3c080001 lhi r8,((LC3_LF6)>>16)&0xffff 5880 00005824 25081628 addui r8,r8,(LC3_LF6)&0xffff 5881 00005828 afa80000 sw (r29),r8 5882 0000582c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 5883 00005830 24212018 addui r1,r1,(_currentPCB)&0xffff 5884 00005834 8c210000 lw r1,(r1) 5885 00005838 afa10004 sw 4(r29),r1 5886 0000583c afa20008 sw 8(r29),r2 5887 00005840 0c0069d0 jal _printf 5888 00005844 54000000 nop; not filled. 5889 00005848 23bd0010 addi r29,r29,#16 5890 0000584c L102_LF6: 5891 0000584c 3c050001 lhi r5,((_runQueue_LF6)>>16)&0xffff 5892 00005850 24a52028 addui r5,r5,(_runQueue_LF6)&0xffff 5893 00005854 8ca10008 lw r1,8(r5) 5894 00005858 60210000 seqi r1,r1,#0 5895 0000585c 10200028 beqz r1,L105_LF6 5896 00005860 54000000 nop; not filled. 5897 00005864 23bdfff8 addi r29,r29,#-8 5898 00005868 3c080001 lhi r8,((LC4_LF6)>>16)&0xffff 5899 0000586c 2508165c addui r8,r8,(LC4_LF6)&0xffff 5900 00005870 afa80000 sw (r29),r8 5901 00005874 0c00699c jal _printf 5902 00005878 54000000 nop; not filled. 5903 0000587c 0c00697c jal _exitsim 5904 00005880 54000000 nop; not filled. 5905 00005884 23bd0008 addi r29,r29,#8 5906 00005888 L105_LF6: 5907 00005888 8ca10000 lw r1,(r5) 5908 0000588c 8c24000c lw r4,12(r1) 5909 00005890 208300a4 addi r3,r4,#164 5910 00005894 8c8100ac lw r1,172(r4) 5911 00005898 8c210008 lw r1,8(r1) 5912 0000589c 6c210000 sgti r1,r1,#0 5913 000058a0 1020002c beqz r1,L110_LF6 5914 000058a4 54000000 nop; not filled. 5915 000058a8 8c8100a8 lw r1,168(r4) 5916 000058ac 8c680000 lw r8,(r3) 5917 000058b0 ac280000 sw (r1),r8 5918 000058b4 8c610000 lw r1,(r3) 5919 000058b8 8c8800a8 lw r8,168(r4) 5920 000058bc ac280004 sw 4(r1),r8 5921 000058c0 8c8200ac lw r2,172(r4) 5922 000058c4 8c410008 lw r1,8(r2) 5923 000058c8 2021ffff addi r1,r1,#-1 5924 000058cc ac410008 sw 8(r2),r1 5925 000058d0 L110_LF6: 5926 000058d0 20080000 addi r8,r0,#0 5927 000058d4 ac680000 sw (r3),r8 5928 000058d8 8ca10004 lw r1,4(r5) 5929 000058dc ac8500ac sw 172(r4),r5 5930 000058e0 ac8100a8 sw 168(r4),r1 5931 000058e4 8c280000 lw r8,(r1) 5932 000058e8 ac680000 sw (r3),r8 5933 000058ec ac230000 sw (r1),r3 5934 000058f0 8c610000 lw r1,(r3) 5935 000058f4 ac230004 sw 4(r1),r3 5936 000058f8 8ca10008 lw r1,8(r5) 5937 000058fc 20210001 addi r1,r1,#1 5938 00005900 aca10008 sw 8(r5),r1 5939 00005904 8ca10000 lw r1,(r5) 5940 00005908 8c24000c lw r4,12(r1) 5941 0000590c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 5942 00005910 24212018 addui r1,r1,(_currentPCB)&0xffff 5943 00005914 ac240000 sw (r1),r4 5944 00005918 23bdfff8 addi r29,r29,#-8 5945 0000591c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 5946 00005920 24421f50 addui r2,r2,(_debugstr)&0xffff 5947 00005924 afa20000 sw (r29),r2 5948 00005928 20080070 addi r8,r0,#112 5949 0000592c afa80004 sw 4(r29),r8 5950 00005930 0ffff104 jal _dindex 5951 00005934 54000000 nop; not filled. 5952 00005938 23bd0008 addi r29,r29,#8 5953 0000593c 64210000 snei r1,r1,#0 5954 00005940 1420002c bnez r1,L116_LF6 5955 00005944 54000000 nop; not filled. 5956 00005948 23bdfff8 addi r29,r29,#-8 5957 0000594c afa20000 sw (r29),r2 5958 00005950 2008002b addi r8,r0,#43 5959 00005954 afa80004 sw 4(r29),r8 5960 00005958 0ffff0dc jal _dindex 5961 0000595c 54000000 nop; not filled. 5962 00005960 23bd0008 addi r29,r29,#8 5963 00005964 64210000 snei r1,r1,#0 5964 00005968 10200038 beqz r1,L115_LF6 5965 0000596c 54000000 nop; not filled. 5966 00005970 L116_LF6: 5967 00005970 23bdfff0 addi r29,r29,#-16 5968 00005974 3c080001 lhi r8,((LC5_LF6)>>16)&0xffff 5969 00005978 25081680 addui r8,r8,(LC5_LF6)&0xffff 5970 0000597c afa80000 sw (r29),r8 5971 00005980 afa40004 sw 4(r29),r4 5972 00005984 8c88000c lw r8,12(r4) 5973 00005988 afa80008 sw 8(r29),r8 5974 0000598c 8c810004 lw r1,4(r4) 5975 00005990 8c210128 lw r1,296(r1) 5976 00005994 afa1000c sw 12(r29),r1 5977 00005998 0c006878 jal _printf 5978 0000599c 54000000 nop; not filled. 5979 000059a0 23bd0010 addi r29,r29,#16 5980 000059a4 L115_LF6: 5981 000059a4 3c070001 lhi r7,((_zombieQueue_LF6)>>16)&0xffff 5982 000059a8 24e72040 addui r7,r7,(_zombieQueue_LF6)&0xffff 5983 000059ac 3c060001 lhi r6,((_debugstr)>>16)&0xffff 5984 000059b0 24c61f50 addui r6,r6,(_debugstr)&0xffff 5985 000059b4 3c050001 lhi r5,((_freepcbs_LF6)>>16)&0xffff 5986 000059b8 24a5201c addui r5,r5,(_freepcbs_LF6)&0xffff 5987 000059bc L117_LF6: 5988 000059bc 8ce10008 lw r1,8(r7) 5989 000059c0 60210000 seqi r1,r1,#0 5990 000059c4 142001a8 bnez r1,L118_LF6 5991 000059c8 54000000 nop; not filled. 5992 000059cc 8ce10000 lw r1,(r7) 5993 000059d0 8c24000c lw r4,12(r1) 5994 000059d4 23bdfff8 addi r29,r29,#-8 5995 000059d8 afa60000 sw (r29),r6 5996 000059dc 20080070 addi r8,r0,#112 5997 000059e0 afa80004 sw 4(r29),r8 5998 000059e4 0ffff050 jal _dindex 5999 000059e8 54000000 nop; not filled. 6000 000059ec 23bd0008 addi r29,r29,#8 6001 000059f0 64210000 snei r1,r1,#0 6002 000059f4 1420002c bnez r1,L124_LF6 6003 000059f8 54000000 nop; not filled. 6004 000059fc 23bdfff8 addi r29,r29,#-8 6005 00005a00 afa60000 sw (r29),r6 6006 00005a04 2008002b addi r8,r0,#43 6007 00005a08 afa80004 sw 4(r29),r8 6008 00005a0c 0ffff028 jal _dindex 6009 00005a10 54000000 nop; not filled. 6010 00005a14 23bd0008 addi r29,r29,#8 6011 00005a18 64210000 snei r1,r1,#0 6012 00005a1c 10200024 beqz r1,L123_LF6 6013 00005a20 54000000 nop; not filled. 6014 00005a24 L124_LF6: 6015 00005a24 23bdfff8 addi r29,r29,#-8 6016 00005a28 3c080001 lhi r8,((LC6_LF6)>>16)&0xffff 6017 00005a2c 250816b0 addui r8,r8,(LC6_LF6)&0xffff 6018 00005a30 afa80000 sw (r29),r8 6019 00005a34 afa40004 sw 4(r29),r4 6020 00005a38 0c0067d8 jal _printf 6021 00005a3c 54000000 nop; not filled. 6022 00005a40 23bd0008 addi r29,r29,#8 6023 00005a44 L123_LF6: 6024 00005a44 209f00a4 addi r31,r4,#164 6025 00005a48 8c8100ac lw r1,172(r4) 6026 00005a4c 8c210008 lw r1,8(r1) 6027 00005a50 6c210000 sgti r1,r1,#0 6028 00005a54 1020002c beqz r1,L126_LF6 6029 00005a58 54000000 nop; not filled. 6030 00005a5c 8c8100a8 lw r1,168(r4) 6031 00005a60 8fe80000 lw r8,(r31) 6032 00005a64 ac280000 sw (r1),r8 6033 00005a68 8fe10000 lw r1,(r31) 6034 00005a6c 8c8800a8 lw r8,168(r4) 6035 00005a70 ac280004 sw 4(r1),r8 6036 00005a74 8c8200ac lw r2,172(r4) 6037 00005a78 8c410008 lw r1,8(r2) 6038 00005a7c 2021ffff addi r1,r1,#-1 6039 00005a80 ac410008 sw 8(r2),r1 6040 00005a84 L126_LF6: 6041 00005a84 20080000 addi r8,r0,#0 6042 00005a88 afe80000 sw (r31),r8 6043 00005a8c 8ca10004 lw r1,4(r5) 6044 00005a90 ac8500ac sw 172(r4),r5 6045 00005a94 ac8100a8 sw 168(r4),r1 6046 00005a98 8c280000 lw r8,(r1) 6047 00005a9c afe80000 sw (r31),r8 6048 00005aa0 ac3f0000 sw (r1),r31 6049 00005aa4 8fe10000 lw r1,(r31) 6050 00005aa8 ac3f0004 sw 4(r1),r31 6051 00005aac 8ca10008 lw r1,8(r5) 6052 00005ab0 20210001 addi r1,r1,#1 6053 00005ab4 aca10008 sw 8(r5),r1 6054 00005ab8 8c8300a0 lw r3,160(r4) 6055 00005abc 20020000 addi r2,r0,#0 6056 00005ac0 0043082a slt r1,r2,r3 6057 00005ac4 10200030 beqz r1,L144_LF6 6058 00005ac8 54000000 nop; not filled. 6059 00005acc L134_LF6: 6060 00005acc 23bdfff8 addi r29,r29,#-8 6061 00005ad0 afa40000 sw (r29),r4 6062 00005ad4 afa20004 sw 4(r29),r2 6063 00005ad8 0fffc20c jal _MemoryFreeSharedPte 6064 00005adc 54000000 nop; not filled. 6065 00005ae0 23bd0008 addi r29,r29,#8 6066 00005ae4 20420001 addi r2,r2,#1 6067 00005ae8 0043082a slt r1,r2,r3 6068 00005aec 1420ffdc bnez r1,L134_LF6 6069 00005af0 54000000 nop; not filled. 6070 00005af4 20020000 addi r2,r0,#0 6071 00005af8 L144_LF6: 6072 00005af8 8c8100a0 lw r1,160(r4) 6073 00005afc 0041082a slt r1,r2,r1 6074 00005b00 10200038 beqz r1,L137_LF6 6075 00005b04 54000000 nop; not filled. 6076 00005b08 00041820 add r3,r0,r4 6077 00005b0c L139_LF6: 6078 00005b0c 23bdfff8 addi r29,r29,#-8 6079 00005b10 8c680060 lw r8,96(r3) 6080 00005b14 afa80000 sw (r29),r8 6081 00005b18 0fffe7c4 jal _MemoryFreePte 6082 00005b1c 54000000 nop; not filled. 6083 00005b20 23bd0008 addi r29,r29,#8 6084 00005b24 20630004 addi r3,r3,#4 6085 00005b28 20420001 addi r2,r2,#1 6086 00005b2c 8c8100a0 lw r1,160(r4) 6087 00005b30 0041082a slt r1,r2,r1 6088 00005b34 1420ffd4 bnez r1,L139_LF6 6089 00005b38 54000000 nop; not filled. 6090 00005b3c L137_LF6: 6091 00005b3c 23bdfff8 addi r29,r29,#-8 6092 00005b40 94810008 lhu r1,8(r4) 6093 00005b44 afa10000 sw (r29),r1 6094 00005b48 0fffe2c8 jal _MemoryFreePage 6095 00005b4c 54000000 nop; not filled. 6096 00005b50 23bd0008 addi r29,r29,#8 6097 00005b54 8c81000c lw r1,12(r4) 6098 00005b58 2008ffc0 addi r8,r0,#-64 6099 00005b5c 00280824 and r1,r1,r8 6100 00005b60 34210001 ori r1,r1,#1 6101 00005b64 ac81000c sw 12(r4),r1 6102 00005b68 0bfffe50 j L117_LF6 6103 00005b6c 54000000 nop; not filled. 6104 00005b70 L118_LF6: 6105 00005b70 23bdfff8 addi r29,r29,#-8 6106 00005b74 3c010001 lhi r1,((_processQuantum_LF6)>>16)&0xffff 6107 00005b78 242115cc addui r1,r1,(_processQuantum_LF6)&0xffff 6108 00005b7c 8c210000 lw r1,(r1) 6109 00005b80 afa10000 sw (r29),r1 6110 00005b84 0c0044e4 jal _TimerSet 6111 00005b88 54000000 nop; not filled. 6112 00005b8c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6113 00005b90 24421f50 addui r2,r2,(_debugstr)&0xffff 6114 00005b94 afa20000 sw (r29),r2 6115 00005b98 20080070 addi r8,r0,#112 6116 00005b9c afa80004 sw 4(r29),r8 6117 00005ba0 0fffee94 jal _dindex 6118 00005ba4 54000000 nop; not filled. 6119 00005ba8 23bd0008 addi r29,r29,#8 6120 00005bac 64210000 snei r1,r1,#0 6121 00005bb0 1420002c bnez r1,L143_LF6 6122 00005bb4 54000000 nop; not filled. 6123 00005bb8 23bdfff8 addi r29,r29,#-8 6124 00005bbc afa20000 sw (r29),r2 6125 00005bc0 2008002b addi r8,r0,#43 6126 00005bc4 afa80004 sw 4(r29),r8 6127 00005bc8 0fffee6c jal _dindex 6128 00005bcc 54000000 nop; not filled. 6129 00005bd0 23bd0008 addi r29,r29,#8 6130 00005bd4 64210000 snei r1,r1,#0 6131 00005bd8 10200030 beqz r1,L142_LF6 6132 00005bdc 54000000 nop; not filled. 6133 00005be0 L143_LF6: 6134 00005be0 23bdfff8 addi r29,r29,#-8 6135 00005be4 3c080001 lhi r8,((LC7_LF6)>>16)&0xffff 6136 00005be8 250816cc addui r8,r8,(LC7_LF6)&0xffff 6137 00005bec afa80000 sw (r29),r8 6138 00005bf0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 6139 00005bf4 24212018 addui r1,r1,(_currentPCB)&0xffff 6140 00005bf8 8c210000 lw r1,(r1) 6141 00005bfc afa10004 sw 4(r29),r1 6142 00005c00 0c006610 jal _printf 6143 00005c04 54000000 nop; not filled. 6144 00005c08 23bd0008 addi r29,r29,#8 6145 00005c0c L142_LF6: 6146 00005c0c 8fa20000 lw r2,0(r29) 6147 00005c10 8fa30004 lw r3,4(r29) 6148 00005c14 8fa40008 lw r4,8(r29) 6149 00005c18 8fa5000c lw r5,12(r29) 6150 00005c1c 8fa60010 lw r6,16(r29) 6151 00005c20 8fa70014 lw r7,20(r29) 6152 00005c24 8fa80018 lw r8,24(r29) 6153 00005c28 8fdffff8 lw r31,-8(r30) 6154 00005c2c 001ee820 add r29,r0,r30 6155 00005c30 8fdefffc lw r30,-4(r30) 6156 00005c34 4be00000 jr r31 6157 00005c38 54000000 nop 6158 00005c3c .endproc _ProcessSchedule 6159 00005c3c .data 6160 000116f0 .align 2 6161 000116f0 LC8_LF6: 6162 000116f0 53757370 .ascii "Suspending PCB 0x%x (%s).\n\000" 6162 000116f4 656e6469 6162 000116f8 6e672050 6162 000116fc 43422030 6162 00011700 78257820 6162 00011704 28257329 6162 00011708 2e0a00 6163 0001170b .align 2 6164 0001170c LC9_LF6: 6165 0001170c 25733a20 .ascii "%s: %s\n\000" 6165 00011710 25730a00 6166 00011714 .align 2 6167 00011714 LC10_LF6: 6168 00011714 50726f63 .ascii "ProcessSuspend\000" 6168 00011718 65737353 6168 0001171c 75737065 6168 00011720 6e6400 6169 00011723 .align 2 6170 00011724 LC11_LF6: 6171 00011724 54727969 .ascii "Trying to suspend a non-running process!\n\000" 6171 00011728 6e672074 6171 0001172c 6f207375 6171 00011730 7370656e 6171 00011734 64206120 6171 00011738 6e6f6e2d 6171 0001173c 72756e6e 6171 00011740 696e6720 6171 00011744 70726f63 6171 00011748 65737321 6171 0001174c 0a00 6172 0001174e .text 6173 00005c3c .align 2 6174 00005c3c .proc _ProcessSuspend 6175 00005c3c .global _ProcessSuspend 6176 00005c3c _ProcessSuspend: 6177 ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. 6178 00005c3c afbefffc sw -4(r29),r30; push fp 6179 00005c40 001df020 add r30,r0,r29; fp = sp 6180 00005c44 afbffff8 sw -8(r29),r31; push ret addr 6181 00005c48 2fbd0018 subui r29,r29,#24; alloc local storage 6182 00005c4c afa20000 sw 0(r29),r2 6183 00005c50 afa30004 sw 4(r29),r3 6184 00005c54 afa40008 sw 8(r29),r4 6185 00005c58 8fc30000 lw r3,(r30) 6186 00005c5c 23bdfff8 addi r29,r29,#-8 6187 00005c60 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6188 00005c64 24421f50 addui r2,r2,(_debugstr)&0xffff 6189 00005c68 afa20000 sw (r29),r2 6190 00005c6c 20040070 addi r4,r0,#112 6191 00005c70 afa40004 sw 4(r29),r4 6192 00005c74 0fffedc0 jal _dindex 6193 00005c78 54000000 nop; not filled. 6194 00005c7c 23bd0008 addi r29,r29,#8 6195 00005c80 64210000 snei r1,r1,#0 6196 00005c84 1420002c bnez r1,L147_LF6 6197 00005c88 54000000 nop; not filled. 6198 00005c8c 23bdfff8 addi r29,r29,#-8 6199 00005c90 afa20000 sw (r29),r2 6200 00005c94 2004002b addi r4,r0,#43 6201 00005c98 afa40004 sw 4(r29),r4 6202 00005c9c 0fffed98 jal _dindex 6203 00005ca0 54000000 nop; not filled. 6204 00005ca4 23bd0008 addi r29,r29,#8 6205 00005ca8 64210000 snei r1,r1,#0 6206 00005cac 1020002c beqz r1,L146_LF6 6207 00005cb0 54000000 nop; not filled. 6208 00005cb4 L147_LF6: 6209 00005cb4 23bdfff0 addi r29,r29,#-16 6210 00005cb8 3c040001 lhi r4,((LC8_LF6)>>16)&0xffff 6211 00005cbc 248416f0 addui r4,r4,(LC8_LF6)&0xffff 6212 00005cc0 afa40000 sw (r29),r4 6213 00005cc4 afa30004 sw 4(r29),r3 6214 00005cc8 20610010 addi r1,r3,#16 6215 00005ccc afa10008 sw 8(r29),r1 6216 00005cd0 0c006540 jal _printf 6217 00005cd4 54000000 nop; not filled. 6218 00005cd8 23bd0010 addi r29,r29,#16 6219 00005cdc L146_LF6: 6220 00005cdc 8064000f lb r4,15(r3) 6221 00005ce0 58810001 srli r1,r4,#0x1 6222 00005ce4 30210001 andi r1,r1,#1 6223 00005ce8 14200038 bnez r1,L149_LF6 6224 00005cec 54000000 nop; not filled. 6225 00005cf0 23bdfff0 addi r29,r29,#-16 6226 00005cf4 3c040001 lhi r4,((LC9_LF6)>>16)&0xffff 6227 00005cf8 2484170c addui r4,r4,(LC9_LF6)&0xffff 6228 00005cfc afa40000 sw (r29),r4 6229 00005d00 3c010001 lhi r1,((LC10_LF6)>>16)&0xffff 6230 00005d04 24211714 addui r1,r1,(LC10_LF6)&0xffff 6231 00005d08 afa10004 sw 4(r29),r1 6232 00005d0c 3c040001 lhi r4,((LC11_LF6)>>16)&0xffff 6233 00005d10 24841724 addui r4,r4,(LC11_LF6)&0xffff 6234 00005d14 afa40008 sw 8(r29),r4 6235 00005d18 0c0064f8 jal _printf 6236 00005d1c 54000000 nop; not filled. 6237 00005d20 23bd0010 addi r29,r29,#16 6238 00005d24 L149_LF6: 6239 00005d24 8c61000c lw r1,12(r3) 6240 00005d28 2004ffc0 addi r4,r0,#-64 6241 00005d2c 00240824 and r1,r1,r4 6242 00005d30 34210004 ori r1,r1,#4 6243 00005d34 ac61000c sw 12(r3),r1 6244 00005d38 207f00a4 addi r31,r3,#164 6245 00005d3c 8c6100ac lw r1,172(r3) 6246 00005d40 8c210008 lw r1,8(r1) 6247 00005d44 6c210000 sgti r1,r1,#0 6248 00005d48 1020002c beqz r1,L152_LF6 6249 00005d4c 54000000 nop; not filled. 6250 00005d50 8c6100a8 lw r1,168(r3) 6251 00005d54 8fe40000 lw r4,(r31) 6252 00005d58 ac240000 sw (r1),r4 6253 00005d5c 8fe10000 lw r1,(r31) 6254 00005d60 8c6400a8 lw r4,168(r3) 6255 00005d64 ac240004 sw 4(r1),r4 6256 00005d68 8c6200ac lw r2,172(r3) 6257 00005d6c 8c410008 lw r1,8(r2) 6258 00005d70 2021ffff addi r1,r1,#-1 6259 00005d74 ac410008 sw 8(r2),r1 6260 00005d78 L152_LF6: 6261 00005d78 20040000 addi r4,r0,#0 6262 00005d7c afe40000 sw (r31),r4 6263 00005d80 3c020001 lhi r2,((_waitQueue_LF6)>>16)&0xffff 6264 00005d84 24422034 addui r2,r2,(_waitQueue_LF6)&0xffff 6265 00005d88 8c410004 lw r1,4(r2) 6266 00005d8c ac6200ac sw 172(r3),r2 6267 00005d90 ac6100a8 sw 168(r3),r1 6268 00005d94 8c240000 lw r4,(r1) 6269 00005d98 afe40000 sw (r31),r4 6270 00005d9c ac3f0000 sw (r1),r31 6271 00005da0 8fe10000 lw r1,(r31) 6272 00005da4 ac3f0004 sw 4(r1),r31 6273 00005da8 8c410008 lw r1,8(r2) 6274 00005dac 20210001 addi r1,r1,#1 6275 00005db0 ac410008 sw 8(r2),r1 6276 00005db4 8fa20000 lw r2,0(r29) 6277 00005db8 8fa30004 lw r3,4(r29) 6278 00005dbc 8fa40008 lw r4,8(r29) 6279 00005dc0 8fdffff8 lw r31,-8(r30) 6280 00005dc4 001ee820 add r29,r0,r30 6281 00005dc8 8fdefffc lw r30,-4(r30) 6282 00005dcc 4be00000 jr r31 6283 00005dd0 54000000 nop 6284 00005dd4 .endproc _ProcessSuspend 6285 00005dd4 .data 6286 0001174e .align 2 6287 00011750 LC12_LF6: 6288 00011750 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 6288 00011754 6e672075 6288 00011758 70205043 6288 0001175c 42203078 6288 00011760 25782e0a 6288 00011764 00 6289 00011765 .align 2 6290 00011768 LC13_LF6: 6291 00011768 50726f63 .ascii "ProcessWakeup\000" 6291 0001176c 65737357 6291 00011770 616b6575 6291 00011774 7000 6292 00011776 .align 2 6293 00011778 LC14_LF6: 6294 00011778 54727969 .ascii "Trying to wake up a non-sleeping process!\n\000" 6294 0001177c 6e672074 6294 00011780 6f207761 6294 00011784 6b652075 6294 00011788 70206120 6294 0001178c 6e6f6e2d 6294 00011790 736c6565 6294 00011794 70696e67 6294 00011798 2070726f 6294 0001179c 63657373 6294 000117a0 210a00 6295 000117a3 .text 6296 00005dd4 .align 2 6297 00005dd4 .proc _ProcessWakeup 6298 00005dd4 .global _ProcessWakeup 6299 00005dd4 _ProcessWakeup: 6300 ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. 6301 00005dd4 afbefffc sw -4(r29),r30; push fp 6302 00005dd8 001df020 add r30,r0,r29; fp = sp 6303 00005ddc afbffff8 sw -8(r29),r31; push ret addr 6304 00005de0 2fbd0018 subui r29,r29,#24; alloc local storage 6305 00005de4 afa20000 sw 0(r29),r2 6306 00005de8 afa30004 sw 4(r29),r3 6307 00005dec afa40008 sw 8(r29),r4 6308 00005df0 8fc30000 lw r3,(r30) 6309 00005df4 23bdfff8 addi r29,r29,#-8 6310 00005df8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6311 00005dfc 24421f50 addui r2,r2,(_debugstr)&0xffff 6312 00005e00 afa20000 sw (r29),r2 6313 00005e04 20040070 addi r4,r0,#112 6314 00005e08 afa40004 sw 4(r29),r4 6315 00005e0c 0fffec28 jal _dindex 6316 00005e10 54000000 nop; not filled. 6317 00005e14 23bd0008 addi r29,r29,#8 6318 00005e18 64210000 snei r1,r1,#0 6319 00005e1c 1420002c bnez r1,L158_LF6 6320 00005e20 54000000 nop; not filled. 6321 00005e24 23bdfff8 addi r29,r29,#-8 6322 00005e28 afa20000 sw (r29),r2 6323 00005e2c 2004002b addi r4,r0,#43 6324 00005e30 afa40004 sw 4(r29),r4 6325 00005e34 0fffec00 jal _dindex 6326 00005e38 54000000 nop; not filled. 6327 00005e3c 23bd0008 addi r29,r29,#8 6328 00005e40 64210000 snei r1,r1,#0 6329 00005e44 10200024 beqz r1,L157_LF6 6330 00005e48 54000000 nop; not filled. 6331 00005e4c L158_LF6: 6332 00005e4c 23bdfff8 addi r29,r29,#-8 6333 00005e50 3c040001 lhi r4,((LC12_LF6)>>16)&0xffff 6334 00005e54 24841750 addui r4,r4,(LC12_LF6)&0xffff 6335 00005e58 afa40000 sw (r29),r4 6336 00005e5c afa30004 sw 4(r29),r3 6337 00005e60 0c0063b0 jal _printf 6338 00005e64 54000000 nop; not filled. 6339 00005e68 23bd0008 addi r29,r29,#8 6340 00005e6c L157_LF6: 6341 00005e6c 8064000f lb r4,15(r3) 6342 00005e70 58810002 srli r1,r4,#0x2 6343 00005e74 30210001 andi r1,r1,#1 6344 00005e78 14200038 bnez r1,L160_LF6 6345 00005e7c 54000000 nop; not filled. 6346 00005e80 23bdfff0 addi r29,r29,#-16 6347 00005e84 3c040001 lhi r4,((LC9_LF6)>>16)&0xffff 6348 00005e88 2484170c addui r4,r4,(LC9_LF6)&0xffff 6349 00005e8c afa40000 sw (r29),r4 6350 00005e90 3c010001 lhi r1,((LC13_LF6)>>16)&0xffff 6351 00005e94 24211768 addui r1,r1,(LC13_LF6)&0xffff 6352 00005e98 afa10004 sw 4(r29),r1 6353 00005e9c 3c040001 lhi r4,((LC14_LF6)>>16)&0xffff 6354 00005ea0 24841778 addui r4,r4,(LC14_LF6)&0xffff 6355 00005ea4 afa40008 sw 8(r29),r4 6356 00005ea8 0c006368 jal _printf 6357 00005eac 54000000 nop; not filled. 6358 00005eb0 23bd0010 addi r29,r29,#16 6359 00005eb4 L160_LF6: 6360 00005eb4 8c61000c lw r1,12(r3) 6361 00005eb8 2004ffc0 addi r4,r0,#-64 6362 00005ebc 00240824 and r1,r1,r4 6363 00005ec0 34210002 ori r1,r1,#2 6364 00005ec4 ac61000c sw 12(r3),r1 6365 00005ec8 207f00a4 addi r31,r3,#164 6366 00005ecc 8c6100ac lw r1,172(r3) 6367 00005ed0 8c210008 lw r1,8(r1) 6368 00005ed4 6c210000 sgti r1,r1,#0 6369 00005ed8 1020002c beqz r1,L163_LF6 6370 00005edc 54000000 nop; not filled. 6371 00005ee0 8c6100a8 lw r1,168(r3) 6372 00005ee4 8fe40000 lw r4,(r31) 6373 00005ee8 ac240000 sw (r1),r4 6374 00005eec 8fe10000 lw r1,(r31) 6375 00005ef0 8c6400a8 lw r4,168(r3) 6376 00005ef4 ac240004 sw 4(r1),r4 6377 00005ef8 8c6200ac lw r2,172(r3) 6378 00005efc 8c410008 lw r1,8(r2) 6379 00005f00 2021ffff addi r1,r1,#-1 6380 00005f04 ac410008 sw 8(r2),r1 6381 00005f08 L163_LF6: 6382 00005f08 20040000 addi r4,r0,#0 6383 00005f0c afe40000 sw (r31),r4 6384 00005f10 3c020001 lhi r2,((_runQueue_LF6)>>16)&0xffff 6385 00005f14 24422028 addui r2,r2,(_runQueue_LF6)&0xffff 6386 00005f18 8c410004 lw r1,4(r2) 6387 00005f1c ac6200ac sw 172(r3),r2 6388 00005f20 ac6100a8 sw 168(r3),r1 6389 00005f24 8c240000 lw r4,(r1) 6390 00005f28 afe40000 sw (r31),r4 6391 00005f2c ac3f0000 sw (r1),r31 6392 00005f30 8fe10000 lw r1,(r31) 6393 00005f34 ac3f0004 sw 4(r1),r31 6394 00005f38 8c410008 lw r1,8(r2) 6395 00005f3c 20210001 addi r1,r1,#1 6396 00005f40 ac410008 sw 8(r2),r1 6397 00005f44 8fa20000 lw r2,0(r29) 6398 00005f48 8fa30004 lw r3,4(r29) 6399 00005f4c 8fa40008 lw r4,8(r29) 6400 00005f50 8fdffff8 lw r31,-8(r30) 6401 00005f54 001ee820 add r29,r0,r30 6402 00005f58 8fdefffc lw r30,-4(r30) 6403 00005f5c 4be00000 jr r31 6404 00005f60 54000000 nop 6405 00005f64 .endproc _ProcessWakeup 6406 00005f64 .data 6407 000117a3 .align 2 6408 000117a4 LC15_LF6: 6409 000117a4 456e7465 .ascii "Entering ProcessDestroy for 0x%x.\n\000" 6409 000117a8 72696e67 6409 000117ac 2050726f 6409 000117b0 63657373 6409 000117b4 44657374 6409 000117b8 726f7920 6409 000117bc 666f7220 6409 000117c0 30782578 6409 000117c4 2e0a00 6410 000117c7 .align 2 6411 000117c8 LC16_LF6: 6412 000117c8 4c656176 .ascii "Leaving ProcessDestroy for 0x%x.\n\000" 6412 000117cc 696e6720 6412 000117d0 50726f63 6412 000117d4 65737344 6412 000117d8 65737472 6412 000117dc 6f792066 6412 000117e0 6f722030 6412 000117e4 7825782e 6412 000117e8 0a00 6413 000117ea .text 6414 00005f64 .align 2 6415 00005f64 .proc _ProcessDestroy 6416 00005f64 .global _ProcessDestroy 6417 00005f64 _ProcessDestroy: 6418 ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. 6419 00005f64 afbefffc sw -4(r29),r30; push fp 6420 00005f68 001df020 add r30,r0,r29; fp = sp 6421 00005f6c afbffff8 sw -8(r29),r31; push ret addr 6422 00005f70 2fbd0018 subui r29,r29,#24; alloc local storage 6423 00005f74 afa20000 sw 0(r29),r2 6424 00005f78 afa30004 sw 4(r29),r3 6425 00005f7c afa40008 sw 8(r29),r4 6426 00005f80 8fc30000 lw r3,(r30) 6427 00005f84 23bdfff8 addi r29,r29,#-8 6428 00005f88 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6429 00005f8c 24421f50 addui r2,r2,(_debugstr)&0xffff 6430 00005f90 afa20000 sw (r29),r2 6431 00005f94 20040070 addi r4,r0,#112 6432 00005f98 afa40004 sw 4(r29),r4 6433 00005f9c 0fffea98 jal _dindex 6434 00005fa0 54000000 nop; not filled. 6435 00005fa4 23bd0008 addi r29,r29,#8 6436 00005fa8 64210000 snei r1,r1,#0 6437 00005fac 1420002c bnez r1,L169_LF6 6438 00005fb0 54000000 nop; not filled. 6439 00005fb4 23bdfff8 addi r29,r29,#-8 6440 00005fb8 afa20000 sw (r29),r2 6441 00005fbc 2004002b addi r4,r0,#43 6442 00005fc0 afa40004 sw 4(r29),r4 6443 00005fc4 0fffea70 jal _dindex 6444 00005fc8 54000000 nop; not filled. 6445 00005fcc 23bd0008 addi r29,r29,#8 6446 00005fd0 64210000 snei r1,r1,#0 6447 00005fd4 10200024 beqz r1,L168_LF6 6448 00005fd8 54000000 nop; not filled. 6449 00005fdc L169_LF6: 6450 00005fdc 23bdfff8 addi r29,r29,#-8 6451 00005fe0 3c040001 lhi r4,((LC15_LF6)>>16)&0xffff 6452 00005fe4 248417a4 addui r4,r4,(LC15_LF6)&0xffff 6453 00005fe8 afa40000 sw (r29),r4 6454 00005fec afa30004 sw 4(r29),r3 6455 00005ff0 0c006220 jal _printf 6456 00005ff4 54000000 nop; not filled. 6457 00005ff8 23bd0008 addi r29,r29,#8 6458 00005ffc L168_LF6: 6459 00005ffc 8c61000c lw r1,12(r3) 6460 00006000 2004ffc0 addi r4,r0,#-64 6461 00006004 00240824 and r1,r1,r4 6462 00006008 34210010 ori r1,r1,#16 6463 0000600c ac61000c sw 12(r3),r1 6464 00006010 207f00a4 addi r31,r3,#164 6465 00006014 8c6100ac lw r1,172(r3) 6466 00006018 8c210008 lw r1,8(r1) 6467 0000601c 6c210000 sgti r1,r1,#0 6468 00006020 1020002c beqz r1,L172_LF6 6469 00006024 54000000 nop; not filled. 6470 00006028 8c6100a8 lw r1,168(r3) 6471 0000602c 8fe40000 lw r4,(r31) 6472 00006030 ac240000 sw (r1),r4 6473 00006034 8fe10000 lw r1,(r31) 6474 00006038 8c6400a8 lw r4,168(r3) 6475 0000603c ac240004 sw 4(r1),r4 6476 00006040 8c6200ac lw r2,172(r3) 6477 00006044 8c410008 lw r1,8(r2) 6478 00006048 2021ffff addi r1,r1,#-1 6479 0000604c ac410008 sw 8(r2),r1 6480 00006050 L172_LF6: 6481 00006050 20040000 addi r4,r0,#0 6482 00006054 afe40000 sw (r31),r4 6483 00006058 3c020001 lhi r2,((_zombieQueue_LF6)>>16)&0xffff 6484 0000605c 24422040 addui r2,r2,(_zombieQueue_LF6)&0xffff 6485 00006060 ac6200ac sw 172(r3),r2 6486 00006064 ac6200a8 sw 168(r3),r2 6487 00006068 8c440000 lw r4,(r2) 6488 0000606c afe40000 sw (r31),r4 6489 00006070 ac5f0000 sw (r2),r31 6490 00006074 8fe10000 lw r1,(r31) 6491 00006078 ac3f0004 sw 4(r1),r31 6492 0000607c 8c410008 lw r1,8(r2) 6493 00006080 20210001 addi r1,r1,#1 6494 00006084 ac410008 sw 8(r2),r1 6495 00006088 23bdfff8 addi r29,r29,#-8 6496 0000608c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6497 00006090 24421f50 addui r2,r2,(_debugstr)&0xffff 6498 00006094 afa20000 sw (r29),r2 6499 00006098 20040070 addi r4,r0,#112 6500 0000609c afa40004 sw 4(r29),r4 6501 000060a0 0fffe994 jal _dindex 6502 000060a4 54000000 nop; not filled. 6503 000060a8 23bd0008 addi r29,r29,#8 6504 000060ac 64210000 snei r1,r1,#0 6505 000060b0 1420002c bnez r1,L176_LF6 6506 000060b4 54000000 nop; not filled. 6507 000060b8 23bdfff8 addi r29,r29,#-8 6508 000060bc afa20000 sw (r29),r2 6509 000060c0 2004002b addi r4,r0,#43 6510 000060c4 afa40004 sw 4(r29),r4 6511 000060c8 0fffe96c jal _dindex 6512 000060cc 54000000 nop; not filled. 6513 000060d0 23bd0008 addi r29,r29,#8 6514 000060d4 64210000 snei r1,r1,#0 6515 000060d8 10200024 beqz r1,L175_LF6 6516 000060dc 54000000 nop; not filled. 6517 000060e0 L176_LF6: 6518 000060e0 23bdfff8 addi r29,r29,#-8 6519 000060e4 3c040001 lhi r4,((LC16_LF6)>>16)&0xffff 6520 000060e8 248417c8 addui r4,r4,(LC16_LF6)&0xffff 6521 000060ec afa40000 sw (r29),r4 6522 000060f0 afa30004 sw 4(r29),r3 6523 000060f4 0c00611c jal _printf 6524 000060f8 54000000 nop; not filled. 6525 000060fc 23bd0008 addi r29,r29,#8 6526 00006100 L175_LF6: 6527 00006100 8fa20000 lw r2,0(r29) 6528 00006104 8fa30004 lw r3,4(r29) 6529 00006108 8fa40008 lw r4,8(r29) 6530 0000610c 8fdffff8 lw r31,-8(r30) 6531 00006110 001ee820 add r29,r0,r30 6532 00006114 8fdefffc lw r30,-4(r30) 6533 00006118 4be00000 jr r31 6534 0000611c 54000000 nop 6535 00006120 .endproc _ProcessDestroy 6536 00006120 .data 6537 000117ea .align 2 6538 000117ec LC17_LF6: 6539 000117ec 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 6539 000117f0 696e7465 6539 000117f4 72727570 6539 000117f8 74207661 6539 000117fc 6c756520 6539 00011800 77617320 6539 00011804 30782578 6539 00011808 2e0a00 6540 0001180b .align 2 6541 0001180c LC18_LF6: 6542 0001180c 456e7465 .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" 6542 00011810 72696e67 6542 00011814 2050726f 6542 00011818 63657373 6542 0001181c 466f726b 6542 00011820 20617267 6542 00011824 733d3078 6542 00011828 25782030 6542 0001182c 78257820 6542 00011830 25732025 6542 00011834 640a00 6543 00011837 .align 2 6544 00011838 LC19_LF6: 6545 00011838 46415441 .ascii "FATAL error: no free processes!\n\000" 6545 0001183c 4c206572 6545 00011840 726f723a 6545 00011844 206e6f20 6545 00011848 66726565 6545 0001184c 2070726f 6545 00011850 63657373 6545 00011854 6573210a 6545 00011858 00 6546 00011859 .align 2 6547 0001185c LC20_LF6: 6548 0001185c 476f7420 .ascii "Got a link @ 0x%x\n\000" 6548 00011860 61206c69 6548 00011864 6e6b2040 6548 00011868 20307825 6548 0001186c 780a00 6549 0001186f .align 2 6550 00011870 LC21_LF6: 6551 00011870 4265666f .ascii "Before restore interrupt value is 0x%x.\n\000" 6551 00011874 72652072 6551 00011878 6573746f 6551 0001187c 72652069 6551 00011880 6e746572 6551 00011884 72757074 6551 00011888 2076616c 6551 0001188c 75652069 6551 00011890 73203078 6551 00011894 25782e0a 6551 00011898 00 6552 00011899 .align 2 6553 0001189c LC22_LF6: 6554 0001189c 4e657720 .ascii "New interrupt value is 0x%x.\n\000" 6554 000118a0 696e7465 6554 000118a4 72727570 6554 000118a8 74207661 6554 000118ac 6c756520 6554 000118b0 69732030 6554 000118b4 7825782e 6554 000118b8 0a00 6555 000118ba .align 2 6556 000118bc LC23_LF6: 6557 000118bc 61464154 .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" 6557 000118c0 414c3a20 6557 000118c4 636f756c 6557 000118c8 646e2774 6557 000118cc 20616c6c 6557 000118d0 6f636174 6557 000118d4 65206d65 6557 000118d8 6d6f7279 6557 000118dc 202d206e 6557 000118e0 6f206672 6557 000118e4 65652070 6557 000118e8 61676573 6557 000118ec 210a00 6558 000118ef .align 2 6559 000118f0 LC24_LF6: 6560 000118f0 62464154 .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" 6560 000118f4 414c3a20 6560 000118f8 636f756c 6560 000118fc 646e2774 6560 00011900 20616c6c 6560 00011904 6f636174 6560 00011908 65207379 6560 0001190c 7374656d 6560 00011910 20737461 6560 00011914 636b202d 6560 00011918 206e6f20 6560 0001191c 66726565 6560 00011920 20706167 6560 00011924 6573210a 6560 00011928 00 6561 00011929 .align 2 6562 0001192c LC25_LF6: 6563 0001192c 53657474 .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" 6563 00011930 696e6720 6563 00011934 75702050 6563 00011938 43422040 6563 0001193c 20307825 6563 00011940 78202873 6563 00011944 79732073 6563 00011948 7461636b 6563 0001194c 3d307825 6563 00011950 782c206d 6563 00011954 656d3d30 6563 00011958 7825782c 6563 0001195c 2073697a 6563 00011960 653d3078 6563 00011964 2578290a 6563 00011968 00 6564 00011969 .align 2 6565 0001196c LC26_LF6: 6566 0001196c 41626f75 .ascii "About to load %s\n\000" 6566 00011970 7420746f 6566 00011974 206c6f61 6566 00011978 64202573 6566 0001197c 0a00 6567 0001197e .align 2 6568 00011980 LC27_LF6: 6569 00011980 46696c65 .ascii "File %s -> start=0x%08x\n\000" 6569 00011984 20257320 6569 00011988 2d3e2073 6569 0001198c 74617274 6569 00011990 3d307825 6569 00011994 3038780a 6569 00011998 00 6570 00011999 .align 2 6571 0001199c LC28_LF6: 6572 0001199c 46696c65 .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" 6572 000119a0 20257320 6572 000119a4 2d3e2063 6572 000119a8 6f646520 6572 000119ac 40203078 6572 000119b0 25303878 6572 000119b4 20287369 6572 000119b8 7a653d30 6572 000119bc 78253038 6572 000119c0 78290a00 6573 000119c4 .align 2 6574 000119c4 LC29_LF6: 6575 000119c4 46696c65 .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" 6575 000119c8 20257320 6575 000119cc 2d3e2064 6575 000119d0 61746120 6575 000119d4 40203078 6575 000119d8 25303878 6575 000119dc 20287369 6575 000119e0 7a653d30 6575 000119e4 78253038 6575 000119e8 78290a00 6576 000119ec .align 2 6577 000119ec LC30_LF6: 6578 000119ec 506c6163 .ascii "Placing %d bytes at vaddr %08x.\n\000" 6578 000119f0 696e6720 6578 000119f4 25642062 6578 000119f8 79746573 6578 000119fc 20617420 6578 00011a00 76616464 6578 00011a04 72202530 6578 00011a08 38782e0a 6578 00011a0c 00 6579 00011a0d .align 2 6580 00011a10 LC31_LF6: 6581 00011a10 53657474 .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" 6581 00011a14 696e6720 6581 00011a18 63757272 6581 00011a1c 656e7450 6581 00011a20 43423d30 6581 00011a24 7825782c 6581 00011a28 20737461 6581 00011a2c 636b6672 6581 00011a30 616d653d 6581 00011a34 30782578 6581 00011a38 0a00 6582 00011a3a .align 2 6583 00011a3c LC32_LF6: 6584 00011a3c 4c656176 .ascii "Leaving ProcessFork (%s)\n\000" 6584 00011a40 696e6720 6584 00011a44 50726f63 6584 00011a48 65737346 6584 00011a4c 6f726b20 6584 00011a50 28257329 6584 00011a54 0a00 6585 00011a56 .text 6586 00006120 .align 2 6587 00006120 .proc _ProcessFork 6588 00006120 .global _ProcessFork 6589 00006120 _ProcessFork: 6590 ; Function 'ProcessFork'; 672 bytes of locals, 11 regs to save. 6591 00006120 afbefffc sw -4(r29),r30; push fp 6592 00006124 001df020 add r30,r0,r29; fp = sp 6593 00006128 afbffff8 sw -8(r29),r31; push ret addr 6594 0000612c 2fbd02d8 subui r29,r29,#728; alloc local storage 6595 00006130 afa20000 sw 0(r29),r2 6596 00006134 afa30004 sw 4(r29),r3 6597 00006138 afa40008 sw 8(r29),r4 6598 0000613c afa5000c sw 12(r29),r5 6599 00006140 afa60010 sw 16(r29),r6 6600 00006144 afa70014 sw 20(r29),r7 6601 00006148 afa80018 sw 24(r29),r8 6602 0000614c afa9001c sw 28(r29),r9 6603 00006150 afaa0020 sw 32(r29),r10 6604 00006154 afab0024 sw 36(r29),r11 6605 00006158 afac0028 sw 40(r29),r12 6606 0000615c 8fc70000 lw r7,(r30) 6607 00006160 8fcb0004 lw r11,4(r30) 6608 00006164 8fca0008 lw r10,8(r30) 6609 00006168 8fc4000c lw r4,12(r30) 6610 0000616c 200c0000 addi r12,r0,#0 6611 00006170 afccfd58 sw -680(r30),r12 6612 00006174 23bdfff8 addi r29,r29,#-8 6613 00006178 200c000f addi r12,r0,#15 6614 0000617c afac0000 sw (r29),r12 6615 00006180 0fffb104 jal _SetIntrs 6616 00006184 54000000 nop; not filled. 6617 00006188 00011820 add r3,r0,r1 6618 0000618c 23bd0008 addi r29,r29,#8 6619 00006190 23bdfff8 addi r29,r29,#-8 6620 00006194 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6621 00006198 24421f50 addui r2,r2,(_debugstr)&0xffff 6622 0000619c afa20000 sw (r29),r2 6623 000061a0 200c0049 addi r12,r0,#73 6624 000061a4 afac0004 sw 4(r29),r12 6625 000061a8 0fffe88c jal _dindex 6626 000061ac 54000000 nop; not filled. 6627 000061b0 23bd0008 addi r29,r29,#8 6628 000061b4 64210000 snei r1,r1,#0 6629 000061b8 1420002c bnez r1,L181_LF6 6630 000061bc 54000000 nop; not filled. 6631 000061c0 23bdfff8 addi r29,r29,#-8 6632 000061c4 afa20000 sw (r29),r2 6633 000061c8 200c002b addi r12,r0,#43 6634 000061cc afac0004 sw 4(r29),r12 6635 000061d0 0fffe864 jal _dindex 6636 000061d4 54000000 nop; not filled. 6637 000061d8 23bd0008 addi r29,r29,#8 6638 000061dc 64210000 snei r1,r1,#0 6639 000061e0 10200024 beqz r1,L180_LF6 6640 000061e4 54000000 nop; not filled. 6641 000061e8 L181_LF6: 6642 000061e8 23bdfff8 addi r29,r29,#-8 6643 000061ec 3c0c0001 lhi r12,((LC17_LF6)>>16)&0xffff 6644 000061f0 258c17ec addui r12,r12,(LC17_LF6)&0xffff 6645 000061f4 afac0000 sw (r29),r12 6646 000061f8 afa30004 sw 4(r29),r3 6647 000061fc 0c006014 jal _printf 6648 00006200 54000000 nop; not filled. 6649 00006204 23bd0008 addi r29,r29,#8 6650 00006208 L180_LF6: 6651 00006208 23bdfff8 addi r29,r29,#-8 6652 0000620c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6653 00006210 24421f50 addui r2,r2,(_debugstr)&0xffff 6654 00006214 afa20000 sw (r29),r2 6655 00006218 200c0070 addi r12,r0,#112 6656 0000621c afac0004 sw 4(r29),r12 6657 00006220 0fffe814 jal _dindex 6658 00006224 54000000 nop; not filled. 6659 00006228 23bd0008 addi r29,r29,#8 6660 0000622c 64210000 snei r1,r1,#0 6661 00006230 1420002c bnez r1,L183_LF6 6662 00006234 54000000 nop; not filled. 6663 00006238 23bdfff8 addi r29,r29,#-8 6664 0000623c afa20000 sw (r29),r2 6665 00006240 200c002b addi r12,r0,#43 6666 00006244 afac0004 sw 4(r29),r12 6667 00006248 0fffe7ec jal _dindex 6668 0000624c 54000000 nop; not filled. 6669 00006250 23bd0008 addi r29,r29,#8 6670 00006254 64210000 snei r1,r1,#0 6671 00006258 10200030 beqz r1,L182_LF6 6672 0000625c 54000000 nop; not filled. 6673 00006260 L183_LF6: 6674 00006260 23bdffe8 addi r29,r29,#-24 6675 00006264 3c0c0001 lhi r12,((LC18_LF6)>>16)&0xffff 6676 00006268 258c180c addui r12,r12,(LC18_LF6)&0xffff 6677 0000626c afac0000 sw (r29),r12 6678 00006270 afa70004 sw 4(r29),r7 6679 00006274 afab0008 sw 8(r29),r11 6680 00006278 afaa000c sw 12(r29),r10 6681 0000627c afa40010 sw 16(r29),r4 6682 00006280 0c005f90 jal _printf 6683 00006284 54000000 nop; not filled. 6684 00006288 23bd0018 addi r29,r29,#24 6685 0000628c L182_LF6: 6686 0000628c 3c020001 lhi r2,((_freepcbs_LF6)>>16)&0xffff 6687 00006290 2442201c addui r2,r2,(_freepcbs_LF6)&0xffff 6688 00006294 8c410008 lw r1,8(r2) 6689 00006298 60210000 seqi r1,r1,#0 6690 0000629c 10200028 beqz r1,L184_LF6 6691 000062a0 54000000 nop; not filled. 6692 000062a4 23bdfff8 addi r29,r29,#-8 6693 000062a8 3c0c0001 lhi r12,((LC19_LF6)>>16)&0xffff 6694 000062ac 258c1838 addui r12,r12,(LC19_LF6)&0xffff 6695 000062b0 afac0000 sw (r29),r12 6696 000062b4 0c005f5c jal _printf 6697 000062b8 54000000 nop; not filled. 6698 000062bc 0c005f3c jal _exitsim 6699 000062c0 54000000 nop; not filled. 6700 000062c4 23bd0008 addi r29,r29,#8 6701 000062c8 L184_LF6: 6702 000062c8 8c480000 lw r8,(r2) 6703 000062cc 23bdfff8 addi r29,r29,#-8 6704 000062d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6705 000062d4 24421f50 addui r2,r2,(_debugstr)&0xffff 6706 000062d8 afa20000 sw (r29),r2 6707 000062dc 200c0070 addi r12,r0,#112 6708 000062e0 afac0004 sw 4(r29),r12 6709 000062e4 0fffe750 jal _dindex 6710 000062e8 54000000 nop; not filled. 6711 000062ec 23bd0008 addi r29,r29,#8 6712 000062f0 64210000 snei r1,r1,#0 6713 000062f4 1420002c bnez r1,L189_LF6 6714 000062f8 54000000 nop; not filled. 6715 000062fc 23bdfff8 addi r29,r29,#-8 6716 00006300 afa20000 sw (r29),r2 6717 00006304 200c002b addi r12,r0,#43 6718 00006308 afac0004 sw 4(r29),r12 6719 0000630c 0fffe728 jal _dindex 6720 00006310 54000000 nop; not filled. 6721 00006314 23bd0008 addi r29,r29,#8 6722 00006318 64210000 snei r1,r1,#0 6723 0000631c 10200024 beqz r1,L188_LF6 6724 00006320 54000000 nop; not filled. 6725 00006324 L189_LF6: 6726 00006324 23bdfff8 addi r29,r29,#-8 6727 00006328 3c0c0001 lhi r12,((LC20_LF6)>>16)&0xffff 6728 0000632c 258c185c addui r12,r12,(LC20_LF6)&0xffff 6729 00006330 afac0000 sw (r29),r12 6730 00006334 afa80004 sw 4(r29),r8 6731 00006338 0c005ed8 jal _printf 6732 0000633c 54000000 nop; not filled. 6733 00006340 23bd0008 addi r29,r29,#8 6734 00006344 L188_LF6: 6735 00006344 8d010008 lw r1,8(r8) 6736 00006348 8c210008 lw r1,8(r1) 6737 0000634c 6c210000 sgti r1,r1,#0 6738 00006350 1020002c beqz r1,L191_LF6 6739 00006354 54000000 nop; not filled. 6740 00006358 8d010004 lw r1,4(r8) 6741 0000635c 8d0c0000 lw r12,(r8) 6742 00006360 ac2c0000 sw (r1),r12 6743 00006364 8d010000 lw r1,(r8) 6744 00006368 8d0c0004 lw r12,4(r8) 6745 0000636c ac2c0004 sw 4(r1),r12 6746 00006370 8d020008 lw r2,8(r8) 6747 00006374 8c410008 lw r1,8(r2) 6748 00006378 2021ffff addi r1,r1,#-1 6749 0000637c ac410008 sw 8(r2),r1 6750 00006380 L191_LF6: 6751 00006380 200c0000 addi r12,r0,#0 6752 00006384 ad0c0000 sw (r8),r12 6753 00006388 8d05000c lw r5,12(r8) 6754 0000638c 8ca1000c lw r1,12(r5) 6755 00006390 200cffc0 addi r12,r0,#-64 6756 00006394 002c0824 and r1,r1,r12 6757 00006398 34210002 ori r1,r1,#2 6758 0000639c aca1000c sw 12(r5),r1 6759 000063a0 23bdfff8 addi r29,r29,#-8 6760 000063a4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6761 000063a8 24421f50 addui r2,r2,(_debugstr)&0xffff 6762 000063ac afa20000 sw (r29),r2 6763 000063b0 200c0049 addi r12,r0,#73 6764 000063b4 afac0004 sw 4(r29),r12 6765 000063b8 0fffe67c jal _dindex 6766 000063bc 54000000 nop; not filled. 6767 000063c0 23bd0008 addi r29,r29,#8 6768 000063c4 64210000 snei r1,r1,#0 6769 000063c8 1420002c bnez r1,L194_LF6 6770 000063cc 54000000 nop; not filled. 6771 000063d0 23bdfff8 addi r29,r29,#-8 6772 000063d4 afa20000 sw (r29),r2 6773 000063d8 200c002b addi r12,r0,#43 6774 000063dc afac0004 sw 4(r29),r12 6775 000063e0 0fffe654 jal _dindex 6776 000063e4 54000000 nop; not filled. 6777 000063e8 23bd0008 addi r29,r29,#8 6778 000063ec 64210000 snei r1,r1,#0 6779 000063f0 1020002c beqz r1,L193_LF6 6780 000063f4 54000000 nop; not filled. 6781 000063f8 L194_LF6: 6782 000063f8 0fffaec8 jal _CurrentIntrs 6783 000063fc 54000000 nop; not filled. 6784 00006400 23bdfff8 addi r29,r29,#-8 6785 00006404 3c0c0001 lhi r12,((LC21_LF6)>>16)&0xffff 6786 00006408 258c1870 addui r12,r12,(LC21_LF6)&0xffff 6787 0000640c afac0000 sw (r29),r12 6788 00006410 afa10004 sw 4(r29),r1 6789 00006414 0c005dfc jal _printf 6790 00006418 54000000 nop; not filled. 6791 0000641c 23bd0008 addi r29,r29,#8 6792 00006420 L193_LF6: 6793 00006420 23bdfff8 addi r29,r29,#-8 6794 00006424 afa30000 sw (r29),r3 6795 00006428 0fffae5c jal _SetIntrs 6796 0000642c 54000000 nop; not filled. 6797 00006430 23bd0008 addi r29,r29,#8 6798 00006434 23bdfff8 addi r29,r29,#-8 6799 00006438 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6800 0000643c 24421f50 addui r2,r2,(_debugstr)&0xffff 6801 00006440 afa20000 sw (r29),r2 6802 00006444 200c0049 addi r12,r0,#73 6803 00006448 afac0004 sw 4(r29),r12 6804 0000644c 0fffe5e8 jal _dindex 6805 00006450 54000000 nop; not filled. 6806 00006454 23bd0008 addi r29,r29,#8 6807 00006458 64210000 snei r1,r1,#0 6808 0000645c 1420002c bnez r1,L197_LF6 6809 00006460 54000000 nop; not filled. 6810 00006464 23bdfff8 addi r29,r29,#-8 6811 00006468 afa20000 sw (r29),r2 6812 0000646c 200c002b addi r12,r0,#43 6813 00006470 afac0004 sw 4(r29),r12 6814 00006474 0fffe5c0 jal _dindex 6815 00006478 54000000 nop; not filled. 6816 0000647c 23bd0008 addi r29,r29,#8 6817 00006480 64210000 snei r1,r1,#0 6818 00006484 1020002c beqz r1,L196_LF6 6819 00006488 54000000 nop; not filled. 6820 0000648c L197_LF6: 6821 0000648c 0fffae34 jal _CurrentIntrs 6822 00006490 54000000 nop; not filled. 6823 00006494 23bdfff8 addi r29,r29,#-8 6824 00006498 3c0c0001 lhi r12,((LC22_LF6)>>16)&0xffff 6825 0000649c 258c189c addui r12,r12,(LC22_LF6)&0xffff 6826 000064a0 afac0000 sw (r29),r12 6827 000064a4 afa10004 sw 4(r29),r1 6828 000064a8 0c005d68 jal _printf 6829 000064ac 54000000 nop; not filled. 6830 000064b0 23bd0008 addi r29,r29,#8 6831 000064b4 L196_LF6: 6832 000064b4 23bdfff8 addi r29,r29,#-8 6833 000064b8 20a10010 addi r1,r5,#16 6834 000064bc afa10000 sw (r29),r1 6835 000064c0 afaa0004 sw 4(r29),r10 6836 000064c4 0fffe0b0 jal _dstrcpy 6837 000064c8 54000000 nop; not filled. 6838 000064cc 200c0001 addi r12,r0,#1 6839 000064d0 acac00a0 sw 160(r5),r12 6840 000064d4 0fffd674 jal _MemoryAllocPage 6841 000064d8 54000000 nop; not filled. 6842 000064dc 00011020 add r2,r0,r1 6843 000064e0 23bd0008 addi r29,r29,#8 6844 000064e4 64410000 snei r1,r2,#0 6845 000064e8 14200028 bnez r1,L198_LF6 6846 000064ec 54000000 nop; not filled. 6847 000064f0 23bdfff8 addi r29,r29,#-8 6848 000064f4 3c0c0001 lhi r12,((LC23_LF6)>>16)&0xffff 6849 000064f8 258c18bc addui r12,r12,(LC23_LF6)&0xffff 6850 000064fc afac0000 sw (r29),r12 6851 00006500 0c005d10 jal _printf 6852 00006504 54000000 nop; not filled. 6853 00006508 0c005cf0 jal _exitsim 6854 0000650c 54000000 nop; not filled. 6855 00006510 23bd0008 addi r29,r29,#8 6856 00006514 L198_LF6: 6857 00006514 23bdfff8 addi r29,r29,#-8 6858 00006518 afa20000 sw (r29),r2 6859 0000651c 0fffdd90 jal _MemorySetupPte 6860 00006520 54000000 nop; not filled. 6861 00006524 aca10060 sw 96(r5),r1 6862 00006528 0fffd620 jal _MemoryAllocPage 6863 0000652c 54000000 nop; not filled. 6864 00006530 00011020 add r2,r0,r1 6865 00006534 23bd0008 addi r29,r29,#8 6866 00006538 64410000 snei r1,r2,#0 6867 0000653c 14200028 bnez r1,L199_LF6 6868 00006540 54000000 nop; not filled. 6869 00006544 23bdfff8 addi r29,r29,#-8 6870 00006548 3c0c0001 lhi r12,((LC24_LF6)>>16)&0xffff 6871 0000654c 258c18f0 addui r12,r12,(LC24_LF6)&0xffff 6872 00006550 afac0000 sw (r29),r12 6873 00006554 0c005cbc jal _printf 6874 00006558 54000000 nop; not filled. 6875 0000655c 0c005c9c jal _exitsim 6876 00006560 54000000 nop; not filled. 6877 00006564 23bd0008 addi r29,r29,#8 6878 00006568 L199_LF6: 6879 00006568 50410010 slli r1,r2,#0x10 6880 0000656c aca10008 sw 8(r5),r1 6881 00006570 3426fe8c ori r6,r1,#65164 6882 00006574 aca60004 sw 4(r5),r6 6883 00006578 aca60000 sw (r5),r6 6884 0000657c 23bdfff8 addi r29,r29,#-8 6885 00006580 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6886 00006584 24421f50 addui r2,r2,(_debugstr)&0xffff 6887 00006588 afa20000 sw (r29),r2 6888 0000658c 200c0070 addi r12,r0,#112 6889 00006590 afac0004 sw 4(r29),r12 6890 00006594 0fffe4a0 jal _dindex 6891 00006598 54000000 nop; not filled. 6892 0000659c 23bd0008 addi r29,r29,#8 6893 000065a0 64210000 snei r1,r1,#0 6894 000065a4 1420002c bnez r1,L201_LF6 6895 000065a8 54000000 nop; not filled. 6896 000065ac 23bdfff8 addi r29,r29,#-8 6897 000065b0 afa20000 sw (r29),r2 6898 000065b4 200c002b addi r12,r0,#43 6899 000065b8 afac0004 sw 4(r29),r12 6900 000065bc 0fffe478 jal _dindex 6901 000065c0 54000000 nop; not filled. 6902 000065c4 23bd0008 addi r29,r29,#8 6903 000065c8 64210000 snei r1,r1,#0 6904 000065cc 10200040 beqz r1,L200_LF6 6905 000065d0 54000000 nop; not filled. 6906 000065d4 L201_LF6: 6907 000065d4 23bdffe8 addi r29,r29,#-24 6908 000065d8 3c0c0001 lhi r12,((LC25_LF6)>>16)&0xffff 6909 000065dc 258c192c addui r12,r12,(LC25_LF6)&0xffff 6910 000065e0 afac0000 sw (r29),r12 6911 000065e4 afa50004 sw 4(r29),r5 6912 000065e8 8cac0008 lw r12,8(r5) 6913 000065ec afac0008 sw 8(r29),r12 6914 000065f0 8cac0060 lw r12,96(r5) 6915 000065f4 afac000c sw 12(r29),r12 6916 000065f8 8ca100a0 lw r1,160(r5) 6917 000065fc 50210010 slli r1,r1,#0x10 6918 00006600 afa10010 sw 16(r29),r1 6919 00006604 0c005c0c jal _printf 6920 00006608 54000000 nop; not filled. 6921 0000660c 23bd0018 addi r29,r29,#24 6922 00006610 L200_LF6: 6923 00006610 200c0000 addi r12,r0,#0 6924 00006614 accc0028 sw 40(r6),r12 6925 00006618 20a10060 addi r1,r5,#96 6926 0000661c acc10138 sw 312(r6),r1 6927 00006620 8cac00a0 lw r12,160(r5) 6928 00006624 accc013c sw 316(r6),r12 6929 00006628 3c010010 lhi r1,#16 6930 0000662c 24210010 addui r1,r1,#16 6931 00006630 acc10140 sw 320(r6),r1 6932 00006634 64810000 snei r1,r4,#0 6933 00006638 10200550 beqz r1,L202_LF6 6934 0000663c 54000000 nop; not filled. 6935 00006640 23bdfff8 addi r29,r29,#-8 6936 00006644 3c020001 lhi r2,((_debugstr)>>16)&0xffff 6937 00006648 24421f50 addui r2,r2,(_debugstr)&0xffff 6938 0000664c afa20000 sw (r29),r2 6939 00006650 200c0070 addi r12,r0,#112 6940 00006654 afac0004 sw 4(r29),r12 6941 00006658 0fffe3dc jal _dindex 6942 0000665c 54000000 nop; not filled. 6943 00006660 23bd0008 addi r29,r29,#8 6944 00006664 64210000 snei r1,r1,#0 6945 00006668 1420002c bnez r1,L204_LF6 6946 0000666c 54000000 nop; not filled. 6947 00006670 23bdfff8 addi r29,r29,#-8 6948 00006674 afa20000 sw (r29),r2 6949 00006678 200c002b addi r12,r0,#43 6950 0000667c afac0004 sw 4(r29),r12 6951 00006680 0fffe3b4 jal _dindex 6952 00006684 54000000 nop; not filled. 6953 00006688 23bd0008 addi r29,r29,#8 6954 0000668c 64210000 snei r1,r1,#0 6955 00006690 10200024 beqz r1,L203_LF6 6956 00006694 54000000 nop; not filled. 6957 00006698 L204_LF6: 6958 00006698 23bdfff8 addi r29,r29,#-8 6959 0000669c 3c0c0001 lhi r12,((LC26_LF6)>>16)&0xffff 6960 000066a0 258c196c addui r12,r12,(LC26_LF6)&0xffff 6961 000066a4 afac0000 sw (r29),r12 6962 000066a8 afaa0004 sw 4(r29),r10 6963 000066ac 0c005b64 jal _printf 6964 000066b0 54000000 nop; not filled. 6965 000066b4 23bd0008 addi r29,r29,#8 6966 000066b8 L203_LF6: 6967 000066b8 23bdffe8 addi r29,r29,#-24 6968 000066bc afaa0000 sw (r29),r10 6969 000066c0 23c1fd6c addi r1,r30,#-660 6970 000066c4 afa10004 sw 4(r29),r1 6971 000066c8 23c1fd68 addi r1,r30,#-664 6972 000066cc afa10008 sw 8(r29),r1 6973 000066d0 23c1fd64 addi r1,r30,#-668 6974 000066d4 afa1000c sw 12(r29),r1 6975 000066d8 23c1fd60 addi r1,r30,#-672 6976 000066dc afa10010 sw 16(r29),r1 6977 000066e0 23c1fd5c addi r1,r30,#-676 6978 000066e4 afa10014 sw 20(r29),r1 6979 000066e8 0c0006b8 jal _ProcessGetCodeInfo 6980 000066ec 54000000 nop; not filled. 6981 000066f0 00013820 add r7,r0,r1 6982 000066f4 23bd0018 addi r29,r29,#24 6983 000066f8 68e10000 slti r1,r7,#0 6984 000066fc 102000f8 beqz r1,L205_LF6 6985 00006700 54000000 nop; not filled. 6986 00006704 3c030001 lhi r3,((_freepcbs_LF6)>>16)&0xffff 6987 00006708 2463201c addui r3,r3,(_freepcbs_LF6)&0xffff 6988 0000670c 20a200a4 addi r2,r5,#164 6989 00006710 8c610004 lw r1,4(r3) 6990 00006714 aca300ac sw 172(r5),r3 6991 00006718 aca100a8 sw 168(r5),r1 6992 0000671c 8c2c0000 lw r12,(r1) 6993 00006720 ac4c0000 sw (r2),r12 6994 00006724 ac220000 sw (r1),r2 6995 00006728 8c410000 lw r1,(r2) 6996 0000672c ac220004 sw 4(r1),r2 6997 00006730 8c610008 lw r1,8(r3) 6998 00006734 20210001 addi r1,r1,#1 6999 00006738 ac610008 sw 8(r3),r1 7000 0000673c 8ca300a0 lw r3,160(r5) 7001 00006740 20020000 addi r2,r0,#0 7002 00006744 0043082a slt r1,r2,r3 7003 00006748 10200030 beqz r1,L248_LF6 7004 0000674c 54000000 nop; not filled. 7005 00006750 L213_LF6: 7006 00006750 23bdfff8 addi r29,r29,#-8 7007 00006754 afa50000 sw (r29),r5 7008 00006758 afa20004 sw 4(r29),r2 7009 0000675c 0fffb588 jal _MemoryFreeSharedPte 7010 00006760 54000000 nop; not filled. 7011 00006764 23bd0008 addi r29,r29,#8 7012 00006768 20420001 addi r2,r2,#1 7013 0000676c 0043082a slt r1,r2,r3 7014 00006770 1420ffdc bnez r1,L213_LF6 7015 00006774 54000000 nop; not filled. 7016 00006778 20020000 addi r2,r0,#0 7017 0000677c L248_LF6: 7018 0000677c 8ca100a0 lw r1,160(r5) 7019 00006780 0041082a slt r1,r2,r1 7020 00006784 10200038 beqz r1,L216_LF6 7021 00006788 54000000 nop; not filled. 7022 0000678c 00051820 add r3,r0,r5 7023 00006790 L218_LF6: 7024 00006790 23bdfff8 addi r29,r29,#-8 7025 00006794 8c6c0060 lw r12,96(r3) 7026 00006798 afac0000 sw (r29),r12 7027 0000679c 0fffdb40 jal _MemoryFreePte 7028 000067a0 54000000 nop; not filled. 7029 000067a4 23bd0008 addi r29,r29,#8 7030 000067a8 20630004 addi r3,r3,#4 7031 000067ac 20420001 addi r2,r2,#1 7032 000067b0 8ca100a0 lw r1,160(r5) 7033 000067b4 0041082a slt r1,r2,r1 7034 000067b8 1420ffd4 bnez r1,L218_LF6 7035 000067bc 54000000 nop; not filled. 7036 000067c0 L216_LF6: 7037 000067c0 23bdfff8 addi r29,r29,#-8 7038 000067c4 94a10008 lhu r1,8(r5) 7039 000067c8 afa10000 sw (r29),r1 7040 000067cc 0fffd644 jal _MemoryFreePage 7041 000067d0 54000000 nop; not filled. 7042 000067d4 23bd0008 addi r29,r29,#8 7043 000067d8 8ca1000c lw r1,12(r5) 7044 000067dc 200cffc0 addi r12,r0,#-64 7045 000067e0 002c0824 and r1,r1,r12 7046 000067e4 34210001 ori r1,r1,#1 7047 000067e8 aca1000c sw 12(r5),r1 7048 000067ec 2001ffff addi r1,r0,#-1 7049 000067f0 08000570 j L247_LF6 7050 000067f4 54000000 nop; not filled. 7051 000067f8 L205_LF6: 7052 000067f8 23bdfff8 addi r29,r29,#-8 7053 000067fc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7054 00006800 24421f50 addui r2,r2,(_debugstr)&0xffff 7055 00006804 afa20000 sw (r29),r2 7056 00006808 200c0070 addi r12,r0,#112 7057 0000680c afac0004 sw 4(r29),r12 7058 00006810 0fffe224 jal _dindex 7059 00006814 54000000 nop; not filled. 7060 00006818 23bd0008 addi r29,r29,#8 7061 0000681c 64210000 snei r1,r1,#0 7062 00006820 1420002c bnez r1,L222_LF6 7063 00006824 54000000 nop; not filled. 7064 00006828 23bdfff8 addi r29,r29,#-8 7065 0000682c afa20000 sw (r29),r2 7066 00006830 200c002b addi r12,r0,#43 7067 00006834 afac0004 sw 4(r29),r12 7068 00006838 0fffe1fc jal _dindex 7069 0000683c 54000000 nop; not filled. 7070 00006840 23bd0008 addi r29,r29,#8 7071 00006844 64210000 snei r1,r1,#0 7072 00006848 1020002c beqz r1,L221_LF6 7073 0000684c 54000000 nop; not filled. 7074 00006850 L222_LF6: 7075 00006850 23bdfff0 addi r29,r29,#-16 7076 00006854 3c0c0001 lhi r12,((LC27_LF6)>>16)&0xffff 7077 00006858 258c1980 addui r12,r12,(LC27_LF6)&0xffff 7078 0000685c afac0000 sw (r29),r12 7079 00006860 afaa0004 sw 4(r29),r10 7080 00006864 8fccfd6c lw r12,-660(r30) 7081 00006868 afac0008 sw 8(r29),r12 7082 0000686c 0c0059a4 jal _printf 7083 00006870 54000000 nop; not filled. 7084 00006874 23bd0010 addi r29,r29,#16 7085 00006878 L221_LF6: 7086 00006878 23bdfff8 addi r29,r29,#-8 7087 0000687c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7088 00006880 24421f50 addui r2,r2,(_debugstr)&0xffff 7089 00006884 afa20000 sw (r29),r2 7090 00006888 200c0070 addi r12,r0,#112 7091 0000688c afac0004 sw 4(r29),r12 7092 00006890 0fffe1a4 jal _dindex 7093 00006894 54000000 nop; not filled. 7094 00006898 23bd0008 addi r29,r29,#8 7095 0000689c 64210000 snei r1,r1,#0 7096 000068a0 1420002c bnez r1,L224_LF6 7097 000068a4 54000000 nop; not filled. 7098 000068a8 23bdfff8 addi r29,r29,#-8 7099 000068ac afa20000 sw (r29),r2 7100 000068b0 200c002b addi r12,r0,#43 7101 000068b4 afac0004 sw 4(r29),r12 7102 000068b8 0fffe17c jal _dindex 7103 000068bc 54000000 nop; not filled. 7104 000068c0 23bd0008 addi r29,r29,#8 7105 000068c4 64210000 snei r1,r1,#0 7106 000068c8 10200034 beqz r1,L223_LF6 7107 000068cc 54000000 nop; not filled. 7108 000068d0 L224_LF6: 7109 000068d0 23bdfff0 addi r29,r29,#-16 7110 000068d4 3c0c0001 lhi r12,((LC28_LF6)>>16)&0xffff 7111 000068d8 258c199c addui r12,r12,(LC28_LF6)&0xffff 7112 000068dc afac0000 sw (r29),r12 7113 000068e0 afaa0004 sw 4(r29),r10 7114 000068e4 8fccfd68 lw r12,-664(r30) 7115 000068e8 afac0008 sw 8(r29),r12 7116 000068ec 8fccfd64 lw r12,-668(r30) 7117 000068f0 afac000c sw 12(r29),r12 7118 000068f4 0c00591c jal _printf 7119 000068f8 54000000 nop; not filled. 7120 000068fc 23bd0010 addi r29,r29,#16 7121 00006900 L223_LF6: 7122 00006900 23bdfff8 addi r29,r29,#-8 7123 00006904 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7124 00006908 24421f50 addui r2,r2,(_debugstr)&0xffff 7125 0000690c afa20000 sw (r29),r2 7126 00006910 200c0070 addi r12,r0,#112 7127 00006914 afac0004 sw 4(r29),r12 7128 00006918 0fffe11c jal _dindex 7129 0000691c 54000000 nop; not filled. 7130 00006920 23bd0008 addi r29,r29,#8 7131 00006924 64210000 snei r1,r1,#0 7132 00006928 1420002c bnez r1,L226_LF6 7133 0000692c 54000000 nop; not filled. 7134 00006930 23bdfff8 addi r29,r29,#-8 7135 00006934 afa20000 sw (r29),r2 7136 00006938 200c002b addi r12,r0,#43 7137 0000693c afac0004 sw 4(r29),r12 7138 00006940 0fffe0f4 jal _dindex 7139 00006944 54000000 nop; not filled. 7140 00006948 23bd0008 addi r29,r29,#8 7141 0000694c 64210000 snei r1,r1,#0 7142 00006950 10200034 beqz r1,L225_LF6 7143 00006954 54000000 nop; not filled. 7144 00006958 L226_LF6: 7145 00006958 23bdfff0 addi r29,r29,#-16 7146 0000695c 3c0c0001 lhi r12,((LC29_LF6)>>16)&0xffff 7147 00006960 258c19c4 addui r12,r12,(LC29_LF6)&0xffff 7148 00006964 afac0000 sw (r29),r12 7149 00006968 afaa0004 sw 4(r29),r10 7150 0000696c 8fccfd60 lw r12,-672(r30) 7151 00006970 afac0008 sw 8(r29),r12 7152 00006974 8fccfd5c lw r12,-676(r30) 7153 00006978 afac000c sw 12(r29),r12 7154 0000697c 0c005894 jal _printf 7155 00006980 54000000 nop; not filled. 7156 00006984 23bd0010 addi r29,r29,#16 7157 00006988 L225_LF6: 7158 00006988 23c3ff90 addi r3,r30,#-112 7159 0000698c 23c9fd58 addi r9,r30,#-680 7160 00006990 3c040001 lhi r4,((_debugstr)>>16)&0xffff 7161 00006994 24841f50 addui r4,r4,(_debugstr)&0xffff 7162 00006998 L227_LF6: 7163 00006998 23bdfff0 addi r29,r29,#-16 7164 0000699c afa70000 sw (r29),r7 7165 000069a0 afa30004 sw 4(r29),r3 7166 000069a4 afa90008 sw 8(r29),r9 7167 000069a8 200c0064 addi r12,r0,#100 7168 000069ac afac000c sw 12(r29),r12 7169 000069b0 0c000850 jal _ProcessGetFromFile 7170 000069b4 54000000 nop; not filled. 7171 000069b8 00011020 add r2,r0,r1 7172 000069bc 23bd0010 addi r29,r29,#16 7173 000069c0 6c410000 sgti r1,r2,#0 7174 000069c4 102000b0 beqz r1,L228_LF6 7175 000069c8 54000000 nop; not filled. 7176 000069cc 23bdfff8 addi r29,r29,#-8 7177 000069d0 afa40000 sw (r29),r4 7178 000069d4 200c0070 addi r12,r0,#112 7179 000069d8 afac0004 sw 4(r29),r12 7180 000069dc 0fffe058 jal _dindex 7181 000069e0 54000000 nop; not filled. 7182 000069e4 23bd0008 addi r29,r29,#8 7183 000069e8 64210000 snei r1,r1,#0 7184 000069ec 1420002c bnez r1,L231_LF6 7185 000069f0 54000000 nop; not filled. 7186 000069f4 23bdfff8 addi r29,r29,#-8 7187 000069f8 afa40000 sw (r29),r4 7188 000069fc 200c002b addi r12,r0,#43 7189 00006a00 afac0004 sw 4(r29),r12 7190 00006a04 0fffe030 jal _dindex 7191 00006a08 54000000 nop; not filled. 7192 00006a0c 23bd0008 addi r29,r29,#8 7193 00006a10 64210000 snei r1,r1,#0 7194 00006a14 10200030 beqz r1,L230_LF6 7195 00006a18 54000000 nop; not filled. 7196 00006a1c L231_LF6: 7197 00006a1c 23bdfff0 addi r29,r29,#-16 7198 00006a20 3c0c0001 lhi r12,((LC30_LF6)>>16)&0xffff 7199 00006a24 258c19ec addui r12,r12,(LC30_LF6)&0xffff 7200 00006a28 afac0000 sw (r29),r12 7201 00006a2c afa20004 sw 4(r29),r2 7202 00006a30 8fc1fd58 lw r1,-680(r30) 7203 00006a34 00220822 sub r1,r1,r2 7204 00006a38 afa10008 sw 8(r29),r1 7205 00006a3c 0c0057d4 jal _printf 7206 00006a40 54000000 nop; not filled. 7207 00006a44 23bd0010 addi r29,r29,#16 7208 00006a48 L230_LF6: 7209 00006a48 23bdfff0 addi r29,r29,#-16 7210 00006a4c afa50000 sw (r29),r5 7211 00006a50 afa30004 sw 4(r29),r3 7212 00006a54 8fc1fd58 lw r1,-680(r30) 7213 00006a58 00220822 sub r1,r1,r2 7214 00006a5c afa10008 sw 8(r29),r1 7215 00006a60 afa2000c sw 12(r29),r2 7216 00006a64 0fffd5f8 jal _MemoryCopySystemToUser 7217 00006a68 54000000 nop; not filled. 7218 00006a6c 23bd0010 addi r29,r29,#16 7219 00006a70 0bffff24 j L227_LF6 7220 00006a74 54000000 nop; not filled. 7221 00006a78 L228_LF6: 7222 00006a78 23bdfff8 addi r29,r29,#-8 7223 00006a7c afa70000 sw (r29),r7 7224 00006a80 0fffbc74 jal _FsClose 7225 00006a84 54000000 nop; not filled. 7226 00006a88 200c0100 addi r12,r0,#256 7227 00006a8c accc012c sw 300(r6),r12 7228 00006a90 2402fc00 addui r2,r0,#64512 7229 00006a94 acc2009c sw 156(r6),r2 7230 00006a98 23bdfff8 addi r29,r29,#-8 7231 00006a9c afa50000 sw (r29),r5 7232 00006aa0 afab0004 sw 4(r29),r11 7233 00006aa4 8ccc009c lw r12,156(r6) 7234 00006aa8 afac0008 sw 8(r29),r12 7235 00006aac 200c03e0 addi r12,r0,#992 7236 00006ab0 afac000c sw 12(r29),r12 7237 00006ab4 0fffd5a8 jal _MemoryCopySystemToUser 7238 00006ab8 54000000 nop; not filled. 7239 00006abc afab0000 sw (r29),r11 7240 00006ac0 0c001954 jal _get_argument 7241 00006ac4 54000000 nop; not filled. 7242 00006ac8 00220820 add r1,r1,r2 7243 00006acc afc1fd78 sw -648(r30),r1 7244 00006ad0 20040003 addi r4,r0,#3 7245 00006ad4 23bd0010 addi r29,r29,#16 7246 00006ad8 00023820 add r7,r0,r2 7247 00006adc 23c20004 addi r2,r30,#4 7248 00006ae0 L232_LF6: 7249 00006ae0 23bdfff8 addi r29,r29,#-8 7250 00006ae4 200c0000 addi r12,r0,#0 7251 00006ae8 afac0000 sw (r29),r12 7252 00006aec 0c001928 jal _get_argument 7253 00006af0 54000000 nop; not filled. 7254 00006af4 00011820 add r3,r0,r1 7255 00006af8 00670820 add r1,r3,r7 7256 00006afc ac41fd78 sw -648(r2),r1 7257 00006b00 23bd0008 addi r29,r29,#8 7258 00006b04 64610000 snei r1,r3,#0 7259 00006b08 10200014 beqz r1,L233_LF6 7260 00006b0c 54000000 nop; not filled. 7261 00006b10 20420004 addi r2,r2,#4 7262 00006b14 20840001 addi r4,r4,#1 7263 00006b18 0bffffc4 j L232_LF6 7264 00006b1c 54000000 nop; not filled. 7265 00006b20 L233_LF6: 7266 00006b20 2081fffe addi r1,r4,#-2 7267 00006b24 afc1fd70 sw -656(r30),r1 7268 00006b28 50210002 slli r1,r1,#0x2 7269 00006b2c 00e10822 sub r1,r7,r1 7270 00006b30 afc1fd74 sw -652(r30),r1 7271 00006b34 23bdfff0 addi r29,r29,#-16 7272 00006b38 afa50000 sw (r29),r5 7273 00006b3c 23c1fd70 addi r1,r30,#-656 7274 00006b40 afa10004 sw 4(r29),r1 7275 00006b44 50820002 slli r2,r4,#0x2 7276 00006b48 8cc1009c lw r1,156(r6) 7277 00006b4c 00220822 sub r1,r1,r2 7278 00006b50 afa10008 sw 8(r29),r1 7279 00006b54 afa2000c sw 12(r29),r2 7280 00006b58 0fffd504 jal _MemoryCopySystemToUser 7281 00006b5c 54000000 nop; not filled. 7282 00006b60 8cc1009c lw r1,156(r6) 7283 00006b64 00220822 sub r1,r1,r2 7284 00006b68 acc1009c sw 156(r6),r1 7285 00006b6c 8fccfd6c lw r12,-660(r30) 7286 00006b70 accc0128 sw 296(r6),r12 7287 00006b74 8ca1000c lw r1,12(r5) 7288 00006b78 34210200 ori r1,r1,#512 7289 00006b7c aca1000c sw 12(r5),r1 7290 00006b80 23bd0010 addi r29,r29,#16 7291 00006b84 08000038 j L236_LF6 7292 00006b88 54000000 nop; not filled. 7293 00006b8c L202_LF6: 7294 00006b8c 3c0c0000 lhi r12,((_ProcessExit_LF6)>>16)&0xffff 7295 00006b90 258c8620 addui r12,r12,(_ProcessExit_LF6)&0xffff 7296 00006b94 accc00a4 sw 164(r6),r12 7297 00006b98 8ca10008 lw r1,8(r5) 7298 00006b9c 2421ffe0 addui r1,r1,#65504 7299 00006ba0 acc1009c sw 156(r6),r1 7300 00006ba4 ac2b0000 sw (r1),r11 7301 00006ba8 acc70128 sw 296(r6),r7 7302 00006bac 200c0140 addi r12,r0,#320 7303 00006bb0 accc012c sw 300(r6),r12 7304 00006bb4 8ca1000c lw r1,12(r5) 7305 00006bb8 34210100 ori r1,r1,#256 7306 00006bbc aca1000c sw 12(r5),r1 7307 00006bc0 L236_LF6: 7308 00006bc0 23bdfff8 addi r29,r29,#-8 7309 00006bc4 200c000f addi r12,r0,#15 7310 00006bc8 afac0000 sw (r29),r12 7311 00006bcc 0fffa6b8 jal _SetIntrs 7312 00006bd0 54000000 nop; not filled. 7313 00006bd4 23bd0008 addi r29,r29,#8 7314 00006bd8 3c030001 lhi r3,((_runQueue_LF6)>>16)&0xffff 7315 00006bdc 24632028 addui r3,r3,(_runQueue_LF6)&0xffff 7316 00006be0 8c620004 lw r2,4(r3) 7317 00006be4 ad030008 sw 8(r8),r3 7318 00006be8 ad020004 sw 4(r8),r2 7319 00006bec 8c4c0000 lw r12,(r2) 7320 00006bf0 ad0c0000 sw (r8),r12 7321 00006bf4 ac480000 sw (r2),r8 7322 00006bf8 8d020000 lw r2,(r8) 7323 00006bfc ac480004 sw 4(r2),r8 7324 00006c00 8c620008 lw r2,8(r3) 7325 00006c04 20420001 addi r2,r2,#1 7326 00006c08 ac620008 sw 8(r3),r2 7327 00006c0c 23bdfff8 addi r29,r29,#-8 7328 00006c10 afa10000 sw (r29),r1 7329 00006c14 0fffa670 jal _SetIntrs 7330 00006c18 54000000 nop; not filled. 7331 00006c1c 23bd0008 addi r29,r29,#8 7332 00006c20 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 7333 00006c24 24212018 addui r1,r1,(_currentPCB)&0xffff 7334 00006c28 8c210000 lw r1,(r1) 7335 00006c2c 64210000 snei r1,r1,#0 7336 00006c30 14200090 bnez r1,L242_LF6 7337 00006c34 54000000 nop; not filled. 7338 00006c38 23bdfff8 addi r29,r29,#-8 7339 00006c3c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7340 00006c40 24421f50 addui r2,r2,(_debugstr)&0xffff 7341 00006c44 afa20000 sw (r29),r2 7342 00006c48 200c0070 addi r12,r0,#112 7343 00006c4c afac0004 sw 4(r29),r12 7344 00006c50 0fffdde4 jal _dindex 7345 00006c54 54000000 nop; not filled. 7346 00006c58 23bd0008 addi r29,r29,#8 7347 00006c5c 64210000 snei r1,r1,#0 7348 00006c60 1420002c bnez r1,L244_LF6 7349 00006c64 54000000 nop; not filled. 7350 00006c68 23bdfff8 addi r29,r29,#-8 7351 00006c6c afa20000 sw (r29),r2 7352 00006c70 200c002b addi r12,r0,#43 7353 00006c74 afac0004 sw 4(r29),r12 7354 00006c78 0fffddbc jal _dindex 7355 00006c7c 54000000 nop; not filled. 7356 00006c80 23bd0008 addi r29,r29,#8 7357 00006c84 64210000 snei r1,r1,#0 7358 00006c88 1020002c beqz r1,L243_LF6 7359 00006c8c 54000000 nop; not filled. 7360 00006c90 L244_LF6: 7361 00006c90 23bdfff0 addi r29,r29,#-16 7362 00006c94 3c0c0001 lhi r12,((LC31_LF6)>>16)&0xffff 7363 00006c98 258c1a10 addui r12,r12,(LC31_LF6)&0xffff 7364 00006c9c afac0000 sw (r29),r12 7365 00006ca0 afa50004 sw 4(r29),r5 7366 00006ca4 8cac0000 lw r12,(r5) 7367 00006ca8 afac0008 sw 8(r29),r12 7368 00006cac 0c005564 jal _printf 7369 00006cb0 54000000 nop; not filled. 7370 00006cb4 23bd0010 addi r29,r29,#16 7371 00006cb8 L243_LF6: 7372 00006cb8 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 7373 00006cbc 24212018 addui r1,r1,(_currentPCB)&0xffff 7374 00006cc0 ac250000 sw (r1),r5 7375 00006cc4 L242_LF6: 7376 00006cc4 23bdfff8 addi r29,r29,#-8 7377 00006cc8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7378 00006ccc 24421f50 addui r2,r2,(_debugstr)&0xffff 7379 00006cd0 afa20000 sw (r29),r2 7380 00006cd4 200c0070 addi r12,r0,#112 7381 00006cd8 afac0004 sw 4(r29),r12 7382 00006cdc 0fffdd58 jal _dindex 7383 00006ce0 54000000 nop; not filled. 7384 00006ce4 23bd0008 addi r29,r29,#8 7385 00006ce8 64210000 snei r1,r1,#0 7386 00006cec 1420002c bnez r1,L246_LF6 7387 00006cf0 54000000 nop; not filled. 7388 00006cf4 23bdfff8 addi r29,r29,#-8 7389 00006cf8 afa20000 sw (r29),r2 7390 00006cfc 200c002b addi r12,r0,#43 7391 00006d00 afac0004 sw 4(r29),r12 7392 00006d04 0fffdd30 jal _dindex 7393 00006d08 54000000 nop; not filled. 7394 00006d0c 23bd0008 addi r29,r29,#8 7395 00006d10 64210000 snei r1,r1,#0 7396 00006d14 10200024 beqz r1,L245_LF6 7397 00006d18 54000000 nop; not filled. 7398 00006d1c L246_LF6: 7399 00006d1c 23bdfff8 addi r29,r29,#-8 7400 00006d20 3c0c0001 lhi r12,((LC32_LF6)>>16)&0xffff 7401 00006d24 258c1a3c addui r12,r12,(LC32_LF6)&0xffff 7402 00006d28 afac0000 sw (r29),r12 7403 00006d2c afaa0004 sw 4(r29),r10 7404 00006d30 0c0054e0 jal _printf 7405 00006d34 54000000 nop; not filled. 7406 00006d38 23bd0008 addi r29,r29,#8 7407 00006d3c L245_LF6: 7408 00006d3c 3c0c0001 lhi r12,((_pcbs_LF6)>>16)&0xffff 7409 00006d40 258c204c addui r12,r12,(_pcbs_LF6)&0xffff 7410 00006d44 00ac1022 sub r2,r5,r12 7411 00006d48 3c01a4fa lhi r1,#-23302 7412 00006d4c 24214fa5 addui r1,r1,#20389 7413 00006d50 00400035 movi2fp f0,r2 7414 00006d54 00200835 movi2fp f1,r1 7415 00006d58 0401000e mult f0,f0,f1 7416 00006d5c 00000834 movfp2i r1,f0 7417 00006d60 5c210002 srai r1,r1,#0x2 7418 00006d64 L247_LF6: 7419 00006d64 8fa20000 lw r2,0(r29) 7420 00006d68 8fa30004 lw r3,4(r29) 7421 00006d6c 8fa40008 lw r4,8(r29) 7422 00006d70 8fa5000c lw r5,12(r29) 7423 00006d74 8fa60010 lw r6,16(r29) 7424 00006d78 8fa70014 lw r7,20(r29) 7425 00006d7c 8fa80018 lw r8,24(r29) 7426 00006d80 8fa9001c lw r9,28(r29) 7427 00006d84 8faa0020 lw r10,32(r29) 7428 00006d88 8fab0024 lw r11,36(r29) 7429 00006d8c 8fac0028 lw r12,40(r29) 7430 00006d90 8fdffff8 lw r31,-8(r30) 7431 00006d94 001ee820 add r29,r0,r30 7432 00006d98 8fdefffc lw r30,-4(r30) 7433 00006d9c 4be00000 jr r31 7434 00006da0 54000000 nop 7435 00006da4 .endproc _ProcessFork 7436 00006da4 .data 7437 00011a56 .align 2 7438 00011a58 LC33_LF6: 7439 00011a58 50726f63 .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" 7439 00011a5c 65737347 7439 00011a60 6574436f 7439 00011a64 6465496e 7439 00011a68 666f3a20 7439 00011a6c 6f70656e 7439 00011a70 206f6620 7439 00011a74 25732066 7439 00011a78 61696c65 7439 00011a7c 64202825 7439 00011a80 64292e0a 7439 00011a84 00 7440 00011a85 .align 2 7441 00011a88 LC34_LF6: 7442 00011a88 46696c65 .ascii "File descriptor is now %d.\n\000" 7442 00011a8c 20646573 7442 00011a90 63726970 7442 00011a94 746f7220 7442 00011a98 6973206e 7442 00011a9c 6f772025 7442 00011aa0 642e0a00 7443 00011aa4 .align 2 7444 00011aa4 LC35_LF6: 7445 00011aa4 50726f63 .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" 7445 00011aa8 65737347 7445 00011aac 6574436f 7445 00011ab0 6465496e 7445 00011ab4 666f3a20 7445 00011ab8 72656164 7445 00011abc 20676f74 7445 00011ac0 20256420 7445 00011ac4 286e6f74 7445 00011ac8 20256429 7445 00011acc 20627974 7445 00011ad0 65732066 7445 00011ad4 726f6d20 7445 00011ad8 25730a00 7446 00011adc .align 2 7447 00011adc LC36_LF6: 7448 00011adc 73746172 .ascii "start:\000" 7448 00011ae0 743a00 7449 00011ae3 .align 2 7450 00011ae4 LC37_LF6: 7451 00011ae4 50726f63 .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" 7451 00011ae8 65737347 7451 00011aec 6574436f 7451 00011af0 6465496e 7451 00011af4 666f3a20 7451 00011af8 2573206d 7451 00011afc 69737369 7451 00011b00 6e672073 7451 00011b04 74617274 7451 00011b08 206c696e 7451 00011b0c 6520286e 7451 00011b10 6f742061 7451 00011b14 20444c58 7451 00011b18 20657865 7451 00011b1c 63757461 7451 00011b20 626c653f 7451 00011b24 290a00 7452 00011b27 .text 7453 00006da4 .align 2 7454 00006da4 .proc _ProcessGetCodeInfo 7455 00006da4 .global _ProcessGetCodeInfo 7456 00006da4 _ProcessGetCodeInfo: 7457 ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. 7458 00006da4 afbefffc sw -4(r29),r30; push fp 7459 00006da8 001df020 add r30,r0,r29; fp = sp 7460 00006dac afbffff8 sw -8(r29),r31; push ret addr 7461 00006db0 2fbd00a8 subui r29,r29,#168; alloc local storage 7462 00006db4 afa20000 sw 0(r29),r2 7463 00006db8 afa30004 sw 4(r29),r3 7464 00006dbc afa40008 sw 8(r29),r4 7465 00006dc0 afa5000c sw 12(r29),r5 7466 00006dc4 afa60010 sw 16(r29),r6 7467 00006dc8 afa70014 sw 20(r29),r7 7468 00006dcc afa80018 sw 24(r29),r8 7469 00006dd0 afa9001c sw 28(r29),r9 7470 00006dd4 afaa0020 sw 32(r29),r10 7471 00006dd8 afab0024 sw 36(r29),r11 7472 00006ddc afac0028 sw 40(r29),r12 7473 00006de0 8fc60000 lw r6,(r30) 7474 00006de4 8fc70004 lw r7,4(r30) 7475 00006de8 8fc80008 lw r8,8(r30) 7476 00006dec 8fc9000c lw r9,12(r30) 7477 00006df0 8fca0010 lw r10,16(r30) 7478 00006df4 8fcb0014 lw r11,20(r30) 7479 00006df8 23bdfff8 addi r29,r29,#-8 7480 00006dfc afa60000 sw (r29),r6 7481 00006e00 200c0001 addi r12,r0,#1 7482 00006e04 afac0004 sw 4(r29),r12 7483 00006e08 0fffb590 jal _FsOpen 7484 00006e0c 54000000 nop; not filled. 7485 00006e10 00011820 add r3,r0,r1 7486 00006e14 23bd0008 addi r29,r29,#8 7487 00006e18 68610000 slti r1,r3,#0 7488 00006e1c 10200088 beqz r1,L257_LF6 7489 00006e20 54000000 nop; not filled. 7490 00006e24 23bdfff8 addi r29,r29,#-8 7491 00006e28 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7492 00006e2c 24421f50 addui r2,r2,(_debugstr)&0xffff 7493 00006e30 afa20000 sw (r29),r2 7494 00006e34 200c0066 addi r12,r0,#102 7495 00006e38 afac0004 sw 4(r29),r12 7496 00006e3c 0fffdbf8 jal _dindex 7497 00006e40 54000000 nop; not filled. 7498 00006e44 23bd0008 addi r29,r29,#8 7499 00006e48 64210000 snei r1,r1,#0 7500 00006e4c 1420002c bnez r1,L259_LF6 7501 00006e50 54000000 nop; not filled. 7502 00006e54 23bdfff8 addi r29,r29,#-8 7503 00006e58 afa20000 sw (r29),r2 7504 00006e5c 200c002b addi r12,r0,#43 7505 00006e60 afac0004 sw 4(r29),r12 7506 00006e64 0fffdbd0 jal _dindex 7507 00006e68 54000000 nop; not filled. 7508 00006e6c 23bd0008 addi r29,r29,#8 7509 00006e70 64210000 snei r1,r1,#0 7510 00006e74 10200224 beqz r1,L266_LF6 7511 00006e78 54000000 nop; not filled. 7512 00006e7c L259_LF6: 7513 00006e7c 23bdfff0 addi r29,r29,#-16 7514 00006e80 3c0c0001 lhi r12,((LC33_LF6)>>16)&0xffff 7515 00006e84 258c1a58 addui r12,r12,(LC33_LF6)&0xffff 7516 00006e88 afac0000 sw (r29),r12 7517 00006e8c afa60004 sw 4(r29),r6 7518 00006e90 afa30008 sw 8(r29),r3 7519 00006e94 0c00537c jal _printf 7520 00006e98 54000000 nop; not filled. 7521 00006e9c 23bd0010 addi r29,r29,#16 7522 00006ea0 080001f8 j L266_LF6 7523 00006ea4 54000000 nop; not filled. 7524 00006ea8 L257_LF6: 7525 00006ea8 23bdfff8 addi r29,r29,#-8 7526 00006eac 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7527 00006eb0 24421f50 addui r2,r2,(_debugstr)&0xffff 7528 00006eb4 afa20000 sw (r29),r2 7529 00006eb8 200c0066 addi r12,r0,#102 7530 00006ebc afac0004 sw 4(r29),r12 7531 00006ec0 0fffdb74 jal _dindex 7532 00006ec4 54000000 nop; not filled. 7533 00006ec8 23bd0008 addi r29,r29,#8 7534 00006ecc 64210000 snei r1,r1,#0 7535 00006ed0 1420002c bnez r1,L261_LF6 7536 00006ed4 54000000 nop; not filled. 7537 00006ed8 23bdfff8 addi r29,r29,#-8 7538 00006edc afa20000 sw (r29),r2 7539 00006ee0 200c002b addi r12,r0,#43 7540 00006ee4 afac0004 sw 4(r29),r12 7541 00006ee8 0fffdb4c jal _dindex 7542 00006eec 54000000 nop; not filled. 7543 00006ef0 23bd0008 addi r29,r29,#8 7544 00006ef4 64210000 snei r1,r1,#0 7545 00006ef8 10200024 beqz r1,L260_LF6 7546 00006efc 54000000 nop; not filled. 7547 00006f00 L261_LF6: 7548 00006f00 23bdfff8 addi r29,r29,#-8 7549 00006f04 3c0c0001 lhi r12,((LC34_LF6)>>16)&0xffff 7550 00006f08 258c1a88 addui r12,r12,(LC34_LF6)&0xffff 7551 00006f0c afac0000 sw (r29),r12 7552 00006f10 afa30004 sw 4(r29),r3 7553 00006f14 0c0052fc jal _printf 7554 00006f18 54000000 nop; not filled. 7555 00006f1c 23bd0008 addi r29,r29,#8 7556 00006f20 L260_LF6: 7557 00006f20 23bdfff0 addi r29,r29,#-16 7558 00006f24 afa30000 sw (r29),r3 7559 00006f28 23c4ff90 addi r4,r30,#-112 7560 00006f2c afa40004 sw 4(r29),r4 7561 00006f30 200c0064 addi r12,r0,#100 7562 00006f34 afac0008 sw 8(r29),r12 7563 00006f38 0fffb8c4 jal _FsRead 7564 00006f3c 54000000 nop; not filled. 7565 00006f40 00012820 add r5,r0,r1 7566 00006f44 23bd0010 addi r29,r29,#16 7567 00006f48 64a10064 snei r1,r5,#100 7568 00006f4c 102000a8 beqz r1,L262_LF6 7569 00006f50 54000000 nop; not filled. 7570 00006f54 23bdfff8 addi r29,r29,#-8 7571 00006f58 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7572 00006f5c 24421f50 addui r2,r2,(_debugstr)&0xffff 7573 00006f60 afa20000 sw (r29),r2 7574 00006f64 200c0066 addi r12,r0,#102 7575 00006f68 afac0004 sw 4(r29),r12 7576 00006f6c 0fffdac8 jal _dindex 7577 00006f70 54000000 nop; not filled. 7578 00006f74 23bd0008 addi r29,r29,#8 7579 00006f78 64210000 snei r1,r1,#0 7580 00006f7c 1420002c bnez r1,L264_LF6 7581 00006f80 54000000 nop; not filled. 7582 00006f84 23bdfff8 addi r29,r29,#-8 7583 00006f88 afa20000 sw (r29),r2 7584 00006f8c 200c002b addi r12,r0,#43 7585 00006f90 afac0004 sw 4(r29),r12 7586 00006f94 0fffdaa0 jal _dindex 7587 00006f98 54000000 nop; not filled. 7588 00006f9c 23bd0008 addi r29,r29,#8 7589 00006fa0 64210000 snei r1,r1,#0 7590 00006fa4 10200030 beqz r1,L263_LF6 7591 00006fa8 54000000 nop; not filled. 7592 00006fac L264_LF6: 7593 00006fac 23bdfff0 addi r29,r29,#-16 7594 00006fb0 3c0c0001 lhi r12,((LC35_LF6)>>16)&0xffff 7595 00006fb4 258c1aa4 addui r12,r12,(LC35_LF6)&0xffff 7596 00006fb8 afac0000 sw (r29),r12 7597 00006fbc afa50004 sw 4(r29),r5 7598 00006fc0 200c0064 addi r12,r0,#100 7599 00006fc4 afac0008 sw 8(r29),r12 7600 00006fc8 afa6000c sw 12(r29),r6 7601 00006fcc 0c005244 jal _printf 7602 00006fd0 54000000 nop; not filled. 7603 00006fd4 23bd0010 addi r29,r29,#16 7604 00006fd8 L263_LF6: 7605 00006fd8 23bdfff8 addi r29,r29,#-8 7606 00006fdc afa30000 sw (r29),r3 7607 00006fe0 0fffb714 jal _FsClose 7608 00006fe4 54000000 nop; not filled. 7609 00006fe8 2001ffff addi r1,r0,#-1 7610 00006fec 23bd0008 addi r29,r29,#8 7611 00006ff0 080001d0 j L256_LF6 7612 00006ff4 54000000 nop; not filled. 7613 00006ff8 L262_LF6: 7614 00006ff8 23bdfff8 addi r29,r29,#-8 7615 00006ffc afa40000 sw (r29),r4 7616 00007000 3c010001 lhi r1,((LC36_LF6)>>16)&0xffff 7617 00007004 24211adc addui r1,r1,(LC36_LF6)&0xffff 7618 00007008 afa10004 sw 4(r29),r1 7619 0000700c 0fffd810 jal _dstrstr 7620 00007010 54000000 nop; not filled. 7621 00007014 23bd0008 addi r29,r29,#8 7622 00007018 64210000 snei r1,r1,#0 7623 0000701c 14200088 bnez r1,L265_LF6 7624 00007020 54000000 nop; not filled. 7625 00007024 23bdfff8 addi r29,r29,#-8 7626 00007028 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7627 0000702c 24421f50 addui r2,r2,(_debugstr)&0xffff 7628 00007030 afa20000 sw (r29),r2 7629 00007034 200c0066 addi r12,r0,#102 7630 00007038 afac0004 sw 4(r29),r12 7631 0000703c 0fffd9f8 jal _dindex 7632 00007040 54000000 nop; not filled. 7633 00007044 23bd0008 addi r29,r29,#8 7634 00007048 64210000 snei r1,r1,#0 7635 0000704c 1420002c bnez r1,L267_LF6 7636 00007050 54000000 nop; not filled. 7637 00007054 23bdfff8 addi r29,r29,#-8 7638 00007058 afa20000 sw (r29),r2 7639 0000705c 200c002b addi r12,r0,#43 7640 00007060 afac0004 sw 4(r29),r12 7641 00007064 0fffd9d0 jal _dindex 7642 00007068 54000000 nop; not filled. 7643 0000706c 23bd0008 addi r29,r29,#8 7644 00007070 64210000 snei r1,r1,#0 7645 00007074 10200024 beqz r1,L266_LF6 7646 00007078 54000000 nop; not filled. 7647 0000707c L267_LF6: 7648 0000707c 23bdfff8 addi r29,r29,#-8 7649 00007080 3c0c0001 lhi r12,((LC37_LF6)>>16)&0xffff 7650 00007084 258c1ae4 addui r12,r12,(LC37_LF6)&0xffff 7651 00007088 afac0000 sw (r29),r12 7652 0000708c afa60004 sw 4(r29),r6 7653 00007090 0c005180 jal _printf 7654 00007094 54000000 nop; not filled. 7655 00007098 23bd0008 addi r29,r29,#8 7656 0000709c L266_LF6: 7657 0000709c 2001ffff addi r1,r0,#-1 7658 000070a0 08000120 j L256_LF6 7659 000070a4 54000000 nop; not filled. 7660 000070a8 L265_LF6: 7661 000070a8 23bdfff8 addi r29,r29,#-8 7662 000070ac afa40000 sw (r29),r4 7663 000070b0 200c003a addi r12,r0,#58 7664 000070b4 afac0004 sw 4(r29),r12 7665 000070b8 0fffd97c jal _dindex 7666 000070bc 54000000 nop; not filled. 7667 000070c0 20210001 addi r1,r1,#1 7668 000070c4 afc1ff8c sw -116(r30),r1 7669 000070c8 23bdfff8 addi r29,r29,#-8 7670 000070cc afa10000 sw (r29),r1 7671 000070d0 23c2ff8c addi r2,r30,#-116 7672 000070d4 afa20004 sw 4(r29),r2 7673 000070d8 200c0010 addi r12,r0,#16 7674 000070dc afac0008 sw 8(r29),r12 7675 000070e0 0fffdadc jal _dstrtol 7676 000070e4 54000000 nop; not filled. 7677 000070e8 ace10000 sw (r7),r1 7678 000070ec 8fccff8c lw r12,-116(r30) 7679 000070f0 afac0000 sw (r29),r12 7680 000070f4 afa20004 sw 4(r29),r2 7681 000070f8 200c0010 addi r12,r0,#16 7682 000070fc afac0008 sw 8(r29),r12 7683 00007100 0fffdabc jal _dstrtol 7684 00007104 54000000 nop; not filled. 7685 00007108 8fccff8c lw r12,-116(r30) 7686 0000710c afac0000 sw (r29),r12 7687 00007110 afa20004 sw 4(r29),r2 7688 00007114 200c0010 addi r12,r0,#16 7689 00007118 afac0008 sw 8(r29),r12 7690 0000711c 0fffdaa0 jal _dstrtol 7691 00007120 54000000 nop; not filled. 7692 00007124 ad010000 sw (r8),r1 7693 00007128 8fccff8c lw r12,-116(r30) 7694 0000712c afac0000 sw (r29),r12 7695 00007130 afa20004 sw 4(r29),r2 7696 00007134 200c0010 addi r12,r0,#16 7697 00007138 afac0008 sw 8(r29),r12 7698 0000713c 0fffda80 jal _dstrtol 7699 00007140 54000000 nop; not filled. 7700 00007144 ad210000 sw (r9),r1 7701 00007148 8fccff8c lw r12,-116(r30) 7702 0000714c afac0000 sw (r29),r12 7703 00007150 afa20004 sw 4(r29),r2 7704 00007154 200c0010 addi r12,r0,#16 7705 00007158 afac0008 sw 8(r29),r12 7706 0000715c 0fffda60 jal _dstrtol 7707 00007160 54000000 nop; not filled. 7708 00007164 ad410000 sw (r10),r1 7709 00007168 8fccff8c lw r12,-116(r30) 7710 0000716c afac0000 sw (r29),r12 7711 00007170 afa20004 sw 4(r29),r2 7712 00007174 200c0010 addi r12,r0,#16 7713 00007178 afac0008 sw 8(r29),r12 7714 0000717c 0fffda40 jal _dstrtol 7715 00007180 54000000 nop; not filled. 7716 00007184 ad610000 sw (r11),r1 7717 00007188 afa40000 sw (r29),r4 7718 0000718c 200c000a addi r12,r0,#10 7719 00007190 afac0004 sw 4(r29),r12 7720 00007194 0fffd8a0 jal _dindex 7721 00007198 54000000 nop; not filled. 7722 0000719c 23c2ff8f addi r2,r30,#-113 7723 000071a0 00220822 sub r1,r1,r2 7724 000071a4 afa30000 sw (r29),r3 7725 000071a8 afa10004 sw 4(r29),r1 7726 000071ac 200c0000 addi r12,r0,#0 7727 000071b0 afac0008 sw 8(r29),r12 7728 000071b4 0fffb840 jal _FsSeek 7729 000071b8 54000000 nop; not filled. 7730 000071bc 00030820 add r1,r0,r3 7731 000071c0 23bd0010 addi r29,r29,#16 7732 000071c4 L256_LF6: 7733 000071c4 8fa20000 lw r2,0(r29) 7734 000071c8 8fa30004 lw r3,4(r29) 7735 000071cc 8fa40008 lw r4,8(r29) 7736 000071d0 8fa5000c lw r5,12(r29) 7737 000071d4 8fa60010 lw r6,16(r29) 7738 000071d8 8fa70014 lw r7,20(r29) 7739 000071dc 8fa80018 lw r8,24(r29) 7740 000071e0 8fa9001c lw r9,28(r29) 7741 000071e4 8faa0020 lw r10,32(r29) 7742 000071e8 8fab0024 lw r11,36(r29) 7743 000071ec 8fac0028 lw r12,40(r29) 7744 000071f0 8fdffff8 lw r31,-8(r30) 7745 000071f4 001ee820 add r29,r0,r30 7746 000071f8 8fdefffc lw r30,-4(r30) 7747 000071fc 4be00000 jr r31 7748 00007200 54000000 nop 7749 00007204 .endproc _ProcessGetCodeInfo 7750 00007204 .data 7751 00011b27 .align 2 7752 00011b28 LC38_LF6: 7753 00011b28 476f7420 .ascii "Got %d bytes at offset %d ...\000" 7753 00011b2c 25642062 7753 00011b30 79746573 7753 00011b34 20617420 7753 00011b38 6f666673 7753 00011b3c 65742025 7753 00011b40 64202e2e 7753 00011b44 2e00 7754 00011b46 .align 2 7755 00011b48 LC39_LF6: 7756 00011b48 20746572 .ascii " terminated at %d.\n\000" 7756 00011b4c 6d696e61 7756 00011b50 74656420 7756 00011b54 61742025 7756 00011b58 642e0a00 7757 00011b5c .align 2 7758 00011b5c LC40_LF6: 7759 00011b5c 42756666 .ascii "Buffer is \'%s\'\n\000" 7759 00011b60 65722069 7759 00011b64 73202725 7759 00011b68 73270a00 7760 00011b6c .align 2 7761 00011b6c LC41_LF6: 7762 00011b6c 4e657720 .ascii "New address is 0x%x.\n\000" 7762 00011b70 61646472 7762 00011b74 65737320 7762 00011b78 69732030 7762 00011b7c 7825782e 7762 00011b80 0a00 7763 00011b82 .align 2 7764 00011b84 LC42_LF6: 7765 00011b84 5365656b .ascii "Seeking to %d and returning %d bytes!\n\000" 7765 00011b88 696e6720 7765 00011b8c 746f2025 7765 00011b90 6420616e 7765 00011b94 64207265 7765 00011b98 7475726e 7765 00011b9c 696e6720 7765 00011ba0 25642062 7765 00011ba4 79746573 7765 00011ba8 210a00 7766 00011bab .text 7767 00007204 .align 2 7768 00007204 .proc _ProcessGetFromFile 7769 00007204 .global _ProcessGetFromFile 7770 00007204 _ProcessGetFromFile: 7771 ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. 7772 00007204 afbefffc sw -4(r29),r30; push fp 7773 00007208 001df020 add r30,r0,r29; fp = sp 7774 0000720c afbffff8 sw -8(r29),r31; push ret addr 7775 00007210 2fbd0110 subui r29,r29,#272; alloc local storage 7776 00007214 afa20000 sw 0(r29),r2 7777 00007218 afa30004 sw 4(r29),r3 7778 0000721c afa40008 sw 8(r29),r4 7779 00007220 afa5000c sw 12(r29),r5 7780 00007224 afa60010 sw 16(r29),r6 7781 00007228 afa70014 sw 20(r29),r7 7782 0000722c afa80018 sw 24(r29),r8 7783 00007230 afa9001c sw 28(r29),r9 7784 00007234 afaa0020 sw 32(r29),r10 7785 00007238 afab0024 sw 36(r29),r11 7786 0000723c afac0028 sw 40(r29),r12 7787 00007240 8fca0000 lw r10,(r30) 7788 00007244 8fc70008 lw r7,8(r30) 7789 00007248 8fc2000c lw r2,12(r30) 7790 0000724c 8fcb0004 lw r11,4(r30) 7791 00007250 23c3ff28 addi r3,r30,#-216 7792 00007254 afc3ff24 sw -220(r30),r3 7793 00007258 23bdfff0 addi r29,r29,#-16 7794 0000725c afaa0000 sw (r29),r10 7795 00007260 200c0000 addi r12,r0,#0 7796 00007264 afac0004 sw 4(r29),r12 7797 00007268 200c0001 addi r12,r0,#1 7798 0000726c afac0008 sw 8(r29),r12 7799 00007270 0fffb784 jal _FsSeek 7800 00007274 54000000 nop; not filled. 7801 00007278 00014820 add r9,r0,r1 7802 0000727c 50420001 slli r2,r2,#0x1 7803 00007280 23bd0010 addi r29,r29,#16 7804 00007284 6c4100c8 sgtui r1,r2,#200 7805 00007288 10200008 beqz r1,L270_LF6 7806 0000728c 54000000 nop; not filled. 7807 00007290 200200c8 addi r2,r0,#200 7808 00007294 L270_LF6: 7809 00007294 23bdfff0 addi r29,r29,#-16 7810 00007298 afaa0000 sw (r29),r10 7811 0000729c afa30004 sw 4(r29),r3 7812 000072a0 afa20008 sw 8(r29),r2 7813 000072a4 0fffb558 jal _FsRead 7814 000072a8 54000000 nop; not filled. 7815 000072ac 00012820 add r5,r0,r1 7816 000072b0 23bd0010 addi r29,r29,#16 7817 000072b4 70a10000 slei r1,r5,#0 7818 000072b8 10200010 beqz r1,L271_LF6 7819 000072bc 54000000 nop; not filled. 7820 000072c0 20010000 addi r1,r0,#0 7821 000072c4 08000594 j L325_LF6 7822 000072c8 54000000 nop; not filled. 7823 000072cc L271_LF6: 7824 000072cc 23bdfff8 addi r29,r29,#-8 7825 000072d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7826 000072d4 24421f50 addui r2,r2,(_debugstr)&0xffff 7827 000072d8 afa20000 sw (r29),r2 7828 000072dc 200c0066 addi r12,r0,#102 7829 000072e0 afac0004 sw 4(r29),r12 7830 000072e4 0fffd750 jal _dindex 7831 000072e8 54000000 nop; not filled. 7832 000072ec 23bd0008 addi r29,r29,#8 7833 000072f0 64210000 snei r1,r1,#0 7834 000072f4 1420002c bnez r1,L273_LF6 7835 000072f8 54000000 nop; not filled. 7836 000072fc 23bdfff8 addi r29,r29,#-8 7837 00007300 afa20000 sw (r29),r2 7838 00007304 200c002b addi r12,r0,#43 7839 00007308 afac0004 sw 4(r29),r12 7840 0000730c 0fffd728 jal _dindex 7841 00007310 54000000 nop; not filled. 7842 00007314 23bd0008 addi r29,r29,#8 7843 00007318 64210000 snei r1,r1,#0 7844 0000731c 10200028 beqz r1,L272_LF6 7845 00007320 54000000 nop; not filled. 7846 00007324 L273_LF6: 7847 00007324 23bdfff0 addi r29,r29,#-16 7848 00007328 3c0c0001 lhi r12,((LC38_LF6)>>16)&0xffff 7849 0000732c 258c1b28 addui r12,r12,(LC38_LF6)&0xffff 7850 00007330 afac0000 sw (r29),r12 7851 00007334 afa50004 sw 4(r29),r5 7852 00007338 afa90008 sw 8(r29),r9 7853 0000733c 0c004ed4 jal _printf 7854 00007340 54000000 nop; not filled. 7855 00007344 23bd0010 addi r29,r29,#16 7856 00007348 L272_LF6: 7857 00007348 20a5ffff addi r5,r5,#-1 7858 0000734c 23c1ff28 addi r1,r30,#-216 7859 00007350 00251020 add r2,r1,r5 7860 00007354 0800000c j L328_LF6 7861 00007358 54000000 nop; not filled. 7862 0000735c L274_LF6: 7863 0000735c 2042ffff addi r2,r2,#-1 7864 00007360 20a5ffff addi r5,r5,#-1 7865 00007364 L328_LF6: 7866 00007364 90410000 lbu r1,(r2) 7867 00007368 6421000a snei r1,r1,#10 7868 0000736c 1420ffec bnez r1,L274_LF6 7869 00007370 54000000 nop; not filled. 7870 00007374 23c1ff29 addi r1,r30,#-215 7871 00007378 00250820 add r1,r1,r5 7872 0000737c 200c005a addi r12,r0,(#0x5a)&0xff 7873 00007380 a02c0000 sb (r1),r12 7874 00007384 23c1ff2a addi r1,r30,#-214 7875 00007388 00250820 add r1,r1,r5 7876 0000738c 200c0000 addi r12,r0,(#0x0)&0xff 7877 00007390 a02c0000 sb (r1),r12 7878 00007394 23bdfff8 addi r29,r29,#-8 7879 00007398 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7880 0000739c 24421f50 addui r2,r2,(_debugstr)&0xffff 7881 000073a0 afa20000 sw (r29),r2 7882 000073a4 200c0066 addi r12,r0,#102 7883 000073a8 afac0004 sw 4(r29),r12 7884 000073ac 0fffd688 jal _dindex 7885 000073b0 54000000 nop; not filled. 7886 000073b4 23bd0008 addi r29,r29,#8 7887 000073b8 64210000 snei r1,r1,#0 7888 000073bc 1420002c bnez r1,L279_LF6 7889 000073c0 54000000 nop; not filled. 7890 000073c4 23bdfff8 addi r29,r29,#-8 7891 000073c8 afa20000 sw (r29),r2 7892 000073cc 200c002b addi r12,r0,#43 7893 000073d0 afac0004 sw 4(r29),r12 7894 000073d4 0fffd660 jal _dindex 7895 000073d8 54000000 nop; not filled. 7896 000073dc 23bd0008 addi r29,r29,#8 7897 000073e0 64210000 snei r1,r1,#0 7898 000073e4 10200024 beqz r1,L278_LF6 7899 000073e8 54000000 nop; not filled. 7900 000073ec L279_LF6: 7901 000073ec 23bdfff8 addi r29,r29,#-8 7902 000073f0 3c0c0001 lhi r12,((LC39_LF6)>>16)&0xffff 7903 000073f4 258c1b48 addui r12,r12,(LC39_LF6)&0xffff 7904 000073f8 afac0000 sw (r29),r12 7905 000073fc afa50004 sw 4(r29),r5 7906 00007400 0c004e10 jal _printf 7907 00007404 54000000 nop; not filled. 7908 00007408 23bd0008 addi r29,r29,#8 7909 0000740c L278_LF6: 7910 0000740c 23bdfff8 addi r29,r29,#-8 7911 00007410 3c020001 lhi r2,((_debugstr)>>16)&0xffff 7912 00007414 24421f50 addui r2,r2,(_debugstr)&0xffff 7913 00007418 afa20000 sw (r29),r2 7914 0000741c 200c0066 addi r12,r0,#102 7915 00007420 afac0004 sw 4(r29),r12 7916 00007424 0fffd610 jal _dindex 7917 00007428 54000000 nop; not filled. 7918 0000742c 23bd0008 addi r29,r29,#8 7919 00007430 64210000 snei r1,r1,#0 7920 00007434 1420002c bnez r1,L281_LF6 7921 00007438 54000000 nop; not filled. 7922 0000743c 23bdfff8 addi r29,r29,#-8 7923 00007440 afa20000 sw (r29),r2 7924 00007444 200c002b addi r12,r0,#43 7925 00007448 afac0004 sw 4(r29),r12 7926 0000744c 0fffd5e8 jal _dindex 7927 00007450 54000000 nop; not filled. 7928 00007454 23bd0008 addi r29,r29,#8 7929 00007458 64210000 snei r1,r1,#0 7930 0000745c 10200028 beqz r1,L280_LF6 7931 00007460 54000000 nop; not filled. 7932 00007464 L281_LF6: 7933 00007464 23bdfff8 addi r29,r29,#-8 7934 00007468 3c0c0001 lhi r12,((LC40_LF6)>>16)&0xffff 7935 0000746c 258c1b5c addui r12,r12,(LC40_LF6)&0xffff 7936 00007470 afac0000 sw (r29),r12 7937 00007474 23c1ff28 addi r1,r30,#-216 7938 00007478 afa10004 sw 4(r29),r1 7939 0000747c 0c004d94 jal _printf 7940 00007480 54000000 nop; not filled. 7941 00007484 23bd0008 addi r29,r29,#8 7942 00007488 L280_LF6: 7943 00007488 20050000 addi r5,r0,#0 7944 0000748c 3c080001 lhi r8,((_debugstr)>>16)&0xffff 7945 00007490 25081f50 addui r8,r8,(_debugstr)&0xffff 7946 00007494 L282_LF6: 7947 00007494 23bdfff8 addi r29,r29,#-8 7948 00007498 8fccff24 lw r12,-220(r30) 7949 0000749c afac0000 sw (r29),r12 7950 000074a0 200c005a addi r12,r0,#90 7951 000074a4 afac0004 sw 4(r29),r12 7952 000074a8 0fffd58c jal _dindex 7953 000074ac 54000000 nop; not filled. 7954 000074b0 23bd0008 addi r29,r29,#8 7955 000074b4 64210000 snei r1,r1,#0 7956 000074b8 102002ec beqz r1,L283_LF6 7957 000074bc 54000000 nop; not filled. 7958 000074c0 23bdfff8 addi r29,r29,#-8 7959 000074c4 8fccff24 lw r12,-220(r30) 7960 000074c8 afac0000 sw (r29),r12 7961 000074cc 200c003a addi r12,r0,#58 7962 000074d0 afac0004 sw 4(r29),r12 7963 000074d4 0fffd560 jal _dindex 7964 000074d8 54000000 nop; not filled. 7965 000074dc 23bd0008 addi r29,r29,#8 7966 000074e0 64210000 snei r1,r1,#0 7967 000074e4 102002c0 beqz r1,L283_LF6 7968 000074e8 54000000 nop; not filled. 7969 000074ec 8fc2ff24 lw r2,-220(r30) 7970 000074f0 90410000 lbu r1,(r2) 7971 000074f4 6421003a snei r1,r1,#58 7972 000074f8 102000b8 beqz r1,L327_LF6 7973 000074fc 54000000 nop; not filled. 7974 00007500 6ca10000 sgti r1,r5,#0 7975 00007504 142002a0 bnez r1,L283_LF6 7976 00007508 54000000 nop; not filled. 7977 0000750c 23bdfff0 addi r29,r29,#-16 7978 00007510 afa20000 sw (r29),r2 7979 00007514 23c1ff24 addi r1,r30,#-220 7980 00007518 afa10004 sw 4(r29),r1 7981 0000751c 200c0010 addi r12,r0,#16 7982 00007520 afac0008 sw 8(r29),r12 7983 00007524 0fffd698 jal _dstrtol 7984 00007528 54000000 nop; not filled. 7985 0000752c ace10000 sw (r7),r1 7986 00007530 afa80000 sw (r29),r8 7987 00007534 200c0066 addi r12,r0,#102 7988 00007538 afac0004 sw 4(r29),r12 7989 0000753c 0fffd4f8 jal _dindex 7990 00007540 54000000 nop; not filled. 7991 00007544 23bd0010 addi r29,r29,#16 7992 00007548 64210000 snei r1,r1,#0 7993 0000754c 1420002c bnez r1,L289_LF6 7994 00007550 54000000 nop; not filled. 7995 00007554 23bdfff8 addi r29,r29,#-8 7996 00007558 afa80000 sw (r29),r8 7997 0000755c 200c002b addi r12,r0,#43 7998 00007560 afac0004 sw 4(r29),r12 7999 00007564 0fffd4d0 jal _dindex 8000 00007568 54000000 nop; not filled. 8001 0000756c 23bd0008 addi r29,r29,#8 8002 00007570 64210000 snei r1,r1,#0 8003 00007574 10200028 beqz r1,L286_LF6 8004 00007578 54000000 nop; not filled. 8005 0000757c L289_LF6: 8006 0000757c 23bdfff8 addi r29,r29,#-8 8007 00007580 3c0c0001 lhi r12,((LC41_LF6)>>16)&0xffff 8008 00007584 258c1b6c addui r12,r12,(LC41_LF6)&0xffff 8009 00007588 afac0000 sw (r29),r12 8010 0000758c 8ce10000 lw r1,(r7) 8011 00007590 afa10004 sw 4(r29),r1 8012 00007594 0c004c7c jal _printf 8013 00007598 54000000 nop; not filled. 8014 0000759c 23bd0008 addi r29,r29,#8 8015 000075a0 L286_LF6: 8016 000075a0 8fc1ff24 lw r1,-220(r30) 8017 000075a4 90210000 lbu r1,(r1) 8018 000075a8 6421003a snei r1,r1,#58 8019 000075ac 142001f8 bnez r1,L283_LF6 8020 000075b0 54000000 nop; not filled. 8021 000075b4 L327_LF6: 8022 000075b4 8fc1ff24 lw r1,-220(r30) 8023 000075b8 20210001 addi r1,r1,#1 8024 000075bc afc1ff24 sw -220(r30),r1 8025 000075c0 00ab3020 add r6,r5,r11 8026 000075c4 L293_LF6: 8027 000075c4 8fc1ff24 lw r1,-220(r30) 8028 000075c8 08000010 j L329_LF6 8029 000075cc 54000000 nop; not filled. 8030 000075d0 L296_LF6: 8031 000075d0 8fc1ff24 lw r1,-220(r30) 8032 000075d4 20210001 addi r1,r1,#1 8033 000075d8 afc1ff24 sw -220(r30),r1 8034 000075dc L329_LF6: 8035 000075dc 903f0000 lbu r31,(r1) 8036 000075e0 63e10020 seqi r1,r31,#32 8037 000075e4 1420ffe8 bnez r1,L296_LF6 8038 000075e8 54000000 nop; not filled. 8039 000075ec 63e10009 seqi r1,r31,#9 8040 000075f0 1420ffdc bnez r1,L296_LF6 8041 000075f4 54000000 nop; not filled. 8042 000075f8 8fc2ff24 lw r2,-220(r30) 8043 000075fc 805f0000 lb r31,(r2) 8044 00007600 33e300ff andi r3,r31,#0x00ff 8045 00007604 6061000a seqi r1,r3,#10 8046 00007608 10200014 beqz r1,L298_LF6 8047 0000760c 54000000 nop; not filled. 8048 00007610 20410001 addi r1,r2,#1 8049 00007614 afc1ff24 sw -220(r30),r1 8050 00007618 0bfffe78 j L282_LF6 8051 0000761c 54000000 nop; not filled. 8052 00007620 L298_LF6: 8053 00007620 20020000 addi r2,r0,#0 8054 00007624 23e1ffd0 addi r1,r31,#-48 8055 00007628 302100ff andi r1,r1,#0x00ff 8056 0000762c 70210009 sleui r1,r1,#9 8057 00007630 14200024 bnez r1,L304_LF6 8058 00007634 54000000 nop; not filled. 8059 00007638 23e1ff9f addi r1,r31,#-97 8060 0000763c 302100ff andi r1,r1,#0x00ff 8061 00007640 70210005 sleui r1,r1,#5 8062 00007644 14200010 bnez r1,L304_LF6 8063 00007648 54000000 nop; not filled. 8064 0000764c 64610041 snei r1,r3,#65 8065 00007650 14200008 bnez r1,L303_LF6 8066 00007654 54000000 nop; not filled. 8067 00007658 L304_LF6: 8068 00007658 20020001 addi r2,r0,#1 8069 0000765c L303_LF6: 8070 0000765c 64410000 snei r1,r2,#0 8071 00007660 1020fe30 beqz r1,L282_LF6 8072 00007664 54000000 nop; not filled. 8073 00007668 8fc1ff24 lw r1,-220(r30) 8074 0000766c 80220001 lb r2,1(r1) 8075 00007670 20030000 addi r3,r0,#0 8076 00007674 2041ffd0 addi r1,r2,#-48 8077 00007678 302100ff andi r1,r1,#0x00ff 8078 0000767c 70210009 sleui r1,r1,#9 8079 00007680 14200028 bnez r1,L307_LF6 8080 00007684 54000000 nop; not filled. 8081 00007688 2041ff9f addi r1,r2,#-97 8082 0000768c 302100ff andi r1,r1,#0x00ff 8083 00007690 70210005 sleui r1,r1,#5 8084 00007694 14200014 bnez r1,L307_LF6 8085 00007698 54000000 nop; not filled. 8086 0000769c 304100ff andi r1,r2,#0x00ff 8087 000076a0 64210041 snei r1,r1,#65 8088 000076a4 14200008 bnez r1,L306_LF6 8089 000076a8 54000000 nop; not filled. 8090 000076ac L307_LF6: 8091 000076ac 20030001 addi r3,r0,#1 8092 000076b0 L306_LF6: 8093 000076b0 64610000 snei r1,r3,#0 8094 000076b4 1020fddc beqz r1,L282_LF6 8095 000076b8 54000000 nop; not filled. 8096 000076bc 8fc1ff24 lw r1,-220(r30) 8097 000076c0 90220000 lbu r2,(r1) 8098 000076c4 00021820 add r3,r0,r2 8099 000076c8 205fffd0 addi r31,r2,#-48 8100 000076cc 73e10009 sleui r1,r31,#9 8101 000076d0 10200010 beqz r1,L309_LF6 8102 000076d4 54000000 nop; not filled. 8103 000076d8 001f2020 add r4,r0,r31 8104 000076dc 08000038 j L308_LF6 8105 000076e0 54000000 nop; not filled. 8106 000076e4 L309_LF6: 8107 000076e4 2041ff9f addi r1,r2,#-97 8108 000076e8 70210005 sleui r1,r1,#5 8109 000076ec 10200010 beqz r1,L311_LF6 8110 000076f0 54000000 nop; not filled. 8111 000076f4 2044ffa9 addi r4,r2,#-87 8112 000076f8 0800001c j L308_LF6 8113 000076fc 54000000 nop; not filled. 8114 00007700 L311_LF6: 8115 00007700 2061ffbf addi r1,r3,#-65 8116 00007704 70210005 sleui r1,r1,#5 8117 00007708 20040000 addi r4,r0,#0 8118 0000770c 10200008 beqz r1,L308_LF6 8119 00007710 54000000 nop; not filled. 8120 00007714 2064ffc9 addi r4,r3,#-55 8121 00007718 L308_LF6: 8122 00007718 8fc1ff24 lw r1,-220(r30) 8123 0000771c 90220001 lbu r2,1(r1) 8124 00007720 00021820 add r3,r0,r2 8125 00007724 205fffd0 addi r31,r2,#-48 8126 00007728 73e10009 sleui r1,r31,#9 8127 0000772c 10200010 beqz r1,L316_LF6 8128 00007730 54000000 nop; not filled. 8129 00007734 001f1020 add r2,r0,r31 8130 00007738 08000038 j L315_LF6 8131 0000773c 54000000 nop; not filled. 8132 00007740 L316_LF6: 8133 00007740 2041ff9f addi r1,r2,#-97 8134 00007744 70210005 sleui r1,r1,#5 8135 00007748 10200010 beqz r1,L318_LF6 8136 0000774c 54000000 nop; not filled. 8137 00007750 2042ffa9 addi r2,r2,#-87 8138 00007754 0800001c j L315_LF6 8139 00007758 54000000 nop; not filled. 8140 0000775c L318_LF6: 8141 0000775c 2061ffbf addi r1,r3,#-65 8142 00007760 70210005 sleui r1,r1,#5 8143 00007764 20020000 addi r2,r0,#0 8144 00007768 10200008 beqz r1,L315_LF6 8145 0000776c 54000000 nop; not filled. 8146 00007770 2062ffc9 addi r2,r3,#-55 8147 00007774 L315_LF6: 8148 00007774 50810004 slli r1,r4,#0x4 8149 00007778 00220820 add r1,r1,r2 8150 0000777c a0c10000 sb (r6),r1 8151 00007780 20c60001 addi r6,r6,#1 8152 00007784 20a50001 addi r5,r5,#1 8153 00007788 8fc1ff24 lw r1,-220(r30) 8154 0000778c 20210002 addi r1,r1,#2 8155 00007790 afc1ff24 sw -220(r30),r1 8156 00007794 8ce10000 lw r1,(r7) 8157 00007798 20210001 addi r1,r1,#1 8158 0000779c ace10000 sw (r7),r1 8159 000077a0 0bfffe20 j L293_LF6 8160 000077a4 54000000 nop; not filled. 8161 000077a8 L283_LF6: 8162 000077a8 23bdfff0 addi r29,r29,#-16 8163 000077ac afaa0000 sw (r29),r10 8164 000077b0 8fc1ff24 lw r1,-220(r30) 8165 000077b4 00290820 add r1,r1,r9 8166 000077b8 23c3ff28 addi r3,r30,#-216 8167 000077bc 00230822 sub r1,r1,r3 8168 000077c0 afa10004 sw 4(r29),r1 8169 000077c4 200c0000 addi r12,r0,#0 8170 000077c8 afac0008 sw 8(r29),r12 8171 000077cc 0fffb228 jal _FsSeek 8172 000077d0 54000000 nop; not filled. 8173 000077d4 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8174 000077d8 24421f50 addui r2,r2,(_debugstr)&0xffff 8175 000077dc afa20000 sw (r29),r2 8176 000077e0 200c0066 addi r12,r0,#102 8177 000077e4 afac0004 sw 4(r29),r12 8178 000077e8 0fffd24c jal _dindex 8179 000077ec 54000000 nop; not filled. 8180 000077f0 23bd0010 addi r29,r29,#16 8181 000077f4 64210000 snei r1,r1,#0 8182 000077f8 1420002c bnez r1,L324_LF6 8183 000077fc 54000000 nop; not filled. 8184 00007800 23bdfff8 addi r29,r29,#-8 8185 00007804 afa20000 sw (r29),r2 8186 00007808 200c002b addi r12,r0,#43 8187 0000780c afac0004 sw 4(r29),r12 8188 00007810 0fffd224 jal _dindex 8189 00007814 54000000 nop; not filled. 8190 00007818 23bd0008 addi r29,r29,#8 8191 0000781c 64210000 snei r1,r1,#0 8192 00007820 10200034 beqz r1,L323_LF6 8193 00007824 54000000 nop; not filled. 8194 00007828 L324_LF6: 8195 00007828 23bdfff0 addi r29,r29,#-16 8196 0000782c 3c0c0001 lhi r12,((LC42_LF6)>>16)&0xffff 8197 00007830 258c1b84 addui r12,r12,(LC42_LF6)&0xffff 8198 00007834 afac0000 sw (r29),r12 8199 00007838 8fc1ff24 lw r1,-220(r30) 8200 0000783c 00290820 add r1,r1,r9 8201 00007840 00230822 sub r1,r1,r3 8202 00007844 afa10004 sw 4(r29),r1 8203 00007848 afa50008 sw 8(r29),r5 8204 0000784c 0c0049c4 jal _printf 8205 00007850 54000000 nop; not filled. 8206 00007854 23bd0010 addi r29,r29,#16 8207 00007858 L323_LF6: 8208 00007858 00050820 add r1,r0,r5 8209 0000785c L325_LF6: 8210 0000785c 8fa20000 lw r2,0(r29) 8211 00007860 8fa30004 lw r3,4(r29) 8212 00007864 8fa40008 lw r4,8(r29) 8213 00007868 8fa5000c lw r5,12(r29) 8214 0000786c 8fa60010 lw r6,16(r29) 8215 00007870 8fa70014 lw r7,20(r29) 8216 00007874 8fa80018 lw r8,24(r29) 8217 00007878 8fa9001c lw r9,28(r29) 8218 0000787c 8faa0020 lw r10,32(r29) 8219 00007880 8fab0024 lw r11,36(r29) 8220 00007884 8fac0028 lw r12,40(r29) 8221 00007888 8fdffff8 lw r31,-8(r30) 8222 0000788c 001ee820 add r29,r0,r30 8223 00007890 8fdefffc lw r30,-4(r30) 8224 00007894 4be00000 jr r31 8225 00007898 54000000 nop 8226 0000789c .endproc _ProcessGetFromFile 8227 0000789c .data 8228 00011bab .align 2 8229 00011bac _temppcb60_LF6: 8230 00011bac .space 180 8231 00011c60 .align 2 8232 00011c60 LC43_LF6: 8233 00011c60 476f7420 .ascii "Got %d arguments.\n\000" 8233 00011c64 25642061 8233 00011c68 7267756d 8233 00011c6c 656e7473 8233 00011c70 2e0a00 8234 00011c73 .align 2 8235 00011c74 LC44_LF6: 8236 00011c74 41766169 .ascii "Available memory: 0x%x -> 0x%x.\n\000" 8236 00011c78 6c61626c 8236 00011c7c 65206d65 8236 00011c80 6d6f7279 8236 00011c84 3a203078 8236 00011c88 2578202d 8236 00011c8c 3e203078 8236 00011c90 25782e0a 8236 00011c94 00 8237 00011c95 .align 2 8238 00011c98 LC45_LF6: 8239 00011c98 41726775 .ascii "Argument count is %d.\n\000" 8239 00011c9c 6d656e74 8239 00011ca0 20636f75 8239 00011ca4 6e742069 8239 00011ca8 73202564 8239 00011cac 2e0a00 8240 00011caf .align 2 8241 00011cb0 LC46_LF6: 8242 00011cb0 41726775 .ascii "Argument %d is %s.\n\000" 8242 00011cb4 6d656e74 8242 00011cb8 20256420 8242 00011cbc 69732025 8242 00011cc0 732e0a00 8243 00011cc4 .align 2 8244 00011cc4 LC47_LF6: 8245 00011cc4 436f6e76 .ascii "Converted %s to %d=%s\n\000" 8245 00011cc8 65727465 8245 00011ccc 64202573 8245 00011cd0 20746f20 8245 00011cd4 25643d25 8245 00011cd8 730a00 8246 00011cdb _buf61_LF6: 8247 00011cdb .space 200 8248 00011da3 .align 2 8249 00011da4 LC48_LF6: 8250 00011da4 25303878 .ascii "%08x: %02x%02x%02x%02x\n\000" 8250 00011da8 3a202530 8250 00011dac 32782530 8250 00011db0 32782530 8250 00011db4 32782530 8250 00011db8 32780a00 8251 00011dbc .align 2 8252 00011dbc LC49_LF6: 8253 00011dbc 4f707469 .ascii "Option %s not recognized.\n\000" 8253 00011dc0 6f6e2025 8253 00011dc4 73206e6f 8253 00011dc8 74207265 8253 00011dcc 636f676e 8253 00011dd0 697a6564 8253 00011dd4 2e0a00 8254 00011dd7 .align 2 8255 00011dd8 LC50_LF6: 8256 00011dd8 41626f75 .ascii "About to initialize queues.\n\000" 8256 00011ddc 7420746f 8256 00011de0 20696e69 8256 00011de4 7469616c 8256 00011de8 697a6520 8256 00011dec 71756575 8256 00011df0 65732e0a 8256 00011df4 00 8257 00011df5 .align 2 8258 00011df8 LC51_LF6: 8259 00011df8 41667465 .ascii "After initializing queues.\n\000" 8259 00011dfc 7220696e 8259 00011e00 69746961 8259 00011e04 6c697a69 8259 00011e08 6e672071 8259 00011e0c 75657565 8259 00011e10 732e0a00 8260 00011e14 .align 2 8261 00011e14 LC52_LF6: 8262 00011e14 41667465 .ascii "After initializing memory.\n\000" 8262 00011e18 7220696e 8262 00011e1c 69746961 8262 00011e20 6c697a69 8262 00011e24 6e67206d 8262 00011e28 656d6f72 8262 00011e2c 792e0a00 8263 00011e30 .align 2 8264 00011e30 LC53_LF6: 8265 00011e30 41667465 .ascii "After initializing processes.\n\000" 8265 00011e34 7220696e 8265 00011e38 69746961 8265 00011e3c 6c697a69 8265 00011e40 6e672070 8265 00011e44 726f6365 8265 00011e48 73736573 8265 00011e4c 2e0a00 8266 00011e4f .align 2 8267 00011e50 LC54_LF6: 8268 00011e50 41667465 .ascii "After initializing shared memory.\n\000" 8268 00011e54 7220696e 8268 00011e58 69746961 8268 00011e5c 6c697a69 8268 00011e60 6e672073 8268 00011e64 68617265 8268 00011e68 64206d65 8268 00011e6c 6d6f7279 8268 00011e70 2e0a00 8269 00011e73 .align 2 8270 00011e74 LC55_LF6: 8271 00011e74 41667465 .ascii "After initializing synchronization tools.\n\000" 8271 00011e78 7220696e 8271 00011e7c 69746961 8271 00011e80 6c697a69 8271 00011e84 6e672073 8271 00011e88 796e6368 8271 00011e8c 726f6e69 8271 00011e90 7a617469 8271 00011e94 6f6e2074 8271 00011e98 6f6f6c73 8271 00011e9c 2e0a00 8272 00011e9f .align 2 8273 00011ea0 LC56_LF6: 8274 00011ea0 41667465 .ascii "After initializing keyboard.\n\000" 8274 00011ea4 7220696e 8274 00011ea8 69746961 8274 00011eac 6c697a69 8274 00011eb0 6e67206b 8274 00011eb4 6579626f 8274 00011eb8 6172642e 8274 00011ebc 0a00 8275 00011ebe .align 2 8276 00011ec0 LC57_LF6: 8277 00011ec0 766d00 .ascii "vm\000" 8278 00011ec3 .align 2 8279 00011ec4 LC58_LF6: 8280 00011ec4 564d2044 .ascii "VM Descriptor is %d\n\000" 8280 00011ec8 65736372 8280 00011ecc 6970746f 8280 00011ed0 72206973 8280 00011ed4 2025640a 8280 00011ed8 00 8281 00011ed9 .align 2 8282 00011edc LC59_LF6: 8283 00011edc 43726561 .ascii "Created processes - about to set timer quantum.\n\000" 8283 00011ee0 74656420 8283 00011ee4 70726f63 8283 00011ee8 65737365 8283 00011eec 73202d20 8283 00011ef0 61626f75 8283 00011ef4 7420746f 8283 00011ef8 20736574 8283 00011efc 2074696d 8283 00011f00 65722071 8283 00011f04 75616e74 8283 00011f08 756d2e0a 8283 00011f0c 00 8284 00011f0d .align 2 8285 00011f10 LC60_LF6: 8286 00011f10 53657420 .ascii "Set timer quantum to %d, about to run first process.\n\000" 8286 00011f14 74696d65 8286 00011f18 72207175 8286 00011f1c 616e7475 8286 00011f20 6d20746f 8286 00011f24 2025642c 8286 00011f28 2061626f 8286 00011f2c 75742074 8286 00011f30 6f207275 8286 00011f34 6e206669 8286 00011f38 72737420 8286 00011f3c 70726f63 8286 00011f40 6573732e 8286 00011f44 0a00 8287 00011f46 .text 8288 0000789c .align 2 8289 0000789c .proc _main 8290 0000789c .global _main 8291 0000789c _main: 8292 ; Function 'main'; 192 bytes of locals, 0 regs to save. 8293 0000789c afbefffc sw -4(r29),r30; push fp 8294 000078a0 001df020 add r30,r0,r29; fp = sp 8295 000078a4 afbffff8 sw -8(r29),r31; push ret addr 8296 000078a8 2fbd00c8 subui r29,r29,#200; alloc local storage 8297 000078ac 8fce0000 lw r14,(r30) 8298 000078b0 8fd40004 lw r20,4(r30) 8299 000078b4 0c0048c4 jal ___main 8300 000078b8 54000000 nop; not filled. 8301 000078bc 20100000 addi r16,r0,#0 8302 000078c0 20150000 addi r21,r0,#0 8303 000078c4 afd5ff50 sw -176(r30),r21 8304 000078c8 afd5ff54 sw -172(r30),r21 8305 000078cc afd5ff58 sw -168(r30),r21 8306 000078d0 afd5ff5c sw -164(r30),r21 8307 000078d4 afd5ff60 sw -160(r30),r21 8308 000078d8 afd5ff64 sw -156(r30),r21 8309 000078dc afd5ff68 sw -152(r30),r21 8310 000078e0 afd5ff6c sw -148(r30),r21 8311 000078e4 afd5ff70 sw -144(r30),r21 8312 000078e8 afd5ff74 sw -140(r30),r21 8313 000078ec afd5ff78 sw -136(r30),r21 8314 000078f0 afd5ff7c sw -132(r30),r21 8315 000078f4 3c010001 lhi r1,((_debugstr)>>16)&0xffff 8316 000078f8 24211f50 addui r1,r1,(_debugstr)&0xffff 8317 000078fc 20150000 addi r21,r0,(#0x0)&0xff 8318 00007900 a0350000 sb (r1),r21 8319 00007904 23bdfff8 addi r29,r29,#-8 8320 00007908 3c150001 lhi r21,((LC43_LF6)>>16)&0xffff 8321 0000790c 26b51c60 addui r21,r21,(LC43_LF6)&0xffff 8322 00007910 afb50000 sw (r29),r21 8323 00007914 afae0004 sw 4(r29),r14 8324 00007918 0c0048f8 jal _printf 8325 0000791c 54000000 nop; not filled. 8326 00007920 0fffbcec jal _MemoryGetSize 8327 00007924 54000000 nop; not filled. 8328 00007928 23bdfff8 addi r29,r29,#-8 8329 0000792c 3c150001 lhi r21,((LC44_LF6)>>16)&0xffff 8330 00007930 26b51c74 addui r21,r21,(LC44_LF6)&0xffff 8331 00007934 afb50000 sw (r29),r21 8332 00007938 3c020001 lhi r2,((_lastosaddress)>>16)&0xffff 8333 0000793c 24425804 addui r2,r2,(_lastosaddress)&0xffff 8334 00007940 8c420000 lw r2,(r2) 8335 00007944 afa20004 sw 4(r29),r2 8336 00007948 afa10008 sw 8(r29),r1 8337 0000794c 0c0048c4 jal _printf 8338 00007950 54000000 nop; not filled. 8339 00007954 3c150001 lhi r21,((LC45_LF6)>>16)&0xffff 8340 00007958 26b51c98 addui r21,r21,(LC45_LF6)&0xffff 8341 0000795c afb50000 sw (r29),r21 8342 00007960 afae0004 sw 4(r29),r14 8343 00007964 0c0048ac jal _printf 8344 00007968 54000000 nop; not filled. 8345 0000796c 20090000 addi r9,r0,#0 8346 00007970 23bd0010 addi r29,r29,#16 8347 00007974 012e082a slt r1,r9,r14 8348 00007978 10200044 beqz r1,L332_LF6 8349 0000797c 54000000 nop; not filled. 8350 00007980 00141020 add r2,r0,r20 8351 00007984 L334_LF6: 8352 00007984 23bdfff0 addi r29,r29,#-16 8353 00007988 3c150001 lhi r21,((LC46_LF6)>>16)&0xffff 8354 0000798c 26b51cb0 addui r21,r21,(LC46_LF6)&0xffff 8355 00007990 afb50000 sw (r29),r21 8356 00007994 afa90004 sw 4(r29),r9 8357 00007998 8c550000 lw r21,(r2) 8358 0000799c afb50008 sw 8(r29),r21 8359 000079a0 0c004870 jal _printf 8360 000079a4 54000000 nop; not filled. 8361 000079a8 23bd0010 addi r29,r29,#16 8362 000079ac 20420004 addi r2,r2,#4 8363 000079b0 21290001 addi r9,r9,#1 8364 000079b4 012e082a slt r1,r9,r14 8365 000079b8 1420ffc8 bnez r1,L334_LF6 8366 000079bc 54000000 nop; not filled. 8367 000079c0 L332_LF6: 8368 000079c0 0fffb6c0 jal _FsModuleInit 8369 000079c4 54000000 nop; not filled. 8370 000079c8 20090000 addi r9,r0,#0 8371 000079cc 012e082a slt r1,r9,r14 8372 000079d0 1020033c beqz r1,L337_LF6 8373 000079d4 54000000 nop; not filled. 8374 000079d8 23ccff80 addi r12,r30,#-128 8375 000079dc 23cdff38 addi r13,r30,#-200 8376 000079e0 3c0f0001 lhi r15,((_buf61_LF6)>>16)&0xffff 8377 000079e4 25ef1cdb addui r15,r15,(_buf61_LF6)&0xffff 8378 000079e8 21f20001 addi r18,r15,#1 8379 000079ec 21f10002 addi r17,r15,#2 8380 000079f0 00144020 add r8,r0,r20 8381 000079f4 L339_LF6: 8382 000079f4 8d020000 lw r2,(r8) 8383 000079f8 90410000 lbu r1,(r2) 8384 000079fc 6021002d seqi r1,r1,#45 8385 00007a00 102002f8 beqz r1,L338_LF6 8386 00007a04 54000000 nop; not filled. 8387 00007a08 90420001 lbu r2,1(r2) 8388 00007a0c 60410066 seqi r1,r2,#102 8389 00007a10 142000e0 bnez r1,L344_LF6 8390 00007a14 54000000 nop; not filled. 8391 00007a18 6c410066 sgti r1,r2,#102 8392 00007a1c 14200018 bnez r1,L356_LF6 8393 00007a20 54000000 nop; not filled. 8394 00007a24 60410044 seqi r1,r2,#68 8395 00007a28 102002a0 beqz r1,L354_LF6 8396 00007a2c 54000000 nop; not filled. 8397 00007a30 08000024 j L342_LF6 8398 00007a34 54000000 nop; not filled. 8399 00007a38 L356_LF6: 8400 00007a38 60410069 seqi r1,r2,#105 8401 00007a3c 14200048 bnez r1,L343_LF6 8402 00007a40 54000000 nop; not filled. 8403 00007a44 60410075 seqi r1,r2,#117 8404 00007a48 10200280 beqz r1,L354_LF6 8405 00007a4c 54000000 nop; not filled. 8406 00007a50 08000260 j L353_LF6 8407 00007a54 54000000 nop; not filled. 8408 00007a58 L342_LF6: 8409 00007a58 23bdfff8 addi r29,r29,#-8 8410 00007a5c 3c150001 lhi r21,((_debugstr)>>16)&0xffff 8411 00007a60 26b51f50 addui r21,r21,(_debugstr)&0xffff 8412 00007a64 afb50000 sw (r29),r21 8413 00007a68 21080004 addi r8,r8,#4 8414 00007a6c 21290001 addi r9,r9,#1 8415 00007a70 8d010000 lw r1,(r8) 8416 00007a74 afa10004 sw 4(r29),r1 8417 00007a78 0fffcafc jal _dstrcpy 8418 00007a7c 54000000 nop; not filled. 8419 00007a80 08000268 j L391_LF6 8420 00007a84 54000000 nop; not filled. 8421 00007a88 L343_LF6: 8422 00007a88 23bdfff0 addi r29,r29,#-16 8423 00007a8c 21080004 addi r8,r8,#4 8424 00007a90 21290001 addi r9,r9,#1 8425 00007a94 8d150000 lw r21,(r8) 8426 00007a98 afb50000 sw (r29),r21 8427 00007a9c 20150000 addi r21,r0,#0 8428 00007aa0 afb50004 sw 4(r29),r21 8429 00007aa4 afb50008 sw 8(r29),r21 8430 00007aa8 0fffd114 jal _dstrtol 8431 00007aac 54000000 nop; not filled. 8432 00007ab0 00011820 add r3,r0,r1 8433 00007ab4 afa10000 sw (r29),r1 8434 00007ab8 afac0004 sw 4(r29),r12 8435 00007abc 0fffcff4 jal _ditoa 8436 00007ac0 54000000 nop; not filled. 8437 00007ac4 3c150001 lhi r21,((LC47_LF6)>>16)&0xffff 8438 00007ac8 26b51cc4 addui r21,r21,(LC47_LF6)&0xffff 8439 00007acc afb50000 sw (r29),r21 8440 00007ad0 8d010000 lw r1,(r8) 8441 00007ad4 afa10004 sw 4(r29),r1 8442 00007ad8 afa30008 sw 8(r29),r3 8443 00007adc afac000c sw 12(r29),r12 8444 00007ae0 0c004730 jal _printf 8445 00007ae4 54000000 nop; not filled. 8446 00007ae8 23bd0010 addi r29,r29,#16 8447 00007aec 08000200 j L341_LF6 8448 00007af0 54000000 nop; not filled. 8449 00007af4 L344_LF6: 8450 00007af4 20150000 addi r21,r0,#0 8451 00007af8 afd5ff38 sw -200(r30),r21 8452 00007afc 23bdffe8 addi r29,r29,#-24 8453 00007b00 21080004 addi r8,r8,#4 8454 00007b04 21290001 addi r9,r9,#1 8455 00007b08 8d150000 lw r21,(r8) 8456 00007b0c afb50000 sw (r29),r21 8457 00007b10 23c1ff4c addi r1,r30,#-180 8458 00007b14 afa10004 sw 4(r29),r1 8459 00007b18 23c1ff48 addi r1,r30,#-184 8460 00007b1c afa10008 sw 8(r29),r1 8461 00007b20 23c1ff44 addi r1,r30,#-188 8462 00007b24 afa1000c sw 12(r29),r1 8463 00007b28 23c1ff40 addi r1,r30,#-192 8464 00007b2c afa10010 sw 16(r29),r1 8465 00007b30 23c1ff3c addi r1,r30,#-196 8466 00007b34 afa10014 sw 20(r29),r1 8467 00007b38 0ffff268 jal _ProcessGetCodeInfo 8468 00007b3c 54000000 nop; not filled. 8469 00007b40 00015020 add r10,r0,r1 8470 00007b44 3c150001 lhi r21,((LC27_LF6)>>16)&0xffff 8471 00007b48 26b51980 addui r21,r21,(LC27_LF6)&0xffff 8472 00007b4c afb50000 sw (r29),r21 8473 00007b50 8d010000 lw r1,(r8) 8474 00007b54 afa10004 sw 4(r29),r1 8475 00007b58 8fd5ff4c lw r21,-180(r30) 8476 00007b5c afb50008 sw 8(r29),r21 8477 00007b60 0c0046b0 jal _printf 8478 00007b64 54000000 nop; not filled. 8479 00007b68 3c150001 lhi r21,((LC28_LF6)>>16)&0xffff 8480 00007b6c 26b5199c addui r21,r21,(LC28_LF6)&0xffff 8481 00007b70 afb50000 sw (r29),r21 8482 00007b74 8d010000 lw r1,(r8) 8483 00007b78 afa10004 sw 4(r29),r1 8484 00007b7c 8fd5ff48 lw r21,-184(r30) 8485 00007b80 afb50008 sw 8(r29),r21 8486 00007b84 8fd5ff44 lw r21,-188(r30) 8487 00007b88 afb5000c sw 12(r29),r21 8488 00007b8c 0c004684 jal _printf 8489 00007b90 54000000 nop; not filled. 8490 00007b94 3c150001 lhi r21,((LC29_LF6)>>16)&0xffff 8491 00007b98 26b519c4 addui r21,r21,(LC29_LF6)&0xffff 8492 00007b9c afb50000 sw (r29),r21 8493 00007ba0 8d010000 lw r1,(r8) 8494 00007ba4 afa10004 sw 4(r29),r1 8495 00007ba8 8fd5ff40 lw r21,-192(r30) 8496 00007bac afb50008 sw 8(r29),r21 8497 00007bb0 8fd5ff3c lw r21,-196(r30) 8498 00007bb4 afb5000c sw 12(r29),r21 8499 00007bb8 0c004658 jal _printf 8500 00007bbc 54000000 nop; not filled. 8501 00007bc0 23bd0018 addi r29,r29,#24 8502 00007bc4 3c0b0001 lhi r11,((_buf61_LF6+3)>>16)&0xffff 8503 00007bc8 256b1cde addui r11,r11,(_buf61_LF6+3)&0xffff 8504 00007bcc L345_LF6: 8505 00007bcc 23bdfff0 addi r29,r29,#-16 8506 00007bd0 afaa0000 sw (r29),r10 8507 00007bd4 3c150001 lhi r21,((_buf61_LF6)>>16)&0xffff 8508 00007bd8 26b51cdb addui r21,r21,(_buf61_LF6)&0xffff 8509 00007bdc afb50004 sw 4(r29),r21 8510 00007be0 afad0008 sw 8(r29),r13 8511 00007be4 201500c8 addi r21,r0,#200 8512 00007be8 afb5000c sw 12(r29),r21 8513 00007bec 0ffff614 jal _ProcessGetFromFile 8514 00007bf0 54000000 nop; not filled. 8515 00007bf4 00011820 add r3,r0,r1 8516 00007bf8 23bd0010 addi r29,r29,#16 8517 00007bfc 6c610000 sgti r1,r3,#0 8518 00007c00 10200098 beqz r1,L346_LF6 8519 00007c04 54000000 nop; not filled. 8520 00007c08 20020000 addi r2,r0,#0 8521 00007c0c 0043082a slt r1,r2,r3 8522 00007c10 1020ffb8 beqz r1,L345_LF6 8523 00007c14 54000000 nop; not filled. 8524 00007c18 000b3820 add r7,r0,r11 8525 00007c1c 00113020 add r6,r0,r17 8526 00007c20 00122820 add r5,r0,r18 8527 00007c24 000f2020 add r4,r0,r15 8528 00007c28 L351_LF6: 8529 00007c28 23bdffe8 addi r29,r29,#-24 8530 00007c2c 3c150001 lhi r21,((LC48_LF6)>>16)&0xffff 8531 00007c30 26b51da4 addui r21,r21,(LC48_LF6)&0xffff 8532 00007c34 afb50000 sw (r29),r21 8533 00007c38 8fc1ff38 lw r1,-200(r30) 8534 00007c3c 00220820 add r1,r1,r2 8535 00007c40 00230822 sub r1,r1,r3 8536 00007c44 afa10004 sw 4(r29),r1 8537 00007c48 90810000 lbu r1,(r4) 8538 00007c4c afa10008 sw 8(r29),r1 8539 00007c50 90a10000 lbu r1,(r5) 8540 00007c54 afa1000c sw 12(r29),r1 8541 00007c58 90c10000 lbu r1,(r6) 8542 00007c5c afa10010 sw 16(r29),r1 8543 00007c60 90e10000 lbu r1,(r7) 8544 00007c64 afa10014 sw 20(r29),r1 8545 00007c68 0c0045a8 jal _printf 8546 00007c6c 54000000 nop; not filled. 8547 00007c70 23bd0018 addi r29,r29,#24 8548 00007c74 20e70004 addi r7,r7,#4 8549 00007c78 20c60004 addi r6,r6,#4 8550 00007c7c 20a50004 addi r5,r5,#4 8551 00007c80 20840004 addi r4,r4,#4 8552 00007c84 20420004 addi r2,r2,#4 8553 00007c88 0043082a slt r1,r2,r3 8554 00007c8c 1420ff98 bnez r1,L351_LF6 8555 00007c90 54000000 nop; not filled. 8556 00007c94 0bffff34 j L345_LF6 8557 00007c98 54000000 nop; not filled. 8558 00007c9c L346_LF6: 8559 00007c9c 23bdfff8 addi r29,r29,#-8 8560 00007ca0 afaa0000 sw (r29),r10 8561 00007ca4 0c0044e8 jal _close 8562 00007ca8 54000000 nop; not filled. 8563 00007cac 0800003c j L391_LF6 8564 00007cb0 54000000 nop; not filled. 8565 00007cb4 L353_LF6: 8566 00007cb4 21080004 addi r8,r8,#4 8567 00007cb8 21290001 addi r9,r9,#1 8568 00007cbc 8d100000 lw r16,(r8) 8569 00007cc0 00099820 add r19,r0,r9 8570 00007cc4 08000028 j L341_LF6 8571 00007cc8 54000000 nop; not filled. 8572 00007ccc L354_LF6: 8573 00007ccc 23bdfff8 addi r29,r29,#-8 8574 00007cd0 3c150001 lhi r21,((LC49_LF6)>>16)&0xffff 8575 00007cd4 26b51dbc addui r21,r21,(LC49_LF6)&0xffff 8576 00007cd8 afb50000 sw (r29),r21 8577 00007cdc 8d010000 lw r1,(r8) 8578 00007ce0 afa10004 sw 4(r29),r1 8579 00007ce4 0c00452c jal _printf 8580 00007ce8 54000000 nop; not filled. 8581 00007cec L391_LF6: 8582 00007cec 23bd0008 addi r29,r29,#8 8583 00007cf0 L341_LF6: 8584 00007cf0 66010000 snei r1,r16,#0 8585 00007cf4 14200018 bnez r1,L337_LF6 8586 00007cf8 54000000 nop; not filled. 8587 00007cfc L338_LF6: 8588 00007cfc 21080004 addi r8,r8,#4 8589 00007d00 21290001 addi r9,r9,#1 8590 00007d04 012e082a slt r1,r9,r14 8591 00007d08 1420fce8 bnez r1,L339_LF6 8592 00007d0c 54000000 nop; not filled. 8593 00007d10 L337_LF6: 8594 00007d10 23bdfff8 addi r29,r29,#-8 8595 00007d14 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8596 00007d18 24421f50 addui r2,r2,(_debugstr)&0xffff 8597 00007d1c afa20000 sw (r29),r2 8598 00007d20 20150069 addi r21,r0,#105 8599 00007d24 afb50004 sw 4(r29),r21 8600 00007d28 0fffcd0c jal _dindex 8601 00007d2c 54000000 nop; not filled. 8602 00007d30 23bd0008 addi r29,r29,#8 8603 00007d34 64210000 snei r1,r1,#0 8604 00007d38 1420002c bnez r1,L360_LF6 8605 00007d3c 54000000 nop; not filled. 8606 00007d40 23bdfff8 addi r29,r29,#-8 8607 00007d44 afa20000 sw (r29),r2 8608 00007d48 2015002b addi r21,r0,#43 8609 00007d4c afb50004 sw 4(r29),r21 8610 00007d50 0fffcce4 jal _dindex 8611 00007d54 54000000 nop; not filled. 8612 00007d58 23bd0008 addi r29,r29,#8 8613 00007d5c 64210000 snei r1,r1,#0 8614 00007d60 10200020 beqz r1,L359_LF6 8615 00007d64 54000000 nop; not filled. 8616 00007d68 L360_LF6: 8617 00007d68 23bdfff8 addi r29,r29,#-8 8618 00007d6c 3c150001 lhi r21,((LC50_LF6)>>16)&0xffff 8619 00007d70 26b51dd8 addui r21,r21,(LC50_LF6)&0xffff 8620 00007d74 afb50000 sw (r29),r21 8621 00007d78 0c004498 jal _printf 8622 00007d7c 54000000 nop; not filled. 8623 00007d80 23bd0008 addi r29,r29,#8 8624 00007d84 L359_LF6: 8625 00007d84 0c000d60 jal _QueueModuleInit 8626 00007d88 54000000 nop; not filled. 8627 00007d8c 23bdfff8 addi r29,r29,#-8 8628 00007d90 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8629 00007d94 24421f50 addui r2,r2,(_debugstr)&0xffff 8630 00007d98 afa20000 sw (r29),r2 8631 00007d9c 20150069 addi r21,r0,#105 8632 00007da0 afb50004 sw 4(r29),r21 8633 00007da4 0fffcc90 jal _dindex 8634 00007da8 54000000 nop; not filled. 8635 00007dac 23bd0008 addi r29,r29,#8 8636 00007db0 64210000 snei r1,r1,#0 8637 00007db4 1420002c bnez r1,L362_LF6 8638 00007db8 54000000 nop; not filled. 8639 00007dbc 23bdfff8 addi r29,r29,#-8 8640 00007dc0 afa20000 sw (r29),r2 8641 00007dc4 2015002b addi r21,r0,#43 8642 00007dc8 afb50004 sw 4(r29),r21 8643 00007dcc 0fffcc68 jal _dindex 8644 00007dd0 54000000 nop; not filled. 8645 00007dd4 23bd0008 addi r29,r29,#8 8646 00007dd8 64210000 snei r1,r1,#0 8647 00007ddc 10200020 beqz r1,L361_LF6 8648 00007de0 54000000 nop; not filled. 8649 00007de4 L362_LF6: 8650 00007de4 23bdfff8 addi r29,r29,#-8 8651 00007de8 3c150001 lhi r21,((LC51_LF6)>>16)&0xffff 8652 00007dec 26b51df8 addui r21,r21,(LC51_LF6)&0xffff 8653 00007df0 afb50000 sw (r29),r21 8654 00007df4 0c00441c jal _printf 8655 00007df8 54000000 nop; not filled. 8656 00007dfc 23bd0008 addi r29,r29,#8 8657 00007e00 L361_LF6: 8658 00007e00 0fffb96c jal _MemoryModuleInit 8659 00007e04 54000000 nop; not filled. 8660 00007e08 23bdfff8 addi r29,r29,#-8 8661 00007e0c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8662 00007e10 24421f50 addui r2,r2,(_debugstr)&0xffff 8663 00007e14 afa20000 sw (r29),r2 8664 00007e18 20150069 addi r21,r0,#105 8665 00007e1c afb50004 sw 4(r29),r21 8666 00007e20 0fffcc14 jal _dindex 8667 00007e24 54000000 nop; not filled. 8668 00007e28 23bd0008 addi r29,r29,#8 8669 00007e2c 64210000 snei r1,r1,#0 8670 00007e30 1420002c bnez r1,L364_LF6 8671 00007e34 54000000 nop; not filled. 8672 00007e38 23bdfff8 addi r29,r29,#-8 8673 00007e3c afa20000 sw (r29),r2 8674 00007e40 2015002b addi r21,r0,#43 8675 00007e44 afb50004 sw 4(r29),r21 8676 00007e48 0fffcbec jal _dindex 8677 00007e4c 54000000 nop; not filled. 8678 00007e50 23bd0008 addi r29,r29,#8 8679 00007e54 64210000 snei r1,r1,#0 8680 00007e58 10200020 beqz r1,L363_LF6 8681 00007e5c 54000000 nop; not filled. 8682 00007e60 L364_LF6: 8683 00007e60 23bdfff8 addi r29,r29,#-8 8684 00007e64 3c150001 lhi r21,((LC52_LF6)>>16)&0xffff 8685 00007e68 26b51e14 addui r21,r21,(LC52_LF6)&0xffff 8686 00007e6c afb50000 sw (r29),r21 8687 00007e70 0c0043a0 jal _printf 8688 00007e74 54000000 nop; not filled. 8689 00007e78 23bd0008 addi r29,r29,#8 8690 00007e7c L363_LF6: 8691 00007e7c 0fffd4bc jal _ProcessModuleInit 8692 00007e80 54000000 nop; not filled. 8693 00007e84 23bdfff8 addi r29,r29,#-8 8694 00007e88 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8695 00007e8c 24421f50 addui r2,r2,(_debugstr)&0xffff 8696 00007e90 afa20000 sw (r29),r2 8697 00007e94 20150069 addi r21,r0,#105 8698 00007e98 afb50004 sw 4(r29),r21 8699 00007e9c 0fffcb98 jal _dindex 8700 00007ea0 54000000 nop; not filled. 8701 00007ea4 23bd0008 addi r29,r29,#8 8702 00007ea8 64210000 snei r1,r1,#0 8703 00007eac 1420002c bnez r1,L366_LF6 8704 00007eb0 54000000 nop; not filled. 8705 00007eb4 23bdfff8 addi r29,r29,#-8 8706 00007eb8 afa20000 sw (r29),r2 8707 00007ebc 2015002b addi r21,r0,#43 8708 00007ec0 afb50004 sw 4(r29),r21 8709 00007ec4 0fffcb70 jal _dindex 8710 00007ec8 54000000 nop; not filled. 8711 00007ecc 23bd0008 addi r29,r29,#8 8712 00007ed0 64210000 snei r1,r1,#0 8713 00007ed4 10200020 beqz r1,L365_LF6 8714 00007ed8 54000000 nop; not filled. 8715 00007edc L366_LF6: 8716 00007edc 23bdfff8 addi r29,r29,#-8 8717 00007ee0 3c150001 lhi r21,((LC53_LF6)>>16)&0xffff 8718 00007ee4 26b51e30 addui r21,r21,(LC53_LF6)&0xffff 8719 00007ee8 afb50000 sw (r29),r21 8720 00007eec 0c004324 jal _printf 8721 00007ef0 54000000 nop; not filled. 8722 00007ef4 23bd0008 addi r29,r29,#8 8723 00007ef8 L365_LF6: 8724 00007ef8 0fff989c jal _ShareModuleInit 8725 00007efc 54000000 nop; not filled. 8726 00007f00 23bdfff8 addi r29,r29,#-8 8727 00007f04 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8728 00007f08 24421f50 addui r2,r2,(_debugstr)&0xffff 8729 00007f0c afa20000 sw (r29),r2 8730 00007f10 20150069 addi r21,r0,#105 8731 00007f14 afb50004 sw 4(r29),r21 8732 00007f18 0fffcb1c jal _dindex 8733 00007f1c 54000000 nop; not filled. 8734 00007f20 23bd0008 addi r29,r29,#8 8735 00007f24 64210000 snei r1,r1,#0 8736 00007f28 1420002c bnez r1,L368_LF6 8737 00007f2c 54000000 nop; not filled. 8738 00007f30 23bdfff8 addi r29,r29,#-8 8739 00007f34 afa20000 sw (r29),r2 8740 00007f38 2015002b addi r21,r0,#43 8741 00007f3c afb50004 sw 4(r29),r21 8742 00007f40 0fffcaf4 jal _dindex 8743 00007f44 54000000 nop; not filled. 8744 00007f48 23bd0008 addi r29,r29,#8 8745 00007f4c 64210000 snei r1,r1,#0 8746 00007f50 10200020 beqz r1,L367_LF6 8747 00007f54 54000000 nop; not filled. 8748 00007f58 L368_LF6: 8749 00007f58 23bdfff8 addi r29,r29,#-8 8750 00007f5c 3c150001 lhi r21,((LC54_LF6)>>16)&0xffff 8751 00007f60 26b51e50 addui r21,r21,(LC54_LF6)&0xffff 8752 00007f64 afb50000 sw (r29),r21 8753 00007f68 0c0042a8 jal _printf 8754 00007f6c 54000000 nop; not filled. 8755 00007f70 23bd0008 addi r29,r29,#8 8756 00007f74 L367_LF6: 8757 00007f74 0c0012fc jal _SynchModuleInit 8758 00007f78 54000000 nop; not filled. 8759 00007f7c 23bdfff8 addi r29,r29,#-8 8760 00007f80 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8761 00007f84 24421f50 addui r2,r2,(_debugstr)&0xffff 8762 00007f88 afa20000 sw (r29),r2 8763 00007f8c 20150069 addi r21,r0,#105 8764 00007f90 afb50004 sw 4(r29),r21 8765 00007f94 0fffcaa0 jal _dindex 8766 00007f98 54000000 nop; not filled. 8767 00007f9c 23bd0008 addi r29,r29,#8 8768 00007fa0 64210000 snei r1,r1,#0 8769 00007fa4 1420002c bnez r1,L370_LF6 8770 00007fa8 54000000 nop; not filled. 8771 00007fac 23bdfff8 addi r29,r29,#-8 8772 00007fb0 afa20000 sw (r29),r2 8773 00007fb4 2015002b addi r21,r0,#43 8774 00007fb8 afb50004 sw 4(r29),r21 8775 00007fbc 0fffca78 jal _dindex 8776 00007fc0 54000000 nop; not filled. 8777 00007fc4 23bd0008 addi r29,r29,#8 8778 00007fc8 64210000 snei r1,r1,#0 8779 00007fcc 10200020 beqz r1,L369_LF6 8780 00007fd0 54000000 nop; not filled. 8781 00007fd4 L370_LF6: 8782 00007fd4 23bdfff8 addi r29,r29,#-8 8783 00007fd8 3c150001 lhi r21,((LC55_LF6)>>16)&0xffff 8784 00007fdc 26b51e74 addui r21,r21,(LC55_LF6)&0xffff 8785 00007fe0 afb50000 sw (r29),r21 8786 00007fe4 0c00422c jal _printf 8787 00007fe8 54000000 nop; not filled. 8788 00007fec 23bd0008 addi r29,r29,#8 8789 00007ff0 L369_LF6: 8790 00007ff0 0c0020ac jal _KbdModuleInit 8791 00007ff4 54000000 nop; not filled. 8792 00007ff8 23bdfff8 addi r29,r29,#-8 8793 00007ffc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8794 00008000 24421f50 addui r2,r2,(_debugstr)&0xffff 8795 00008004 afa20000 sw (r29),r2 8796 00008008 20150069 addi r21,r0,#105 8797 0000800c afb50004 sw 4(r29),r21 8798 00008010 0fffca24 jal _dindex 8799 00008014 54000000 nop; not filled. 8800 00008018 23bd0008 addi r29,r29,#8 8801 0000801c 64210000 snei r1,r1,#0 8802 00008020 1420002c bnez r1,L372_LF6 8803 00008024 54000000 nop; not filled. 8804 00008028 23bdfff8 addi r29,r29,#-8 8805 0000802c afa20000 sw (r29),r2 8806 00008030 2015002b addi r21,r0,#43 8807 00008034 afb50004 sw 4(r29),r21 8808 00008038 0fffc9fc jal _dindex 8809 0000803c 54000000 nop; not filled. 8810 00008040 23bd0008 addi r29,r29,#8 8811 00008044 64210000 snei r1,r1,#0 8812 00008048 10200020 beqz r1,L371_LF6 8813 0000804c 54000000 nop; not filled. 8814 00008050 L372_LF6: 8815 00008050 23bdfff8 addi r29,r29,#-8 8816 00008054 3c150001 lhi r21,((LC56_LF6)>>16)&0xffff 8817 00008058 26b51ea0 addui r21,r21,(LC56_LF6)&0xffff 8818 0000805c afb50000 sw (r29),r21 8819 00008060 0c0041b0 jal _printf 8820 00008064 54000000 nop; not filled. 8821 00008068 23bd0008 addi r29,r29,#8 8822 0000806c L371_LF6: 8823 0000806c 23c2ff80 addi r2,r30,#-128 8824 00008070 23c3ffe3 addi r3,r30,#-29 8825 00008074 L376_LF6: 8826 00008074 20150061 addi r21,r0,(#0x61)&0xff 8827 00008078 a0550000 sb (r2),r21 8828 0000807c 20420001 addi r2,r2,#1 8829 00008080 0043082c sle r1,r2,r3 8830 00008084 1420ffec bnez r1,L376_LF6 8831 00008088 54000000 nop; not filled. 8832 0000808c 23bdfff8 addi r29,r29,#-8 8833 00008090 3c150001 lhi r21,((LC57_LF6)>>16)&0xffff 8834 00008094 26b51ec0 addui r21,r21,(LC57_LF6)&0xffff 8835 00008098 afb50000 sw (r29),r21 8836 0000809c 20150002 addi r21,r0,#2 8837 000080a0 afb50004 sw 4(r29),r21 8838 000080a4 0fffa2f4 jal _FsOpen 8839 000080a8 54000000 nop; not filled. 8840 000080ac 00014820 add r9,r0,r1 8841 000080b0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8842 000080b4 24421f50 addui r2,r2,(_debugstr)&0xffff 8843 000080b8 afa20000 sw (r29),r2 8844 000080bc 20150069 addi r21,r0,#105 8845 000080c0 afb50004 sw 4(r29),r21 8846 000080c4 0fffc970 jal _dindex 8847 000080c8 54000000 nop; not filled. 8848 000080cc 23bd0008 addi r29,r29,#8 8849 000080d0 64210000 snei r1,r1,#0 8850 000080d4 1420002c bnez r1,L379_LF6 8851 000080d8 54000000 nop; not filled. 8852 000080dc 23bdfff8 addi r29,r29,#-8 8853 000080e0 afa20000 sw (r29),r2 8854 000080e4 2015002b addi r21,r0,#43 8855 000080e8 afb50004 sw 4(r29),r21 8856 000080ec 0fffc948 jal _dindex 8857 000080f0 54000000 nop; not filled. 8858 000080f4 23bd0008 addi r29,r29,#8 8859 000080f8 64210000 snei r1,r1,#0 8860 000080fc 10200024 beqz r1,L378_LF6 8861 00008100 54000000 nop; not filled. 8862 00008104 L379_LF6: 8863 00008104 23bdfff8 addi r29,r29,#-8 8864 00008108 3c150001 lhi r21,((LC58_LF6)>>16)&0xffff 8865 0000810c 26b51ec4 addui r21,r21,(LC58_LF6)&0xffff 8866 00008110 afb50000 sw (r29),r21 8867 00008114 afa90004 sw 4(r29),r9 8868 00008118 0c0040f8 jal _printf 8869 0000811c 54000000 nop; not filled. 8870 00008120 23bd0008 addi r29,r29,#8 8871 00008124 L378_LF6: 8872 00008124 23bdfff0 addi r29,r29,#-16 8873 00008128 afa90000 sw (r29),r9 8874 0000812c 20150000 addi r21,r0,#0 8875 00008130 afb50004 sw 4(r29),r21 8876 00008134 afb50008 sw 8(r29),r21 8877 00008138 0fffa8bc jal _FsSeek 8878 0000813c 54000000 nop; not filled. 8879 00008140 afa90000 sw (r29),r9 8880 00008144 23c1ff80 addi r1,r30,#-128 8881 00008148 afa10004 sw 4(r29),r1 8882 0000814c 20150050 addi r21,r0,#80 8883 00008150 afb50008 sw 8(r29),r21 8884 00008154 0fffa7a4 jal _FsWrite 8885 00008158 54000000 nop; not filled. 8886 0000815c afa90000 sw (r29),r9 8887 00008160 0fffa594 jal _FsClose 8888 00008164 54000000 nop; not filled. 8889 00008168 23bd0010 addi r29,r29,#16 8890 0000816c 66010000 snei r1,r16,#0 8891 00008170 102000c4 beqz r1,L380_LF6 8892 00008174 54000000 nop; not filled. 8893 00008178 00134820 add r9,r0,r19 8894 0000817c 026e082a slt r1,r19,r14 8895 00008180 10200044 beqz r1,L382_LF6 8896 00008184 54000000 nop; not filled. 8897 00008188 23c4fff8 addi r4,r30,#-8 8898 0000818c 51210002 slli r1,r9,#0x2 8899 00008190 00341820 add r3,r1,r20 8900 00008194 L386_LF6: 8901 00008194 01331022 sub r2,r9,r19 8902 00008198 7041000a slei r1,r2,#10 8903 0000819c 10200028 beqz r1,L382_LF6 8904 000081a0 54000000 nop; not filled. 8905 000081a4 50410002 slli r1,r2,#0x2 8906 000081a8 00240820 add r1,r1,r4 8907 000081ac 8c750000 lw r21,(r3) 8908 000081b0 ac35ff58 sw -168(r1),r21 8909 000081b4 20630004 addi r3,r3,#4 8910 000081b8 21290001 addi r9,r9,#1 8911 000081bc 012e082a slt r1,r9,r14 8912 000081c0 1420ffd0 bnez r1,L386_LF6 8913 000081c4 54000000 nop; not filled. 8914 000081c8 L382_LF6: 8915 000081c8 23bdffd0 addi r29,r29,#-48 8916 000081cc 8fd5ff50 lw r21,-176(r30) 8917 000081d0 afb50000 sw (r29),r21 8918 000081d4 8fc1ff54 lw r1,-172(r30) 8919 000081d8 afa10004 sw 4(r29),r1 8920 000081dc 8fd5ff58 lw r21,-168(r30) 8921 000081e0 afb50008 sw 8(r29),r21 8922 000081e4 8fd5ff5c lw r21,-164(r30) 8923 000081e8 afb5000c sw 12(r29),r21 8924 000081ec 8fd5ff60 lw r21,-160(r30) 8925 000081f0 afb50010 sw 16(r29),r21 8926 000081f4 8fd5ff64 lw r21,-156(r30) 8927 000081f8 afb50014 sw 20(r29),r21 8928 000081fc 8fd5ff68 lw r21,-152(r30) 8929 00008200 afb50018 sw 24(r29),r21 8930 00008204 8fd5ff6c lw r21,-148(r30) 8931 00008208 afb5001c sw 28(r29),r21 8932 0000820c 8fd5ff70 lw r21,-144(r30) 8933 00008210 afb50020 sw 32(r29),r21 8934 00008214 8fd5ff74 lw r21,-140(r30) 8935 00008218 afb50024 sw 36(r29),r21 8936 0000821c 8fd5ff78 lw r21,-136(r30) 8937 00008220 afb50028 sw 40(r29),r21 8938 00008224 8fd5ff7c lw r21,-132(r30) 8939 00008228 afb5002c sw 44(r29),r21 8940 0000822c 0c0002f0 jal _process_create 8941 00008230 54000000 nop; not filled. 8942 00008234 23bd0030 addi r29,r29,#48 8943 00008238 L380_LF6: 8944 00008238 0c003ec0 jal _SysprocCreateProcesses 8945 0000823c 54000000 nop; not filled. 8946 00008240 23bdfff8 addi r29,r29,#-8 8947 00008244 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8948 00008248 24421f50 addui r2,r2,(_debugstr)&0xffff 8949 0000824c afa20000 sw (r29),r2 8950 00008250 20150069 addi r21,r0,#105 8951 00008254 afb50004 sw 4(r29),r21 8952 00008258 0fffc7dc jal _dindex 8953 0000825c 54000000 nop; not filled. 8954 00008260 23bd0008 addi r29,r29,#8 8955 00008264 64210000 snei r1,r1,#0 8956 00008268 1420002c bnez r1,L388_LF6 8957 0000826c 54000000 nop; not filled. 8958 00008270 23bdfff8 addi r29,r29,#-8 8959 00008274 afa20000 sw (r29),r2 8960 00008278 2015002b addi r21,r0,#43 8961 0000827c afb50004 sw 4(r29),r21 8962 00008280 0fffc7b4 jal _dindex 8963 00008284 54000000 nop; not filled. 8964 00008288 23bd0008 addi r29,r29,#8 8965 0000828c 64210000 snei r1,r1,#0 8966 00008290 10200020 beqz r1,L387_LF6 8967 00008294 54000000 nop; not filled. 8968 00008298 L388_LF6: 8969 00008298 23bdfff8 addi r29,r29,#-8 8970 0000829c 3c150001 lhi r21,((LC59_LF6)>>16)&0xffff 8971 000082a0 26b51edc addui r21,r21,(LC59_LF6)&0xffff 8972 000082a4 afb50000 sw (r29),r21 8973 000082a8 0c003f68 jal _printf 8974 000082ac 54000000 nop; not filled. 8975 000082b0 23bd0008 addi r29,r29,#8 8976 000082b4 L387_LF6: 8977 000082b4 23bdfff8 addi r29,r29,#-8 8978 000082b8 3c030001 lhi r3,((_processQuantum_LF6)>>16)&0xffff 8979 000082bc 246315cc addui r3,r3,(_processQuantum_LF6)&0xffff 8980 000082c0 8c750000 lw r21,(r3) 8981 000082c4 afb50000 sw (r29),r21 8982 000082c8 0c001da0 jal _TimerSet 8983 000082cc 54000000 nop; not filled. 8984 000082d0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 8985 000082d4 24421f50 addui r2,r2,(_debugstr)&0xffff 8986 000082d8 afa20000 sw (r29),r2 8987 000082dc 20150069 addi r21,r0,#105 8988 000082e0 afb50004 sw 4(r29),r21 8989 000082e4 0fffc750 jal _dindex 8990 000082e8 54000000 nop; not filled. 8991 000082ec 23bd0008 addi r29,r29,#8 8992 000082f0 64210000 snei r1,r1,#0 8993 000082f4 1420002c bnez r1,L390_LF6 8994 000082f8 54000000 nop; not filled. 8995 000082fc 23bdfff8 addi r29,r29,#-8 8996 00008300 afa20000 sw (r29),r2 8997 00008304 2015002b addi r21,r0,#43 8998 00008308 afb50004 sw 4(r29),r21 8999 0000830c 0fffc728 jal _dindex 9000 00008310 54000000 nop; not filled. 9001 00008314 23bd0008 addi r29,r29,#8 9002 00008318 64210000 snei r1,r1,#0 9003 0000831c 10200028 beqz r1,L389_LF6 9004 00008320 54000000 nop; not filled. 9005 00008324 L390_LF6: 9006 00008324 23bdfff8 addi r29,r29,#-8 9007 00008328 3c150001 lhi r21,((LC60_LF6)>>16)&0xffff 9008 0000832c 26b51f10 addui r21,r21,(LC60_LF6)&0xffff 9009 00008330 afb50000 sw (r29),r21 9010 00008334 8c610000 lw r1,(r3) 9011 00008338 afa10004 sw 4(r29),r1 9012 0000833c 0c003ed4 jal _printf 9013 00008340 54000000 nop; not filled. 9014 00008344 23bd0008 addi r29,r29,#8 9015 00008348 L389_LF6: 9016 00008348 0fff8e1c jal _intrreturn 9017 0000834c 54000000 nop; not filled. 9018 00008350 0c003ea8 jal _exitsim 9019 00008354 54000000 nop; not filled. 9020 00008358 0c003eac jal _exit 9021 0000835c 54000000 nop 9022 00008360 .endproc _main 9023 00008360 .align 2 9024 00008360 .proc _GetCurrentPid 9025 00008360 .global _GetCurrentPid 9026 00008360 _GetCurrentPid: 9027 ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. 9028 00008360 afbefffc sw -4(r29),r30; push fp 9029 00008364 001df020 add r30,r0,r29; fp = sp 9030 00008368 afbffff8 sw -8(r29),r31; push ret addr 9031 0000836c 2fbd0010 subui r29,r29,#16; alloc local storage 9032 00008370 afa20000 sw 0(r29),r2 9033 00008374 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 9034 00008378 24212018 addui r1,r1,(_currentPCB)&0xffff 9035 0000837c 8c210000 lw r1,(r1) 9036 00008380 3c1f0001 lhi r31,((_pcbs_LF6)>>16)&0xffff 9037 00008384 27ff204c addui r31,r31,(_pcbs_LF6)&0xffff 9038 00008388 003f1022 sub r2,r1,r31 9039 0000838c 3c01a4fa lhi r1,#-23302 9040 00008390 24214fa5 addui r1,r1,#20389 9041 00008394 00400035 movi2fp f0,r2 9042 00008398 00200835 movi2fp f1,r1 9043 0000839c 0401000e mult f0,f0,f1 9044 000083a0 00000834 movfp2i r1,f0 9045 000083a4 5c210002 srai r1,r1,#0x2 9046 000083a8 8fa20000 lw r2,0(r29) 9047 000083ac 8fdffff8 lw r31,-8(r30) 9048 000083b0 001ee820 add r29,r0,r30 9049 000083b4 8fdefffc lw r30,-4(r30) 9050 000083b8 4be00000 jr r31 9051 000083bc 54000000 nop 9052 000083c0 .endproc _GetCurrentPid 9053 000083c0 .align 2 9054 000083c0 .proc _findpid 9055 000083c0 .global _findpid 9056 000083c0 _findpid: 9057 ; Function 'findpid'; 0 bytes of locals, 1 regs to save. 9058 000083c0 afbefffc sw -4(r29),r30; push fp 9059 000083c4 001df020 add r30,r0,r29; fp = sp 9060 000083c8 afbffff8 sw -8(r29),r31; push ret addr 9061 000083cc 2fbd0010 subui r29,r29,#16; alloc local storage 9062 000083d0 afa20000 sw 0(r29),r2 9063 000083d4 8fc10000 lw r1,(r30) 9064 000083d8 3c1f0001 lhi r31,((_pcbs_LF6)>>16)&0xffff 9065 000083dc 27ff204c addui r31,r31,(_pcbs_LF6)&0xffff 9066 000083e0 003f1022 sub r2,r1,r31 9067 000083e4 3c01a4fa lhi r1,#-23302 9068 000083e8 24214fa5 addui r1,r1,#20389 9069 000083ec 00400035 movi2fp f0,r2 9070 000083f0 00200835 movi2fp f1,r1 9071 000083f4 0401000e mult f0,f0,f1 9072 000083f8 00000834 movfp2i r1,f0 9073 000083fc 5c210002 srai r1,r1,#0x2 9074 00008400 8fa20000 lw r2,0(r29) 9075 00008404 8fdffff8 lw r31,-8(r30) 9076 00008408 001ee820 add r29,r0,r30 9077 0000840c 8fdefffc lw r30,-4(r30) 9078 00008410 4be00000 jr r31 9079 00008414 54000000 nop 9080 00008418 .endproc _findpid 9081 00008418 .data 9082 00011f46 .align 2 9083 00011f48 _str68_LF6: 9084 00011f48 .space 4 9085 00011f4c .align 2 9086 00011f4c _location69_LF6: 9087 00011f4c 00000000 .word 0 9088 00011f50 .text 9089 00008418 .align 2 9090 00008418 .proc _get_argument 9091 00008418 .global _get_argument 9092 00008418 _get_argument: 9093 ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. 9094 00008418 afbefffc sw -4(r29),r30; push fp 9095 0000841c 001df020 add r30,r0,r29; fp = sp 9096 00008420 afbffff8 sw -8(r29),r31; push ret addr 9097 00008424 2fbd0018 subui r29,r29,#24; alloc local storage 9098 00008428 afa20000 sw 0(r29),r2 9099 0000842c afa30004 sw 4(r29),r3 9100 00008430 afa40008 sw 8(r29),r4 9101 00008434 afa5000c sw 12(r29),r5 9102 00008438 8fc20000 lw r2,(r30) 9103 0000843c 64410000 snei r1,r2,#0 9104 00008440 10200020 beqz r1,L407_LF6 9105 00008444 54000000 nop; not filled. 9106 00008448 3c010001 lhi r1,((_str68_LF6)>>16)&0xffff 9107 0000844c 24211f48 addui r1,r1,(_str68_LF6)&0xffff 9108 00008450 ac220000 sw (r1),r2 9109 00008454 3c010001 lhi r1,((_location69_LF6)>>16)&0xffff 9110 00008458 24211f4c addui r1,r1,(_location69_LF6)&0xffff 9111 0000845c 20050000 addi r5,r0,#0 9112 00008460 ac250000 sw (r1),r5 9113 00008464 L407_LF6: 9114 00008464 3c1f0001 lhi r31,((_location69_LF6)>>16)&0xffff 9115 00008468 27ff1f4c addui r31,r31,(_location69_LF6)&0xffff 9116 0000846c 8fe30000 lw r3,(r31) 9117 00008470 3c010001 lhi r1,((_str68_LF6)>>16)&0xffff 9118 00008474 24211f48 addui r1,r1,(_str68_LF6)&0xffff 9119 00008478 8c220000 lw r2,(r1) 9120 0000847c 00430820 add r1,r2,r3 9121 00008480 90210000 lbu r1,(r1) 9122 00008484 64210000 snei r1,r1,#0 9123 00008488 10200010 beqz r1,L409_LF6 9124 0000848c 54000000 nop; not filled. 9125 00008490 6c610062 sgti r1,r3,#98 9126 00008494 10200020 beqz r1,L408_LF6 9127 00008498 54000000 nop; not filled. 9128 0000849c L409_LF6: 9129 0000849c 20010000 addi r1,r0,#0 9130 000084a0 08000058 j L416_LF6 9131 000084a4 54000000 nop; not filled. 9132 000084a8 L417_LF6: 9133 000084a8 23e10001 addi r1,r31,#1 9134 000084ac ac410000 sw (r2),r1 9135 000084b0 08000044 j L411_LF6 9136 000084b4 54000000 nop; not filled. 9137 000084b8 L408_LF6: 9138 000084b8 70610063 slei r1,r3,#99 9139 000084bc 10200038 beqz r1,L411_LF6 9140 000084c0 54000000 nop; not filled. 9141 000084c4 00022020 add r4,r0,r2 9142 000084c8 001f1020 add r2,r0,r31 9143 000084cc L413_LF6: 9144 000084cc 8c5f0000 lw r31,(r2) 9145 000084d0 009f0820 add r1,r4,r31 9146 000084d4 90210000 lbu r1,(r1) 9147 000084d8 64210000 snei r1,r1,#0 9148 000084dc 1020ffc8 beqz r1,L417_LF6 9149 000084e0 54000000 nop; not filled. 9150 000084e4 23e10001 addi r1,r31,#1 9151 000084e8 ac410000 sw (r2),r1 9152 000084ec 70210063 slei r1,r1,#99 9153 000084f0 1420ffd8 bnez r1,L413_LF6 9154 000084f4 54000000 nop; not filled. 9155 000084f8 L411_LF6: 9156 000084f8 00030820 add r1,r0,r3 9157 000084fc L416_LF6: 9158 000084fc 8fa20000 lw r2,0(r29) 9159 00008500 8fa30004 lw r3,4(r29) 9160 00008504 8fa40008 lw r4,8(r29) 9161 00008508 8fa5000c lw r5,12(r29) 9162 0000850c 8fdffff8 lw r31,-8(r30) 9163 00008510 001ee820 add r29,r0,r30 9164 00008514 8fdefffc lw r30,-4(r30) 9165 00008518 4be00000 jr r31 9166 0000851c 54000000 nop 9167 00008520 .endproc _get_argument 9168 00008520 .align 2 9169 00008520 .proc _process_create 9170 00008520 .global _process_create 9171 00008520 _process_create: 9172 ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. 9173 00008520 afbefffc sw -4(r29),r30; push fp 9174 00008524 001df020 add r30,r0,r29; fp = sp 9175 00008528 afbffff8 sw -8(r29),r31; push ret addr 9176 0000852c 2fbd0408 subui r29,r29,#1032; alloc local storage 9177 00008530 afa20000 sw 0(r29),r2 9178 00008534 afa30004 sw 4(r29),r3 9179 00008538 afa40008 sw 8(r29),r4 9180 0000853c afa5000c sw 12(r29),r5 9181 00008540 afa60010 sw 16(r29),r6 9182 00008544 20040000 addi r4,r0,#0 9183 00008548 8fc10000 lw r1,(r30) 9184 0000854c 64210000 snei r1,r1,#0 9185 00008550 1020005c beqz r1,L420_LF6 9186 00008554 54000000 nop; not filled. 9187 00008558 23c5fc10 addi r5,r30,#-1008 9188 0000855c 001ef820 add r31,r0,r30 9189 00008560 L422_LF6: 9190 00008560 20020000 addi r2,r0,#0 9191 00008564 00851820 add r3,r4,r5 9192 00008568 L423_LF6: 9193 00008568 8fe10000 lw r1,(r31) 9194 0000856c 00220820 add r1,r1,r2 9195 00008570 80210000 lb r1,(r1) 9196 00008574 a0610000 sb (r3),r1 9197 00008578 20420001 addi r2,r2,#1 9198 0000857c 20630001 addi r3,r3,#1 9199 00008580 20840001 addi r4,r4,#1 9200 00008584 8fe10000 lw r1,(r31) 9201 00008588 00410820 add r1,r2,r1 9202 0000858c 9021ffff lbu r1,-1(r1) 9203 00008590 64210000 snei r1,r1,#0 9204 00008594 1420ffd0 bnez r1,L423_LF6 9205 00008598 54000000 nop; not filled. 9206 0000859c 23ff0004 addi r31,r31,#4 9207 000085a0 8fe10000 lw r1,(r31) 9208 000085a4 64210000 snei r1,r1,#0 9209 000085a8 1420ffb4 bnez r1,L422_LF6 9210 000085ac 54000000 nop; not filled. 9211 000085b0 L420_LF6: 9212 000085b0 23c3fc10 addi r3,r30,#-1008 9213 000085b4 00641020 add r2,r3,r4 9214 000085b8 23c1fc11 addi r1,r30,#-1007 9215 000085bc 00240820 add r1,r1,r4 9216 000085c0 20060000 addi r6,r0,(#0x0)&0xff 9217 000085c4 a0260000 sb (r1),r6 9218 000085c8 a0460000 sb (r2),r6 9219 000085cc 23bdfff0 addi r29,r29,#-16 9220 000085d0 20060000 addi r6,r0,#0 9221 000085d4 afa60000 sw (r29),r6 9222 000085d8 afa30004 sw 4(r29),r3 9223 000085dc 8fc60000 lw r6,(r30) 9224 000085e0 afa60008 sw 8(r29),r6 9225 000085e4 20060001 addi r6,r0,#1 9226 000085e8 afa6000c sw 12(r29),r6 9227 000085ec 0fffdb30 jal _ProcessFork 9228 000085f0 54000000 nop; not filled. 9229 000085f4 23bd0010 addi r29,r29,#16 9230 000085f8 8fa20000 lw r2,0(r29) 9231 000085fc 8fa30004 lw r3,4(r29) 9232 00008600 8fa40008 lw r4,8(r29) 9233 00008604 8fa5000c lw r5,12(r29) 9234 00008608 8fa60010 lw r6,16(r29) 9235 0000860c 8fdffff8 lw r31,-8(r30) 9236 00008610 001ee820 add r29,r0,r30 9237 00008614 8fdefffc lw r30,-4(r30) 9238 00008618 4be00000 jr r31 9239 0000861c 54000000 nop 9240 00008620 .endproc _process_create 9241 00008620 .data 9242 00011f50 .global _debugstr 9243 00011f50 _debugstr: 9244 00011f50 .space 200 9245 00012018 .align 2 9246 00012018 .global _currentPCB 9247 00012018 _currentPCB: 9248 00012018 .space 4 9249 0001201c .align 2 9250 0001201c _freepcbs_LF6: 9251 0001201c .space 12 9252 00012028 .align 2 9253 00012028 _runQueue_LF6: 9254 00012028 .space 12 9255 00012034 .align 2 9256 00012034 _waitQueue_LF6: 9257 00012034 .space 12 9258 00012040 .align 2 9259 00012040 _zombieQueue_LF6: 9260 00012040 .space 12 9261 0001204c .align 2 9262 0001204c _pcbs_LF6: 9263 0001204c .space 5760 9264 000136cc .text 9265 00008620 .align 2 9266 00008620 .proc _ProcessExit_LF6 9267 00008620 _ProcessExit_LF6: 9268 ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. 9269 00008620 afbefffc sw -4(r29),r30; push fp 9270 00008624 001df020 add r30,r0,r29; fp = sp 9271 00008628 afbffff8 sw -8(r29),r31; push ret addr 9272 0000862c 2fbd0008 subui r29,r29,#8; alloc local storage 9273 00008630 0c003bd4 jal _exit 9274 00008634 54000000 nop; not filled. 9275 00008638 8fdffff8 lw r31,-8(r30) 9276 0000863c 001ee820 add r29,r0,r30 9277 00008640 8fdefffc lw r30,-4(r30) 9278 00008644 4be00000 jr r31 9279 00008648 54000000 nop 9280 0000864c .endproc _ProcessExit_LF6 9281 ; Compiled by GCC 9283 0000864c .align 2 9284 0000864c .proc _isspace 9285 0000864c .global _isspace 9286 0000864c _isspace: 9287 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 9288 0000864c afbefffc sw -4(r29),r30; push fp 9289 00008650 001df020 add r30,r0,r29; fp = sp 9290 00008654 afbffff8 sw -8(r29),r31; push ret addr 9291 00008658 2fbd0010 subui r29,r29,#16; alloc local storage 9292 0000865c afa20000 sw 0(r29),r2 9293 00008660 83c20003 lb r2,3(r30) 9294 00008664 201f0000 addi r31,r0,#0 9295 00008668 304100ff andi r1,r2,#0x00ff 9296 0000866c 60210020 seqi r1,r1,#32 9297 00008670 14200018 bnez r1,L6_LF7 9298 00008674 54000000 nop; not filled. 9299 00008678 2041fff7 addi r1,r2,#-9 9300 0000867c 302100ff andi r1,r1,#0x00ff 9301 00008680 70210001 sleui r1,r1,#1 9302 00008684 10200008 beqz r1,L5_LF7 9303 00008688 54000000 nop; not filled. 9304 0000868c L6_LF7: 9305 0000868c 201f0001 addi r31,r0,#1 9306 00008690 L5_LF7: 9307 00008690 001f0820 add r1,r0,r31 9308 00008694 8fa20000 lw r2,0(r29) 9309 00008698 8fdffff8 lw r31,-8(r30) 9310 0000869c 001ee820 add r29,r0,r30 9311 000086a0 8fdefffc lw r30,-4(r30) 9312 000086a4 4be00000 jr r31 9313 000086a8 54000000 nop 9314 000086ac .endproc _isspace 9315 000086ac .align 2 9316 000086ac .proc _isxdigit 9317 000086ac .global _isxdigit 9318 000086ac _isxdigit: 9319 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 9320 000086ac afbefffc sw -4(r29),r30; push fp 9321 000086b0 001df020 add r30,r0,r29; fp = sp 9322 000086b4 afbffff8 sw -8(r29),r31; push ret addr 9323 000086b8 2fbd0010 subui r29,r29,#16; alloc local storage 9324 000086bc afa20000 sw 0(r29),r2 9325 000086c0 83df0003 lb r31,3(r30) 9326 000086c4 20020000 addi r2,r0,#0 9327 000086c8 23e1ffd0 addi r1,r31,#-48 9328 000086cc 302100ff andi r1,r1,#0x00ff 9329 000086d0 70210009 sleui r1,r1,#9 9330 000086d4 14200028 bnez r1,L12_LF7 9331 000086d8 54000000 nop; not filled. 9332 000086dc 23e1ff9f addi r1,r31,#-97 9333 000086e0 302100ff andi r1,r1,#0x00ff 9334 000086e4 70210005 sleui r1,r1,#5 9335 000086e8 14200014 bnez r1,L12_LF7 9336 000086ec 54000000 nop; not filled. 9337 000086f0 33e100ff andi r1,r31,#0x00ff 9338 000086f4 64210041 snei r1,r1,#65 9339 000086f8 14200008 bnez r1,L11_LF7 9340 000086fc 54000000 nop; not filled. 9341 00008700 L12_LF7: 9342 00008700 20020001 addi r2,r0,#1 9343 00008704 L11_LF7: 9344 00008704 00020820 add r1,r0,r2 9345 00008708 8fa20000 lw r2,0(r29) 9346 0000870c 8fdffff8 lw r31,-8(r30) 9347 00008710 001ee820 add r29,r0,r30 9348 00008714 8fdefffc lw r30,-4(r30) 9349 00008718 4be00000 jr r31 9350 0000871c 54000000 nop 9351 00008720 .endproc _isxdigit 9352 00008720 .align 2 9353 00008720 .proc _DisableIntrs 9354 00008720 .global _DisableIntrs 9355 00008720 _DisableIntrs: 9356 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 9357 00008720 afbefffc sw -4(r29),r30; push fp 9358 00008724 001df020 add r30,r0,r29; fp = sp 9359 00008728 afbffff8 sw -8(r29),r31; push ret addr 9360 0000872c 2fbd0010 subui r29,r29,#16; alloc local storage 9361 00008730 afa20000 sw 0(r29),r2 9362 00008734 23bdfff8 addi r29,r29,#-8 9363 00008738 2002000f addi r2,r0,#15 9364 0000873c afa20000 sw (r29),r2 9365 00008740 0fff8b44 jal _SetIntrs 9366 00008744 54000000 nop; not filled. 9367 00008748 23bd0008 addi r29,r29,#8 9368 0000874c 8fa20000 lw r2,0(r29) 9369 00008750 8fdffff8 lw r31,-8(r30) 9370 00008754 001ee820 add r29,r0,r30 9371 00008758 8fdefffc lw r30,-4(r30) 9372 0000875c 4be00000 jr r31 9373 00008760 54000000 nop 9374 00008764 .endproc _DisableIntrs 9375 00008764 .align 2 9376 00008764 .proc _EnableIntrs 9377 00008764 .global _EnableIntrs 9378 00008764 _EnableIntrs: 9379 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 9380 00008764 afbefffc sw -4(r29),r30; push fp 9381 00008768 001df020 add r30,r0,r29; fp = sp 9382 0000876c afbffff8 sw -8(r29),r31; push ret addr 9383 00008770 2fbd0010 subui r29,r29,#16; alloc local storage 9384 00008774 afa20000 sw 0(r29),r2 9385 00008778 23bdfff8 addi r29,r29,#-8 9386 0000877c 20020000 addi r2,r0,#0 9387 00008780 afa20000 sw (r29),r2 9388 00008784 0fff8b00 jal _SetIntrs 9389 00008788 54000000 nop; not filled. 9390 0000878c 23bd0008 addi r29,r29,#8 9391 00008790 8fa20000 lw r2,0(r29) 9392 00008794 8fdffff8 lw r31,-8(r30) 9393 00008798 001ee820 add r29,r0,r30 9394 0000879c 8fdefffc lw r30,-4(r30) 9395 000087a0 4be00000 jr r31 9396 000087a4 54000000 nop 9397 000087a8 .endproc _EnableIntrs 9398 000087a8 .align 2 9399 000087a8 .proc _RestoreIntrs 9400 000087a8 .global _RestoreIntrs 9401 000087a8 _RestoreIntrs: 9402 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 9403 000087a8 afbefffc sw -4(r29),r30; push fp 9404 000087ac 001df020 add r30,r0,r29; fp = sp 9405 000087b0 afbffff8 sw -8(r29),r31; push ret addr 9406 000087b4 2fbd0010 subui r29,r29,#16; alloc local storage 9407 000087b8 afa20000 sw 0(r29),r2 9408 000087bc 23bdfff8 addi r29,r29,#-8 9409 000087c0 8fc20000 lw r2,(r30) 9410 000087c4 afa20000 sw (r29),r2 9411 000087c8 0fff8abc jal _SetIntrs 9412 000087cc 54000000 nop; not filled. 9413 000087d0 23bd0008 addi r29,r29,#8 9414 000087d4 8fa20000 lw r2,0(r29) 9415 000087d8 8fdffff8 lw r31,-8(r30) 9416 000087dc 001ee820 add r29,r0,r30 9417 000087e0 8fdefffc lw r30,-4(r30) 9418 000087e4 4be00000 jr r31 9419 000087e8 54000000 nop 9420 000087ec .endproc _RestoreIntrs 9421 000087ec .align 2 9422 000087ec .proc _QueueLinkInit 9423 000087ec .global _QueueLinkInit 9424 000087ec _QueueLinkInit: 9425 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 9426 000087ec afbefffc sw -4(r29),r30; push fp 9427 000087f0 001df020 add r30,r0,r29; fp = sp 9428 000087f4 afbffff8 sw -8(r29),r31; push ret addr 9429 000087f8 2fbd0010 subui r29,r29,#16; alloc local storage 9430 000087fc afa20000 sw 0(r29),r2 9431 00008800 8fc10000 lw r1,(r30) 9432 00008804 8fc20004 lw r2,4(r30) 9433 00008808 201f0000 addi r31,r0,#0 9434 0000880c ac3f0000 sw (r1),r31 9435 00008810 ac22000c sw 12(r1),r2 9436 00008814 8fa20000 lw r2,0(r29) 9437 00008818 8fdffff8 lw r31,-8(r30) 9438 0000881c 001ee820 add r29,r0,r30 9439 00008820 8fdefffc lw r30,-4(r30) 9440 00008824 4be00000 jr r31 9441 00008828 54000000 nop 9442 0000882c .endproc _QueueLinkInit 9443 0000882c .align 2 9444 0000882c .proc _QueueNext 9445 0000882c .global _QueueNext 9446 0000882c _QueueNext: 9447 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 9448 0000882c afbefffc sw -4(r29),r30; push fp 9449 00008830 001df020 add r30,r0,r29; fp = sp 9450 00008834 afbffff8 sw -8(r29),r31; push ret addr 9451 00008838 2fbd0008 subui r29,r29,#8; alloc local storage 9452 0000883c 8fc10000 lw r1,(r30) 9453 00008840 8c210000 lw r1,(r1) 9454 00008844 8fdffff8 lw r31,-8(r30) 9455 00008848 001ee820 add r29,r0,r30 9456 0000884c 8fdefffc lw r30,-4(r30) 9457 00008850 4be00000 jr r31 9458 00008854 54000000 nop 9459 00008858 .endproc _QueueNext 9460 00008858 .align 2 9461 00008858 .proc _QueuePrev 9462 00008858 .global _QueuePrev 9463 00008858 _QueuePrev: 9464 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 9465 00008858 afbefffc sw -4(r29),r30; push fp 9466 0000885c 001df020 add r30,r0,r29; fp = sp 9467 00008860 afbffff8 sw -8(r29),r31; push ret addr 9468 00008864 2fbd0008 subui r29,r29,#8; alloc local storage 9469 00008868 8fc10000 lw r1,(r30) 9470 0000886c 8c210004 lw r1,4(r1) 9471 00008870 8fdffff8 lw r31,-8(r30) 9472 00008874 001ee820 add r29,r0,r30 9473 00008878 8fdefffc lw r30,-4(r30) 9474 0000887c 4be00000 jr r31 9475 00008880 54000000 nop 9476 00008884 .endproc _QueuePrev 9477 00008884 .align 2 9478 00008884 .proc _QueueFirst 9479 00008884 .global _QueueFirst 9480 00008884 _QueueFirst: 9481 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 9482 00008884 afbefffc sw -4(r29),r30; push fp 9483 00008888 001df020 add r30,r0,r29; fp = sp 9484 0000888c afbffff8 sw -8(r29),r31; push ret addr 9485 00008890 2fbd0008 subui r29,r29,#8; alloc local storage 9486 00008894 8fc10000 lw r1,(r30) 9487 00008898 8c210000 lw r1,(r1) 9488 0000889c 8fdffff8 lw r31,-8(r30) 9489 000088a0 001ee820 add r29,r0,r30 9490 000088a4 8fdefffc lw r30,-4(r30) 9491 000088a8 4be00000 jr r31 9492 000088ac 54000000 nop 9493 000088b0 .endproc _QueueFirst 9494 000088b0 .align 2 9495 000088b0 .proc _QueueLast 9496 000088b0 .global _QueueLast 9497 000088b0 _QueueLast: 9498 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 9499 000088b0 afbefffc sw -4(r29),r30; push fp 9500 000088b4 001df020 add r30,r0,r29; fp = sp 9501 000088b8 afbffff8 sw -8(r29),r31; push ret addr 9502 000088bc 2fbd0008 subui r29,r29,#8; alloc local storage 9503 000088c0 8fc10000 lw r1,(r30) 9504 000088c4 8c210004 lw r1,4(r1) 9505 000088c8 8fdffff8 lw r31,-8(r30) 9506 000088cc 001ee820 add r29,r0,r30 9507 000088d0 8fdefffc lw r30,-4(r30) 9508 000088d4 4be00000 jr r31 9509 000088d8 54000000 nop 9510 000088dc .endproc _QueueLast 9511 000088dc .align 2 9512 000088dc .proc _QueueInsertAfter 9513 000088dc .global _QueueInsertAfter 9514 000088dc _QueueInsertAfter: 9515 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 9516 000088dc afbefffc sw -4(r29),r30; push fp 9517 000088e0 001df020 add r30,r0,r29; fp = sp 9518 000088e4 afbffff8 sw -8(r29),r31; push ret addr 9519 000088e8 2fbd0010 subui r29,r29,#16; alloc local storage 9520 000088ec afa20000 sw 0(r29),r2 9521 000088f0 afa30004 sw 4(r29),r3 9522 000088f4 8fc30000 lw r3,(r30) 9523 000088f8 8fc20004 lw r2,4(r30) 9524 000088fc 8fc10008 lw r1,8(r30) 9525 00008900 ac230008 sw 8(r1),r3 9526 00008904 ac220004 sw 4(r1),r2 9527 00008908 8c5f0000 lw r31,(r2) 9528 0000890c ac3f0000 sw (r1),r31 9529 00008910 ac410000 sw (r2),r1 9530 00008914 8c220000 lw r2,(r1) 9531 00008918 ac410004 sw 4(r2),r1 9532 0000891c 8c610008 lw r1,8(r3) 9533 00008920 20210001 addi r1,r1,#1 9534 00008924 ac610008 sw 8(r3),r1 9535 00008928 8fa20000 lw r2,0(r29) 9536 0000892c 8fa30004 lw r3,4(r29) 9537 00008930 8fdffff8 lw r31,-8(r30) 9538 00008934 001ee820 add r29,r0,r30 9539 00008938 8fdefffc lw r30,-4(r30) 9540 0000893c 4be00000 jr r31 9541 00008940 54000000 nop 9542 00008944 .endproc _QueueInsertAfter 9543 00008944 .align 2 9544 00008944 .proc _QueueInsertFirst 9545 00008944 .global _QueueInsertFirst 9546 00008944 _QueueInsertFirst: 9547 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 9548 00008944 afbefffc sw -4(r29),r30; push fp 9549 00008948 001df020 add r30,r0,r29; fp = sp 9550 0000894c afbffff8 sw -8(r29),r31; push ret addr 9551 00008950 2fbd0010 subui r29,r29,#16; alloc local storage 9552 00008954 afa20000 sw 0(r29),r2 9553 00008958 afa30004 sw 4(r29),r3 9554 0000895c 8fc30000 lw r3,(r30) 9555 00008960 8fc10004 lw r1,4(r30) 9556 00008964 ac230008 sw 8(r1),r3 9557 00008968 ac230004 sw 4(r1),r3 9558 0000896c 8c7f0000 lw r31,(r3) 9559 00008970 ac3f0000 sw (r1),r31 9560 00008974 ac610000 sw (r3),r1 9561 00008978 8c220000 lw r2,(r1) 9562 0000897c ac410004 sw 4(r2),r1 9563 00008980 8c610008 lw r1,8(r3) 9564 00008984 20210001 addi r1,r1,#1 9565 00008988 ac610008 sw 8(r3),r1 9566 0000898c 8fa20000 lw r2,0(r29) 9567 00008990 8fa30004 lw r3,4(r29) 9568 00008994 8fdffff8 lw r31,-8(r30) 9569 00008998 001ee820 add r29,r0,r30 9570 0000899c 8fdefffc lw r30,-4(r30) 9571 000089a0 4be00000 jr r31 9572 000089a4 54000000 nop 9573 000089a8 .endproc _QueueInsertFirst 9574 000089a8 .align 2 9575 000089a8 .proc _QueueInsertLast 9576 000089a8 .global _QueueInsertLast 9577 000089a8 _QueueInsertLast: 9578 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 9579 000089a8 afbefffc sw -4(r29),r30; push fp 9580 000089ac 001df020 add r30,r0,r29; fp = sp 9581 000089b0 afbffff8 sw -8(r29),r31; push ret addr 9582 000089b4 2fbd0010 subui r29,r29,#16; alloc local storage 9583 000089b8 afa20000 sw 0(r29),r2 9584 000089bc afa30004 sw 4(r29),r3 9585 000089c0 8fc30000 lw r3,(r30) 9586 000089c4 8fc10004 lw r1,4(r30) 9587 000089c8 8c620004 lw r2,4(r3) 9588 000089cc ac230008 sw 8(r1),r3 9589 000089d0 ac220004 sw 4(r1),r2 9590 000089d4 8c5f0000 lw r31,(r2) 9591 000089d8 ac3f0000 sw (r1),r31 9592 000089dc ac410000 sw (r2),r1 9593 000089e0 8c220000 lw r2,(r1) 9594 000089e4 ac410004 sw 4(r2),r1 9595 000089e8 8c610008 lw r1,8(r3) 9596 000089ec 20210001 addi r1,r1,#1 9597 000089f0 ac610008 sw 8(r3),r1 9598 000089f4 8fa20000 lw r2,0(r29) 9599 000089f8 8fa30004 lw r3,4(r29) 9600 000089fc 8fdffff8 lw r31,-8(r30) 9601 00008a00 001ee820 add r29,r0,r30 9602 00008a04 8fdefffc lw r30,-4(r30) 9603 00008a08 4be00000 jr r31 9604 00008a0c 54000000 nop 9605 00008a10 .endproc _QueueInsertLast 9606 00008a10 .align 2 9607 00008a10 .proc _QueueRemove 9608 00008a10 .global _QueueRemove 9609 00008a10 _QueueRemove: 9610 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 9611 00008a10 afbefffc sw -4(r29),r30; push fp 9612 00008a14 001df020 add r30,r0,r29; fp = sp 9613 00008a18 afbffff8 sw -8(r29),r31; push ret addr 9614 00008a1c 2fbd0010 subui r29,r29,#16; alloc local storage 9615 00008a20 afa20000 sw 0(r29),r2 9616 00008a24 afa30004 sw 4(r29),r3 9617 00008a28 8fdf0000 lw r31,(r30) 9618 00008a2c 8fe10008 lw r1,8(r31) 9619 00008a30 8c210008 lw r1,8(r1) 9620 00008a34 6c210000 sgti r1,r1,#0 9621 00008a38 1020002c beqz r1,L44_LF7 9622 00008a3c 54000000 nop; not filled. 9623 00008a40 8fe10004 lw r1,4(r31) 9624 00008a44 8fe30000 lw r3,(r31) 9625 00008a48 ac230000 sw (r1),r3 9626 00008a4c 8fe10000 lw r1,(r31) 9627 00008a50 8fe30004 lw r3,4(r31) 9628 00008a54 ac230004 sw 4(r1),r3 9629 00008a58 8fe20008 lw r2,8(r31) 9630 00008a5c 8c410008 lw r1,8(r2) 9631 00008a60 2021ffff addi r1,r1,#-1 9632 00008a64 ac410008 sw 8(r2),r1 9633 00008a68 L44_LF7: 9634 00008a68 20030000 addi r3,r0,#0 9635 00008a6c afe30000 sw (r31),r3 9636 00008a70 8fa20000 lw r2,0(r29) 9637 00008a74 8fa30004 lw r3,4(r29) 9638 00008a78 8fdffff8 lw r31,-8(r30) 9639 00008a7c 001ee820 add r29,r0,r30 9640 00008a80 8fdefffc lw r30,-4(r30) 9641 00008a84 4be00000 jr r31 9642 00008a88 54000000 nop 9643 00008a8c .endproc _QueueRemove 9644 00008a8c .align 2 9645 00008a8c .proc _QueueLength 9646 00008a8c .global _QueueLength 9647 00008a8c _QueueLength: 9648 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 9649 00008a8c afbefffc sw -4(r29),r30; push fp 9650 00008a90 001df020 add r30,r0,r29; fp = sp 9651 00008a94 afbffff8 sw -8(r29),r31; push ret addr 9652 00008a98 2fbd0008 subui r29,r29,#8; alloc local storage 9653 00008a9c 8fc10000 lw r1,(r30) 9654 00008aa0 8c210008 lw r1,8(r1) 9655 00008aa4 8fdffff8 lw r31,-8(r30) 9656 00008aa8 001ee820 add r29,r0,r30 9657 00008aac 8fdefffc lw r30,-4(r30) 9658 00008ab0 4be00000 jr r31 9659 00008ab4 54000000 nop 9660 00008ab8 .endproc _QueueLength 9661 00008ab8 .align 2 9662 00008ab8 .proc _QueueEmpty 9663 00008ab8 .global _QueueEmpty 9664 00008ab8 _QueueEmpty: 9665 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 9666 00008ab8 afbefffc sw -4(r29),r30; push fp 9667 00008abc 001df020 add r30,r0,r29; fp = sp 9668 00008ac0 afbffff8 sw -8(r29),r31; push ret addr 9669 00008ac4 2fbd0008 subui r29,r29,#8; alloc local storage 9670 00008ac8 8fc10000 lw r1,(r30) 9671 00008acc 8c210008 lw r1,8(r1) 9672 00008ad0 60210000 seqi r1,r1,#0 9673 00008ad4 8fdffff8 lw r31,-8(r30) 9674 00008ad8 001ee820 add r29,r0,r30 9675 00008adc 8fdefffc lw r30,-4(r30) 9676 00008ae0 4be00000 jr r31 9677 00008ae4 54000000 nop 9678 00008ae8 .endproc _QueueEmpty 9679 00008ae8 .data 9680 000136cc .align 2 9681 000136cc LC0_LF7: 9682 000136cc 496e6974 .ascii "Initializing queue link %d.\n\000" 9682 000136d0 69616c69 9682 000136d4 7a696e67 9682 000136d8 20717565 9682 000136dc 7565206c 9682 000136e0 696e6b20 9682 000136e4 25642e0a 9682 000136e8 00 9683 000136e9 .text 9684 00008ae8 .align 2 9685 00008ae8 .proc _QueueModuleInit 9686 00008ae8 .global _QueueModuleInit 9687 00008ae8 _QueueModuleInit: 9688 ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. 9689 00008ae8 afbefffc sw -4(r29),r30; push fp 9690 00008aec 001df020 add r30,r0,r29; fp = sp 9691 00008af0 afbffff8 sw -8(r29),r31; push ret addr 9692 00008af4 2fbd0018 subui r29,r29,#24; alloc local storage 9693 00008af8 afa20000 sw 0(r29),r2 9694 00008afc afa30004 sw 4(r29),r3 9695 00008b00 afa40008 sw 8(r29),r4 9696 00008b04 afa5000c sw 12(r29),r5 9697 00008b08 23bdfff8 addi r29,r29,#-8 9698 00008b0c 3c050001 lhi r5,((_freeLinks)>>16)&0xffff 9699 00008b10 24a53738 addui r5,r5,(_freeLinks)&0xffff 9700 00008b14 afa50000 sw (r29),r5 9701 00008b18 0c0000e0 jal _QueueInit 9702 00008b1c 54000000 nop; not filled. 9703 00008b20 20030000 addi r3,r0,#0 9704 00008b24 23bd0008 addi r29,r29,#8 9705 00008b28 3c040001 lhi r4,((_debugstr)>>16)&0xffff 9706 00008b2c 24841f50 addui r4,r4,(_debugstr)&0xffff 9707 00008b30 3c020001 lhi r2,((_linkpool_LF7)>>16)&0xffff 9708 00008b34 24423744 addui r2,r2,(_linkpool_LF7)&0xffff 9709 00008b38 L63_LF7: 9710 00008b38 23bdfff8 addi r29,r29,#-8 9711 00008b3c afa40000 sw (r29),r4 9712 00008b40 20050069 addi r5,r0,#105 9713 00008b44 afa50004 sw 4(r29),r5 9714 00008b48 0fffbeec jal _dindex 9715 00008b4c 54000000 nop; not filled. 9716 00008b50 23bd0008 addi r29,r29,#8 9717 00008b54 64210000 snei r1,r1,#0 9718 00008b58 1420002c bnez r1,L65_LF7 9719 00008b5c 54000000 nop; not filled. 9720 00008b60 23bdfff8 addi r29,r29,#-8 9721 00008b64 afa40000 sw (r29),r4 9722 00008b68 2005002b addi r5,r0,#43 9723 00008b6c afa50004 sw 4(r29),r5 9724 00008b70 0fffbec4 jal _dindex 9725 00008b74 54000000 nop; not filled. 9726 00008b78 23bd0008 addi r29,r29,#8 9727 00008b7c 64210000 snei r1,r1,#0 9728 00008b80 10200024 beqz r1,L64_LF7 9729 00008b84 54000000 nop; not filled. 9730 00008b88 L65_LF7: 9731 00008b88 23bdfff8 addi r29,r29,#-8 9732 00008b8c 3c050001 lhi r5,((LC0_LF7)>>16)&0xffff 9733 00008b90 24a536cc addui r5,r5,(LC0_LF7)&0xffff 9734 00008b94 afa50000 sw (r29),r5 9735 00008b98 afa30004 sw 4(r29),r3 9736 00008b9c 0c003674 jal _printf 9737 00008ba0 54000000 nop; not filled. 9738 00008ba4 23bd0008 addi r29,r29,#8 9739 00008ba8 L64_LF7: 9740 00008ba8 20050000 addi r5,r0,#0 9741 00008bac ac450000 sw (r2),r5 9742 00008bb0 23bdfff8 addi r29,r29,#-8 9743 00008bb4 afa20000 sw (r29),r2 9744 00008bb8 0c000078 jal _QueueFreeLink 9745 00008bbc 54000000 nop; not filled. 9746 00008bc0 23bd0008 addi r29,r29,#8 9747 00008bc4 20420010 addi r2,r2,#16 9748 00008bc8 20630001 addi r3,r3,#1 9749 00008bcc 7061018f slei r1,r3,#399 9750 00008bd0 1420ff64 bnez r1,L63_LF7 9751 00008bd4 54000000 nop; not filled. 9752 00008bd8 8fa20000 lw r2,0(r29) 9753 00008bdc 8fa30004 lw r3,4(r29) 9754 00008be0 8fa40008 lw r4,8(r29) 9755 00008be4 8fa5000c lw r5,12(r29) 9756 00008be8 8fdffff8 lw r31,-8(r30) 9757 00008bec 001ee820 add r29,r0,r30 9758 00008bf0 8fdefffc lw r30,-4(r30) 9759 00008bf4 4be00000 jr r31 9760 00008bf8 54000000 nop 9761 00008bfc .endproc _QueueModuleInit 9762 00008bfc .align 2 9763 00008bfc .proc _QueueInit 9764 00008bfc .global _QueueInit 9765 00008bfc _QueueInit: 9766 ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. 9767 00008bfc afbefffc sw -4(r29),r30; push fp 9768 00008c00 001df020 add r30,r0,r29; fp = sp 9769 00008c04 afbffff8 sw -8(r29),r31; push ret addr 9770 00008c08 2fbd0008 subui r29,r29,#8; alloc local storage 9771 00008c0c 8fc10000 lw r1,(r30) 9772 00008c10 ac210000 sw (r1),r1 9773 00008c14 ac210004 sw 4(r1),r1 9774 00008c18 201f0000 addi r31,r0,#0 9775 00008c1c ac3f0008 sw 8(r1),r31 9776 00008c20 8fdffff8 lw r31,-8(r30) 9777 00008c24 001ee820 add r29,r0,r30 9778 00008c28 8fdefffc lw r30,-4(r30) 9779 00008c2c 4be00000 jr r31 9780 00008c30 54000000 nop 9781 00008c34 .endproc _QueueInit 9782 00008c34 .data 9783 000136e9 .align 2 9784 000136ec LC1_LF7: 9785 000136ec 25733a20 .ascii "%s: %s\n\000" 9785 000136f0 25730a00 9786 000136f4 .align 2 9787 000136f4 LC2_LF7: 9788 000136f4 51756575 .ascii "QueueFreeLink\000" 9788 000136f8 65467265 9788 000136fc 654c696e 9788 00013700 6b00 9789 00013702 .align 2 9790 00013704 LC3_LF7: 9791 00013704 4c696e6b .ascii "Link not empty\000" 9791 00013708 206e6f74 9791 0001370c 20656d70 9791 00013710 747900 9792 00013713 .text 9793 00008c34 .align 2 9794 00008c34 .proc _QueueFreeLink 9795 00008c34 .global _QueueFreeLink 9796 00008c34 _QueueFreeLink: 9797 ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. 9798 00008c34 afbefffc sw -4(r29),r30; push fp 9799 00008c38 001df020 add r30,r0,r29; fp = sp 9800 00008c3c afbffff8 sw -8(r29),r31; push ret addr 9801 00008c40 2fbd0018 subui r29,r29,#24; alloc local storage 9802 00008c44 afa20000 sw 0(r29),r2 9803 00008c48 afa30004 sw 4(r29),r3 9804 00008c4c afa40008 sw 8(r29),r4 9805 00008c50 8fc30000 lw r3,(r30) 9806 00008c54 8c610000 lw r1,(r3) 9807 00008c58 64210000 snei r1,r1,#0 9808 00008c5c 10200038 beqz r1,L77_LF7 9809 00008c60 54000000 nop; not filled. 9810 00008c64 23bdfff0 addi r29,r29,#-16 9811 00008c68 3c040001 lhi r4,((LC1_LF7)>>16)&0xffff 9812 00008c6c 248436ec addui r4,r4,(LC1_LF7)&0xffff 9813 00008c70 afa40000 sw (r29),r4 9814 00008c74 3c010001 lhi r1,((LC2_LF7)>>16)&0xffff 9815 00008c78 242136f4 addui r1,r1,(LC2_LF7)&0xffff 9816 00008c7c afa10004 sw 4(r29),r1 9817 00008c80 3c040001 lhi r4,((LC3_LF7)>>16)&0xffff 9818 00008c84 24843704 addui r4,r4,(LC3_LF7)&0xffff 9819 00008c88 afa40008 sw 8(r29),r4 9820 00008c8c 0c003584 jal _printf 9821 00008c90 54000000 nop; not filled. 9822 00008c94 23bd0010 addi r29,r29,#16 9823 00008c98 L77_LF7: 9824 00008c98 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 9825 00008c9c 24423738 addui r2,r2,(_freeLinks)&0xffff 9826 00008ca0 8c410004 lw r1,4(r2) 9827 00008ca4 ac620008 sw 8(r3),r2 9828 00008ca8 ac610004 sw 4(r3),r1 9829 00008cac 8c240000 lw r4,(r1) 9830 00008cb0 ac640000 sw (r3),r4 9831 00008cb4 ac230000 sw (r1),r3 9832 00008cb8 8c610000 lw r1,(r3) 9833 00008cbc ac230004 sw 4(r1),r3 9834 00008cc0 8c410008 lw r1,8(r2) 9835 00008cc4 20210001 addi r1,r1,#1 9836 00008cc8 ac410008 sw 8(r2),r1 9837 00008ccc 8fa20000 lw r2,0(r29) 9838 00008cd0 8fa30004 lw r3,4(r29) 9839 00008cd4 8fa40008 lw r4,8(r29) 9840 00008cd8 8fdffff8 lw r31,-8(r30) 9841 00008cdc 001ee820 add r29,r0,r30 9842 00008ce0 8fdefffc lw r30,-4(r30) 9843 00008ce4 4be00000 jr r31 9844 00008ce8 54000000 nop 9845 00008cec .endproc _QueueFreeLink 9846 00008cec .data 9847 00013713 .align 2 9848 00013714 LC4_LF7: 9849 00013714 51756575 .ascii "QueueAllocLink\000" 9849 00013718 65416c6c 9849 0001371c 6f634c69 9849 00013720 6e6b00 9850 00013723 .align 2 9851 00013724 LC5_LF7: 9852 00013724 4c696e6b .ascii "Link not allocated!\000" 9852 00013728 206e6f74 9852 0001372c 20616c6c 9852 00013730 6f636174 9852 00013734 65642100 9853 00013738 .text 9854 00008cec .align 2 9855 00008cec .proc _QueueAllocLink 9856 00008cec .global _QueueAllocLink 9857 00008cec _QueueAllocLink: 9858 ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. 9859 00008cec afbefffc sw -4(r29),r30; push fp 9860 00008cf0 001df020 add r30,r0,r29; fp = sp 9861 00008cf4 afbffff8 sw -8(r29),r31; push ret addr 9862 00008cf8 2fbd0018 subui r29,r29,#24; alloc local storage 9863 00008cfc afa20000 sw 0(r29),r2 9864 00008d00 afa30004 sw 4(r29),r3 9865 00008d04 afa40008 sw 8(r29),r4 9866 00008d08 3c020001 lhi r2,((_freeLinks)>>16)&0xffff 9867 00008d0c 24423738 addui r2,r2,(_freeLinks)&0xffff 9868 00008d10 8c410008 lw r1,8(r2) 9869 00008d14 60210000 seqi r1,r1,#0 9870 00008d18 14200054 bnez r1,L92_LF7 9871 00008d1c 54000000 nop; not filled. 9872 00008d20 8c430000 lw r3,(r2) 9873 00008d24 8c610008 lw r1,8(r3) 9874 00008d28 8c210008 lw r1,8(r1) 9875 00008d2c 6c210000 sgti r1,r1,#0 9876 00008d30 1020002c beqz r1,L97_LF7 9877 00008d34 54000000 nop; not filled. 9878 00008d38 8c610004 lw r1,4(r3) 9879 00008d3c 8c640000 lw r4,(r3) 9880 00008d40 ac240000 sw (r1),r4 9881 00008d44 8c610000 lw r1,(r3) 9882 00008d48 8c640004 lw r4,4(r3) 9883 00008d4c ac240004 sw 4(r1),r4 9884 00008d50 8c620008 lw r2,8(r3) 9885 00008d54 8c410008 lw r1,8(r2) 9886 00008d58 2021ffff addi r1,r1,#-1 9887 00008d5c ac410008 sw 8(r2),r1 9888 00008d60 L97_LF7: 9889 00008d60 20040000 addi r4,r0,#0 9890 00008d64 ac640000 sw (r3),r4 9891 00008d68 08000008 j L98_LF7 9892 00008d6c 54000000 nop; not filled. 9893 00008d70 L92_LF7: 9894 00008d70 20030000 addi r3,r0,#0 9895 00008d74 L98_LF7: 9896 00008d74 64610000 snei r1,r3,#0 9897 00008d78 14200038 bnez r1,L100_LF7 9898 00008d7c 54000000 nop; not filled. 9899 00008d80 23bdfff0 addi r29,r29,#-16 9900 00008d84 3c040001 lhi r4,((LC1_LF7)>>16)&0xffff 9901 00008d88 248436ec addui r4,r4,(LC1_LF7)&0xffff 9902 00008d8c afa40000 sw (r29),r4 9903 00008d90 3c010001 lhi r1,((LC4_LF7)>>16)&0xffff 9904 00008d94 24213714 addui r1,r1,(LC4_LF7)&0xffff 9905 00008d98 afa10004 sw 4(r29),r1 9906 00008d9c 3c040001 lhi r4,((LC5_LF7)>>16)&0xffff 9907 00008da0 24843724 addui r4,r4,(LC5_LF7)&0xffff 9908 00008da4 afa40008 sw 8(r29),r4 9909 00008da8 0c003468 jal _printf 9910 00008dac 54000000 nop; not filled. 9911 00008db0 23bd0010 addi r29,r29,#16 9912 00008db4 L100_LF7: 9913 00008db4 00030820 add r1,r0,r3 9914 00008db8 8fa20000 lw r2,0(r29) 9915 00008dbc 8fa30004 lw r3,4(r29) 9916 00008dc0 8fa40008 lw r4,8(r29) 9917 00008dc4 8fdffff8 lw r31,-8(r30) 9918 00008dc8 001ee820 add r29,r0,r30 9919 00008dcc 8fdefffc lw r30,-4(r30) 9920 00008dd0 4be00000 jr r31 9921 00008dd4 54000000 nop 9922 00008dd8 .endproc _QueueAllocLink 9923 00008dd8 .data 9924 00013738 .align 2 9925 00013738 .global _freeLinks 9926 00013738 _freeLinks: 9927 00013738 .space 12 9928 00013744 .align 2 9929 00013744 _linkpool_LF7: 9930 00013744 .space 6400 9931 ; Compiled by GCC 9932 00015044 .text 9933 00008dd8 .align 2 9934 00008dd8 .proc _isspace 9935 00008dd8 .global _isspace 9936 00008dd8 _isspace: 9937 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 9938 00008dd8 afbefffc sw -4(r29),r30; push fp 9939 00008ddc 001df020 add r30,r0,r29; fp = sp 9940 00008de0 afbffff8 sw -8(r29),r31; push ret addr 9941 00008de4 2fbd0010 subui r29,r29,#16; alloc local storage 9942 00008de8 afa20000 sw 0(r29),r2 9943 00008dec 83c20003 lb r2,3(r30) 9944 00008df0 201f0000 addi r31,r0,#0 9945 00008df4 304100ff andi r1,r2,#0x00ff 9946 00008df8 60210020 seqi r1,r1,#32 9947 00008dfc 14200018 bnez r1,L6_LF8 9948 00008e00 54000000 nop; not filled. 9949 00008e04 2041fff7 addi r1,r2,#-9 9950 00008e08 302100ff andi r1,r1,#0x00ff 9951 00008e0c 70210001 sleui r1,r1,#1 9952 00008e10 10200008 beqz r1,L5_LF8 9953 00008e14 54000000 nop; not filled. 9954 00008e18 L6_LF8: 9955 00008e18 201f0001 addi r31,r0,#1 9956 00008e1c L5_LF8: 9957 00008e1c 001f0820 add r1,r0,r31 9958 00008e20 8fa20000 lw r2,0(r29) 9959 00008e24 8fdffff8 lw r31,-8(r30) 9960 00008e28 001ee820 add r29,r0,r30 9961 00008e2c 8fdefffc lw r30,-4(r30) 9962 00008e30 4be00000 jr r31 9963 00008e34 54000000 nop 9964 00008e38 .endproc _isspace 9965 00008e38 .align 2 9966 00008e38 .proc _isxdigit 9967 00008e38 .global _isxdigit 9968 00008e38 _isxdigit: 9969 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 9970 00008e38 afbefffc sw -4(r29),r30; push fp 9971 00008e3c 001df020 add r30,r0,r29; fp = sp 9972 00008e40 afbffff8 sw -8(r29),r31; push ret addr 9973 00008e44 2fbd0010 subui r29,r29,#16; alloc local storage 9974 00008e48 afa20000 sw 0(r29),r2 9975 00008e4c 83df0003 lb r31,3(r30) 9976 00008e50 20020000 addi r2,r0,#0 9977 00008e54 23e1ffd0 addi r1,r31,#-48 9978 00008e58 302100ff andi r1,r1,#0x00ff 9979 00008e5c 70210009 sleui r1,r1,#9 9980 00008e60 14200028 bnez r1,L12_LF8 9981 00008e64 54000000 nop; not filled. 9982 00008e68 23e1ff9f addi r1,r31,#-97 9983 00008e6c 302100ff andi r1,r1,#0x00ff 9984 00008e70 70210005 sleui r1,r1,#5 9985 00008e74 14200014 bnez r1,L12_LF8 9986 00008e78 54000000 nop; not filled. 9987 00008e7c 33e100ff andi r1,r31,#0x00ff 9988 00008e80 64210041 snei r1,r1,#65 9989 00008e84 14200008 bnez r1,L11_LF8 9990 00008e88 54000000 nop; not filled. 9991 00008e8c L12_LF8: 9992 00008e8c 20020001 addi r2,r0,#1 9993 00008e90 L11_LF8: 9994 00008e90 00020820 add r1,r0,r2 9995 00008e94 8fa20000 lw r2,0(r29) 9996 00008e98 8fdffff8 lw r31,-8(r30) 9997 00008e9c 001ee820 add r29,r0,r30 9998 00008ea0 8fdefffc lw r30,-4(r30) 9999 00008ea4 4be00000 jr r31 10000 00008ea8 54000000 nop 10001 00008eac .endproc _isxdigit 10002 00008eac .align 2 10003 00008eac .proc _DisableIntrs 10004 00008eac .global _DisableIntrs 10005 00008eac _DisableIntrs: 10006 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 10007 00008eac afbefffc sw -4(r29),r30; push fp 10008 00008eb0 001df020 add r30,r0,r29; fp = sp 10009 00008eb4 afbffff8 sw -8(r29),r31; push ret addr 10010 00008eb8 2fbd0010 subui r29,r29,#16; alloc local storage 10011 00008ebc afa20000 sw 0(r29),r2 10012 00008ec0 23bdfff8 addi r29,r29,#-8 10013 00008ec4 2002000f addi r2,r0,#15 10014 00008ec8 afa20000 sw (r29),r2 10015 00008ecc 0fff83b8 jal _SetIntrs 10016 00008ed0 54000000 nop; not filled. 10017 00008ed4 23bd0008 addi r29,r29,#8 10018 00008ed8 8fa20000 lw r2,0(r29) 10019 00008edc 8fdffff8 lw r31,-8(r30) 10020 00008ee0 001ee820 add r29,r0,r30 10021 00008ee4 8fdefffc lw r30,-4(r30) 10022 00008ee8 4be00000 jr r31 10023 00008eec 54000000 nop 10024 00008ef0 .endproc _DisableIntrs 10025 00008ef0 .align 2 10026 00008ef0 .proc _EnableIntrs 10027 00008ef0 .global _EnableIntrs 10028 00008ef0 _EnableIntrs: 10029 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 10030 00008ef0 afbefffc sw -4(r29),r30; push fp 10031 00008ef4 001df020 add r30,r0,r29; fp = sp 10032 00008ef8 afbffff8 sw -8(r29),r31; push ret addr 10033 00008efc 2fbd0010 subui r29,r29,#16; alloc local storage 10034 00008f00 afa20000 sw 0(r29),r2 10035 00008f04 23bdfff8 addi r29,r29,#-8 10036 00008f08 20020000 addi r2,r0,#0 10037 00008f0c afa20000 sw (r29),r2 10038 00008f10 0fff8374 jal _SetIntrs 10039 00008f14 54000000 nop; not filled. 10040 00008f18 23bd0008 addi r29,r29,#8 10041 00008f1c 8fa20000 lw r2,0(r29) 10042 00008f20 8fdffff8 lw r31,-8(r30) 10043 00008f24 001ee820 add r29,r0,r30 10044 00008f28 8fdefffc lw r30,-4(r30) 10045 00008f2c 4be00000 jr r31 10046 00008f30 54000000 nop 10047 00008f34 .endproc _EnableIntrs 10048 00008f34 .align 2 10049 00008f34 .proc _RestoreIntrs 10050 00008f34 .global _RestoreIntrs 10051 00008f34 _RestoreIntrs: 10052 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 10053 00008f34 afbefffc sw -4(r29),r30; push fp 10054 00008f38 001df020 add r30,r0,r29; fp = sp 10055 00008f3c afbffff8 sw -8(r29),r31; push ret addr 10056 00008f40 2fbd0010 subui r29,r29,#16; alloc local storage 10057 00008f44 afa20000 sw 0(r29),r2 10058 00008f48 23bdfff8 addi r29,r29,#-8 10059 00008f4c 8fc20000 lw r2,(r30) 10060 00008f50 afa20000 sw (r29),r2 10061 00008f54 0fff8330 jal _SetIntrs 10062 00008f58 54000000 nop; not filled. 10063 00008f5c 23bd0008 addi r29,r29,#8 10064 00008f60 8fa20000 lw r2,0(r29) 10065 00008f64 8fdffff8 lw r31,-8(r30) 10066 00008f68 001ee820 add r29,r0,r30 10067 00008f6c 8fdefffc lw r30,-4(r30) 10068 00008f70 4be00000 jr r31 10069 00008f74 54000000 nop 10070 00008f78 .endproc _RestoreIntrs 10071 00008f78 .align 2 10072 00008f78 .proc _QueueLinkInit 10073 00008f78 .global _QueueLinkInit 10074 00008f78 _QueueLinkInit: 10075 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 10076 00008f78 afbefffc sw -4(r29),r30; push fp 10077 00008f7c 001df020 add r30,r0,r29; fp = sp 10078 00008f80 afbffff8 sw -8(r29),r31; push ret addr 10079 00008f84 2fbd0010 subui r29,r29,#16; alloc local storage 10080 00008f88 afa20000 sw 0(r29),r2 10081 00008f8c 8fc10000 lw r1,(r30) 10082 00008f90 8fc20004 lw r2,4(r30) 10083 00008f94 201f0000 addi r31,r0,#0 10084 00008f98 ac3f0000 sw (r1),r31 10085 00008f9c ac22000c sw 12(r1),r2 10086 00008fa0 8fa20000 lw r2,0(r29) 10087 00008fa4 8fdffff8 lw r31,-8(r30) 10088 00008fa8 001ee820 add r29,r0,r30 10089 00008fac 8fdefffc lw r30,-4(r30) 10090 00008fb0 4be00000 jr r31 10091 00008fb4 54000000 nop 10092 00008fb8 .endproc _QueueLinkInit 10093 00008fb8 .align 2 10094 00008fb8 .proc _QueueNext 10095 00008fb8 .global _QueueNext 10096 00008fb8 _QueueNext: 10097 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 10098 00008fb8 afbefffc sw -4(r29),r30; push fp 10099 00008fbc 001df020 add r30,r0,r29; fp = sp 10100 00008fc0 afbffff8 sw -8(r29),r31; push ret addr 10101 00008fc4 2fbd0008 subui r29,r29,#8; alloc local storage 10102 00008fc8 8fc10000 lw r1,(r30) 10103 00008fcc 8c210000 lw r1,(r1) 10104 00008fd0 8fdffff8 lw r31,-8(r30) 10105 00008fd4 001ee820 add r29,r0,r30 10106 00008fd8 8fdefffc lw r30,-4(r30) 10107 00008fdc 4be00000 jr r31 10108 00008fe0 54000000 nop 10109 00008fe4 .endproc _QueueNext 10110 00008fe4 .align 2 10111 00008fe4 .proc _QueuePrev 10112 00008fe4 .global _QueuePrev 10113 00008fe4 _QueuePrev: 10114 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 10115 00008fe4 afbefffc sw -4(r29),r30; push fp 10116 00008fe8 001df020 add r30,r0,r29; fp = sp 10117 00008fec afbffff8 sw -8(r29),r31; push ret addr 10118 00008ff0 2fbd0008 subui r29,r29,#8; alloc local storage 10119 00008ff4 8fc10000 lw r1,(r30) 10120 00008ff8 8c210004 lw r1,4(r1) 10121 00008ffc 8fdffff8 lw r31,-8(r30) 10122 00009000 001ee820 add r29,r0,r30 10123 00009004 8fdefffc lw r30,-4(r30) 10124 00009008 4be00000 jr r31 10125 0000900c 54000000 nop 10126 00009010 .endproc _QueuePrev 10127 00009010 .align 2 10128 00009010 .proc _QueueFirst 10129 00009010 .global _QueueFirst 10130 00009010 _QueueFirst: 10131 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 10132 00009010 afbefffc sw -4(r29),r30; push fp 10133 00009014 001df020 add r30,r0,r29; fp = sp 10134 00009018 afbffff8 sw -8(r29),r31; push ret addr 10135 0000901c 2fbd0008 subui r29,r29,#8; alloc local storage 10136 00009020 8fc10000 lw r1,(r30) 10137 00009024 8c210000 lw r1,(r1) 10138 00009028 8fdffff8 lw r31,-8(r30) 10139 0000902c 001ee820 add r29,r0,r30 10140 00009030 8fdefffc lw r30,-4(r30) 10141 00009034 4be00000 jr r31 10142 00009038 54000000 nop 10143 0000903c .endproc _QueueFirst 10144 0000903c .align 2 10145 0000903c .proc _QueueLast 10146 0000903c .global _QueueLast 10147 0000903c _QueueLast: 10148 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 10149 0000903c afbefffc sw -4(r29),r30; push fp 10150 00009040 001df020 add r30,r0,r29; fp = sp 10151 00009044 afbffff8 sw -8(r29),r31; push ret addr 10152 00009048 2fbd0008 subui r29,r29,#8; alloc local storage 10153 0000904c 8fc10000 lw r1,(r30) 10154 00009050 8c210004 lw r1,4(r1) 10155 00009054 8fdffff8 lw r31,-8(r30) 10156 00009058 001ee820 add r29,r0,r30 10157 0000905c 8fdefffc lw r30,-4(r30) 10158 00009060 4be00000 jr r31 10159 00009064 54000000 nop 10160 00009068 .endproc _QueueLast 10161 00009068 .align 2 10162 00009068 .proc _QueueInsertAfter 10163 00009068 .global _QueueInsertAfter 10164 00009068 _QueueInsertAfter: 10165 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 10166 00009068 afbefffc sw -4(r29),r30; push fp 10167 0000906c 001df020 add r30,r0,r29; fp = sp 10168 00009070 afbffff8 sw -8(r29),r31; push ret addr 10169 00009074 2fbd0010 subui r29,r29,#16; alloc local storage 10170 00009078 afa20000 sw 0(r29),r2 10171 0000907c afa30004 sw 4(r29),r3 10172 00009080 8fc30000 lw r3,(r30) 10173 00009084 8fc20004 lw r2,4(r30) 10174 00009088 8fc10008 lw r1,8(r30) 10175 0000908c ac230008 sw 8(r1),r3 10176 00009090 ac220004 sw 4(r1),r2 10177 00009094 8c5f0000 lw r31,(r2) 10178 00009098 ac3f0000 sw (r1),r31 10179 0000909c ac410000 sw (r2),r1 10180 000090a0 8c220000 lw r2,(r1) 10181 000090a4 ac410004 sw 4(r2),r1 10182 000090a8 8c610008 lw r1,8(r3) 10183 000090ac 20210001 addi r1,r1,#1 10184 000090b0 ac610008 sw 8(r3),r1 10185 000090b4 8fa20000 lw r2,0(r29) 10186 000090b8 8fa30004 lw r3,4(r29) 10187 000090bc 8fdffff8 lw r31,-8(r30) 10188 000090c0 001ee820 add r29,r0,r30 10189 000090c4 8fdefffc lw r30,-4(r30) 10190 000090c8 4be00000 jr r31 10191 000090cc 54000000 nop 10192 000090d0 .endproc _QueueInsertAfter 10193 000090d0 .align 2 10194 000090d0 .proc _QueueInsertFirst 10195 000090d0 .global _QueueInsertFirst 10196 000090d0 _QueueInsertFirst: 10197 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 10198 000090d0 afbefffc sw -4(r29),r30; push fp 10199 000090d4 001df020 add r30,r0,r29; fp = sp 10200 000090d8 afbffff8 sw -8(r29),r31; push ret addr 10201 000090dc 2fbd0010 subui r29,r29,#16; alloc local storage 10202 000090e0 afa20000 sw 0(r29),r2 10203 000090e4 afa30004 sw 4(r29),r3 10204 000090e8 8fc30000 lw r3,(r30) 10205 000090ec 8fc10004 lw r1,4(r30) 10206 000090f0 ac230008 sw 8(r1),r3 10207 000090f4 ac230004 sw 4(r1),r3 10208 000090f8 8c7f0000 lw r31,(r3) 10209 000090fc ac3f0000 sw (r1),r31 10210 00009100 ac610000 sw (r3),r1 10211 00009104 8c220000 lw r2,(r1) 10212 00009108 ac410004 sw 4(r2),r1 10213 0000910c 8c610008 lw r1,8(r3) 10214 00009110 20210001 addi r1,r1,#1 10215 00009114 ac610008 sw 8(r3),r1 10216 00009118 8fa20000 lw r2,0(r29) 10217 0000911c 8fa30004 lw r3,4(r29) 10218 00009120 8fdffff8 lw r31,-8(r30) 10219 00009124 001ee820 add r29,r0,r30 10220 00009128 8fdefffc lw r30,-4(r30) 10221 0000912c 4be00000 jr r31 10222 00009130 54000000 nop 10223 00009134 .endproc _QueueInsertFirst 10224 00009134 .align 2 10225 00009134 .proc _QueueInsertLast 10226 00009134 .global _QueueInsertLast 10227 00009134 _QueueInsertLast: 10228 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 10229 00009134 afbefffc sw -4(r29),r30; push fp 10230 00009138 001df020 add r30,r0,r29; fp = sp 10231 0000913c afbffff8 sw -8(r29),r31; push ret addr 10232 00009140 2fbd0010 subui r29,r29,#16; alloc local storage 10233 00009144 afa20000 sw 0(r29),r2 10234 00009148 afa30004 sw 4(r29),r3 10235 0000914c 8fc30000 lw r3,(r30) 10236 00009150 8fc10004 lw r1,4(r30) 10237 00009154 8c620004 lw r2,4(r3) 10238 00009158 ac230008 sw 8(r1),r3 10239 0000915c ac220004 sw 4(r1),r2 10240 00009160 8c5f0000 lw r31,(r2) 10241 00009164 ac3f0000 sw (r1),r31 10242 00009168 ac410000 sw (r2),r1 10243 0000916c 8c220000 lw r2,(r1) 10244 00009170 ac410004 sw 4(r2),r1 10245 00009174 8c610008 lw r1,8(r3) 10246 00009178 20210001 addi r1,r1,#1 10247 0000917c ac610008 sw 8(r3),r1 10248 00009180 8fa20000 lw r2,0(r29) 10249 00009184 8fa30004 lw r3,4(r29) 10250 00009188 8fdffff8 lw r31,-8(r30) 10251 0000918c 001ee820 add r29,r0,r30 10252 00009190 8fdefffc lw r30,-4(r30) 10253 00009194 4be00000 jr r31 10254 00009198 54000000 nop 10255 0000919c .endproc _QueueInsertLast 10256 0000919c .align 2 10257 0000919c .proc _QueueRemove 10258 0000919c .global _QueueRemove 10259 0000919c _QueueRemove: 10260 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 10261 0000919c afbefffc sw -4(r29),r30; push fp 10262 000091a0 001df020 add r30,r0,r29; fp = sp 10263 000091a4 afbffff8 sw -8(r29),r31; push ret addr 10264 000091a8 2fbd0010 subui r29,r29,#16; alloc local storage 10265 000091ac afa20000 sw 0(r29),r2 10266 000091b0 afa30004 sw 4(r29),r3 10267 000091b4 8fdf0000 lw r31,(r30) 10268 000091b8 8fe10008 lw r1,8(r31) 10269 000091bc 8c210008 lw r1,8(r1) 10270 000091c0 6c210000 sgti r1,r1,#0 10271 000091c4 1020002c beqz r1,L44_LF8 10272 000091c8 54000000 nop; not filled. 10273 000091cc 8fe10004 lw r1,4(r31) 10274 000091d0 8fe30000 lw r3,(r31) 10275 000091d4 ac230000 sw (r1),r3 10276 000091d8 8fe10000 lw r1,(r31) 10277 000091dc 8fe30004 lw r3,4(r31) 10278 000091e0 ac230004 sw 4(r1),r3 10279 000091e4 8fe20008 lw r2,8(r31) 10280 000091e8 8c410008 lw r1,8(r2) 10281 000091ec 2021ffff addi r1,r1,#-1 10282 000091f0 ac410008 sw 8(r2),r1 10283 000091f4 L44_LF8: 10284 000091f4 20030000 addi r3,r0,#0 10285 000091f8 afe30000 sw (r31),r3 10286 000091fc 8fa20000 lw r2,0(r29) 10287 00009200 8fa30004 lw r3,4(r29) 10288 00009204 8fdffff8 lw r31,-8(r30) 10289 00009208 001ee820 add r29,r0,r30 10290 0000920c 8fdefffc lw r30,-4(r30) 10291 00009210 4be00000 jr r31 10292 00009214 54000000 nop 10293 00009218 .endproc _QueueRemove 10294 00009218 .align 2 10295 00009218 .proc _QueueLength 10296 00009218 .global _QueueLength 10297 00009218 _QueueLength: 10298 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 10299 00009218 afbefffc sw -4(r29),r30; push fp 10300 0000921c 001df020 add r30,r0,r29; fp = sp 10301 00009220 afbffff8 sw -8(r29),r31; push ret addr 10302 00009224 2fbd0008 subui r29,r29,#8; alloc local storage 10303 00009228 8fc10000 lw r1,(r30) 10304 0000922c 8c210008 lw r1,8(r1) 10305 00009230 8fdffff8 lw r31,-8(r30) 10306 00009234 001ee820 add r29,r0,r30 10307 00009238 8fdefffc lw r30,-4(r30) 10308 0000923c 4be00000 jr r31 10309 00009240 54000000 nop 10310 00009244 .endproc _QueueLength 10311 00009244 .align 2 10312 00009244 .proc _QueueEmpty 10313 00009244 .global _QueueEmpty 10314 00009244 _QueueEmpty: 10315 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 10316 00009244 afbefffc sw -4(r29),r30; push fp 10317 00009248 001df020 add r30,r0,r29; fp = sp 10318 0000924c afbffff8 sw -8(r29),r31; push ret addr 10319 00009250 2fbd0008 subui r29,r29,#8; alloc local storage 10320 00009254 8fc10000 lw r1,(r30) 10321 00009258 8c210008 lw r1,8(r1) 10322 0000925c 60210000 seqi r1,r1,#0 10323 00009260 8fdffff8 lw r31,-8(r30) 10324 00009264 001ee820 add r29,r0,r30 10325 00009268 8fdefffc lw r30,-4(r30) 10326 0000926c 4be00000 jr r31 10327 00009270 54000000 nop 10328 00009274 .endproc _QueueEmpty 10329 00009274 .data 10330 00015044 .align 2 10331 00015044 LC0_LF8: 10332 00015044 456e7465 .ascii "Entering SynchModuleInit\n\000" 10332 00015048 72696e67 10332 0001504c 2053796e 10332 00015050 63684d6f 10332 00015054 64756c65 10332 00015058 496e6974 10332 0001505c 0a00 10333 0001505e .align 2 10334 00015060 LC1_LF8: 10335 00015060 4c656176 .ascii "Leaving SynchModuleInit\n\000" 10335 00015064 696e6720 10335 00015068 53796e63 10335 0001506c 684d6f64 10335 00015070 756c6549 10335 00015074 6e69740a 10335 00015078 00 10336 00015079 .text 10337 00009274 .align 2 10338 00009274 .proc _SynchModuleInit 10339 00009274 .global _SynchModuleInit 10340 00009274 _SynchModuleInit: 10341 ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. 10342 00009274 afbefffc sw -4(r29),r30; push fp 10343 00009278 001df020 add r30,r0,r29; fp = sp 10344 0000927c afbffff8 sw -8(r29),r31; push ret addr 10345 00009280 2fbd0010 subui r29,r29,#16; alloc local storage 10346 00009284 afa20000 sw 0(r29),r2 10347 00009288 afa30004 sw 4(r29),r3 10348 0000928c 23bdfff8 addi r29,r29,#-8 10349 00009290 3c020001 lhi r2,((_debugstr)>>16)&0xffff 10350 00009294 24421f50 addui r2,r2,(_debugstr)&0xffff 10351 00009298 afa20000 sw (r29),r2 10352 0000929c 20030070 addi r3,r0,#112 10353 000092a0 afa30004 sw 4(r29),r3 10354 000092a4 0fffb790 jal _dindex 10355 000092a8 54000000 nop; not filled. 10356 000092ac 23bd0008 addi r29,r29,#8 10357 000092b0 64210000 snei r1,r1,#0 10358 000092b4 1420002c bnez r1,L53_LF8 10359 000092b8 54000000 nop; not filled. 10360 000092bc 23bdfff8 addi r29,r29,#-8 10361 000092c0 afa20000 sw (r29),r2 10362 000092c4 2003002b addi r3,r0,#43 10363 000092c8 afa30004 sw 4(r29),r3 10364 000092cc 0fffb768 jal _dindex 10365 000092d0 54000000 nop; not filled. 10366 000092d4 23bd0008 addi r29,r29,#8 10367 000092d8 64210000 snei r1,r1,#0 10368 000092dc 10200020 beqz r1,L52_LF8 10369 000092e0 54000000 nop; not filled. 10370 000092e4 L53_LF8: 10371 000092e4 23bdfff8 addi r29,r29,#-8 10372 000092e8 3c030001 lhi r3,((LC0_LF8)>>16)&0xffff 10373 000092ec 24635044 addui r3,r3,(LC0_LF8)&0xffff 10374 000092f0 afa30000 sw (r29),r3 10375 000092f4 0c002f1c jal _printf 10376 000092f8 54000000 nop; not filled. 10377 000092fc 23bd0008 addi r29,r29,#8 10378 00009300 L52_LF8: 10379 00009300 3c1f0001 lhi r31,((_sems_LF8)>>16)&0xffff 10380 00009304 27ff5128 addui r31,r31,(_sems_LF8)&0xffff 10381 00009308 23e2026c addi r2,r31,#620 10382 0000930c L57_LF8: 10383 0000930c 20030000 addi r3,r0,#0 10384 00009310 afe30010 sw 16(r31),r3 10385 00009314 23ff0014 addi r31,r31,#20 10386 00009318 03e2082c sle r1,r31,r2 10387 0000931c 1420ffec bnez r1,L57_LF8 10388 00009320 54000000 nop; not filled. 10389 00009324 201f0000 addi r31,r0,#0 10390 00009328 L61_LF8: 10391 00009328 23ff0001 addi r31,r31,#1 10392 0000932c 73e1003f slei r1,r31,#63 10393 00009330 1420fff4 bnez r1,L61_LF8 10394 00009334 54000000 nop; not filled. 10395 00009338 201f0000 addi r31,r0,#0 10396 0000933c L66_LF8: 10397 0000933c 23ff0001 addi r31,r31,#1 10398 00009340 73e1001f slei r1,r31,#31 10399 00009344 1420fff4 bnez r1,L66_LF8 10400 00009348 54000000 nop; not filled. 10401 0000934c 23bdfff8 addi r29,r29,#-8 10402 00009350 3c020001 lhi r2,((_debugstr)>>16)&0xffff 10403 00009354 24421f50 addui r2,r2,(_debugstr)&0xffff 10404 00009358 afa20000 sw (r29),r2 10405 0000935c 20030070 addi r3,r0,#112 10406 00009360 afa30004 sw 4(r29),r3 10407 00009364 0fffb6d0 jal _dindex 10408 00009368 54000000 nop; not filled. 10409 0000936c 23bd0008 addi r29,r29,#8 10410 00009370 64210000 snei r1,r1,#0 10411 00009374 1420002c bnez r1,L70_LF8 10412 00009378 54000000 nop; not filled. 10413 0000937c 23bdfff8 addi r29,r29,#-8 10414 00009380 afa20000 sw (r29),r2 10415 00009384 2003002b addi r3,r0,#43 10416 00009388 afa30004 sw 4(r29),r3 10417 0000938c 0fffb6a8 jal _dindex 10418 00009390 54000000 nop; not filled. 10419 00009394 23bd0008 addi r29,r29,#8 10420 00009398 64210000 snei r1,r1,#0 10421 0000939c 10200020 beqz r1,L69_LF8 10422 000093a0 54000000 nop; not filled. 10423 000093a4 L70_LF8: 10424 000093a4 23bdfff8 addi r29,r29,#-8 10425 000093a8 3c030001 lhi r3,((LC1_LF8)>>16)&0xffff 10426 000093ac 24635060 addui r3,r3,(LC1_LF8)&0xffff 10427 000093b0 afa30000 sw (r29),r3 10428 000093b4 0c002e5c jal _printf 10429 000093b8 54000000 nop; not filled. 10430 000093bc 23bd0008 addi r29,r29,#8 10431 000093c0 L69_LF8: 10432 000093c0 8fa20000 lw r2,0(r29) 10433 000093c4 8fa30004 lw r3,4(r29) 10434 000093c8 8fdffff8 lw r31,-8(r30) 10435 000093cc 001ee820 add r29,r0,r30 10436 000093d0 8fdefffc lw r30,-4(r30) 10437 000093d4 4be00000 jr r31 10438 000093d8 54000000 nop 10439 000093dc .endproc _SynchModuleInit 10440 000093dc .align 2 10441 000093dc .proc _SemInit 10442 000093dc .global _SemInit 10443 000093dc _SemInit: 10444 ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. 10445 000093dc afbefffc sw -4(r29),r30; push fp 10446 000093e0 001df020 add r30,r0,r29; fp = sp 10447 000093e4 afbffff8 sw -8(r29),r31; push ret addr 10448 000093e8 2fbd0010 subui r29,r29,#16; alloc local storage 10449 000093ec afa20000 sw 0(r29),r2 10450 000093f0 afa30004 sw 4(r29),r3 10451 000093f4 8fc20000 lw r2,(r30) 10452 000093f8 8fc30004 lw r3,4(r30) 10453 000093fc 23bdfff8 addi r29,r29,#-8 10454 00009400 afa20000 sw (r29),r2 10455 00009404 0ffff7f4 jal _QueueInit 10456 00009408 54000000 nop; not filled. 10457 0000940c ac43000c sw 12(r2),r3 10458 00009410 23bd0008 addi r29,r29,#8 10459 00009414 8fa20000 lw r2,0(r29) 10460 00009418 8fa30004 lw r3,4(r29) 10461 0000941c 8fdffff8 lw r31,-8(r30) 10462 00009420 001ee820 add r29,r0,r30 10463 00009424 8fdefffc lw r30,-4(r30) 10464 00009428 4be00000 jr r31 10465 0000942c 54000000 nop 10466 00009430 .endproc _SemInit 10467 00009430 .align 2 10468 00009430 .proc _SemCreate 10469 00009430 .global _SemCreate 10470 00009430 _SemCreate: 10471 ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. 10472 00009430 afbefffc sw -4(r29),r30; push fp 10473 00009434 001df020 add r30,r0,r29; fp = sp 10474 00009438 afbffff8 sw -8(r29),r31; push ret addr 10475 0000943c 2fbd0018 subui r29,r29,#24; alloc local storage 10476 00009440 afa20000 sw 0(r29),r2 10477 00009444 afa30004 sw 4(r29),r3 10478 00009448 afa40008 sw 8(r29),r4 10479 0000944c afa5000c sw 12(r29),r5 10480 00009450 23bdfff8 addi r29,r29,#-8 10481 00009454 2005000f addi r5,r0,#15 10482 00009458 afa50000 sw (r29),r5 10483 0000945c 0fff7e28 jal _SetIntrs 10484 00009460 54000000 nop; not filled. 10485 00009464 00012020 add r4,r0,r1 10486 00009468 23bd0008 addi r29,r29,#8 10487 0000946c 20030000 addi r3,r0,#0 10488 00009470 3c1f0001 lhi r31,((_sems_LF8)>>16)&0xffff 10489 00009474 27ff5128 addui r31,r31,(_sems_LF8)&0xffff 10490 00009478 L89_LF8: 10491 00009478 001f1020 add r2,r0,r31 10492 0000947c 8fe10010 lw r1,16(r31) 10493 00009480 64210000 snei r1,r1,#0 10494 00009484 10200078 beqz r1,L96_LF8 10495 00009488 54000000 nop; not filled. 10496 0000948c 205f0014 addi r31,r2,#20 10497 00009490 20630001 addi r3,r3,#1 10498 00009494 7061001f slei r1,r3,#31 10499 00009498 1420ffdc bnez r1,L89_LF8 10500 0000949c 54000000 nop; not filled. 10501 000094a0 L87_LF8: 10502 000094a0 23bdfff8 addi r29,r29,#-8 10503 000094a4 afa40000 sw (r29),r4 10504 000094a8 0fff7ddc jal _SetIntrs 10505 000094ac 54000000 nop; not filled. 10506 000094b0 23bd0008 addi r29,r29,#8 10507 000094b4 60610020 seqi r1,r3,#32 10508 000094b8 14200054 bnez r1,L93_LF8 10509 000094bc 54000000 nop; not filled. 10510 000094c0 50610002 slli r1,r3,#0x2 10511 000094c4 00230820 add r1,r1,r3 10512 000094c8 50210002 slli r1,r1,#0x2 10513 000094cc 3c050001 lhi r5,((_sems_LF8)>>16)&0xffff 10514 000094d0 24a55128 addui r5,r5,(_sems_LF8)&0xffff 10515 000094d4 00251020 add r2,r1,r5 10516 000094d8 23bdfff8 addi r29,r29,#-8 10517 000094dc afa20000 sw (r29),r2 10518 000094e0 0ffff718 jal _QueueInit 10519 000094e4 54000000 nop; not filled. 10520 000094e8 8fc50000 lw r5,(r30) 10521 000094ec ac45000c sw 12(r2),r5 10522 000094f0 23bd0008 addi r29,r29,#8 10523 000094f4 00030820 add r1,r0,r3 10524 000094f8 08000018 j L95_LF8 10525 000094fc 54000000 nop; not filled. 10526 00009500 L96_LF8: 10527 00009500 20050001 addi r5,r0,#1 10528 00009504 afe50010 sw 16(r31),r5 10529 00009508 0bffff94 j L87_LF8 10530 0000950c 54000000 nop; not filled. 10531 00009510 L93_LF8: 10532 00009510 2001ffff addi r1,r0,#-1 10533 00009514 L95_LF8: 10534 00009514 8fa20000 lw r2,0(r29) 10535 00009518 8fa30004 lw r3,4(r29) 10536 0000951c 8fa40008 lw r4,8(r29) 10537 00009520 8fa5000c lw r5,12(r29) 10538 00009524 8fdffff8 lw r31,-8(r30) 10539 00009528 001ee820 add r29,r0,r30 10540 0000952c 8fdefffc lw r30,-4(r30) 10541 00009530 4be00000 jr r31 10542 00009534 54000000 nop 10543 00009538 .endproc _SemCreate 10544 00009538 .data 10545 00015079 .align 2 10546 0001507c LC2_LF8: 10547 0001507c 4f6c6420 .ascii "Old interrupt value was 0x%x.\n\000" 10547 00015080 696e7465 10547 00015084 72727570 10547 00015088 74207661 10547 0001508c 6c756520 10547 00015090 77617320 10547 00015094 30782578 10547 00015098 2e0a00 10548 0001509b .align 2 10549 0001509c LC3_LF8: 10550 0001509c 50726f63 .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" 10550 000150a0 20307825 10550 000150a4 78207761 10550 000150a8 6974696e 10550 000150ac 67206f6e 10550 000150b0 2073656d 10550 000150b4 20307825 10550 000150b8 782c2063 10550 000150bc 6f756e74 10550 000150c0 3d25642e 10550 000150c4 0a00 10551 000150c6 .align 2 10552 000150c8 LC4_LF8: 10553 000150c8 53757370 .ascii "Suspending current proc (0x%x).\n\000" 10553 000150cc 656e6469 10553 000150d0 6e672063 10553 000150d4 75727265 10553 000150d8 6e742070 10553 000150dc 726f6320 10553 000150e0 28307825 10553 000150e4 78292e0a 10553 000150e8 00 10554 000150e9 .text 10555 00009538 .align 2 10556 00009538 .proc _SemWait 10557 00009538 .global _SemWait 10558 00009538 _SemWait: 10559 ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. 10560 00009538 afbefffc sw -4(r29),r30; push fp 10561 0000953c 001df020 add r30,r0,r29; fp = sp 10562 00009540 afbffff8 sw -8(r29),r31; push ret addr 10563 00009544 2fbd0020 subui r29,r29,#32; alloc local storage 10564 00009548 afa20000 sw 0(r29),r2 10565 0000954c afa30004 sw 4(r29),r3 10566 00009550 afa40008 sw 8(r29),r4 10567 00009554 afa5000c sw 12(r29),r5 10568 00009558 afa60010 sw 16(r29),r6 10569 0000955c afa70014 sw 20(r29),r7 10570 00009560 8fc40000 lw r4,(r30) 10571 00009564 23bdfff8 addi r29,r29,#-8 10572 00009568 2007000f addi r7,r0,#15 10573 0000956c afa70000 sw (r29),r7 10574 00009570 0fff7d14 jal _SetIntrs 10575 00009574 54000000 nop; not filled. 10576 00009578 00013020 add r6,r0,r1 10577 0000957c 23bd0008 addi r29,r29,#8 10578 00009580 23bdfff8 addi r29,r29,#-8 10579 00009584 3c020001 lhi r2,((_debugstr)>>16)&0xffff 10580 00009588 24421f50 addui r2,r2,(_debugstr)&0xffff 10581 0000958c afa20000 sw (r29),r2 10582 00009590 20070049 addi r7,r0,#73 10583 00009594 afa70004 sw 4(r29),r7 10584 00009598 0fffb49c jal _dindex 10585 0000959c 54000000 nop; not filled. 10586 000095a0 23bd0008 addi r29,r29,#8 10587 000095a4 64210000 snei r1,r1,#0 10588 000095a8 1420002c bnez r1,L100_LF8 10589 000095ac 54000000 nop; not filled. 10590 000095b0 23bdfff8 addi r29,r29,#-8 10591 000095b4 afa20000 sw (r29),r2 10592 000095b8 2007002b addi r7,r0,#43 10593 000095bc afa70004 sw 4(r29),r7 10594 000095c0 0fffb474 jal _dindex 10595 000095c4 54000000 nop; not filled. 10596 000095c8 23bd0008 addi r29,r29,#8 10597 000095cc 64210000 snei r1,r1,#0 10598 000095d0 10200024 beqz r1,L99_LF8 10599 000095d4 54000000 nop; not filled. 10600 000095d8 L100_LF8: 10601 000095d8 23bdfff8 addi r29,r29,#-8 10602 000095dc 3c070001 lhi r7,((LC2_LF8)>>16)&0xffff 10603 000095e0 24e7507c addui r7,r7,(LC2_LF8)&0xffff 10604 000095e4 afa70000 sw (r29),r7 10605 000095e8 afa60004 sw 4(r29),r6 10606 000095ec 0c002c24 jal _printf 10607 000095f0 54000000 nop; not filled. 10608 000095f4 23bd0008 addi r29,r29,#8 10609 000095f8 L99_LF8: 10610 000095f8 23bdfff8 addi r29,r29,#-8 10611 000095fc 3c020001 lhi r2,((_debugstr)>>16)&0xffff 10612 00009600 24421f50 addui r2,r2,(_debugstr)&0xffff 10613 00009604 afa20000 sw (r29),r2 10614 00009608 20070073 addi r7,r0,#115 10615 0000960c afa70004 sw 4(r29),r7 10616 00009610 0fffb424 jal _dindex 10617 00009614 54000000 nop; not filled. 10618 00009618 23bd0008 addi r29,r29,#8 10619 0000961c 64210000 snei r1,r1,#0 10620 00009620 1420002c bnez r1,L102_LF8 10621 00009624 54000000 nop; not filled. 10622 00009628 23bdfff8 addi r29,r29,#-8 10623 0000962c afa20000 sw (r29),r2 10624 00009630 2007002b addi r7,r0,#43 10625 00009634 afa70004 sw 4(r29),r7 10626 00009638 0fffb3fc jal _dindex 10627 0000963c 54000000 nop; not filled. 10628 00009640 23bd0008 addi r29,r29,#8 10629 00009644 64210000 snei r1,r1,#0 10630 00009648 1020003c beqz r1,L101_LF8 10631 0000964c 54000000 nop; not filled. 10632 00009650 L102_LF8: 10633 00009650 23bdfff0 addi r29,r29,#-16 10634 00009654 3c070001 lhi r7,((LC3_LF8)>>16)&0xffff 10635 00009658 24e7509c addui r7,r7,(LC3_LF8)&0xffff 10636 0000965c afa70000 sw (r29),r7 10637 00009660 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 10638 00009664 24212018 addui r1,r1,(_currentPCB)&0xffff 10639 00009668 8c210000 lw r1,(r1) 10640 0000966c afa10004 sw 4(r29),r1 10641 00009670 afa40008 sw 8(r29),r4 10642 00009674 8c87000c lw r7,12(r4) 10643 00009678 afa7000c sw 12(r29),r7 10644 0000967c 0c002b94 jal _printf 10645 00009680 54000000 nop; not filled. 10646 00009684 23bd0010 addi r29,r29,#16 10647 00009688 L101_LF8: 10648 00009688 8c81000c lw r1,12(r4) 10649 0000968c 2021ffff addi r1,r1,#-1 10650 00009690 ac81000c sw 12(r4),r1 10651 00009694 68210000 slti r1,r1,#0 10652 00009698 102000d8 beqz r1,L103_LF8 10653 0000969c 54000000 nop; not filled. 10654 000096a0 0ffff648 jal _QueueAllocLink 10655 000096a4 54000000 nop; not filled. 10656 000096a8 00011020 add r2,r0,r1 10657 000096ac 3c050001 lhi r5,((_currentPCB)>>16)&0xffff 10658 000096b0 24a52018 addui r5,r5,(_currentPCB)&0xffff 10659 000096b4 8ca10000 lw r1,(r5) 10660 000096b8 20070000 addi r7,r0,#0 10661 000096bc ac470000 sw (r2),r7 10662 000096c0 ac41000c sw 12(r2),r1 10663 000096c4 23bdfff8 addi r29,r29,#-8 10664 000096c8 3c030001 lhi r3,((_debugstr)>>16)&0xffff 10665 000096cc 24631f50 addui r3,r3,(_debugstr)&0xffff 10666 000096d0 afa30000 sw (r29),r3 10667 000096d4 20070073 addi r7,r0,#115 10668 000096d8 afa70004 sw 4(r29),r7 10669 000096dc 0fffb358 jal _dindex 10670 000096e0 54000000 nop; not filled. 10671 000096e4 23bd0008 addi r29,r29,#8 10672 000096e8 64210000 snei r1,r1,#0 10673 000096ec 1420002c bnez r1,L106_LF8 10674 000096f0 54000000 nop; not filled. 10675 000096f4 23bdfff8 addi r29,r29,#-8 10676 000096f8 afa30000 sw (r29),r3 10677 000096fc 2007002b addi r7,r0,#43 10678 00009700 afa70004 sw 4(r29),r7 10679 00009704 0fffb330 jal _dindex 10680 00009708 54000000 nop; not filled. 10681 0000970c 23bd0008 addi r29,r29,#8 10682 00009710 64210000 snei r1,r1,#0 10683 00009714 10200028 beqz r1,L105_LF8 10684 00009718 54000000 nop; not filled. 10685 0000971c L106_LF8: 10686 0000971c 23bdfff8 addi r29,r29,#-8 10687 00009720 3c070001 lhi r7,((LC4_LF8)>>16)&0xffff 10688 00009724 24e750c8 addui r7,r7,(LC4_LF8)&0xffff 10689 00009728 afa70000 sw (r29),r7 10690 0000972c 8ca10000 lw r1,(r5) 10691 00009730 afa10004 sw 4(r29),r1 10692 00009734 0c002adc jal _printf 10693 00009738 54000000 nop; not filled. 10694 0000973c 23bd0008 addi r29,r29,#8 10695 00009740 L105_LF8: 10696 00009740 8c810004 lw r1,4(r4) 10697 00009744 ac440008 sw 8(r2),r4 10698 00009748 ac410004 sw 4(r2),r1 10699 0000974c 8c270000 lw r7,(r1) 10700 00009750 ac470000 sw (r2),r7 10701 00009754 ac220000 sw (r1),r2 10702 00009758 8c410000 lw r1,(r2) 10703 0000975c ac220004 sw 4(r1),r2 10704 00009760 8c810008 lw r1,8(r4) 10705 00009764 20210001 addi r1,r1,#1 10706 00009768 ac810008 sw 8(r4),r1 10707 0000976c 0fff7b64 jal _ProcessSleep 10708 00009770 54000000 nop; not filled. 10709 00009774 L103_LF8: 10710 00009774 23bdfff8 addi r29,r29,#-8 10711 00009778 afa60000 sw (r29),r6 10712 0000977c 0fff7b08 jal _SetIntrs 10713 00009780 54000000 nop; not filled. 10714 00009784 23bd0008 addi r29,r29,#8 10715 00009788 8fa20000 lw r2,0(r29) 10716 0000978c 8fa30004 lw r3,4(r29) 10717 00009790 8fa40008 lw r4,8(r29) 10718 00009794 8fa5000c lw r5,12(r29) 10719 00009798 8fa60010 lw r6,16(r29) 10720 0000979c 8fa70014 lw r7,20(r29) 10721 000097a0 8fdffff8 lw r31,-8(r30) 10722 000097a4 001ee820 add r29,r0,r30 10723 000097a8 8fdefffc lw r30,-4(r30) 10724 000097ac 4be00000 jr r31 10725 000097b0 54000000 nop 10726 000097b4 .endproc _SemWait 10727 000097b4 .align 2 10728 000097b4 .proc _SemHandleWait 10729 000097b4 .global _SemHandleWait 10730 000097b4 _SemHandleWait: 10731 ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. 10732 000097b4 afbefffc sw -4(r29),r30; push fp 10733 000097b8 001df020 add r30,r0,r29; fp = sp 10734 000097bc afbffff8 sw -8(r29),r31; push ret addr 10735 000097c0 2fbd0010 subui r29,r29,#16; alloc local storage 10736 000097c4 afa20000 sw 0(r29),r2 10737 000097c8 8fdf0000 lw r31,(r30) 10738 000097cc 73e1001f sleui r1,r31,#31 10739 000097d0 10200058 beqz r1,L116_LF8 10740 000097d4 54000000 nop; not filled. 10741 000097d8 53e10002 slli r1,r31,#0x2 10742 000097dc 003f0820 add r1,r1,r31 10743 000097e0 50210002 slli r1,r1,#0x2 10744 000097e4 3c020001 lhi r2,((_sems_LF8)>>16)&0xffff 10745 000097e8 24425128 addui r2,r2,(_sems_LF8)&0xffff 10746 000097ec 0022f820 add r31,r1,r2 10747 000097f0 8fe10010 lw r1,16(r31) 10748 000097f4 64210000 snei r1,r1,#0 10749 000097f8 10200024 beqz r1,L117_LF8 10750 000097fc 54000000 nop; not filled. 10751 00009800 23bdfff8 addi r29,r29,#-8 10752 00009804 afbf0000 sw (r29),r31 10753 00009808 0ffffd2c jal _SemWait 10754 0000980c 54000000 nop; not filled. 10755 00009810 20010000 addi r1,r0,#0 10756 00009814 23bd0008 addi r29,r29,#8 10757 00009818 08000014 j L115_LF8 10758 0000981c 54000000 nop; not filled. 10759 00009820 L117_LF8: 10760 00009820 20010001 addi r1,r0,#1 10761 00009824 08000008 j L115_LF8 10762 00009828 54000000 nop; not filled. 10763 0000982c L116_LF8: 10764 0000982c 20010001 addi r1,r0,#1 10765 00009830 L115_LF8: 10766 00009830 8fa20000 lw r2,0(r29) 10767 00009834 8fdffff8 lw r31,-8(r30) 10768 00009838 001ee820 add r29,r0,r30 10769 0000983c 8fdefffc lw r30,-4(r30) 10770 00009840 4be00000 jr r31 10771 00009844 54000000 nop 10772 00009848 .endproc _SemHandleWait 10773 00009848 .data 10774 000150e9 .align 2 10775 000150ec LC5_LF8: 10776 000150ec 5369676e .ascii "Signalling on sem 0x%x, count=%d.\n\000" 10776 000150f0 616c6c69 10776 000150f4 6e67206f 10776 000150f8 6e207365 10776 000150fc 6d203078 10776 00015100 25782c20 10776 00015104 636f756e 10776 00015108 743d2564 10776 0001510c 2e0a00 10777 0001510f .align 2 10778 00015110 LC6_LF8: 10779 00015110 57616b69 .ascii "Waking up PCB 0x%x.\n\000" 10779 00015114 6e672075 10779 00015118 70205043 10779 0001511c 42203078 10779 00015120 25782e0a 10779 00015124 00 10780 00015125 .text 10781 00009848 .align 2 10782 00009848 .proc _SemSignal 10783 00009848 .global _SemSignal 10784 00009848 _SemSignal: 10785 ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. 10786 00009848 afbefffc sw -4(r29),r30; push fp 10787 0000984c 001df020 add r30,r0,r29; fp = sp 10788 00009850 afbffff8 sw -8(r29),r31; push ret addr 10789 00009854 2fbd0018 subui r29,r29,#24; alloc local storage 10790 00009858 afa20000 sw 0(r29),r2 10791 0000985c afa30004 sw 4(r29),r3 10792 00009860 afa40008 sw 8(r29),r4 10793 00009864 afa5000c sw 12(r29),r5 10794 00009868 8fc20000 lw r2,(r30) 10795 0000986c 23bdfff8 addi r29,r29,#-8 10796 00009870 2005000f addi r5,r0,#15 10797 00009874 afa50000 sw (r29),r5 10798 00009878 0fff7a0c jal _SetIntrs 10799 0000987c 54000000 nop; not filled. 10800 00009880 00012020 add r4,r0,r1 10801 00009884 23bd0008 addi r29,r29,#8 10802 00009888 23bdfff8 addi r29,r29,#-8 10803 0000988c 3c030001 lhi r3,((_debugstr)>>16)&0xffff 10804 00009890 24631f50 addui r3,r3,(_debugstr)&0xffff 10805 00009894 afa30000 sw (r29),r3 10806 00009898 20050073 addi r5,r0,#115 10807 0000989c afa50004 sw 4(r29),r5 10808 000098a0 0fffb194 jal _dindex 10809 000098a4 54000000 nop; not filled. 10810 000098a8 23bd0008 addi r29,r29,#8 10811 000098ac 64210000 snei r1,r1,#0 10812 000098b0 1420002c bnez r1,L123_LF8 10813 000098b4 54000000 nop; not filled. 10814 000098b8 23bdfff8 addi r29,r29,#-8 10815 000098bc afa30000 sw (r29),r3 10816 000098c0 2005002b addi r5,r0,#43 10817 000098c4 afa50004 sw 4(r29),r5 10818 000098c8 0fffb16c jal _dindex 10819 000098cc 54000000 nop; not filled. 10820 000098d0 23bd0008 addi r29,r29,#8 10821 000098d4 64210000 snei r1,r1,#0 10822 000098d8 1020002c beqz r1,L122_LF8 10823 000098dc 54000000 nop; not filled. 10824 000098e0 L123_LF8: 10825 000098e0 23bdfff0 addi r29,r29,#-16 10826 000098e4 3c050001 lhi r5,((LC5_LF8)>>16)&0xffff 10827 000098e8 24a550ec addui r5,r5,(LC5_LF8)&0xffff 10828 000098ec afa50000 sw (r29),r5 10829 000098f0 afa20004 sw 4(r29),r2 10830 000098f4 8c45000c lw r5,12(r2) 10831 000098f8 afa50008 sw 8(r29),r5 10832 000098fc 0c002914 jal _printf 10833 00009900 54000000 nop; not filled. 10834 00009904 23bd0010 addi r29,r29,#16 10835 00009908 L122_LF8: 10836 00009908 8c41000c lw r1,12(r2) 10837 0000990c 20210001 addi r1,r1,#1 10838 00009910 ac41000c sw 12(r2),r1 10839 00009914 70210000 slei r1,r1,#0 10840 00009918 102000ec beqz r1,L124_LF8 10841 0000991c 54000000 nop; not filled. 10842 00009920 8c430000 lw r3,(r2) 10843 00009924 8c610008 lw r1,8(r3) 10844 00009928 8c210008 lw r1,8(r1) 10845 0000992c 6c210000 sgti r1,r1,#0 10846 00009930 1020002c beqz r1,L127_LF8 10847 00009934 54000000 nop; not filled. 10848 00009938 8c610004 lw r1,4(r3) 10849 0000993c 8c650000 lw r5,(r3) 10850 00009940 ac250000 sw (r1),r5 10851 00009944 8c610000 lw r1,(r3) 10852 00009948 8c650004 lw r5,4(r3) 10853 0000994c ac250004 sw 4(r1),r5 10854 00009950 8c620008 lw r2,8(r3) 10855 00009954 8c410008 lw r1,8(r2) 10856 00009958 2021ffff addi r1,r1,#-1 10857 0000995c ac410008 sw 8(r2),r1 10858 00009960 L127_LF8: 10859 00009960 20050000 addi r5,r0,#0 10860 00009964 ac650000 sw (r3),r5 10861 00009968 23bdfff8 addi r29,r29,#-8 10862 0000996c 3c020001 lhi r2,((_debugstr)>>16)&0xffff 10863 00009970 24421f50 addui r2,r2,(_debugstr)&0xffff 10864 00009974 afa20000 sw (r29),r2 10865 00009978 20050073 addi r5,r0,#115 10866 0000997c afa50004 sw 4(r29),r5 10867 00009980 0fffb0b4 jal _dindex 10868 00009984 54000000 nop; not filled. 10869 00009988 23bd0008 addi r29,r29,#8 10870 0000998c 64210000 snei r1,r1,#0 10871 00009990 1420002c bnez r1,L129_LF8 10872 00009994 54000000 nop; not filled. 10873 00009998 23bdfff8 addi r29,r29,#-8 10874 0000999c afa20000 sw (r29),r2 10875 000099a0 2005002b addi r5,r0,#43 10876 000099a4 afa50004 sw 4(r29),r5 10877 000099a8 0fffb08c jal _dindex 10878 000099ac 54000000 nop; not filled. 10879 000099b0 23bd0008 addi r29,r29,#8 10880 000099b4 64210000 snei r1,r1,#0 10881 000099b8 10200028 beqz r1,L128_LF8 10882 000099bc 54000000 nop; not filled. 10883 000099c0 L129_LF8: 10884 000099c0 23bdfff8 addi r29,r29,#-8 10885 000099c4 3c050001 lhi r5,((LC6_LF8)>>16)&0xffff 10886 000099c8 24a55110 addui r5,r5,(LC6_LF8)&0xffff 10887 000099cc afa50000 sw (r29),r5 10888 000099d0 8c61000c lw r1,12(r3) 10889 000099d4 afa10004 sw 4(r29),r1 10890 000099d8 0c002838 jal _printf 10891 000099dc 54000000 nop; not filled. 10892 000099e0 23bd0008 addi r29,r29,#8 10893 000099e4 L128_LF8: 10894 000099e4 23bdfff8 addi r29,r29,#-8 10895 000099e8 8c65000c lw r5,12(r3) 10896 000099ec afa50000 sw (r29),r5 10897 000099f0 0fffc3e0 jal _ProcessWakeup 10898 000099f4 54000000 nop; not filled. 10899 000099f8 afa30000 sw (r29),r3 10900 000099fc 0ffff234 jal _QueueFreeLink 10901 00009a00 54000000 nop; not filled. 10902 00009a04 23bd0008 addi r29,r29,#8 10903 00009a08 L124_LF8: 10904 00009a08 23bdfff8 addi r29,r29,#-8 10905 00009a0c afa40000 sw (r29),r4 10906 00009a10 0fff7874 jal _SetIntrs 10907 00009a14 54000000 nop; not filled. 10908 00009a18 23bd0008 addi r29,r29,#8 10909 00009a1c 8fa20000 lw r2,0(r29) 10910 00009a20 8fa30004 lw r3,4(r29) 10911 00009a24 8fa40008 lw r4,8(r29) 10912 00009a28 8fa5000c lw r5,12(r29) 10913 00009a2c 8fdffff8 lw r31,-8(r30) 10914 00009a30 001ee820 add r29,r0,r30 10915 00009a34 8fdefffc lw r30,-4(r30) 10916 00009a38 4be00000 jr r31 10917 00009a3c 54000000 nop 10918 00009a40 .endproc _SemSignal 10919 00009a40 .align 2 10920 00009a40 .proc _SemHandleSignal 10921 00009a40 .global _SemHandleSignal 10922 00009a40 _SemHandleSignal: 10923 ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. 10924 00009a40 afbefffc sw -4(r29),r30; push fp 10925 00009a44 001df020 add r30,r0,r29; fp = sp 10926 00009a48 afbffff8 sw -8(r29),r31; push ret addr 10927 00009a4c 2fbd0010 subui r29,r29,#16; alloc local storage 10928 00009a50 afa20000 sw 0(r29),r2 10929 00009a54 8fdf0000 lw r31,(r30) 10930 00009a58 73e1001f sleui r1,r31,#31 10931 00009a5c 10200058 beqz r1,L136_LF8 10932 00009a60 54000000 nop; not filled. 10933 00009a64 53e10002 slli r1,r31,#0x2 10934 00009a68 003f0820 add r1,r1,r31 10935 00009a6c 50210002 slli r1,r1,#0x2 10936 00009a70 3c020001 lhi r2,((_sems_LF8)>>16)&0xffff 10937 00009a74 24425128 addui r2,r2,(_sems_LF8)&0xffff 10938 00009a78 0022f820 add r31,r1,r2 10939 00009a7c 8fe10010 lw r1,16(r31) 10940 00009a80 64210000 snei r1,r1,#0 10941 00009a84 10200024 beqz r1,L137_LF8 10942 00009a88 54000000 nop; not filled. 10943 00009a8c 23bdfff8 addi r29,r29,#-8 10944 00009a90 afbf0000 sw (r29),r31 10945 00009a94 0ffffdb0 jal _SemSignal 10946 00009a98 54000000 nop; not filled. 10947 00009a9c 20010000 addi r1,r0,#0 10948 00009aa0 23bd0008 addi r29,r29,#8 10949 00009aa4 08000014 j L135_LF8 10950 00009aa8 54000000 nop; not filled. 10951 00009aac L137_LF8: 10952 00009aac 20010001 addi r1,r0,#1 10953 00009ab0 08000008 j L135_LF8 10954 00009ab4 54000000 nop; not filled. 10955 00009ab8 L136_LF8: 10956 00009ab8 20010001 addi r1,r0,#1 10957 00009abc L135_LF8: 10958 00009abc 8fa20000 lw r2,0(r29) 10959 00009ac0 8fdffff8 lw r31,-8(r30) 10960 00009ac4 001ee820 add r29,r0,r30 10961 00009ac8 8fdefffc lw r30,-4(r30) 10962 00009acc 4be00000 jr r31 10963 00009ad0 54000000 nop 10964 00009ad4 .endproc _SemHandleSignal 10965 00009ad4 .align 2 10966 00009ad4 .proc _LockCreate 10967 00009ad4 .global _LockCreate 10968 00009ad4 _LockCreate: 10969 ; Function 'LockCreate'; 0 bytes of locals, 0 regs to save. 10970 00009ad4 afbefffc sw -4(r29),r30; push fp 10971 00009ad8 001df020 add r30,r0,r29; fp = sp 10972 00009adc afbffff8 sw -8(r29),r31; push ret addr 10973 00009ae0 2fbd0008 subui r29,r29,#8; alloc local storage 10974 00009ae4 8fdffff8 lw r31,-8(r30) 10975 00009ae8 001ee820 add r29,r0,r30 10976 00009aec 8fdefffc lw r30,-4(r30) 10977 00009af0 4be00000 jr r31 10978 00009af4 54000000 nop 10979 00009af8 .endproc _LockCreate 10980 00009af8 .align 2 10981 00009af8 .proc _LockHandleAcquire 10982 00009af8 .global _LockHandleAcquire 10983 00009af8 _LockHandleAcquire: 10984 ; Function 'LockHandleAcquire'; 0 bytes of locals, 0 regs to save. 10985 00009af8 afbefffc sw -4(r29),r30; push fp 10986 00009afc 001df020 add r30,r0,r29; fp = sp 10987 00009b00 afbffff8 sw -8(r29),r31; push ret addr 10988 00009b04 2fbd0008 subui r29,r29,#8; alloc local storage 10989 00009b08 8fdffff8 lw r31,-8(r30) 10990 00009b0c 001ee820 add r29,r0,r30 10991 00009b10 8fdefffc lw r30,-4(r30) 10992 00009b14 4be00000 jr r31 10993 00009b18 54000000 nop 10994 00009b1c .endproc _LockHandleAcquire 10995 00009b1c .align 2 10996 00009b1c .proc _LockHandleRelease 10997 00009b1c .global _LockHandleRelease 10998 00009b1c _LockHandleRelease: 10999 ; Function 'LockHandleRelease'; 0 bytes of locals, 0 regs to save. 11000 00009b1c afbefffc sw -4(r29),r30; push fp 11001 00009b20 001df020 add r30,r0,r29; fp = sp 11002 00009b24 afbffff8 sw -8(r29),r31; push ret addr 11003 00009b28 2fbd0008 subui r29,r29,#8; alloc local storage 11004 00009b2c 8fdffff8 lw r31,-8(r30) 11005 00009b30 001ee820 add r29,r0,r30 11006 00009b34 8fdefffc lw r30,-4(r30) 11007 00009b38 4be00000 jr r31 11008 00009b3c 54000000 nop 11009 00009b40 .endproc _LockHandleRelease 11010 00009b40 .align 2 11011 00009b40 .proc _CondCreate 11012 00009b40 .global _CondCreate 11013 00009b40 _CondCreate: 11014 ; Function 'CondCreate'; 0 bytes of locals, 0 regs to save. 11015 00009b40 afbefffc sw -4(r29),r30; push fp 11016 00009b44 001df020 add r30,r0,r29; fp = sp 11017 00009b48 afbffff8 sw -8(r29),r31; push ret addr 11018 00009b4c 2fbd0008 subui r29,r29,#8; alloc local storage 11019 00009b50 8fdffff8 lw r31,-8(r30) 11020 00009b54 001ee820 add r29,r0,r30 11021 00009b58 8fdefffc lw r30,-4(r30) 11022 00009b5c 4be00000 jr r31 11023 00009b60 54000000 nop 11024 00009b64 .endproc _CondCreate 11025 00009b64 .align 2 11026 00009b64 .proc _CondHandleWait 11027 00009b64 .global _CondHandleWait 11028 00009b64 _CondHandleWait: 11029 ; Function 'CondHandleWait'; 0 bytes of locals, 0 regs to save. 11030 00009b64 afbefffc sw -4(r29),r30; push fp 11031 00009b68 001df020 add r30,r0,r29; fp = sp 11032 00009b6c afbffff8 sw -8(r29),r31; push ret addr 11033 00009b70 2fbd0008 subui r29,r29,#8; alloc local storage 11034 00009b74 8fdffff8 lw r31,-8(r30) 11035 00009b78 001ee820 add r29,r0,r30 11036 00009b7c 8fdefffc lw r30,-4(r30) 11037 00009b80 4be00000 jr r31 11038 00009b84 54000000 nop 11039 00009b88 .endproc _CondHandleWait 11040 00009b88 .align 2 11041 00009b88 .proc _CondHandleSignal 11042 00009b88 .global _CondHandleSignal 11043 00009b88 _CondHandleSignal: 11044 ; Function 'CondHandleSignal'; 0 bytes of locals, 0 regs to save. 11045 00009b88 afbefffc sw -4(r29),r30; push fp 11046 00009b8c 001df020 add r30,r0,r29; fp = sp 11047 00009b90 afbffff8 sw -8(r29),r31; push ret addr 11048 00009b94 2fbd0008 subui r29,r29,#8; alloc local storage 11049 00009b98 8fdffff8 lw r31,-8(r30) 11050 00009b9c 001ee820 add r29,r0,r30 11051 00009ba0 8fdefffc lw r30,-4(r30) 11052 00009ba4 4be00000 jr r31 11053 00009ba8 54000000 nop 11054 00009bac .endproc _CondHandleSignal 11055 00009bac .align 2 11056 00009bac .proc _CondHandleBroadcast 11057 00009bac .global _CondHandleBroadcast 11058 00009bac _CondHandleBroadcast: 11059 ; Function 'CondHandleBroadcast'; 0 bytes of locals, 0 regs to save. 11060 00009bac afbefffc sw -4(r29),r30; push fp 11061 00009bb0 001df020 add r30,r0,r29; fp = sp 11062 00009bb4 afbffff8 sw -8(r29),r31; push ret addr 11063 00009bb8 2fbd0008 subui r29,r29,#8; alloc local storage 11064 00009bbc 8fdffff8 lw r31,-8(r30) 11065 00009bc0 001ee820 add r29,r0,r30 11066 00009bc4 8fdefffc lw r30,-4(r30) 11067 00009bc8 4be00000 jr r31 11068 00009bcc 54000000 nop 11069 00009bd0 .endproc _CondHandleBroadcast 11070 00009bd0 .data 11071 00015125 .align 2 11072 00015128 _sems_LF8: 11073 00015128 .space 640 11074 ; Compiled by GCC 11076 000153a8 .align 2 11077 000153a8 _rcsid_LF9: 11078 000153a8 3a207472 .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" 11078 000153ac 6170732e 11078 000153b0 632c7620 11078 000153b4 312e3120 11078 000153b8 32303030 11078 000153bc 2f30392f 11078 000153c0 32302030 11078 000153c4 313a3530 11078 000153c8 3a313920 11078 000153cc 656c6d20 11078 000153d0 45787020 11078 000153d4 656c6d20 11078 000153d8 303030 11079 000153db .text 11080 00009bd0 .align 2 11081 00009bd0 .proc _isspace 11082 00009bd0 .global _isspace 11083 00009bd0 _isspace: 11084 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 11085 00009bd0 afbefffc sw -4(r29),r30; push fp 11086 00009bd4 001df020 add r30,r0,r29; fp = sp 11087 00009bd8 afbffff8 sw -8(r29),r31; push ret addr 11088 00009bdc 2fbd0010 subui r29,r29,#16; alloc local storage 11089 00009be0 afa20000 sw 0(r29),r2 11090 00009be4 83c20003 lb r2,3(r30) 11091 00009be8 201f0000 addi r31,r0,#0 11092 00009bec 304100ff andi r1,r2,#0x00ff 11093 00009bf0 60210020 seqi r1,r1,#32 11094 00009bf4 14200018 bnez r1,L6_LF9 11095 00009bf8 54000000 nop; not filled. 11096 00009bfc 2041fff7 addi r1,r2,#-9 11097 00009c00 302100ff andi r1,r1,#0x00ff 11098 00009c04 70210001 sleui r1,r1,#1 11099 00009c08 10200008 beqz r1,L5_LF9 11100 00009c0c 54000000 nop; not filled. 11101 00009c10 L6_LF9: 11102 00009c10 201f0001 addi r31,r0,#1 11103 00009c14 L5_LF9: 11104 00009c14 001f0820 add r1,r0,r31 11105 00009c18 8fa20000 lw r2,0(r29) 11106 00009c1c 8fdffff8 lw r31,-8(r30) 11107 00009c20 001ee820 add r29,r0,r30 11108 00009c24 8fdefffc lw r30,-4(r30) 11109 00009c28 4be00000 jr r31 11110 00009c2c 54000000 nop 11111 00009c30 .endproc _isspace 11112 00009c30 .align 2 11113 00009c30 .proc _isxdigit 11114 00009c30 .global _isxdigit 11115 00009c30 _isxdigit: 11116 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 11117 00009c30 afbefffc sw -4(r29),r30; push fp 11118 00009c34 001df020 add r30,r0,r29; fp = sp 11119 00009c38 afbffff8 sw -8(r29),r31; push ret addr 11120 00009c3c 2fbd0010 subui r29,r29,#16; alloc local storage 11121 00009c40 afa20000 sw 0(r29),r2 11122 00009c44 83df0003 lb r31,3(r30) 11123 00009c48 20020000 addi r2,r0,#0 11124 00009c4c 23e1ffd0 addi r1,r31,#-48 11125 00009c50 302100ff andi r1,r1,#0x00ff 11126 00009c54 70210009 sleui r1,r1,#9 11127 00009c58 14200028 bnez r1,L12_LF9 11128 00009c5c 54000000 nop; not filled. 11129 00009c60 23e1ff9f addi r1,r31,#-97 11130 00009c64 302100ff andi r1,r1,#0x00ff 11131 00009c68 70210005 sleui r1,r1,#5 11132 00009c6c 14200014 bnez r1,L12_LF9 11133 00009c70 54000000 nop; not filled. 11134 00009c74 33e100ff andi r1,r31,#0x00ff 11135 00009c78 64210041 snei r1,r1,#65 11136 00009c7c 14200008 bnez r1,L11_LF9 11137 00009c80 54000000 nop; not filled. 11138 00009c84 L12_LF9: 11139 00009c84 20020001 addi r2,r0,#1 11140 00009c88 L11_LF9: 11141 00009c88 00020820 add r1,r0,r2 11142 00009c8c 8fa20000 lw r2,0(r29) 11143 00009c90 8fdffff8 lw r31,-8(r30) 11144 00009c94 001ee820 add r29,r0,r30 11145 00009c98 8fdefffc lw r30,-4(r30) 11146 00009c9c 4be00000 jr r31 11147 00009ca0 54000000 nop 11148 00009ca4 .endproc _isxdigit 11149 00009ca4 .align 2 11150 00009ca4 .proc _DisableIntrs 11151 00009ca4 .global _DisableIntrs 11152 00009ca4 _DisableIntrs: 11153 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 11154 00009ca4 afbefffc sw -4(r29),r30; push fp 11155 00009ca8 001df020 add r30,r0,r29; fp = sp 11156 00009cac afbffff8 sw -8(r29),r31; push ret addr 11157 00009cb0 2fbd0010 subui r29,r29,#16; alloc local storage 11158 00009cb4 afa20000 sw 0(r29),r2 11159 00009cb8 23bdfff8 addi r29,r29,#-8 11160 00009cbc 2002000f addi r2,r0,#15 11161 00009cc0 afa20000 sw (r29),r2 11162 00009cc4 0fff75c0 jal _SetIntrs 11163 00009cc8 54000000 nop; not filled. 11164 00009ccc 23bd0008 addi r29,r29,#8 11165 00009cd0 8fa20000 lw r2,0(r29) 11166 00009cd4 8fdffff8 lw r31,-8(r30) 11167 00009cd8 001ee820 add r29,r0,r30 11168 00009cdc 8fdefffc lw r30,-4(r30) 11169 00009ce0 4be00000 jr r31 11170 00009ce4 54000000 nop 11171 00009ce8 .endproc _DisableIntrs 11172 00009ce8 .align 2 11173 00009ce8 .proc _EnableIntrs 11174 00009ce8 .global _EnableIntrs 11175 00009ce8 _EnableIntrs: 11176 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 11177 00009ce8 afbefffc sw -4(r29),r30; push fp 11178 00009cec 001df020 add r30,r0,r29; fp = sp 11179 00009cf0 afbffff8 sw -8(r29),r31; push ret addr 11180 00009cf4 2fbd0010 subui r29,r29,#16; alloc local storage 11181 00009cf8 afa20000 sw 0(r29),r2 11182 00009cfc 23bdfff8 addi r29,r29,#-8 11183 00009d00 20020000 addi r2,r0,#0 11184 00009d04 afa20000 sw (r29),r2 11185 00009d08 0fff757c jal _SetIntrs 11186 00009d0c 54000000 nop; not filled. 11187 00009d10 23bd0008 addi r29,r29,#8 11188 00009d14 8fa20000 lw r2,0(r29) 11189 00009d18 8fdffff8 lw r31,-8(r30) 11190 00009d1c 001ee820 add r29,r0,r30 11191 00009d20 8fdefffc lw r30,-4(r30) 11192 00009d24 4be00000 jr r31 11193 00009d28 54000000 nop 11194 00009d2c .endproc _EnableIntrs 11195 00009d2c .align 2 11196 00009d2c .proc _RestoreIntrs 11197 00009d2c .global _RestoreIntrs 11198 00009d2c _RestoreIntrs: 11199 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 11200 00009d2c afbefffc sw -4(r29),r30; push fp 11201 00009d30 001df020 add r30,r0,r29; fp = sp 11202 00009d34 afbffff8 sw -8(r29),r31; push ret addr 11203 00009d38 2fbd0010 subui r29,r29,#16; alloc local storage 11204 00009d3c afa20000 sw 0(r29),r2 11205 00009d40 23bdfff8 addi r29,r29,#-8 11206 00009d44 8fc20000 lw r2,(r30) 11207 00009d48 afa20000 sw (r29),r2 11208 00009d4c 0fff7538 jal _SetIntrs 11209 00009d50 54000000 nop; not filled. 11210 00009d54 23bd0008 addi r29,r29,#8 11211 00009d58 8fa20000 lw r2,0(r29) 11212 00009d5c 8fdffff8 lw r31,-8(r30) 11213 00009d60 001ee820 add r29,r0,r30 11214 00009d64 8fdefffc lw r30,-4(r30) 11215 00009d68 4be00000 jr r31 11216 00009d6c 54000000 nop 11217 00009d70 .endproc _RestoreIntrs 11218 00009d70 .align 2 11219 00009d70 .proc _QueueLinkInit 11220 00009d70 .global _QueueLinkInit 11221 00009d70 _QueueLinkInit: 11222 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 11223 00009d70 afbefffc sw -4(r29),r30; push fp 11224 00009d74 001df020 add r30,r0,r29; fp = sp 11225 00009d78 afbffff8 sw -8(r29),r31; push ret addr 11226 00009d7c 2fbd0010 subui r29,r29,#16; alloc local storage 11227 00009d80 afa20000 sw 0(r29),r2 11228 00009d84 8fc10000 lw r1,(r30) 11229 00009d88 8fc20004 lw r2,4(r30) 11230 00009d8c 201f0000 addi r31,r0,#0 11231 00009d90 ac3f0000 sw (r1),r31 11232 00009d94 ac22000c sw 12(r1),r2 11233 00009d98 8fa20000 lw r2,0(r29) 11234 00009d9c 8fdffff8 lw r31,-8(r30) 11235 00009da0 001ee820 add r29,r0,r30 11236 00009da4 8fdefffc lw r30,-4(r30) 11237 00009da8 4be00000 jr r31 11238 00009dac 54000000 nop 11239 00009db0 .endproc _QueueLinkInit 11240 00009db0 .align 2 11241 00009db0 .proc _QueueNext 11242 00009db0 .global _QueueNext 11243 00009db0 _QueueNext: 11244 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 11245 00009db0 afbefffc sw -4(r29),r30; push fp 11246 00009db4 001df020 add r30,r0,r29; fp = sp 11247 00009db8 afbffff8 sw -8(r29),r31; push ret addr 11248 00009dbc 2fbd0008 subui r29,r29,#8; alloc local storage 11249 00009dc0 8fc10000 lw r1,(r30) 11250 00009dc4 8c210000 lw r1,(r1) 11251 00009dc8 8fdffff8 lw r31,-8(r30) 11252 00009dcc 001ee820 add r29,r0,r30 11253 00009dd0 8fdefffc lw r30,-4(r30) 11254 00009dd4 4be00000 jr r31 11255 00009dd8 54000000 nop 11256 00009ddc .endproc _QueueNext 11257 00009ddc .align 2 11258 00009ddc .proc _QueuePrev 11259 00009ddc .global _QueuePrev 11260 00009ddc _QueuePrev: 11261 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 11262 00009ddc afbefffc sw -4(r29),r30; push fp 11263 00009de0 001df020 add r30,r0,r29; fp = sp 11264 00009de4 afbffff8 sw -8(r29),r31; push ret addr 11265 00009de8 2fbd0008 subui r29,r29,#8; alloc local storage 11266 00009dec 8fc10000 lw r1,(r30) 11267 00009df0 8c210004 lw r1,4(r1) 11268 00009df4 8fdffff8 lw r31,-8(r30) 11269 00009df8 001ee820 add r29,r0,r30 11270 00009dfc 8fdefffc lw r30,-4(r30) 11271 00009e00 4be00000 jr r31 11272 00009e04 54000000 nop 11273 00009e08 .endproc _QueuePrev 11274 00009e08 .align 2 11275 00009e08 .proc _QueueFirst 11276 00009e08 .global _QueueFirst 11277 00009e08 _QueueFirst: 11278 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 11279 00009e08 afbefffc sw -4(r29),r30; push fp 11280 00009e0c 001df020 add r30,r0,r29; fp = sp 11281 00009e10 afbffff8 sw -8(r29),r31; push ret addr 11282 00009e14 2fbd0008 subui r29,r29,#8; alloc local storage 11283 00009e18 8fc10000 lw r1,(r30) 11284 00009e1c 8c210000 lw r1,(r1) 11285 00009e20 8fdffff8 lw r31,-8(r30) 11286 00009e24 001ee820 add r29,r0,r30 11287 00009e28 8fdefffc lw r30,-4(r30) 11288 00009e2c 4be00000 jr r31 11289 00009e30 54000000 nop 11290 00009e34 .endproc _QueueFirst 11291 00009e34 .align 2 11292 00009e34 .proc _QueueLast 11293 00009e34 .global _QueueLast 11294 00009e34 _QueueLast: 11295 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 11296 00009e34 afbefffc sw -4(r29),r30; push fp 11297 00009e38 001df020 add r30,r0,r29; fp = sp 11298 00009e3c afbffff8 sw -8(r29),r31; push ret addr 11299 00009e40 2fbd0008 subui r29,r29,#8; alloc local storage 11300 00009e44 8fc10000 lw r1,(r30) 11301 00009e48 8c210004 lw r1,4(r1) 11302 00009e4c 8fdffff8 lw r31,-8(r30) 11303 00009e50 001ee820 add r29,r0,r30 11304 00009e54 8fdefffc lw r30,-4(r30) 11305 00009e58 4be00000 jr r31 11306 00009e5c 54000000 nop 11307 00009e60 .endproc _QueueLast 11308 00009e60 .align 2 11309 00009e60 .proc _QueueInsertAfter 11310 00009e60 .global _QueueInsertAfter 11311 00009e60 _QueueInsertAfter: 11312 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 11313 00009e60 afbefffc sw -4(r29),r30; push fp 11314 00009e64 001df020 add r30,r0,r29; fp = sp 11315 00009e68 afbffff8 sw -8(r29),r31; push ret addr 11316 00009e6c 2fbd0010 subui r29,r29,#16; alloc local storage 11317 00009e70 afa20000 sw 0(r29),r2 11318 00009e74 afa30004 sw 4(r29),r3 11319 00009e78 8fc30000 lw r3,(r30) 11320 00009e7c 8fc20004 lw r2,4(r30) 11321 00009e80 8fc10008 lw r1,8(r30) 11322 00009e84 ac230008 sw 8(r1),r3 11323 00009e88 ac220004 sw 4(r1),r2 11324 00009e8c 8c5f0000 lw r31,(r2) 11325 00009e90 ac3f0000 sw (r1),r31 11326 00009e94 ac410000 sw (r2),r1 11327 00009e98 8c220000 lw r2,(r1) 11328 00009e9c ac410004 sw 4(r2),r1 11329 00009ea0 8c610008 lw r1,8(r3) 11330 00009ea4 20210001 addi r1,r1,#1 11331 00009ea8 ac610008 sw 8(r3),r1 11332 00009eac 8fa20000 lw r2,0(r29) 11333 00009eb0 8fa30004 lw r3,4(r29) 11334 00009eb4 8fdffff8 lw r31,-8(r30) 11335 00009eb8 001ee820 add r29,r0,r30 11336 00009ebc 8fdefffc lw r30,-4(r30) 11337 00009ec0 4be00000 jr r31 11338 00009ec4 54000000 nop 11339 00009ec8 .endproc _QueueInsertAfter 11340 00009ec8 .align 2 11341 00009ec8 .proc _QueueInsertFirst 11342 00009ec8 .global _QueueInsertFirst 11343 00009ec8 _QueueInsertFirst: 11344 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 11345 00009ec8 afbefffc sw -4(r29),r30; push fp 11346 00009ecc 001df020 add r30,r0,r29; fp = sp 11347 00009ed0 afbffff8 sw -8(r29),r31; push ret addr 11348 00009ed4 2fbd0010 subui r29,r29,#16; alloc local storage 11349 00009ed8 afa20000 sw 0(r29),r2 11350 00009edc afa30004 sw 4(r29),r3 11351 00009ee0 8fc30000 lw r3,(r30) 11352 00009ee4 8fc10004 lw r1,4(r30) 11353 00009ee8 ac230008 sw 8(r1),r3 11354 00009eec ac230004 sw 4(r1),r3 11355 00009ef0 8c7f0000 lw r31,(r3) 11356 00009ef4 ac3f0000 sw (r1),r31 11357 00009ef8 ac610000 sw (r3),r1 11358 00009efc 8c220000 lw r2,(r1) 11359 00009f00 ac410004 sw 4(r2),r1 11360 00009f04 8c610008 lw r1,8(r3) 11361 00009f08 20210001 addi r1,r1,#1 11362 00009f0c ac610008 sw 8(r3),r1 11363 00009f10 8fa20000 lw r2,0(r29) 11364 00009f14 8fa30004 lw r3,4(r29) 11365 00009f18 8fdffff8 lw r31,-8(r30) 11366 00009f1c 001ee820 add r29,r0,r30 11367 00009f20 8fdefffc lw r30,-4(r30) 11368 00009f24 4be00000 jr r31 11369 00009f28 54000000 nop 11370 00009f2c .endproc _QueueInsertFirst 11371 00009f2c .align 2 11372 00009f2c .proc _QueueInsertLast 11373 00009f2c .global _QueueInsertLast 11374 00009f2c _QueueInsertLast: 11375 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 11376 00009f2c afbefffc sw -4(r29),r30; push fp 11377 00009f30 001df020 add r30,r0,r29; fp = sp 11378 00009f34 afbffff8 sw -8(r29),r31; push ret addr 11379 00009f38 2fbd0010 subui r29,r29,#16; alloc local storage 11380 00009f3c afa20000 sw 0(r29),r2 11381 00009f40 afa30004 sw 4(r29),r3 11382 00009f44 8fc30000 lw r3,(r30) 11383 00009f48 8fc10004 lw r1,4(r30) 11384 00009f4c 8c620004 lw r2,4(r3) 11385 00009f50 ac230008 sw 8(r1),r3 11386 00009f54 ac220004 sw 4(r1),r2 11387 00009f58 8c5f0000 lw r31,(r2) 11388 00009f5c ac3f0000 sw (r1),r31 11389 00009f60 ac410000 sw (r2),r1 11390 00009f64 8c220000 lw r2,(r1) 11391 00009f68 ac410004 sw 4(r2),r1 11392 00009f6c 8c610008 lw r1,8(r3) 11393 00009f70 20210001 addi r1,r1,#1 11394 00009f74 ac610008 sw 8(r3),r1 11395 00009f78 8fa20000 lw r2,0(r29) 11396 00009f7c 8fa30004 lw r3,4(r29) 11397 00009f80 8fdffff8 lw r31,-8(r30) 11398 00009f84 001ee820 add r29,r0,r30 11399 00009f88 8fdefffc lw r30,-4(r30) 11400 00009f8c 4be00000 jr r31 11401 00009f90 54000000 nop 11402 00009f94 .endproc _QueueInsertLast 11403 00009f94 .align 2 11404 00009f94 .proc _QueueRemove 11405 00009f94 .global _QueueRemove 11406 00009f94 _QueueRemove: 11407 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 11408 00009f94 afbefffc sw -4(r29),r30; push fp 11409 00009f98 001df020 add r30,r0,r29; fp = sp 11410 00009f9c afbffff8 sw -8(r29),r31; push ret addr 11411 00009fa0 2fbd0010 subui r29,r29,#16; alloc local storage 11412 00009fa4 afa20000 sw 0(r29),r2 11413 00009fa8 afa30004 sw 4(r29),r3 11414 00009fac 8fdf0000 lw r31,(r30) 11415 00009fb0 8fe10008 lw r1,8(r31) 11416 00009fb4 8c210008 lw r1,8(r1) 11417 00009fb8 6c210000 sgti r1,r1,#0 11418 00009fbc 1020002c beqz r1,L44_LF9 11419 00009fc0 54000000 nop; not filled. 11420 00009fc4 8fe10004 lw r1,4(r31) 11421 00009fc8 8fe30000 lw r3,(r31) 11422 00009fcc ac230000 sw (r1),r3 11423 00009fd0 8fe10000 lw r1,(r31) 11424 00009fd4 8fe30004 lw r3,4(r31) 11425 00009fd8 ac230004 sw 4(r1),r3 11426 00009fdc 8fe20008 lw r2,8(r31) 11427 00009fe0 8c410008 lw r1,8(r2) 11428 00009fe4 2021ffff addi r1,r1,#-1 11429 00009fe8 ac410008 sw 8(r2),r1 11430 00009fec L44_LF9: 11431 00009fec 20030000 addi r3,r0,#0 11432 00009ff0 afe30000 sw (r31),r3 11433 00009ff4 8fa20000 lw r2,0(r29) 11434 00009ff8 8fa30004 lw r3,4(r29) 11435 00009ffc 8fdffff8 lw r31,-8(r30) 11436 0000a000 001ee820 add r29,r0,r30 11437 0000a004 8fdefffc lw r30,-4(r30) 11438 0000a008 4be00000 jr r31 11439 0000a00c 54000000 nop 11440 0000a010 .endproc _QueueRemove 11441 0000a010 .align 2 11442 0000a010 .proc _QueueLength 11443 0000a010 .global _QueueLength 11444 0000a010 _QueueLength: 11445 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 11446 0000a010 afbefffc sw -4(r29),r30; push fp 11447 0000a014 001df020 add r30,r0,r29; fp = sp 11448 0000a018 afbffff8 sw -8(r29),r31; push ret addr 11449 0000a01c 2fbd0008 subui r29,r29,#8; alloc local storage 11450 0000a020 8fc10000 lw r1,(r30) 11451 0000a024 8c210008 lw r1,8(r1) 11452 0000a028 8fdffff8 lw r31,-8(r30) 11453 0000a02c 001ee820 add r29,r0,r30 11454 0000a030 8fdefffc lw r30,-4(r30) 11455 0000a034 4be00000 jr r31 11456 0000a038 54000000 nop 11457 0000a03c .endproc _QueueLength 11458 0000a03c .align 2 11459 0000a03c .proc _QueueEmpty 11460 0000a03c .global _QueueEmpty 11461 0000a03c _QueueEmpty: 11462 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 11463 0000a03c afbefffc sw -4(r29),r30; push fp 11464 0000a040 001df020 add r30,r0,r29; fp = sp 11465 0000a044 afbffff8 sw -8(r29),r31; push ret addr 11466 0000a048 2fbd0008 subui r29,r29,#8; alloc local storage 11467 0000a04c 8fc10000 lw r1,(r30) 11468 0000a050 8c210008 lw r1,8(r1) 11469 0000a054 60210000 seqi r1,r1,#0 11470 0000a058 8fdffff8 lw r31,-8(r30) 11471 0000a05c 001ee820 add r29,r0,r30 11472 0000a060 8fdefffc lw r30,-4(r30) 11473 0000a064 4be00000 jr r31 11474 0000a068 54000000 nop 11475 0000a06c .endproc _QueueEmpty 11476 0000a06c .align 2 11477 0000a06c .proc _TimerSet 11478 0000a06c .global _TimerSet 11479 0000a06c _TimerSet: 11480 ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. 11481 0000a06c afbefffc sw -4(r29),r30; push fp 11482 0000a070 001df020 add r30,r0,r29; fp = sp 11483 0000a074 afbffff8 sw -8(r29),r31; push ret addr 11484 0000a078 2fbd0008 subui r29,r29,#8; alloc local storage 11485 0000a07c 3c01fff0 lhi r1,#-16 11486 0000a080 24210010 addui r1,r1,#16 11487 0000a084 8fdf0000 lw r31,(r30) 11488 0000a088 ac3f0000 sw (r1),r31 11489 0000a08c 8fdffff8 lw r31,-8(r30) 11490 0000a090 001ee820 add r29,r0,r30 11491 0000a094 8fdefffc lw r30,-4(r30) 11492 0000a098 4be00000 jr r31 11493 0000a09c 54000000 nop 11494 0000a0a0 .endproc _TimerSet 11495 0000a0a0 .align 2 11496 0000a0a0 .proc _KbdModuleInit 11497 0000a0a0 .global _KbdModuleInit 11498 0000a0a0 _KbdModuleInit: 11499 ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. 11500 0000a0a0 afbefffc sw -4(r29),r30; push fp 11501 0000a0a4 001df020 add r30,r0,r29; fp = sp 11502 0000a0a8 afbffff8 sw -8(r29),r31; push ret addr 11503 0000a0ac 2fbd0008 subui r29,r29,#8; alloc local storage 11504 0000a0b0 3c01fff0 lhi r1,#-16 11505 0000a0b4 242101c0 addui r1,r1,#448 11506 0000a0b8 201f0001 addi r31,r0,#1 11507 0000a0bc ac3f0000 sw (r1),r31 11508 0000a0c0 8fdffff8 lw r31,-8(r30) 11509 0000a0c4 001ee820 add r29,r0,r30 11510 0000a0c8 8fdefffc lw r30,-4(r30) 11511 0000a0cc 4be00000 jr r31 11512 0000a0d0 54000000 nop 11513 0000a0d4 .endproc _KbdModuleInit 11514 0000a0d4 .data 11515 000153db .align 2 11516 000153dc LC0_LF9: 11517 000153dc 46617461 .ascii "Fatal: Cumulative length of all arguments > 100\n\000" 11517 000153e0 6c3a2043 11517 000153e4 756d756c 11517 000153e8 61746976 11517 000153ec 65206c65 11517 000153f0 6e677468 11517 000153f4 206f6620 11517 000153f8 616c6c20 11517 000153fc 61726775 11517 00015400 6d656e74 11517 00015404 73203e20 11517 00015408 3130300a 11517 0001540c 00 11518 0001540d .text 11519 0000a0d4 .align 2 11520 0000a0d4 .proc _TrapProcessCreateHandler_LF9 11521 0000a0d4 _TrapProcessCreateHandler_LF9: 11522 ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. 11523 0000a0d4 afbefffc sw -4(r29),r30; push fp 11524 0000a0d8 001df020 add r30,r0,r29; fp = sp 11525 0000a0dc afbffff8 sw -8(r29),r31; push ret addr 11526 0000a0e0 2fbd06a0 subui r29,r29,#1696; alloc local storage 11527 0000a0e4 afa20000 sw 0(r29),r2 11528 0000a0e8 afa30004 sw 4(r29),r3 11529 0000a0ec afa40008 sw 8(r29),r4 11530 0000a0f0 afa5000c sw 12(r29),r5 11531 0000a0f4 afa60010 sw 16(r29),r6 11532 0000a0f8 afa70014 sw 20(r29),r7 11533 0000a0fc afa80018 sw 24(r29),r8 11534 0000a100 afa9001c sw 28(r29),r9 11535 0000a104 afaa0020 sw 32(r29),r10 11536 0000a108 afab0024 sw 36(r29),r11 11537 0000a10c afac0028 sw 40(r29),r12 11538 0000a110 8fc40000 lw r4,(r30) 11539 0000a114 8fc60004 lw r6,4(r30) 11540 0000a118 23c2fbf8 addi r2,r30,#-1032 11541 0000a11c 23c3fc5b addi r3,r30,#-933 11542 0000a120 L65_LF9: 11543 0000a120 200c0000 addi r12,r0,(#0x0)&0xff 11544 0000a124 a04c0000 sb (r2),r12 11545 0000a128 20420001 addi r2,r2,#1 11546 0000a12c 0043082c sle r1,r2,r3 11547 0000a130 1420ffec bnez r1,L65_LF9 11548 0000a134 54000000 nop; not filled. 11549 0000a138 20050000 addi r5,r0,#0 11550 0000a13c 64c10000 snei r1,r6,#0 11551 0000a140 142000a0 bnez r1,L67_LF9 11552 0000a144 54000000 nop; not filled. 11553 0000a148 23bdfff0 addi r29,r29,#-16 11554 0000a14c 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 11555 0000a150 24422018 addui r2,r2,(_currentPCB)&0xffff 11556 0000a154 8c4c0000 lw r12,(r2) 11557 0000a158 afac0000 sw (r29),r12 11558 0000a15c afa40004 sw 4(r29),r4 11559 0000a160 23c1f990 addi r1,r30,#-1648 11560 0000a164 afa10008 sw 8(r29),r1 11561 0000a168 200c0200 addi r12,r0,#512 11562 0000a16c afac000c sw 12(r29),r12 11563 0000a170 0fffa014 jal _MemoryCopyUserToSystem 11564 0000a174 54000000 nop; not filled. 11565 0000a178 23bd0010 addi r29,r29,#16 11566 0000a17c 23c4fb8f addi r4,r30,#-1137 11567 0000a180 23c3fb90 addi r3,r30,#-1136 11568 0000a184 L68_LF9: 11569 0000a184 23bdfff0 addi r29,r29,#-16 11570 0000a188 8c4c0000 lw r12,(r2) 11571 0000a18c afac0000 sw (r29),r12 11572 0000a190 8fc1f990 lw r1,-1648(r30) 11573 0000a194 00250820 add r1,r1,r5 11574 0000a198 afa10004 sw 4(r29),r1 11575 0000a19c afa30008 sw 8(r29),r3 11576 0000a1a0 200c0001 addi r12,r0,#1 11577 0000a1a4 afac000c sw 12(r29),r12 11578 0000a1a8 0fff9fdc jal _MemoryCopyUserToSystem 11579 0000a1ac 54000000 nop; not filled. 11580 0000a1b0 20840001 addi r4,r4,#1 11581 0000a1b4 20630001 addi r3,r3,#1 11582 0000a1b8 20a50001 addi r5,r5,#1 11583 0000a1bc 23bd0010 addi r29,r29,#16 11584 0000a1c0 70a10063 sleui r1,r5,#99 11585 0000a1c4 10200060 beqz r1,L73_LF9 11586 0000a1c8 54000000 nop; not filled. 11587 0000a1cc 90810000 lbu r1,(r4) 11588 0000a1d0 64210000 snei r1,r1,#0 11589 0000a1d4 10200050 beqz r1,L73_LF9 11590 0000a1d8 54000000 nop; not filled. 11591 0000a1dc 0bffffa4 j L68_LF9 11592 0000a1e0 54000000 nop; not filled. 11593 0000a1e4 L67_LF9: 11594 0000a1e4 23bdfff0 addi r29,r29,#-16 11595 0000a1e8 afa40000 sw (r29),r4 11596 0000a1ec 23c1f990 addi r1,r30,#-1648 11597 0000a1f0 afa10004 sw 4(r29),r1 11598 0000a1f4 200c0200 addi r12,r0,#512 11599 0000a1f8 afac0008 sw 8(r29),r12 11600 0000a1fc 0fffabc8 jal _bcopy 11601 0000a200 54000000 nop; not filled. 11602 0000a204 8fccf990 lw r12,-1648(r30) 11603 0000a208 afac0000 sw (r29),r12 11604 0000a20c 23c1fb90 addi r1,r30,#-1136 11605 0000a210 afa10004 sw 4(r29),r1 11606 0000a214 200c0064 addi r12,r0,#100 11607 0000a218 afac0008 sw 8(r29),r12 11608 0000a21c 0fffa3bc jal _dstrncpy 11609 0000a220 54000000 nop; not filled. 11610 0000a224 23bd0010 addi r29,r29,#16 11611 0000a228 L73_LF9: 11612 0000a228 200c0000 addi r12,r0,(#0x0)&0xff 11613 0000a22c a3ccfbf3 sb -1037(r30),r12 11614 0000a230 20050000 addi r5,r0,#0 11615 0000a234 64c10000 snei r1,r6,#0 11616 0000a238 142000b0 bnez r1,L74_LF9 11617 0000a23c 54000000 nop; not filled. 11618 0000a240 3c080001 lhi r8,((_currentPCB)>>16)&0xffff 11619 0000a244 25082018 addui r8,r8,(_currentPCB)&0xffff 11620 0000a248 23cbfbf8 addi r11,r30,#-1032 11621 0000a24c 23cafbf7 addi r10,r30,#-1033 11622 0000a250 23c6fff8 addi r6,r30,#-8 11623 0000a254 23c90020 addi r9,r30,#32 11624 0000a258 L85_LF9: 11625 0000a258 8cc1f998 lw r1,-1640(r6) 11626 0000a25c 64210000 snei r1,r1,#0 11627 0000a260 1020012c beqz r1,L86_LF9 11628 0000a264 54000000 nop; not filled. 11629 0000a268 20020000 addi r2,r0,#0 11630 0000a26c 00063820 add r7,r0,r6 11631 0000a270 00aa2020 add r4,r5,r10 11632 0000a274 00ab1820 add r3,r5,r11 11633 0000a278 L80_LF9: 11634 0000a278 23bdfff0 addi r29,r29,#-16 11635 0000a27c 8d0c0000 lw r12,(r8) 11636 0000a280 afac0000 sw (r29),r12 11637 0000a284 8ce1f998 lw r1,-1640(r7) 11638 0000a288 00220820 add r1,r1,r2 11639 0000a28c afa10004 sw 4(r29),r1 11640 0000a290 afa30008 sw 8(r29),r3 11641 0000a294 200c0001 addi r12,r0,#1 11642 0000a298 afac000c sw 12(r29),r12 11643 0000a29c 0fff9ee8 jal _MemoryCopyUserToSystem 11644 0000a2a0 54000000 nop; not filled. 11645 0000a2a4 20840001 addi r4,r4,#1 11646 0000a2a8 20630001 addi r3,r3,#1 11647 0000a2ac 20a50001 addi r5,r5,#1 11648 0000a2b0 20420001 addi r2,r2,#1 11649 0000a2b4 23bd0010 addi r29,r29,#16 11650 0000a2b8 70a103ff sleui r1,r5,#1023 11651 0000a2bc 10200014 beqz r1,L77_LF9 11652 0000a2c0 54000000 nop; not filled. 11653 0000a2c4 90810000 lbu r1,(r4) 11654 0000a2c8 64210000 snei r1,r1,#0 11655 0000a2cc 1420ffa8 bnez r1,L80_LF9 11656 0000a2d0 54000000 nop; not filled. 11657 0000a2d4 L77_LF9: 11658 0000a2d4 20c60004 addi r6,r6,#4 11659 0000a2d8 00c9082c sle r1,r6,r9 11660 0000a2dc 102000b0 beqz r1,L86_LF9 11661 0000a2e0 54000000 nop; not filled. 11662 0000a2e4 0bffff70 j L85_LF9 11663 0000a2e8 54000000 nop; not filled. 11664 0000a2ec L74_LF9: 11665 0000a2ec 23c5fbf8 addi r5,r30,#-1032 11666 0000a2f0 00053820 add r7,r0,r5 11667 0000a2f4 23c3fff8 addi r3,r30,#-8 11668 0000a2f8 23c60020 addi r6,r30,#32 11669 0000a2fc L93_LF9: 11670 0000a2fc 2064f998 addi r4,r3,#-1640 11671 0000a300 8c820000 lw r2,(r4) 11672 0000a304 64410000 snei r1,r2,#0 11673 0000a308 10200084 beqz r1,L86_LF9 11674 0000a30c 54000000 nop; not filled. 11675 0000a310 23bdfff8 addi r29,r29,#-8 11676 0000a314 afa20000 sw (r29),r2 11677 0000a318 0fffa4ac jal _dstrlen 11678 0000a31c 54000000 nop; not filled. 11679 0000a320 00a11020 add r2,r5,r1 11680 0000a324 00470822 sub r1,r2,r7 11681 0000a328 23bd0008 addi r29,r29,#8 11682 0000a32c 6c210064 sgti r1,r1,#100 11683 0000a330 10200028 beqz r1,L92_LF9 11684 0000a334 54000000 nop; not filled. 11685 0000a338 23bdfff8 addi r29,r29,#-8 11686 0000a33c 3c0c0001 lhi r12,((LC0_LF9)>>16)&0xffff 11687 0000a340 258c53dc addui r12,r12,(LC0_LF9)&0xffff 11688 0000a344 afac0000 sw (r29),r12 11689 0000a348 0c001ec8 jal _printf 11690 0000a34c 54000000 nop; not filled. 11691 0000a350 0c001ea8 jal _exitsim 11692 0000a354 54000000 nop; not filled. 11693 0000a358 23bd0008 addi r29,r29,#8 11694 0000a35c L92_LF9: 11695 0000a35c 23bdfff8 addi r29,r29,#-8 11696 0000a360 afa50000 sw (r29),r5 11697 0000a364 8c810000 lw r1,(r4) 11698 0000a368 afa10004 sw 4(r29),r1 11699 0000a36c 0fffa208 jal _dstrcpy 11700 0000a370 54000000 nop; not filled. 11701 0000a374 200c0000 addi r12,r0,(#0x0)&0xff 11702 0000a378 a04c0000 sb (r2),r12 11703 0000a37c 23bd0008 addi r29,r29,#8 11704 0000a380 20630004 addi r3,r3,#4 11705 0000a384 0066082c sle r1,r3,r6 11706 0000a388 1420ff70 bnez r1,L93_LF9 11707 0000a38c 54000000 nop; not filled. 11708 0000a390 L86_LF9: 11709 0000a390 200c0000 addi r12,r0,(#0x0)&0xff 11710 0000a394 a3ccfff7 sb -9(r30),r12 11711 0000a398 23bdfff0 addi r29,r29,#-16 11712 0000a39c 200c0000 addi r12,r0,#0 11713 0000a3a0 afac0000 sw (r29),r12 11714 0000a3a4 23c1fbf8 addi r1,r30,#-1032 11715 0000a3a8 afa10004 sw 4(r29),r1 11716 0000a3ac 23c1fb90 addi r1,r30,#-1136 11717 0000a3b0 afa10008 sw 8(r29),r1 11718 0000a3b4 200c0001 addi r12,r0,#1 11719 0000a3b8 afac000c sw 12(r29),r12 11720 0000a3bc 0fffbd60 jal _ProcessFork 11721 0000a3c0 54000000 nop; not filled. 11722 0000a3c4 23bd0010 addi r29,r29,#16 11723 0000a3c8 8fa20000 lw r2,0(r29) 11724 0000a3cc 8fa30004 lw r3,4(r29) 11725 0000a3d0 8fa40008 lw r4,8(r29) 11726 0000a3d4 8fa5000c lw r5,12(r29) 11727 0000a3d8 8fa60010 lw r6,16(r29) 11728 0000a3dc 8fa70014 lw r7,20(r29) 11729 0000a3e0 8fa80018 lw r8,24(r29) 11730 0000a3e4 8fa9001c lw r9,28(r29) 11731 0000a3e8 8faa0020 lw r10,32(r29) 11732 0000a3ec 8fab0024 lw r11,36(r29) 11733 0000a3f0 8fac0028 lw r12,40(r29) 11734 0000a3f4 8fdffff8 lw r31,-8(r30) 11735 0000a3f8 001ee820 add r29,r0,r30 11736 0000a3fc 8fdefffc lw r30,-4(r30) 11737 0000a400 4be00000 jr r31 11738 0000a404 54000000 nop 11739 0000a408 .endproc _TrapProcessCreateHandler_LF9 11740 0000a408 .align 2 11741 0000a408 .proc _TrapPrintfHandler_LF9 11742 0000a408 _TrapPrintfHandler_LF9: 11743 ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. 11744 0000a408 afbefffc sw -4(r29),r30; push fp 11745 0000a40c 001df020 add r30,r0,r29; fp = sp 11746 0000a410 afbffff8 sw -8(r29),r31; push ret addr 11747 0000a414 2fbd00d0 subui r29,r29,#208; alloc local storage 11748 0000a418 afa20000 sw 0(r29),r2 11749 0000a41c afa30004 sw 4(r29),r3 11750 0000a420 afa40008 sw 8(r29),r4 11751 0000a424 afa5000c sw 12(r29),r5 11752 0000a428 afa60010 sw 16(r29),r6 11753 0000a42c afa70014 sw 20(r29),r7 11754 0000a430 afa80018 sw 24(r29),r8 11755 0000a434 afa9001c sw 28(r29),r9 11756 0000a438 afaa0020 sw 32(r29),r10 11757 0000a43c afab0024 sw 36(r29),r11 11758 0000a440 8fc40000 lw r4,(r30) 11759 0000a444 8fc10004 lw r1,4(r30) 11760 0000a448 20080000 addi r8,r0,#0 11761 0000a44c 00081820 add r3,r0,r8 11762 0000a450 64210000 snei r1,r1,#0 11763 0000a454 142000a0 bnez r1,L95_LF9 11764 0000a458 54000000 nop; not filled. 11765 0000a45c 23bdfff0 addi r29,r29,#-16 11766 0000a460 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 11767 0000a464 24422018 addui r2,r2,(_currentPCB)&0xffff 11768 0000a468 8c4b0000 lw r11,(r2) 11769 0000a46c afab0000 sw (r29),r11 11770 0000a470 afa40004 sw 4(r29),r4 11771 0000a474 23c1ff58 addi r1,r30,#-168 11772 0000a478 afa10008 sw 8(r29),r1 11773 0000a47c 200b0028 addi r11,r0,#40 11774 0000a480 afab000c sw 12(r29),r11 11775 0000a484 0fff9d00 jal _MemoryCopyUserToSystem 11776 0000a488 54000000 nop; not filled. 11777 0000a48c 23bd0010 addi r29,r29,#16 11778 0000a490 23c5ffa7 addi r5,r30,#-89 11779 0000a494 23c4ffa8 addi r4,r30,#-88 11780 0000a498 L96_LF9: 11781 0000a498 23bdfff0 addi r29,r29,#-16 11782 0000a49c 8c4b0000 lw r11,(r2) 11783 0000a4a0 afab0000 sw (r29),r11 11784 0000a4a4 8fc1ff58 lw r1,-168(r30) 11785 0000a4a8 00230820 add r1,r1,r3 11786 0000a4ac afa10004 sw 4(r29),r1 11787 0000a4b0 afa40008 sw 8(r29),r4 11788 0000a4b4 200b0001 addi r11,r0,#1 11789 0000a4b8 afab000c sw 12(r29),r11 11790 0000a4bc 0fff9cc8 jal _MemoryCopyUserToSystem 11791 0000a4c0 54000000 nop; not filled. 11792 0000a4c4 20a50001 addi r5,r5,#1 11793 0000a4c8 20840001 addi r4,r4,#1 11794 0000a4cc 20630001 addi r3,r3,#1 11795 0000a4d0 23bd0010 addi r29,r29,#16 11796 0000a4d4 7061004f sleui r1,r3,#79 11797 0000a4d8 10200060 beqz r1,L101_LF9 11798 0000a4dc 54000000 nop; not filled. 11799 0000a4e0 90a10000 lbu r1,(r5) 11800 0000a4e4 64210000 snei r1,r1,#0 11801 0000a4e8 10200050 beqz r1,L101_LF9 11802 0000a4ec 54000000 nop; not filled. 11803 0000a4f0 0bffffa4 j L96_LF9 11804 0000a4f4 54000000 nop; not filled. 11805 0000a4f8 L95_LF9: 11806 0000a4f8 23bdfff0 addi r29,r29,#-16 11807 0000a4fc afa40000 sw (r29),r4 11808 0000a500 23c1ff58 addi r1,r30,#-168 11809 0000a504 afa10004 sw 4(r29),r1 11810 0000a508 200b0028 addi r11,r0,#40 11811 0000a50c afab0008 sw 8(r29),r11 11812 0000a510 0fffa8b4 jal _bcopy 11813 0000a514 54000000 nop; not filled. 11814 0000a518 8fcbff58 lw r11,-168(r30) 11815 0000a51c afab0000 sw (r29),r11 11816 0000a520 23c1ffa8 addi r1,r30,#-88 11817 0000a524 afa10004 sw 4(r29),r1 11818 0000a528 200b0050 addi r11,r0,#80 11819 0000a52c afab0008 sw 8(r29),r11 11820 0000a530 0fffa0a8 jal _dstrncpy 11821 0000a534 54000000 nop; not filled. 11822 0000a538 23bd0010 addi r29,r29,#16 11823 0000a53c L101_LF9: 11824 0000a53c 200b0000 addi r11,r0,(#0x0)&0xff 11825 0000a540 a3cbfff7 sb -9(r30),r11 11826 0000a544 23c3ffa8 addi r3,r30,#-88 11827 0000a548 80620000 lb r2,(r3) 11828 0000a54c 304100ff andi r1,r2,#0x00ff 11829 0000a550 64210000 snei r1,r1,#0 11830 0000a554 102000f0 beqz r1,L103_LF9 11831 0000a558 54000000 nop; not filled. 11832 0000a55c 23cafff8 addi r10,r30,#-8 11833 0000a560 23c9ff5c addi r9,r30,#-164 11834 0000a564 51010002 slli r1,r8,#0x2 11835 0000a568 00293820 add r7,r1,r9 11836 0000a56c 002a3020 add r6,r1,r10 11837 0000a570 L105_LF9: 11838 0000a570 304100ff andi r1,r2,#0x00ff 11839 0000a574 60210025 seqi r1,r1,#37 11840 0000a578 102000b4 beqz r1,L104_LF9 11841 0000a57c 54000000 nop; not filled. 11842 0000a580 90610001 lbu r1,1(r3) 11843 0000a584 60210025 seqi r1,r1,#37 11844 0000a588 10200010 beqz r1,L107_LF9 11845 0000a58c 54000000 nop; not filled. 11846 0000a590 20630001 addi r3,r3,#1 11847 0000a594 08000098 j L104_LF9 11848 0000a598 54000000 nop; not filled. 11849 0000a59c L107_LF9: 11850 0000a59c 8ceb0000 lw r11,(r7) 11851 0000a5a0 accbff88 sw -120(r6),r11 11852 0000a5a4 51010002 slli r1,r8,#0x2 11853 0000a5a8 00292820 add r5,r1,r9 11854 0000a5ac 002a2020 add r4,r1,r10 11855 0000a5b0 L110_LF9: 11856 0000a5b0 20630001 addi r3,r3,#1 11857 0000a5b4 807f0000 lb r31,(r3) 11858 0000a5b8 33e200ff andi r2,r31,#0x00ff 11859 0000a5bc 60410073 seqi r1,r2,#115 11860 0000a5c0 14200060 bnez r1,L109_LF9 11861 0000a5c4 54000000 nop; not filled. 11862 0000a5c8 6041006c seqi r1,r2,#108 11863 0000a5cc 1420ffe0 bnez r1,L110_LF9 11864 0000a5d0 54000000 nop; not filled. 11865 0000a5d4 23e1ff9a addi r1,r31,#-102 11866 0000a5d8 302100ff andi r1,r1,#0x00ff 11867 0000a5dc 70210001 sleui r1,r1,#1 11868 0000a5e0 14200010 bnez r1,L116_LF9 11869 0000a5e4 54000000 nop; not filled. 11870 0000a5e8 60410065 seqi r1,r2,#101 11871 0000a5ec 10200020 beqz r1,L115_LF9 11872 0000a5f0 54000000 nop; not filled. 11873 0000a5f4 L116_LF9: 11874 0000a5f4 20e70004 addi r7,r7,#4 11875 0000a5f8 20c60004 addi r6,r6,#4 11876 0000a5fc 21080001 addi r8,r8,#1 11877 0000a600 8ca50004 lw r5,4(r5) 11878 0000a604 ac85ff8c sw -116(r4),r5 11879 0000a608 08000018 j L109_LF9 11880 0000a60c 54000000 nop; not filled. 11881 0000a610 L115_LF9: 11882 0000a610 23e1ff9f addi r1,r31,#-97 11883 0000a614 302100ff andi r1,r1,#0x00ff 11884 0000a618 70210019 sleui r1,r1,#25 11885 0000a61c 1020ff90 beqz r1,L110_LF9 11886 0000a620 54000000 nop; not filled. 11887 0000a624 L109_LF9: 11888 0000a624 20e70004 addi r7,r7,#4 11889 0000a628 20c60004 addi r6,r6,#4 11890 0000a62c 21080001 addi r8,r8,#1 11891 0000a630 L104_LF9: 11892 0000a630 20630001 addi r3,r3,#1 11893 0000a634 80620000 lb r2,(r3) 11894 0000a638 304100ff andi r1,r2,#0x00ff 11895 0000a63c 64210000 snei r1,r1,#0 11896 0000a640 1420ff2c bnez r1,L105_LF9 11897 0000a644 54000000 nop; not filled. 11898 0000a648 L103_LF9: 11899 0000a648 23bdffd8 addi r29,r29,#-40 11900 0000a64c 23c1ffa8 addi r1,r30,#-88 11901 0000a650 afa10000 sw (r29),r1 11902 0000a654 8fc1ff80 lw r1,-128(r30) 11903 0000a658 afa10004 sw 4(r29),r1 11904 0000a65c 8fcbff84 lw r11,-124(r30) 11905 0000a660 afab0008 sw 8(r29),r11 11906 0000a664 8fcbff88 lw r11,-120(r30) 11907 0000a668 afab000c sw 12(r29),r11 11908 0000a66c 8fcbff8c lw r11,-116(r30) 11909 0000a670 afab0010 sw 16(r29),r11 11910 0000a674 8fcbff90 lw r11,-112(r30) 11911 0000a678 afab0014 sw 20(r29),r11 11912 0000a67c 8fcbff94 lw r11,-108(r30) 11913 0000a680 afab0018 sw 24(r29),r11 11914 0000a684 8fcbff98 lw r11,-104(r30) 11915 0000a688 afab001c sw 28(r29),r11 11916 0000a68c 8fcbff9c lw r11,-100(r30) 11917 0000a690 afab0020 sw 32(r29),r11 11918 0000a694 0c001b7c jal _printf 11919 0000a698 54000000 nop; not filled. 11920 0000a69c 23bd0028 addi r29,r29,#40 11921 0000a6a0 8fa20000 lw r2,0(r29) 11922 0000a6a4 8fa30004 lw r3,4(r29) 11923 0000a6a8 8fa40008 lw r4,8(r29) 11924 0000a6ac 8fa5000c lw r5,12(r29) 11925 0000a6b0 8fa60010 lw r6,16(r29) 11926 0000a6b4 8fa70014 lw r7,20(r29) 11927 0000a6b8 8fa80018 lw r8,24(r29) 11928 0000a6bc 8fa9001c lw r9,28(r29) 11929 0000a6c0 8faa0020 lw r10,32(r29) 11930 0000a6c4 8fab0024 lw r11,36(r29) 11931 0000a6c8 8fdffff8 lw r31,-8(r30) 11932 0000a6cc 001ee820 add r29,r0,r30 11933 0000a6d0 8fdefffc lw r30,-4(r30) 11934 0000a6d4 4be00000 jr r31 11935 0000a6d8 54000000 nop 11936 0000a6dc .endproc _TrapPrintfHandler_LF9 11937 0000a6dc .data 11938 0001540d .align 2 11939 00015410 LC1_LF9: 11940 00015410 496e7465 .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" 11940 00015414 72727570 11940 00015418 74206361 11940 0001541c 7573653d 11940 00015420 30782578 11940 00015424 20696172 11940 00015428 3d307825 11940 0001542c 78206973 11940 00015430 723d3078 11940 00015434 25782061 11940 00015438 7267733d 11940 0001543c 30782530 11940 00015440 38782e0a 11940 00015444 00 11941 00015445 .align 2 11942 00015448 LC2_LF9: 11943 00015448 476f7420 .ascii "Got a context switch trap!\n\000" 11943 0001544c 6120636f 11943 00015450 6e746578 11943 00015454 74207377 11943 00015458 69746368 11943 0001545c 20747261 11943 00015460 70210a00 11944 00015464 .align 2 11945 00015464 LC3_LF9: 11946 00015464 476f7420 .ascii "Got an exit trap!\n\000" 11946 00015468 616e2065 11946 0001546c 78697420 11946 00015470 74726170 11946 00015474 210a00 11947 00015477 .align 2 11948 00015478 LC4_LF9: 11949 00015478 476f7420 .ascii "Got a fork trap!\n\000" 11949 0001547c 6120666f 11949 00015480 726b2074 11949 00015484 72617021 11949 00015488 0a00 11950 0001548a .align 2 11951 0001548c LC5_LF9: 11952 0001548c 476f7420 .ascii "Got a process sleep trap!\n\000" 11952 00015490 61207072 11952 00015494 6f636573 11952 00015498 7320736c 11952 0001549c 65657020 11952 000154a0 74726170 11952 000154a4 210a00 11953 000154a7 .align 2 11954 000154a8 LC6_LF9: 11955 000154a8 476f7420 .ascii "Got a printf trap!\n\000" 11955 000154ac 61207072 11955 000154b0 696e7466 11955 000154b4 20747261 11955 000154b8 70210a00 11956 000154bc .align 2 11957 000154bc LC7_LF9: 11958 000154bc 476f7420 .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" 11958 000154c0 616e206f 11958 000154c4 70656e20 11958 000154c8 77697468 11958 000154cc 20706172 11958 000154d0 616d6574 11958 000154d4 65727320 11958 000154d8 28272573 11958 000154dc 272c3078 11958 000154e0 2578290a 11958 000154e4 00 11959 000154e5 .align 2 11960 000154e8 LC8_LF9: 11961 000154e8 476f7420 .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" 11961 000154ec 616e2075 11961 000154f0 6e726563 11961 000154f4 6f676e69 11961 000154f8 7a656420 11961 000154fc 74726170 11961 00015500 20283078 11961 00015504 25782920 11961 00015508 2d206578 11961 0001550c 6974696e 11961 00015510 67210a00 11962 00015514 .align 2 11963 00015514 LC9_LF9: 11964 00015514 476f7420 .ascii "Got a timer interrupt!\n\000" 11964 00015518 61207469 11964 0001551c 6d657220 11964 00015520 696e7465 11964 00015524 72727570 11964 00015528 74210a00 11965 0001552c .align 2 11966 0001552c LC10_LF9: 11967 0001552c 476f7420 .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" 11967 00015530 61206b65 11967 00015534 79626f61 11967 00015538 72642069 11967 0001553c 6e746572 11967 00015540 72757074 11967 00015544 20286368 11967 00015548 61723d30 11967 0001554c 78257828 11967 00015550 2563292c 11967 00015554 206e6c65 11967 00015558 66743d25 11967 0001555c 6429210a 11967 00015560 00 11968 00015561 .align 2 11969 00015564 LC11_LF9: 11970 00015564 45786974 .ascii "Exiting after illegal access at iar=0x%x, isr=0x%x\n\000" 11970 00015568 696e6720 11970 0001556c 61667465 11970 00015570 7220696c 11970 00015574 6c656761 11970 00015578 6c206163 11970 0001557c 63657373 11970 00015580 20617420 11970 00015584 6961723d 11970 00015588 30782578 11970 0001558c 2c206973 11970 00015590 723d3078 11970 00015594 25780a00 11971 00015598 .align 2 11972 00015598 LC12_LF9: 11973 00015598 45786974 .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" 11973 0001559c 696e6720 11973 000155a0 61667465 11973 000155a4 7220696c 11973 000155a8 6c656761 11973 000155ac 6c206164 11973 000155b0 64726573 11973 000155b4 73206174 11973 000155b8 20696172 11973 000155bc 3d307825 11973 000155c0 782c2069 11973 000155c4 73723d30 11973 000155c8 7825780a 11973 000155cc 00 11974 000155cd .align 2 11975 000155d0 LC13_LF9: 11976 000155d0 45786974 .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" 11976 000155d4 696e6720 11976 000155d8 61667465 11976 000155dc 7220696c 11976 000155e0 6c656761 11976 000155e4 6c20696e 11976 000155e8 73747275 11976 000155ec 6374696f 11976 000155f0 6e206174 11976 000155f4 20696172 11976 000155f8 3d307825 11976 000155fc 782c2069 11976 00015600 73723d30 11976 00015604 7825780a 11976 00015608 00 11977 00015609 .align 2 11978 0001560c LC14_LF9: 11979 0001560c 45786974 .ascii "Exiting after page fault at iar=0x%x, isr=0x%x\n\000" 11979 00015610 696e6720 11979 00015614 61667465 11979 00015618 72207061 11979 0001561c 67652066 11979 00015620 61756c74 11979 00015624 20617420 11979 00015628 6961723d 11979 0001562c 30782578 11979 00015630 2c206973 11979 00015634 723d3078 11979 00015638 25780a00 11980 0001563c .align 2 11981 0001563c LC15_LF9: 11982 0001563c 476f7420 .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" 11982 00015640 616e2075 11982 00015644 6e726563 11982 00015648 6f676e69 11982 0001564c 7a656420 11982 00015650 73797374 11982 00015654 656d2069 11982 00015658 6e746572 11982 0001565c 72757074 11982 00015660 20283078 11982 00015664 25782920 11982 00015668 2d206578 11982 0001566c 6974696e 11982 00015670 67210a00 11983 00015674 .align 2 11984 00015674 LC16_LF9: 11985 00015674 41626f75 .ascii "About to return from dointerrupt.\n\000" 11985 00015678 7420746f 11985 0001567c 20726574 11985 00015680 75726e20 11985 00015684 66726f6d 11985 00015688 20646f69 11985 0001568c 6e746572 11985 00015690 72757074 11985 00015694 2e0a00 11986 00015697 .text 11987 0000a6dc .align 2 11988 0000a6dc .proc _dointerrupt 11989 0000a6dc .global _dointerrupt 11990 0000a6dc _dointerrupt: 11991 ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. 11992 0000a6dc afbefffc sw -4(r29),r30; push fp 11993 0000a6e0 001df020 add r30,r0,r29; fp = sp 11994 0000a6e4 afbffff8 sw -8(r29),r31; push ret addr 11995 0000a6e8 2fbd0058 subui r29,r29,#88; alloc local storage 11996 0000a6ec afa20000 sw 0(r29),r2 11997 0000a6f0 afa30004 sw 4(r29),r3 11998 0000a6f4 afa40008 sw 8(r29),r4 11999 0000a6f8 afa5000c sw 12(r29),r5 12000 0000a6fc afa60010 sw 16(r29),r6 12001 0000a700 afa70014 sw 20(r29),r7 12002 0000a704 8fc20000 lw r2,(r30) 12003 0000a708 8fc60004 lw r6,4(r30) 12004 0000a70c 8fc40008 lw r4,8(r30) 12005 0000a710 8fc3000c lw r3,12(r30) 12006 0000a714 23bdfff8 addi r29,r29,#-8 12007 0000a718 3c050001 lhi r5,((_debugstr)>>16)&0xffff 12008 0000a71c 24a51f50 addui r5,r5,(_debugstr)&0xffff 12009 0000a720 afa50000 sw (r29),r5 12010 0000a724 20070074 addi r7,r0,#116 12011 0000a728 afa70004 sw 4(r29),r7 12012 0000a72c 0fffa308 jal _dindex 12013 0000a730 54000000 nop; not filled. 12014 0000a734 23bd0008 addi r29,r29,#8 12015 0000a738 64210000 snei r1,r1,#0 12016 0000a73c 1420002c bnez r1,L123_LF9 12017 0000a740 54000000 nop; not filled. 12018 0000a744 23bdfff8 addi r29,r29,#-8 12019 0000a748 afa50000 sw (r29),r5 12020 0000a74c 2007002b addi r7,r0,#43 12021 0000a750 afa70004 sw 4(r29),r7 12022 0000a754 0fffa2e0 jal _dindex 12023 0000a758 54000000 nop; not filled. 12024 0000a75c 23bd0008 addi r29,r29,#8 12025 0000a760 64210000 snei r1,r1,#0 12026 0000a764 10200030 beqz r1,L122_LF9 12027 0000a768 54000000 nop; not filled. 12028 0000a76c L123_LF9: 12029 0000a76c 23bdffe8 addi r29,r29,#-24 12030 0000a770 3c070001 lhi r7,((LC1_LF9)>>16)&0xffff 12031 0000a774 24e75410 addui r7,r7,(LC1_LF9)&0xffff 12032 0000a778 afa70000 sw (r29),r7 12033 0000a77c afa20004 sw 4(r29),r2 12034 0000a780 afa60008 sw 8(r29),r6 12035 0000a784 afa4000c sw 12(r29),r4 12036 0000a788 afa30010 sw 16(r29),r3 12037 0000a78c 0c001a84 jal _printf 12038 0000a790 54000000 nop; not filled. 12039 0000a794 23bd0018 addi r29,r29,#24 12040 0000a798 L122_LF9: 12041 0000a798 3c070800 lhi r7,#2048 12042 0000a79c 24e70000 addui r7,r7,#0 12043 0000a7a0 00470824 and r1,r2,r7 12044 0000a7a4 64210000 snei r1,r1,#0 12045 0000a7a8 10200ef8 beqz r1,L124_LF9 12046 0000a7ac 54000000 nop; not filled. 12047 0000a7b0 3c07f7ff lhi r7,#-2049 12048 0000a7b4 24e7ffff addui r7,r7,#65535 12049 0000a7b8 00471024 and r2,r2,r7 12050 0000a7bc 60410440 seqi r1,r2,#1088 12051 0000a7c0 142007c4 bnez r1,L163_LF9 12052 0000a7c4 54000000 nop; not filled. 12053 0000a7c8 6c410440 sgtui r1,r2,#1088 12054 0000a7cc 142000ec bnez r1,L207_LF9 12055 0000a7d0 54000000 nop; not filled. 12056 0000a7d4 60410214 seqi r1,r2,#532 12057 0000a7d8 1420058c bnez r1,L146_LF9 12058 0000a7dc 54000000 nop; not filled. 12059 0000a7e0 6c410214 sgtui r1,r2,#532 12060 0000a7e4 1420005c bnez r1,L208_LF9 12061 0000a7e8 54000000 nop; not filled. 12062 0000a7ec 60410211 seqi r1,r2,#529 12063 0000a7f0 1420062c bnez r1,L152_LF9 12064 0000a7f4 54000000 nop; not filled. 12065 0000a7f8 6c410211 sgtui r1,r2,#529 12066 0000a7fc 14200024 bnez r1,L209_LF9 12067 0000a800 54000000 nop; not filled. 12068 0000a804 60410201 seqi r1,r2,#513 12069 0000a808 142003a8 bnez r1,L138_LF9 12070 0000a80c 54000000 nop; not filled. 12071 0000a810 60410210 seqi r1,r2,#528 12072 0000a814 10200e78 beqz r1,L205_LF9 12073 0000a818 54000000 nop; not filled. 12074 0000a81c 080005a4 j L149_LF9 12075 0000a820 54000000 nop; not filled. 12076 0000a824 L209_LF9: 12077 0000a824 60410212 seqi r1,r2,#530 12078 0000a828 142006ac bnez r1,L158_LF9 12079 0000a82c 54000000 nop; not filled. 12080 0000a830 60410213 seqi r1,r2,#531 12081 0000a834 10200e58 beqz r1,L205_LF9 12082 0000a838 54000000 nop; not filled. 12083 0000a83c 08000408 j L141_LF9 12084 0000a840 54000000 nop; not filled. 12085 0000a844 L208_LF9: 12086 0000a844 60410410 seqi r1,r2,#1040 12087 0000a848 142002c8 bnez r1,L135_LF9 12088 0000a84c 54000000 nop; not filled. 12089 0000a850 6c410410 sgtui r1,r2,#1040 12090 0000a854 14200024 bnez r1,L210_LF9 12091 0000a858 54000000 nop; not filled. 12092 0000a85c 60410300 seqi r1,r2,#768 12093 0000a860 14200198 bnez r1,L129_LF9 12094 0000a864 54000000 nop; not filled. 12095 0000a868 60410400 seqi r1,r2,#1024 12096 0000a86c 10200e20 beqz r1,L205_LF9 12097 0000a870 54000000 nop; not filled. 12098 0000a874 08000118 j L126_LF9 12099 0000a878 54000000 nop; not filled. 12100 0000a87c L210_LF9: 12101 0000a87c 60410431 seqi r1,r2,#1073 12102 0000a880 142006b0 bnez r1,L161_LF9 12103 0000a884 54000000 nop; not filled. 12104 0000a888 6c410431 sgtui r1,r2,#1073 12105 0000a88c 14200018 bnez r1,L211_LF9 12106 0000a890 54000000 nop; not filled. 12107 0000a894 60410430 seqi r1,r2,#1072 12108 0000a898 10200df4 beqz r1,L205_LF9 12109 0000a89c 54000000 nop; not filled. 12110 0000a8a0 080001f8 j L132_LF9 12111 0000a8a4 54000000 nop; not filled. 12112 0000a8a8 L211_LF9: 12113 0000a8a8 60410432 seqi r1,r2,#1074 12114 0000a8ac 10200de0 beqz r1,L205_LF9 12115 0000a8b0 54000000 nop; not filled. 12116 0000a8b4 080006b0 j L162_LF9 12117 0000a8b8 54000000 nop; not filled. 12118 0000a8bc L207_LF9: 12119 0000a8bc 60410454 seqi r1,r2,#1108 12120 0000a8c0 142009dc bnez r1,L181_LF9 12121 0000a8c4 54000000 nop; not filled. 12122 0000a8c8 6c410454 sgtui r1,r2,#1108 12123 0000a8cc 1420005c bnez r1,L212_LF9 12124 0000a8d0 54000000 nop; not filled. 12125 0000a8d4 60410451 seqi r1,r2,#1105 12126 0000a8d8 14200840 bnez r1,L172_LF9 12127 0000a8dc 54000000 nop; not filled. 12128 0000a8e0 6c410451 sgtui r1,r2,#1105 12129 0000a8e4 14200024 bnez r1,L213_LF9 12130 0000a8e8 54000000 nop; not filled. 12131 0000a8ec 60410441 seqi r1,r2,#1089 12132 0000a8f0 142006d0 bnez r1,L164_LF9 12133 0000a8f4 54000000 nop; not filled. 12134 0000a8f8 60410450 seqi r1,r2,#1104 12135 0000a8fc 10200d90 beqz r1,L205_LF9 12136 0000a900 54000000 nop; not filled. 12137 0000a904 0800076c j L168_LF9 12138 0000a908 54000000 nop; not filled. 12139 0000a90c L213_LF9: 12140 0000a90c 60410452 seqi r1,r2,#1106 12141 0000a910 142008b0 bnez r1,L176_LF9 12142 0000a914 54000000 nop; not filled. 12143 0000a918 60410453 seqi r1,r2,#1107 12144 0000a91c 10200d70 beqz r1,L205_LF9 12145 0000a920 54000000 nop; not filled. 12146 0000a924 08000944 j L180_LF9 12147 0000a928 54000000 nop; not filled. 12148 0000a92c L212_LF9: 12149 0000a92c 60410457 seqi r1,r2,#1111 12150 0000a930 14200b64 bnez r1,L193_LF9 12151 0000a934 54000000 nop; not filled. 12152 0000a938 6c410457 sgtui r1,r2,#1111 12153 0000a93c 14200024 bnez r1,L214_LF9 12154 0000a940 54000000 nop; not filled. 12155 0000a944 60410455 seqi r1,r2,#1109 12156 0000a948 142009fc bnez r1,L185_LF9 12157 0000a94c 54000000 nop; not filled. 12158 0000a950 60410456 seqi r1,r2,#1110 12159 0000a954 10200d38 beqz r1,L205_LF9 12160 0000a958 54000000 nop; not filled. 12161 0000a95c 08000a90 j L189_LF9 12162 0000a960 54000000 nop; not filled. 12163 0000a964 L214_LF9: 12164 0000a964 60410459 seqi r1,r2,#1113 12165 0000a968 14200c7c bnez r1,L201_LF9 12166 0000a96c 54000000 nop; not filled. 12167 0000a970 68410459 sltui r1,r2,#1113 12168 0000a974 14200bc8 bnez r1,L197_LF9 12169 0000a978 54000000 nop; not filled. 12170 0000a97c 60410580 seqi r1,r2,#1408 12171 0000a980 10200d0c beqz r1,L205_LF9 12172 0000a984 54000000 nop; not filled. 12173 0000a988 080004f0 j L155_LF9 12174 0000a98c 54000000 nop; not filled. 12175 0000a990 L126_LF9: 12176 0000a990 23bdfff8 addi r29,r29,#-8 12177 0000a994 3c020001 lhi r2,((_debugstr)>>16)&0xffff 12178 0000a998 24421f50 addui r2,r2,(_debugstr)&0xffff 12179 0000a99c afa20000 sw (r29),r2 12180 0000a9a0 20070074 addi r7,r0,#116 12181 0000a9a4 afa70004 sw 4(r29),r7 12182 0000a9a8 0fffa08c jal _dindex 12183 0000a9ac 54000000 nop; not filled. 12184 0000a9b0 23bd0008 addi r29,r29,#8 12185 0000a9b4 64210000 snei r1,r1,#0 12186 0000a9b8 1420002c bnez r1,L128_LF9 12187 0000a9bc 54000000 nop; not filled. 12188 0000a9c0 23bdfff8 addi r29,r29,#-8 12189 0000a9c4 afa20000 sw (r29),r2 12190 0000a9c8 2007002b addi r7,r0,#43 12191 0000a9cc afa70004 sw 4(r29),r7 12192 0000a9d0 0fffa064 jal _dindex 12193 0000a9d4 54000000 nop; not filled. 12194 0000a9d8 23bd0008 addi r29,r29,#8 12195 0000a9dc 64210000 snei r1,r1,#0 12196 0000a9e0 10200dac beqz r1,L218_LF9 12197 0000a9e4 54000000 nop; not filled. 12198 0000a9e8 L128_LF9: 12199 0000a9e8 23bdfff8 addi r29,r29,#-8 12200 0000a9ec 3c070001 lhi r7,((LC2_LF9)>>16)&0xffff 12201 0000a9f0 24e75448 addui r7,r7,(LC2_LF9)&0xffff 12202 0000a9f4 08000d88 j L248_LF9 12203 0000a9f8 54000000 nop; not filled. 12204 0000a9fc L129_LF9: 12205 0000a9fc 23bdfff8 addi r29,r29,#-8 12206 0000aa00 3c020001 lhi r2,((_debugstr)>>16)&0xffff 12207 0000aa04 24421f50 addui r2,r2,(_debugstr)&0xffff 12208 0000aa08 afa20000 sw (r29),r2 12209 0000aa0c 20070074 addi r7,r0,#116 12210 0000aa10 afa70004 sw 4(r29),r7 12211 0000aa14 0fffa020 jal _dindex 12212 0000aa18 54000000 nop; not filled. 12213 0000aa1c 23bd0008 addi r29,r29,#8 12214 0000aa20 64210000 snei r1,r1,#0 12215 0000aa24 1420002c bnez r1,L131_LF9 12216 0000aa28 54000000 nop; not filled. 12217 0000aa2c 23bdfff8 addi r29,r29,#-8 12218 0000aa30 afa20000 sw (r29),r2 12219 0000aa34 2007002b addi r7,r0,#43 12220 0000aa38 afa70004 sw 4(r29),r7 12221 0000aa3c 0fff9ff8 jal _dindex 12222 0000aa40 54000000 nop; not filled. 12223 0000aa44 23bd0008 addi r29,r29,#8 12224 0000aa48 64210000 snei r1,r1,#0 12225 0000aa4c 10200020 beqz r1,L130_LF9 12226 0000aa50 54000000 nop; not filled. 12227 0000aa54 L131_LF9: 12228 0000aa54 23bdfff8 addi r29,r29,#-8 12229 0000aa58 3c070001 lhi r7,((LC3_LF9)>>16)&0xffff 12230 0000aa5c 24e75464 addui r7,r7,(LC3_LF9)&0xffff 12231 0000aa60 afa70000 sw (r29),r7 12232 0000aa64 0c0017ac jal _printf 12233 0000aa68 54000000 nop; not filled. 12234 0000aa6c 23bd0008 addi r29,r29,#8 12235 0000aa70 L130_LF9: 12236 0000aa70 23bdfff8 addi r29,r29,#-8 12237 0000aa74 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12238 0000aa78 24212018 addui r1,r1,(_currentPCB)&0xffff 12239 0000aa7c 8c210000 lw r1,(r1) 12240 0000aa80 afa10000 sw (r29),r1 12241 0000aa84 0fffb4dc jal _ProcessDestroy 12242 0000aa88 54000000 nop; not filled. 12243 0000aa8c 0fffacfc jal _ProcessSchedule 12244 0000aa90 54000000 nop; not filled. 12245 0000aa94 08000df0 j L235_LF9 12246 0000aa98 54000000 nop; not filled. 12247 0000aa9c L132_LF9: 12248 0000aa9c 23bdfff8 addi r29,r29,#-8 12249 0000aaa0 3c020001 lhi r2,((_debugstr)>>16)&0xffff 12250 0000aaa4 24421f50 addui r2,r2,(_debugstr)&0xffff 12251 0000aaa8 afa20000 sw (r29),r2 12252 0000aaac 20070074 addi r7,r0,#116 12253 0000aab0 afa70004 sw 4(r29),r7 12254 0000aab4 0fff9f80 jal _dindex 12255 0000aab8 54000000 nop; not filled. 12256 0000aabc 23bd0008 addi r29,r29,#8 12257 0000aac0 64210000 snei r1,r1,#0 12258 0000aac4 1420002c bnez r1,L134_LF9 12259 0000aac8 54000000 nop; not filled. 12260 0000aacc 23bdfff8 addi r29,r29,#-8 12261 0000aad0 afa20000 sw (r29),r2 12262 0000aad4 2007002b addi r7,r0,#43 12263 0000aad8 afa70004 sw 4(r29),r7 12264 0000aadc 0fff9f58 jal _dindex 12265 0000aae0 54000000 nop; not filled. 12266 0000aae4 23bd0008 addi r29,r29,#8 12267 0000aae8 64210000 snei r1,r1,#0 12268 0000aaec 10200d9c beqz r1,L215_LF9 12269 0000aaf0 54000000 nop; not filled. 12270 0000aaf4 L134_LF9: 12271 0000aaf4 23bdfff8 addi r29,r29,#-8 12272 0000aaf8 3c070001 lhi r7,((LC4_LF9)>>16)&0xffff 12273 0000aafc 24e75478 addui r7,r7,(LC4_LF9)&0xffff 12274 0000ab00 afa70000 sw (r29),r7 12275 0000ab04 0c00170c jal _printf 12276 0000ab08 54000000 nop; not filled. 12277 0000ab0c 08000d78 j L235_LF9 12278 0000ab10 54000000 nop; not filled. 12279 0000ab14 L135_LF9: 12280 0000ab14 23bdfff8 addi r29,r29,#-8 12281 0000ab18 3c020001 lhi r2,((_debugstr)>>16)&0xffff 12282 0000ab1c 24421f50 addui r2,r2,(_debugstr)&0xffff 12283 0000ab20 afa20000 sw (r29),r2 12284 0000ab24 20070074 addi r7,r0,#116 12285 0000ab28 afa70004 sw 4(r29),r7 12286 0000ab2c 0fff9f08 jal _dindex 12287 0000ab30 54000000 nop; not filled. 12288 0000ab34 23bd0008 addi r29,r29,#8 12289 0000ab38 64210000 snei r1,r1,#0 12290 0000ab3c 1420002c bnez r1,L137_LF9 12291 0000ab40 54000000 nop; not filled. 12292 0000ab44 23bdfff8 addi r29,r29,#-8 12293 0000ab48 afa20000 sw (r29),r2 12294 0000ab4c 2007002b addi r7,r0,#43 12295 0000ab50 afa70004 sw 4(r29),r7 12296 0000ab54 0fff9ee0 jal _dindex 12297 0000ab58 54000000 nop; not filled. 12298 0000ab5c 23bd0008 addi r29,r29,#8 12299 0000ab60 64210000 snei r1,r1,#0 12300 0000ab64 10200020 beqz r1,L136_LF9 12301 0000ab68 54000000 nop; not filled. 12302 0000ab6c L137_LF9: 12303 0000ab6c 23bdfff8 addi r29,r29,#-8 12304 0000ab70 3c070001 lhi r7,((LC5_LF9)>>16)&0xffff 12305 0000ab74 24e7548c addui r7,r7,(LC5_LF9)&0xffff 12306 0000ab78 afa70000 sw (r29),r7 12307 0000ab7c 0c001694 jal _printf 12308 0000ab80 54000000 nop; not filled. 12309 0000ab84 23bd0008 addi r29,r29,#8 12310 0000ab88 L136_LF9: 12311 0000ab88 23bdfff8 addi r29,r29,#-8 12312 0000ab8c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12313 0000ab90 24212018 addui r1,r1,(_currentPCB)&0xffff 12314 0000ab94 8c210000 lw r1,(r1) 12315 0000ab98 afa10000 sw (r29),r1 12316 0000ab9c 0fffb09c jal _ProcessSuspend 12317 0000aba0 54000000 nop; not filled. 12318 0000aba4 0fffabe4 jal _ProcessSchedule 12319 0000aba8 54000000 nop; not filled. 12320 0000abac 08000cd8 j L235_LF9 12321 0000abb0 54000000 nop; not filled. 12322 0000abb4 L138_LF9: 12323 0000abb4 23bdfff8 addi r29,r29,#-8 12324 0000abb8 3c020001 lhi r2,((_debugstr)>>16)&0xffff 12325 0000abbc 24421f50 addui r2,r2,(_debugstr)&0xffff 12326 0000abc0 afa20000 sw (r29),r2 12327 0000abc4 20070074 addi r7,r0,#116 12328 0000abc8 afa70004 sw 4(r29),r7 12329 0000abcc 0fff9e68 jal _dindex 12330 0000abd0 54000000 nop; not filled. 12331 0000abd4 23bd0008 addi r29,r29,#8 12332 0000abd8 64210000 snei r1,r1,#0 12333 0000abdc 1420002c bnez r1,L140_LF9 12334 0000abe0 54000000 nop; not filled. 12335 0000abe4 23bdfff8 addi r29,r29,#-8 12336 0000abe8 afa20000 sw (r29),r2 12337 0000abec 2007002b addi r7,r0,#43 12338 0000abf0 afa70004 sw 4(r29),r7 12339 0000abf4 0fff9e40 jal _dindex 12340 0000abf8 54000000 nop; not filled. 12341 0000abfc 23bd0008 addi r29,r29,#8 12342 0000ac00 64210000 snei r1,r1,#0 12343 0000ac04 10200020 beqz r1,L139_LF9 12344 0000ac08 54000000 nop; not filled. 12345 0000ac0c L140_LF9: 12346 0000ac0c 23bdfff8 addi r29,r29,#-8 12347 0000ac10 3c070001 lhi r7,((LC6_LF9)>>16)&0xffff 12348 0000ac14 24e754a8 addui r7,r7,(LC6_LF9)&0xffff 12349 0000ac18 afa70000 sw (r29),r7 12350 0000ac1c 0c0015f4 jal _printf 12351 0000ac20 54000000 nop; not filled. 12352 0000ac24 23bd0008 addi r29,r29,#8 12353 0000ac28 L139_LF9: 12354 0000ac28 23bdfff8 addi r29,r29,#-8 12355 0000ac2c afa30000 sw (r29),r3 12356 0000ac30 30810040 andi r1,r4,#64 12357 0000ac34 afa10004 sw 4(r29),r1 12358 0000ac38 0ffff7cc jal _TrapPrintfHandler_LF9 12359 0000ac3c 54000000 nop; not filled. 12360 0000ac40 08000c44 j L235_LF9 12361 0000ac44 54000000 nop; not filled. 12362 0000ac48 L141_LF9: 12363 0000ac48 30810040 andi r1,r4,#64 12364 0000ac4c 64210000 snei r1,r1,#0 12365 0000ac50 1020001c beqz r1,L142_LF9 12366 0000ac54 54000000 nop; not filled. 12367 0000ac58 8c670000 lw r7,(r3) 12368 0000ac5c afc7ffe8 sw -24(r30),r7 12369 0000ac60 8c630004 lw r3,4(r3) 12370 0000ac64 afc3ffec sw -20(r30),r3 12371 0000ac68 0800006c j L143_LF9 12372 0000ac6c 54000000 nop; not filled. 12373 0000ac70 L142_LF9: 12374 0000ac70 23bdfff0 addi r29,r29,#-16 12375 0000ac74 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 12376 0000ac78 24422018 addui r2,r2,(_currentPCB)&0xffff 12377 0000ac7c 8c470000 lw r7,(r2) 12378 0000ac80 afa70000 sw (r29),r7 12379 0000ac84 afa30004 sw 4(r29),r3 12380 0000ac88 23c1ffe8 addi r1,r30,#-24 12381 0000ac8c afa10008 sw 8(r29),r1 12382 0000ac90 20070008 addi r7,r0,#8 12383 0000ac94 afa7000c sw 12(r29),r7 12384 0000ac98 0fff94ec jal _MemoryCopyUserToSystem 12385 0000ac9c 54000000 nop; not filled. 12386 0000aca0 8c420000 lw r2,(r2) 12387 0000aca4 afa20000 sw (r29),r2 12388 0000aca8 8fc1ffe8 lw r1,-24(r30) 12389 0000acac afa10004 sw 4(r29),r1 12390 0000acb0 23c2ffc8 addi r2,r30,#-56 12391 0000acb4 afa20008 sw 8(r29),r2 12392 0000acb8 2007001f addi r7,r0,#31 12393 0000acbc afa7000c sw 12(r29),r7 12394 0000acc0 0fff94c4 jal _MemoryCopyUserToSystem 12395 0000acc4 54000000 nop; not filled. 12396 0000acc8 20070000 addi r7,r0,(#0x0)&0xff 12397 0000accc a3c7ffe7 sb -25(r30),r7 12398 0000acd0 afc2ffe8 sw -24(r30),r2 12399 0000acd4 23bd0010 addi r29,r29,#16 12400 0000acd8 L143_LF9: 12401 0000acd8 23bdfff8 addi r29,r29,#-8 12402 0000acdc 20070000 addi r7,r0,#0 12403 0000ace0 afa70000 sw (r29),r7 12404 0000ace4 0fff65a0 jal _SetIntrs 12405 0000ace8 54000000 nop; not filled. 12406 0000acec 00011020 add r2,r0,r1 12407 0000acf0 23bd0008 addi r29,r29,#8 12408 0000acf4 23bdfff8 addi r29,r29,#-8 12409 0000acf8 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12410 0000acfc 24212018 addui r1,r1,(_currentPCB)&0xffff 12411 0000ad00 8c210000 lw r1,(r1) 12412 0000ad04 afa10000 sw (r29),r1 12413 0000ad08 8fc1ffec lw r1,-20(r30) 12414 0000ad0c 3c070001 lhi r7,#1 12415 0000ad10 24e70000 addui r7,r7,#0 12416 0000ad14 00270820 add r1,r1,r7 12417 0000ad18 afa10004 sw 4(r29),r1 12418 0000ad1c 0fffaa38 jal _ProcessSetResult 12419 0000ad20 54000000 nop; not filled. 12420 0000ad24 23bdfff8 addi r29,r29,#-8 12421 0000ad28 3c070001 lhi r7,((LC7_LF9)>>16)&0xffff 12422 0000ad2c 24e754bc addui r7,r7,(LC7_LF9)&0xffff 12423 0000ad30 afa70000 sw (r29),r7 12424 0000ad34 8fc1ffe8 lw r1,-24(r30) 12425 0000ad38 afa10004 sw 4(r29),r1 12426 0000ad3c 8fc7ffec lw r7,-20(r30) 12427 0000ad40 afa70008 sw 8(r29),r7 12428 0000ad44 0c0014cc jal _printf 12429 0000ad48 54000000 nop; not filled. 12430 0000ad4c 23bd0010 addi r29,r29,#16 12431 0000ad50 23bdfff8 addi r29,r29,#-8 12432 0000ad54 afa20000 sw (r29),r2 12433 0000ad58 0fff652c jal _SetIntrs 12434 0000ad5c 54000000 nop; not filled. 12435 0000ad60 08000b24 j L235_LF9 12436 0000ad64 54000000 nop; not filled. 12437 0000ad68 L146_LF9: 12438 0000ad68 23bdfff8 addi r29,r29,#-8 12439 0000ad6c 20070000 addi r7,r0,#0 12440 0000ad70 afa70000 sw (r29),r7 12441 0000ad74 0fff6510 jal _SetIntrs 12442 0000ad78 54000000 nop; not filled. 12443 0000ad7c 00011020 add r2,r0,r1 12444 0000ad80 23bd0008 addi r29,r29,#8 12445 0000ad84 23bdfff8 addi r29,r29,#-8 12446 0000ad88 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12447 0000ad8c 24212018 addui r1,r1,(_currentPCB)&0xffff 12448 0000ad90 8c210000 lw r1,(r1) 12449 0000ad94 afa10000 sw (r29),r1 12450 0000ad98 2007ffff addi r7,r0,#-1 12451 0000ad9c afa70004 sw 4(r29),r7 12452 0000ada0 0fffa9b4 jal _ProcessSetResult 12453 0000ada4 54000000 nop; not filled. 12454 0000ada8 23bd0008 addi r29,r29,#8 12455 0000adac 23bdfff8 addi r29,r29,#-8 12456 0000adb0 afa20000 sw (r29),r2 12457 0000adb4 0fff64d0 jal _SetIntrs 12458 0000adb8 54000000 nop; not filled. 12459 0000adbc 08000ac8 j L235_LF9 12460 0000adc0 54000000 nop; not filled. 12461 0000adc4 L149_LF9: 12462 0000adc4 23bdfff8 addi r29,r29,#-8 12463 0000adc8 20070000 addi r7,r0,#0 12464 0000adcc afa70000 sw (r29),r7 12465 0000add0 0fff64b4 jal _SetIntrs 12466 0000add4 54000000 nop; not filled. 12467 0000add8 00011020 add r2,r0,r1 12468 0000addc 23bd0008 addi r29,r29,#8 12469 0000ade0 23bdfff8 addi r29,r29,#-8 12470 0000ade4 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12471 0000ade8 24212018 addui r1,r1,(_currentPCB)&0xffff 12472 0000adec 8c210000 lw r1,(r1) 12473 0000adf0 afa10000 sw (r29),r1 12474 0000adf4 2007ffff addi r7,r0,#-1 12475 0000adf8 afa70004 sw 4(r29),r7 12476 0000adfc 0fffa958 jal _ProcessSetResult 12477 0000ae00 54000000 nop; not filled. 12478 0000ae04 23bd0008 addi r29,r29,#8 12479 0000ae08 23bdfff8 addi r29,r29,#-8 12480 0000ae0c afa20000 sw (r29),r2 12481 0000ae10 0fff6474 jal _SetIntrs 12482 0000ae14 54000000 nop; not filled. 12483 0000ae18 08000a6c j L235_LF9 12484 0000ae1c 54000000 nop; not filled. 12485 0000ae20 L152_LF9: 12486 0000ae20 23bdfff8 addi r29,r29,#-8 12487 0000ae24 20070000 addi r7,r0,#0 12488 0000ae28 afa70000 sw (r29),r7 12489 0000ae2c 0fff6458 jal _SetIntrs 12490 0000ae30 54000000 nop; not filled. 12491 0000ae34 00011020 add r2,r0,r1 12492 0000ae38 23bd0008 addi r29,r29,#8 12493 0000ae3c 23bdfff8 addi r29,r29,#-8 12494 0000ae40 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12495 0000ae44 24212018 addui r1,r1,(_currentPCB)&0xffff 12496 0000ae48 8c210000 lw r1,(r1) 12497 0000ae4c afa10000 sw (r29),r1 12498 0000ae50 2007ffff addi r7,r0,#-1 12499 0000ae54 afa70004 sw 4(r29),r7 12500 0000ae58 0fffa8fc jal _ProcessSetResult 12501 0000ae5c 54000000 nop; not filled. 12502 0000ae60 23bd0008 addi r29,r29,#8 12503 0000ae64 23bdfff8 addi r29,r29,#-8 12504 0000ae68 afa20000 sw (r29),r2 12505 0000ae6c 0fff6418 jal _SetIntrs 12506 0000ae70 54000000 nop; not filled. 12507 0000ae74 08000a10 j L235_LF9 12508 0000ae78 54000000 nop; not filled. 12509 0000ae7c L155_LF9: 12510 0000ae7c 23bdfff8 addi r29,r29,#-8 12511 0000ae80 20070000 addi r7,r0,#0 12512 0000ae84 afa70000 sw (r29),r7 12513 0000ae88 0fff63fc jal _SetIntrs 12514 0000ae8c 54000000 nop; not filled. 12515 0000ae90 00011020 add r2,r0,r1 12516 0000ae94 23bd0008 addi r29,r29,#8 12517 0000ae98 23bdfff8 addi r29,r29,#-8 12518 0000ae9c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12519 0000aea0 24212018 addui r1,r1,(_currentPCB)&0xffff 12520 0000aea4 8c210000 lw r1,(r1) 12521 0000aea8 afa10000 sw (r29),r1 12522 0000aeac 2007ffff addi r7,r0,#-1 12523 0000aeb0 afa70004 sw 4(r29),r7 12524 0000aeb4 0fffa8a0 jal _ProcessSetResult 12525 0000aeb8 54000000 nop; not filled. 12526 0000aebc 23bd0008 addi r29,r29,#8 12527 0000aec0 23bdfff8 addi r29,r29,#-8 12528 0000aec4 afa20000 sw (r29),r2 12529 0000aec8 0fff63bc jal _SetIntrs 12530 0000aecc 54000000 nop; not filled. 12531 0000aed0 080009b4 j L235_LF9 12532 0000aed4 54000000 nop; not filled. 12533 0000aed8 L158_LF9: 12534 0000aed8 23bdfff8 addi r29,r29,#-8 12535 0000aedc 20070000 addi r7,r0,#0 12536 0000aee0 afa70000 sw (r29),r7 12537 0000aee4 0fff63a0 jal _SetIntrs 12538 0000aee8 54000000 nop; not filled. 12539 0000aeec 00011020 add r2,r0,r1 12540 0000aef0 23bd0008 addi r29,r29,#8 12541 0000aef4 23bdfff8 addi r29,r29,#-8 12542 0000aef8 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12543 0000aefc 24212018 addui r1,r1,(_currentPCB)&0xffff 12544 0000af00 8c210000 lw r1,(r1) 12545 0000af04 afa10000 sw (r29),r1 12546 0000af08 2007ffff addi r7,r0,#-1 12547 0000af0c afa70004 sw 4(r29),r7 12548 0000af10 0fffa844 jal _ProcessSetResult 12549 0000af14 54000000 nop; not filled. 12550 0000af18 23bd0008 addi r29,r29,#8 12551 0000af1c 23bdfff8 addi r29,r29,#-8 12552 0000af20 afa20000 sw (r29),r2 12553 0000af24 0fff6360 jal _SetIntrs 12554 0000af28 54000000 nop; not filled. 12555 0000af2c 08000958 j L235_LF9 12556 0000af30 54000000 nop; not filled. 12557 0000af34 L161_LF9: 12558 0000af34 0fffd428 jal _GetCurrentPid 12559 0000af38 54000000 nop; not filled. 12560 0000af3c 00011020 add r2,r0,r1 12561 0000af40 23bdfff8 addi r29,r29,#-8 12562 0000af44 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12563 0000af48 24212018 addui r1,r1,(_currentPCB)&0xffff 12564 0000af4c 8c210000 lw r1,(r1) 12565 0000af50 afa10000 sw (r29),r1 12566 0000af54 afa20004 sw 4(r29),r2 12567 0000af58 0fffa7fc jal _ProcessSetResult 12568 0000af5c 54000000 nop; not filled. 12569 0000af60 08000924 j L235_LF9 12570 0000af64 54000000 nop; not filled. 12571 0000af68 L162_LF9: 12572 0000af68 23bdfff8 addi r29,r29,#-8 12573 0000af6c afa30000 sw (r29),r3 12574 0000af70 30810040 andi r1,r4,#64 12575 0000af74 afa10004 sw 4(r29),r1 12576 0000af78 0ffff158 jal _TrapProcessCreateHandler_LF9 12577 0000af7c 54000000 nop; not filled. 12578 0000af80 08000904 j L235_LF9 12579 0000af84 54000000 nop; not filled. 12580 0000af88 L163_LF9: 12581 0000af88 23bdfff8 addi r29,r29,#-8 12582 0000af8c 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 12583 0000af90 24422018 addui r2,r2,(_currentPCB)&0xffff 12584 0000af94 8c470000 lw r7,(r2) 12585 0000af98 afa70000 sw (r29),r7 12586 0000af9c 0fff696c jal _MemoryCreateSharedPage 12587 0000afa0 54000000 nop; not filled. 12588 0000afa4 0001f820 add r31,r0,r1 12589 0000afa8 8c420000 lw r2,(r2) 12590 0000afac afa20000 sw (r29),r2 12591 0000afb0 afbf0004 sw 4(r29),r31 12592 0000afb4 0fffa7a0 jal _ProcessSetResult 12593 0000afb8 54000000 nop; not filled. 12594 0000afbc 080008c8 j L235_LF9 12595 0000afc0 54000000 nop; not filled. 12596 0000afc4 L164_LF9: 12597 0000afc4 30810040 andi r1,r4,#64 12598 0000afc8 64210000 snei r1,r1,#0 12599 0000afcc 1420003c bnez r1,L166_LF9 12600 0000afd0 54000000 nop; not filled. 12601 0000afd4 23bdfff0 addi r29,r29,#-16 12602 0000afd8 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12603 0000afdc 24212018 addui r1,r1,(_currentPCB)&0xffff 12604 0000afe0 8c210000 lw r1,(r1) 12605 0000afe4 afa10000 sw (r29),r1 12606 0000afe8 afa30004 sw 4(r29),r3 12607 0000afec 23c1ffc4 addi r1,r30,#-60 12608 0000aff0 afa10008 sw 8(r29),r1 12609 0000aff4 20070004 addi r7,r0,#4 12610 0000aff8 afa7000c sw 12(r29),r7 12611 0000affc 0fff9188 jal _MemoryCopyUserToSystem 12612 0000b000 54000000 nop; not filled. 12613 0000b004 08000024 j L236_LF9 12614 0000b008 54000000 nop; not filled. 12615 0000b00c L166_LF9: 12616 0000b00c 23bdfff0 addi r29,r29,#-16 12617 0000b010 afa30000 sw (r29),r3 12618 0000b014 23c1ffc4 addi r1,r30,#-60 12619 0000b018 afa10004 sw 4(r29),r1 12620 0000b01c 20070004 addi r7,r0,#4 12621 0000b020 afa70008 sw 8(r29),r7 12622 0000b024 0fff9da0 jal _bcopy 12623 0000b028 54000000 nop; not filled. 12624 0000b02c L236_LF9: 12625 0000b02c 23bd0010 addi r29,r29,#16 12626 0000b030 8fdfffc4 lw r31,-60(r30) 12627 0000b034 23bdfff8 addi r29,r29,#-8 12628 0000b038 3c020001 lhi r2,((_currentPCB)>>16)&0xffff 12629 0000b03c 24422018 addui r2,r2,(_currentPCB)&0xffff 12630 0000b040 8c470000 lw r7,(r2) 12631 0000b044 afa70000 sw (r29),r7 12632 0000b048 afbf0004 sw 4(r29),r31 12633 0000b04c 0fff6a8c jal _mmap 12634 0000b050 54000000 nop; not filled. 12635 0000b054 0001f820 add r31,r0,r1 12636 0000b058 8c420000 lw r2,(r2) 12637 0000b05c afa20000 sw (r29),r2 12638 0000b060 afbf0004 sw 4(r29),r31 12639 0000b064 0fffa6f0 jal _ProcessSetResult 12640 0000b068 54000000 nop; not filled. 12641 0000b06c 08000818 j L235_LF9 12642 0000b070 54000000 nop; not filled. 12643 0000b074 L168_LF9: 12644 0000b074 30810040 andi r1,r4,#64 12645 0000b078 64210000 snei r1,r1,#0 12646 0000b07c 1420003c bnez r1,L170_LF9 12647 0000b080 54000000 nop; not filled. 12648 0000b084 23bdfff0 addi r29,r29,#-16 12649 0000b088 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12650 0000b08c 24212018 addui r1,r1,(_currentPCB)&0xffff 12651 0000b090 8c210000 lw r1,(r1) 12652 0000b094 afa10000 sw (r29),r1 12653 0000b098 afa30004 sw 4(r29),r3 12654 0000b09c 23c1ffc4 addi r1,r30,#-60 12655 0000b0a0 afa10008 sw 8(r29),r1 12656 0000b0a4 20070004 addi r7,r0,#4 12657 0000b0a8 afa7000c sw 12(r29),r7 12658 0000b0ac 0fff90d8 jal _MemoryCopyUserToSystem 12659 0000b0b0 54000000 nop; not filled. 12660 0000b0b4 08000024 j L237_LF9 12661 0000b0b8 54000000 nop; not filled. 12662 0000b0bc L170_LF9: 12663 0000b0bc 23bdfff0 addi r29,r29,#-16 12664 0000b0c0 afa30000 sw (r29),r3 12665 0000b0c4 23c1ffc4 addi r1,r30,#-60 12666 0000b0c8 afa10004 sw 4(r29),r1 12667 0000b0cc 20070004 addi r7,r0,#4 12668 0000b0d0 afa70008 sw 8(r29),r7 12669 0000b0d4 0fff9cf0 jal _bcopy 12670 0000b0d8 54000000 nop; not filled. 12671 0000b0dc L237_LF9: 12672 0000b0dc 23bd0010 addi r29,r29,#16 12673 0000b0e0 23bdfff8 addi r29,r29,#-8 12674 0000b0e4 8fc7ffc4 lw r7,-60(r30) 12675 0000b0e8 afa70000 sw (r29),r7 12676 0000b0ec 0fffe340 jal _SemCreate 12677 0000b0f0 54000000 nop; not filled. 12678 0000b0f4 00011020 add r2,r0,r1 12679 0000b0f8 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12680 0000b0fc 24212018 addui r1,r1,(_currentPCB)&0xffff 12681 0000b100 8c210000 lw r1,(r1) 12682 0000b104 afa10000 sw (r29),r1 12683 0000b108 afa20004 sw 4(r29),r2 12684 0000b10c 0fffa648 jal _ProcessSetResult 12685 0000b110 54000000 nop; not filled. 12686 0000b114 08000770 j L235_LF9 12687 0000b118 54000000 nop; not filled. 12688 0000b11c L172_LF9: 12689 0000b11c 30810040 andi r1,r4,#64 12690 0000b120 64210000 snei r1,r1,#0 12691 0000b124 1420003c bnez r1,L174_LF9 12692 0000b128 54000000 nop; not filled. 12693 0000b12c 23bdfff0 addi r29,r29,#-16 12694 0000b130 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12695 0000b134 24212018 addui r1,r1,(_currentPCB)&0xffff 12696 0000b138 8c210000 lw r1,(r1) 12697 0000b13c afa10000 sw (r29),r1 12698 0000b140 afa30004 sw 4(r29),r3 12699 0000b144 23c1ffc4 addi r1,r30,#-60 12700 0000b148 afa10008 sw 8(r29),r1 12701 0000b14c 20070004 addi r7,r0,#4 12702 0000b150 afa7000c sw 12(r29),r7 12703 0000b154 0fff9030 jal _MemoryCopyUserToSystem 12704 0000b158 54000000 nop; not filled. 12705 0000b15c 08000024 j L238_LF9 12706 0000b160 54000000 nop; not filled. 12707 0000b164 L174_LF9: 12708 0000b164 23bdfff0 addi r29,r29,#-16 12709 0000b168 afa30000 sw (r29),r3 12710 0000b16c 23c1ffc4 addi r1,r30,#-60 12711 0000b170 afa10004 sw 4(r29),r1 12712 0000b174 20070004 addi r7,r0,#4 12713 0000b178 afa70008 sw 8(r29),r7 12714 0000b17c 0fff9c48 jal _bcopy 12715 0000b180 54000000 nop; not filled. 12716 0000b184 L238_LF9: 12717 0000b184 23bd0010 addi r29,r29,#16 12718 0000b188 23bdfff8 addi r29,r29,#-8 12719 0000b18c 8fc7ffc4 lw r7,-60(r30) 12720 0000b190 afa70000 sw (r29),r7 12721 0000b194 0fffe61c jal _SemHandleWait 12722 0000b198 54000000 nop; not filled. 12723 0000b19c 0001f820 add r31,r0,r1 12724 0000b1a0 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12725 0000b1a4 24212018 addui r1,r1,(_currentPCB)&0xffff 12726 0000b1a8 8c210000 lw r1,(r1) 12727 0000b1ac afa10000 sw (r29),r1 12728 0000b1b0 afbf0004 sw 4(r29),r31 12729 0000b1b4 0fffa5a0 jal _ProcessSetResult 12730 0000b1b8 54000000 nop; not filled. 12731 0000b1bc 080006c8 j L235_LF9 12732 0000b1c0 54000000 nop; not filled. 12733 0000b1c4 L176_LF9: 12734 0000b1c4 30810040 andi r1,r4,#64 12735 0000b1c8 64210000 snei r1,r1,#0 12736 0000b1cc 1420003c bnez r1,L178_LF9 12737 0000b1d0 54000000 nop; not filled. 12738 0000b1d4 23bdfff0 addi r29,r29,#-16 12739 0000b1d8 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12740 0000b1dc 24212018 addui r1,r1,(_currentPCB)&0xffff 12741 0000b1e0 8c210000 lw r1,(r1) 12742 0000b1e4 afa10000 sw (r29),r1 12743 0000b1e8 afa30004 sw 4(r29),r3 12744 0000b1ec 23c1ffc4 addi r1,r30,#-60 12745 0000b1f0 afa10008 sw 8(r29),r1 12746 0000b1f4 20070004 addi r7,r0,#4 12747 0000b1f8 afa7000c sw 12(r29),r7 12748 0000b1fc 0fff8f88 jal _MemoryCopyUserToSystem 12749 0000b200 54000000 nop; not filled. 12750 0000b204 08000024 j L239_LF9 12751 0000b208 54000000 nop; not filled. 12752 0000b20c L178_LF9: 12753 0000b20c 23bdfff0 addi r29,r29,#-16 12754 0000b210 afa30000 sw (r29),r3 12755 0000b214 23c1ffc4 addi r1,r30,#-60 12756 0000b218 afa10004 sw 4(r29),r1 12757 0000b21c 20070004 addi r7,r0,#4 12758 0000b220 afa70008 sw 8(r29),r7 12759 0000b224 0fff9ba0 jal _bcopy 12760 0000b228 54000000 nop; not filled. 12761 0000b22c L239_LF9: 12762 0000b22c 23bd0010 addi r29,r29,#16 12763 0000b230 23bdfff8 addi r29,r29,#-8 12764 0000b234 8fc7ffc4 lw r7,-60(r30) 12765 0000b238 afa70000 sw (r29),r7 12766 0000b23c 0fffe800 jal _SemHandleSignal 12767 0000b240 54000000 nop; not filled. 12768 0000b244 0001f820 add r31,r0,r1 12769 0000b248 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12770 0000b24c 24212018 addui r1,r1,(_currentPCB)&0xffff 12771 0000b250 8c210000 lw r1,(r1) 12772 0000b254 afa10000 sw (r29),r1 12773 0000b258 afbf0004 sw 4(r29),r31 12774 0000b25c 0fffa4f8 jal _ProcessSetResult 12775 0000b260 54000000 nop; not filled. 12776 0000b264 08000620 j L235_LF9 12777 0000b268 54000000 nop; not filled. 12778 0000b26c L180_LF9: 12779 0000b26c 0fffe864 jal _LockCreate 12780 0000b270 54000000 nop; not filled. 12781 0000b274 00011020 add r2,r0,r1 12782 0000b278 23bdfff8 addi r29,r29,#-8 12783 0000b27c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12784 0000b280 24212018 addui r1,r1,(_currentPCB)&0xffff 12785 0000b284 8c210000 lw r1,(r1) 12786 0000b288 afa10000 sw (r29),r1 12787 0000b28c afa20004 sw 4(r29),r2 12788 0000b290 0fffa4c4 jal _ProcessSetResult 12789 0000b294 54000000 nop; not filled. 12790 0000b298 080005ec j L235_LF9 12791 0000b29c 54000000 nop; not filled. 12792 0000b2a0 L181_LF9: 12793 0000b2a0 30810040 andi r1,r4,#64 12794 0000b2a4 64210000 snei r1,r1,#0 12795 0000b2a8 1420003c bnez r1,L183_LF9 12796 0000b2ac 54000000 nop; not filled. 12797 0000b2b0 23bdfff0 addi r29,r29,#-16 12798 0000b2b4 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12799 0000b2b8 24212018 addui r1,r1,(_currentPCB)&0xffff 12800 0000b2bc 8c210000 lw r1,(r1) 12801 0000b2c0 afa10000 sw (r29),r1 12802 0000b2c4 afa30004 sw 4(r29),r3 12803 0000b2c8 23c1ffc4 addi r1,r30,#-60 12804 0000b2cc afa10008 sw 8(r29),r1 12805 0000b2d0 20070004 addi r7,r0,#4 12806 0000b2d4 afa7000c sw 12(r29),r7 12807 0000b2d8 0fff8eac jal _MemoryCopyUserToSystem 12808 0000b2dc 54000000 nop; not filled. 12809 0000b2e0 08000024 j L240_LF9 12810 0000b2e4 54000000 nop; not filled. 12811 0000b2e8 L183_LF9: 12812 0000b2e8 23bdfff0 addi r29,r29,#-16 12813 0000b2ec afa30000 sw (r29),r3 12814 0000b2f0 23c1ffc4 addi r1,r30,#-60 12815 0000b2f4 afa10004 sw 4(r29),r1 12816 0000b2f8 20070004 addi r7,r0,#4 12817 0000b2fc afa70008 sw 8(r29),r7 12818 0000b300 0fff9ac4 jal _bcopy 12819 0000b304 54000000 nop; not filled. 12820 0000b308 L240_LF9: 12821 0000b308 23bd0010 addi r29,r29,#16 12822 0000b30c 23bdfff8 addi r29,r29,#-8 12823 0000b310 8fc7ffc4 lw r7,-60(r30) 12824 0000b314 afa70000 sw (r29),r7 12825 0000b318 0fffe7dc jal _LockHandleAcquire 12826 0000b31c 54000000 nop; not filled. 12827 0000b320 0001f820 add r31,r0,r1 12828 0000b324 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12829 0000b328 24212018 addui r1,r1,(_currentPCB)&0xffff 12830 0000b32c 8c210000 lw r1,(r1) 12831 0000b330 afa10000 sw (r29),r1 12832 0000b334 afbf0004 sw 4(r29),r31 12833 0000b338 0fffa41c jal _ProcessSetResult 12834 0000b33c 54000000 nop; not filled. 12835 0000b340 08000544 j L235_LF9 12836 0000b344 54000000 nop; not filled. 12837 0000b348 L185_LF9: 12838 0000b348 30810040 andi r1,r4,#64 12839 0000b34c 64210000 snei r1,r1,#0 12840 0000b350 1420003c bnez r1,L187_LF9 12841 0000b354 54000000 nop; not filled. 12842 0000b358 23bdfff0 addi r29,r29,#-16 12843 0000b35c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12844 0000b360 24212018 addui r1,r1,(_currentPCB)&0xffff 12845 0000b364 8c210000 lw r1,(r1) 12846 0000b368 afa10000 sw (r29),r1 12847 0000b36c afa30004 sw 4(r29),r3 12848 0000b370 23c1ffc4 addi r1,r30,#-60 12849 0000b374 afa10008 sw 8(r29),r1 12850 0000b378 20070004 addi r7,r0,#4 12851 0000b37c afa7000c sw 12(r29),r7 12852 0000b380 0fff8e04 jal _MemoryCopyUserToSystem 12853 0000b384 54000000 nop; not filled. 12854 0000b388 08000024 j L241_LF9 12855 0000b38c 54000000 nop; not filled. 12856 0000b390 L187_LF9: 12857 0000b390 23bdfff0 addi r29,r29,#-16 12858 0000b394 afa30000 sw (r29),r3 12859 0000b398 23c1ffc4 addi r1,r30,#-60 12860 0000b39c afa10004 sw 4(r29),r1 12861 0000b3a0 20070004 addi r7,r0,#4 12862 0000b3a4 afa70008 sw 8(r29),r7 12863 0000b3a8 0fff9a1c jal _bcopy 12864 0000b3ac 54000000 nop; not filled. 12865 0000b3b0 L241_LF9: 12866 0000b3b0 23bd0010 addi r29,r29,#16 12867 0000b3b4 23bdfff8 addi r29,r29,#-8 12868 0000b3b8 8fc7ffc4 lw r7,-60(r30) 12869 0000b3bc afa70000 sw (r29),r7 12870 0000b3c0 0fffe758 jal _LockHandleRelease 12871 0000b3c4 54000000 nop; not filled. 12872 0000b3c8 0001f820 add r31,r0,r1 12873 0000b3cc 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12874 0000b3d0 24212018 addui r1,r1,(_currentPCB)&0xffff 12875 0000b3d4 8c210000 lw r1,(r1) 12876 0000b3d8 afa10000 sw (r29),r1 12877 0000b3dc afbf0004 sw 4(r29),r31 12878 0000b3e0 0fffa374 jal _ProcessSetResult 12879 0000b3e4 54000000 nop; not filled. 12880 0000b3e8 0800049c j L235_LF9 12881 0000b3ec 54000000 nop; not filled. 12882 0000b3f0 L189_LF9: 12883 0000b3f0 30810040 andi r1,r4,#64 12884 0000b3f4 64210000 snei r1,r1,#0 12885 0000b3f8 1420003c bnez r1,L191_LF9 12886 0000b3fc 54000000 nop; not filled. 12887 0000b400 23bdfff0 addi r29,r29,#-16 12888 0000b404 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12889 0000b408 24212018 addui r1,r1,(_currentPCB)&0xffff 12890 0000b40c 8c210000 lw r1,(r1) 12891 0000b410 afa10000 sw (r29),r1 12892 0000b414 afa30004 sw 4(r29),r3 12893 0000b418 23c1ffc4 addi r1,r30,#-60 12894 0000b41c afa10008 sw 8(r29),r1 12895 0000b420 20070004 addi r7,r0,#4 12896 0000b424 afa7000c sw 12(r29),r7 12897 0000b428 0fff8d5c jal _MemoryCopyUserToSystem 12898 0000b42c 54000000 nop; not filled. 12899 0000b430 08000024 j L242_LF9 12900 0000b434 54000000 nop; not filled. 12901 0000b438 L191_LF9: 12902 0000b438 23bdfff0 addi r29,r29,#-16 12903 0000b43c afa30000 sw (r29),r3 12904 0000b440 23c1ffc4 addi r1,r30,#-60 12905 0000b444 afa10004 sw 4(r29),r1 12906 0000b448 20070004 addi r7,r0,#4 12907 0000b44c afa70008 sw 8(r29),r7 12908 0000b450 0fff9974 jal _bcopy 12909 0000b454 54000000 nop; not filled. 12910 0000b458 L242_LF9: 12911 0000b458 23bd0010 addi r29,r29,#16 12912 0000b45c 23bdfff8 addi r29,r29,#-8 12913 0000b460 8fc7ffc4 lw r7,-60(r30) 12914 0000b464 afa70000 sw (r29),r7 12915 0000b468 0fffe6d4 jal _CondCreate 12916 0000b46c 54000000 nop; not filled. 12917 0000b470 00011020 add r2,r0,r1 12918 0000b474 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12919 0000b478 24212018 addui r1,r1,(_currentPCB)&0xffff 12920 0000b47c 8c210000 lw r1,(r1) 12921 0000b480 afa10000 sw (r29),r1 12922 0000b484 afa20004 sw 4(r29),r2 12923 0000b488 0fffa2cc jal _ProcessSetResult 12924 0000b48c 54000000 nop; not filled. 12925 0000b490 080003f4 j L235_LF9 12926 0000b494 54000000 nop; not filled. 12927 0000b498 L193_LF9: 12928 0000b498 30810040 andi r1,r4,#64 12929 0000b49c 64210000 snei r1,r1,#0 12930 0000b4a0 1420003c bnez r1,L195_LF9 12931 0000b4a4 54000000 nop; not filled. 12932 0000b4a8 23bdfff0 addi r29,r29,#-16 12933 0000b4ac 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12934 0000b4b0 24212018 addui r1,r1,(_currentPCB)&0xffff 12935 0000b4b4 8c210000 lw r1,(r1) 12936 0000b4b8 afa10000 sw (r29),r1 12937 0000b4bc afa30004 sw 4(r29),r3 12938 0000b4c0 23c1ffc4 addi r1,r30,#-60 12939 0000b4c4 afa10008 sw 8(r29),r1 12940 0000b4c8 20070004 addi r7,r0,#4 12941 0000b4cc afa7000c sw 12(r29),r7 12942 0000b4d0 0fff8cb4 jal _MemoryCopyUserToSystem 12943 0000b4d4 54000000 nop; not filled. 12944 0000b4d8 08000024 j L243_LF9 12945 0000b4dc 54000000 nop; not filled. 12946 0000b4e0 L195_LF9: 12947 0000b4e0 23bdfff0 addi r29,r29,#-16 12948 0000b4e4 afa30000 sw (r29),r3 12949 0000b4e8 23c1ffc4 addi r1,r30,#-60 12950 0000b4ec afa10004 sw 4(r29),r1 12951 0000b4f0 20070004 addi r7,r0,#4 12952 0000b4f4 afa70008 sw 8(r29),r7 12953 0000b4f8 0fff98cc jal _bcopy 12954 0000b4fc 54000000 nop; not filled. 12955 0000b500 L243_LF9: 12956 0000b500 23bd0010 addi r29,r29,#16 12957 0000b504 23bdfff8 addi r29,r29,#-8 12958 0000b508 8fc7ffc4 lw r7,-60(r30) 12959 0000b50c afa70000 sw (r29),r7 12960 0000b510 0fffe650 jal _CondHandleWait 12961 0000b514 54000000 nop; not filled. 12962 0000b518 00011020 add r2,r0,r1 12963 0000b51c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12964 0000b520 24212018 addui r1,r1,(_currentPCB)&0xffff 12965 0000b524 8c210000 lw r1,(r1) 12966 0000b528 afa10000 sw (r29),r1 12967 0000b52c afa20004 sw 4(r29),r2 12968 0000b530 0fffa224 jal _ProcessSetResult 12969 0000b534 54000000 nop; not filled. 12970 0000b538 0800034c j L235_LF9 12971 0000b53c 54000000 nop; not filled. 12972 0000b540 L197_LF9: 12973 0000b540 30810040 andi r1,r4,#64 12974 0000b544 64210000 snei r1,r1,#0 12975 0000b548 1420003c bnez r1,L199_LF9 12976 0000b54c 54000000 nop; not filled. 12977 0000b550 23bdfff0 addi r29,r29,#-16 12978 0000b554 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 12979 0000b558 24212018 addui r1,r1,(_currentPCB)&0xffff 12980 0000b55c 8c210000 lw r1,(r1) 12981 0000b560 afa10000 sw (r29),r1 12982 0000b564 afa30004 sw 4(r29),r3 12983 0000b568 23c1ffc4 addi r1,r30,#-60 12984 0000b56c afa10008 sw 8(r29),r1 12985 0000b570 20070004 addi r7,r0,#4 12986 0000b574 afa7000c sw 12(r29),r7 12987 0000b578 0fff8c0c jal _MemoryCopyUserToSystem 12988 0000b57c 54000000 nop; not filled. 12989 0000b580 08000024 j L244_LF9 12990 0000b584 54000000 nop; not filled. 12991 0000b588 L199_LF9: 12992 0000b588 23bdfff0 addi r29,r29,#-16 12993 0000b58c afa30000 sw (r29),r3 12994 0000b590 23c1ffc4 addi r1,r30,#-60 12995 0000b594 afa10004 sw 4(r29),r1 12996 0000b598 20070004 addi r7,r0,#4 12997 0000b59c afa70008 sw 8(r29),r7 12998 0000b5a0 0fff9824 jal _bcopy 12999 0000b5a4 54000000 nop; not filled. 13000 0000b5a8 L244_LF9: 13001 0000b5a8 23bd0010 addi r29,r29,#16 13002 0000b5ac 23bdfff8 addi r29,r29,#-8 13003 0000b5b0 8fc7ffc4 lw r7,-60(r30) 13004 0000b5b4 afa70000 sw (r29),r7 13005 0000b5b8 0fffe5cc jal _CondHandleSignal 13006 0000b5bc 54000000 nop; not filled. 13007 0000b5c0 00011020 add r2,r0,r1 13008 0000b5c4 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 13009 0000b5c8 24212018 addui r1,r1,(_currentPCB)&0xffff 13010 0000b5cc 8c210000 lw r1,(r1) 13011 0000b5d0 afa10000 sw (r29),r1 13012 0000b5d4 afa20004 sw 4(r29),r2 13013 0000b5d8 0fffa17c jal _ProcessSetResult 13014 0000b5dc 54000000 nop; not filled. 13015 0000b5e0 080002a4 j L235_LF9 13016 0000b5e4 54000000 nop; not filled. 13017 0000b5e8 L201_LF9: 13018 0000b5e8 30810040 andi r1,r4,#64 13019 0000b5ec 64210000 snei r1,r1,#0 13020 0000b5f0 1420003c bnez r1,L203_LF9 13021 0000b5f4 54000000 nop; not filled. 13022 0000b5f8 23bdfff0 addi r29,r29,#-16 13023 0000b5fc 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 13024 0000b600 24212018 addui r1,r1,(_currentPCB)&0xffff 13025 0000b604 8c210000 lw r1,(r1) 13026 0000b608 afa10000 sw (r29),r1 13027 0000b60c afa30004 sw 4(r29),r3 13028 0000b610 23c1ffc4 addi r1,r30,#-60 13029 0000b614 afa10008 sw 8(r29),r1 13030 0000b618 20070004 addi r7,r0,#4 13031 0000b61c afa7000c sw 12(r29),r7 13032 0000b620 0fff8b64 jal _MemoryCopyUserToSystem 13033 0000b624 54000000 nop; not filled. 13034 0000b628 08000024 j L245_LF9 13035 0000b62c 54000000 nop; not filled. 13036 0000b630 L203_LF9: 13037 0000b630 23bdfff0 addi r29,r29,#-16 13038 0000b634 afa30000 sw (r29),r3 13039 0000b638 23c1ffc4 addi r1,r30,#-60 13040 0000b63c afa10004 sw 4(r29),r1 13041 0000b640 20070004 addi r7,r0,#4 13042 0000b644 afa70008 sw 8(r29),r7 13043 0000b648 0fff977c jal _bcopy 13044 0000b64c 54000000 nop; not filled. 13045 0000b650 L245_LF9: 13046 0000b650 23bd0010 addi r29,r29,#16 13047 0000b654 23bdfff8 addi r29,r29,#-8 13048 0000b658 8fc7ffc4 lw r7,-60(r30) 13049 0000b65c afa70000 sw (r29),r7 13050 0000b660 0fffe548 jal _CondHandleBroadcast 13051 0000b664 54000000 nop; not filled. 13052 0000b668 00011020 add r2,r0,r1 13053 0000b66c 3c010001 lhi r1,((_currentPCB)>>16)&0xffff 13054 0000b670 24212018 addui r1,r1,(_currentPCB)&0xffff 13055 0000b674 8c210000 lw r1,(r1) 13056 0000b678 afa10000 sw (r29),r1 13057 0000b67c afa20004 sw 4(r29),r2 13058 0000b680 0fffa0d4 jal _ProcessSetResult 13059 0000b684 54000000 nop; not filled. 13060 0000b688 080001fc j L235_LF9 13061 0000b68c 54000000 nop; not filled. 13062 0000b690 L205_LF9: 13063 0000b690 23bdfff8 addi r29,r29,#-8 13064 0000b694 3c070001 lhi r7,((LC8_LF9)>>16)&0xffff 13065 0000b698 24e754e8 addui r7,r7,(LC8_LF9)&0xffff 13066 0000b69c 080001d0 j L246_LF9 13067 0000b6a0 54000000 nop; not filled. 13068 0000b6a4 L124_LF9: 13069 0000b6a4 60410003 seqi r1,r2,#3 13070 0000b6a8 14200148 bnez r1,L225_LF9 13071 0000b6ac 54000000 nop; not filled. 13072 0000b6b0 6c410003 sgtui r1,r2,#3 13073 0000b6b4 14200024 bnez r1,L231_LF9 13074 0000b6b8 54000000 nop; not filled. 13075 0000b6bc 60410001 seqi r1,r2,#1 13076 0000b6c0 14200158 bnez r1,L227_LF9 13077 0000b6c4 54000000 nop; not filled. 13078 0000b6c8 60410002 seqi r1,r2,#2 13079 0000b6cc 10200194 beqz r1,L229_LF9 13080 0000b6d0 54000000 nop; not filled. 13081 0000b6d4 08000130 j L226_LF9 13082 0000b6d8 54000000 nop; not filled. 13083 0000b6dc L231_LF9: 13084 0000b6dc 60410040 seqi r1,r2,#64 13085 0000b6e0 14200038 bnez r1,L217_LF9 13086 0000b6e4 54000000 nop; not filled. 13087 0000b6e8 6c410040 sgtui r1,r2,#64 13088 0000b6ec 14200018 bnez r1,L232_LF9 13089 0000b6f0 54000000 nop; not filled. 13090 0000b6f4 60410020 seqi r1,r2,#32 13091 0000b6f8 10200168 beqz r1,L229_LF9 13092 0000b6fc 54000000 nop; not filled. 13093 0000b700 0800012c j L228_LF9 13094 0000b704 54000000 nop; not filled. 13095 0000b708 L232_LF9: 13096 0000b708 60410048 seqi r1,r2,#72 13097 0000b70c 10200154 beqz r1,L229_LF9 13098 0000b710 54000000 nop; not filled. 13099 0000b714 08000088 j L220_LF9 13100 0000b718 54000000 nop; not filled. 13101 0000b71c L217_LF9: 13102 0000b71c 23bdfff8 addi r29,r29,#-8 13103 0000b720 3c020001 lhi r2,((_debugstr)>>16)&0xffff 13104 0000b724 24421f50 addui r2,r2,(_debugstr)&0xffff 13105 0000b728 afa20000 sw (r29),r2 13106 0000b72c 20070074 addi r7,r0,#116 13107 0000b730 afa70004 sw 4(r29),r7 13108 0000b734 0fff9300 jal _dindex 13109 0000b738 54000000 nop; not filled. 13110 0000b73c 23bd0008 addi r29,r29,#8 13111 0000b740 64210000 snei r1,r1,#0 13112 0000b744 1420002c bnez r1,L219_LF9 13113 0000b748 54000000 nop; not filled. 13114 0000b74c 23bdfff8 addi r29,r29,#-8 13115 0000b750 afa20000 sw (r29),r2 13116 0000b754 2007002b addi r7,r0,#43 13117 0000b758 afa70004 sw 4(r29),r7 13118 0000b75c 0fff92d8 jal _dindex 13119 0000b760 54000000 nop; not filled. 13120 0000b764 23bd0008 addi r29,r29,#8 13121 0000b768 64210000 snei r1,r1,#0 13122 0000b76c 10200020 beqz r1,L218_LF9 13123 0000b770 54000000 nop; not filled. 13124 0000b774 L219_LF9: 13125 0000b774 23bdfff8 addi r29,r29,#-8 13126 0000b778 3c070001 lhi r7,((LC9_LF9)>>16)&0xffff 13127 0000b77c 24e75514 addui r7,r7,(LC9_LF9)&0xffff 13128 0000b780 L248_LF9: 13129 0000b780 afa70000 sw (r29),r7 13130 0000b784 0c000a8c jal _printf 13131 0000b788 54000000 nop; not filled. 13132 0000b78c 23bd0008 addi r29,r29,#8 13133 0000b790 L218_LF9: 13134 0000b790 0fff9ff8 jal _ProcessSchedule 13135 0000b794 54000000 nop; not filled. 13136 0000b798 080000f0 j L215_LF9 13137 0000b79c 54000000 nop; not filled. 13138 0000b7a0 L220_LF9: 13139 0000b7a0 3c04fff0 lhi r4,#-16 13140 0000b7a4 248401a0 addui r4,r4,#416 13141 0000b7a8 3c03fff0 lhi r3,#-16 13142 0000b7ac 24630180 addui r3,r3,#384 13143 0000b7b0 L221_LF9: 13144 0000b7b0 8c820000 lw r2,(r4) 13145 0000b7b4 8c610000 lw r1,(r3) 13146 0000b7b8 23bdfff0 addi r29,r29,#-16 13147 0000b7bc 3c070001 lhi r7,((LC10_LF9)>>16)&0xffff 13148 0000b7c0 24e7552c addui r7,r7,(LC10_LF9)&0xffff 13149 0000b7c4 afa70000 sw (r29),r7 13150 0000b7c8 afa10004 sw 4(r29),r1 13151 0000b7cc afa10008 sw 8(r29),r1 13152 0000b7d0 afa2000c sw 12(r29),r2 13153 0000b7d4 0c000a3c jal _printf 13154 0000b7d8 54000000 nop; not filled. 13155 0000b7dc 23bd0010 addi r29,r29,#16 13156 0000b7e0 6c410001 sgti r1,r2,#1 13157 0000b7e4 102000a4 beqz r1,L215_LF9 13158 0000b7e8 54000000 nop; not filled. 13159 0000b7ec 0bffffc0 j L221_LF9 13160 0000b7f0 54000000 nop; not filled. 13161 0000b7f4 L225_LF9: 13162 0000b7f4 23bdfff0 addi r29,r29,#-16 13163 0000b7f8 3c070001 lhi r7,((LC11_LF9)>>16)&0xffff 13164 0000b7fc 24e75564 addui r7,r7,(LC11_LF9)&0xffff 13165 0000b800 08000038 j L247_LF9 13166 0000b804 54000000 nop; not filled. 13167 0000b808 L226_LF9: 13168 0000b808 23bdfff0 addi r29,r29,#-16 13169 0000b80c 3c070001 lhi r7,((LC12_LF9)>>16)&0xffff 13170 0000b810 24e75598 addui r7,r7,(LC12_LF9)&0xffff 13171 0000b814 08000024 j L247_LF9 13172 0000b818 54000000 nop; not filled. 13173 0000b81c L227_LF9: 13174 0000b81c 23bdfff0 addi r29,r29,#-16 13175 0000b820 3c070001 lhi r7,((LC13_LF9)>>16)&0xffff 13176 0000b824 24e755d0 addui r7,r7,(LC13_LF9)&0xffff 13177 0000b828 08000010 j L247_LF9 13178 0000b82c 54000000 nop; not filled. 13179 0000b830 L228_LF9: 13180 0000b830 23bdfff0 addi r29,r29,#-16 13181 0000b834 3c070001 lhi r7,((LC14_LF9)>>16)&0xffff 13182 0000b838 24e7560c addui r7,r7,(LC14_LF9)&0xffff 13183 0000b83c L247_LF9: 13184 0000b83c afa70000 sw (r29),r7 13185 0000b840 afa60004 sw 4(r29),r6 13186 0000b844 afa40008 sw 8(r29),r4 13187 0000b848 0c0009c8 jal _printf 13188 0000b84c 54000000 nop; not filled. 13189 0000b850 0c0009a8 jal _exitsim 13190 0000b854 54000000 nop; not filled. 13191 0000b858 23bd0010 addi r29,r29,#16 13192 0000b85c 0800002c j L215_LF9 13193 0000b860 54000000 nop; not filled. 13194 0000b864 L229_LF9: 13195 0000b864 23bdfff8 addi r29,r29,#-8 13196 0000b868 3c070001 lhi r7,((LC15_LF9)>>16)&0xffff 13197 0000b86c 24e7563c addui r7,r7,(LC15_LF9)&0xffff 13198 0000b870 L246_LF9: 13199 0000b870 afa70000 sw (r29),r7 13200 0000b874 afa20004 sw 4(r29),r2 13201 0000b878 0c000998 jal _printf 13202 0000b87c 54000000 nop; not filled. 13203 0000b880 0c000978 jal _exitsim 13204 0000b884 54000000 nop; not filled. 13205 0000b888 L235_LF9: 13206 0000b888 23bd0008 addi r29,r29,#8 13207 0000b88c L215_LF9: 13208 0000b88c 23bdfff8 addi r29,r29,#-8 13209 0000b890 3c020001 lhi r2,((_debugstr)>>16)&0xffff 13210 0000b894 24421f50 addui r2,r2,(_debugstr)&0xffff 13211 0000b898 afa20000 sw (r29),r2 13212 0000b89c 20070074 addi r7,r0,#116 13213 0000b8a0 afa70004 sw 4(r29),r7 13214 0000b8a4 0fff9190 jal _dindex 13215 0000b8a8 54000000 nop; not filled. 13216 0000b8ac 23bd0008 addi r29,r29,#8 13217 0000b8b0 64210000 snei r1,r1,#0 13218 0000b8b4 1420002c bnez r1,L234_LF9 13219 0000b8b8 54000000 nop; not filled. 13220 0000b8bc 23bdfff8 addi r29,r29,#-8 13221 0000b8c0 afa20000 sw (r29),r2 13222 0000b8c4 2007002b addi r7,r0,#43 13223 0000b8c8 afa70004 sw 4(r29),r7 13224 0000b8cc 0fff9168 jal _dindex 13225 0000b8d0 54000000 nop; not filled. 13226 0000b8d4 23bd0008 addi r29,r29,#8 13227 0000b8d8 64210000 snei r1,r1,#0 13228 0000b8dc 10200020 beqz r1,L233_LF9 13229 0000b8e0 54000000 nop; not filled. 13230 0000b8e4 L234_LF9: 13231 0000b8e4 23bdfff8 addi r29,r29,#-8 13232 0000b8e8 3c070001 lhi r7,((LC16_LF9)>>16)&0xffff 13233 0000b8ec 24e75674 addui r7,r7,(LC16_LF9)&0xffff 13234 0000b8f0 afa70000 sw (r29),r7 13235 0000b8f4 0c00091c jal _printf 13236 0000b8f8 54000000 nop; not filled. 13237 0000b8fc 23bd0008 addi r29,r29,#8 13238 0000b900 L233_LF9: 13239 0000b900 0fff5864 jal _intrreturn 13240 0000b904 54000000 nop; not filled. 13241 0000b908 8fa20000 lw r2,0(r29) 13242 0000b90c 8fa30004 lw r3,4(r29) 13243 0000b910 8fa40008 lw r4,8(r29) 13244 0000b914 8fa5000c lw r5,12(r29) 13245 0000b918 8fa60010 lw r6,16(r29) 13246 0000b91c 8fa70014 lw r7,20(r29) 13247 0000b920 8fdffff8 lw r31,-8(r30) 13248 0000b924 001ee820 add r29,r0,r30 13249 0000b928 8fdefffc lw r30,-4(r30) 13250 0000b92c 4be00000 jr r31 13251 0000b930 54000000 nop 13252 0000b934 .endproc _dointerrupt 13253 ; Compiled by GCC 13255 0000b934 .align 2 13256 0000b934 .proc _isspace 13257 0000b934 .global _isspace 13258 0000b934 _isspace: 13259 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 13260 0000b934 afbefffc sw -4(r29),r30; push fp 13261 0000b938 001df020 add r30,r0,r29; fp = sp 13262 0000b93c afbffff8 sw -8(r29),r31; push ret addr 13263 0000b940 2fbd0010 subui r29,r29,#16; alloc local storage 13264 0000b944 afa20000 sw 0(r29),r2 13265 0000b948 83c20003 lb r2,3(r30) 13266 0000b94c 201f0000 addi r31,r0,#0 13267 0000b950 304100ff andi r1,r2,#0x00ff 13268 0000b954 60210020 seqi r1,r1,#32 13269 0000b958 14200018 bnez r1,L6_LF10 13270 0000b95c 54000000 nop; not filled. 13271 0000b960 2041fff7 addi r1,r2,#-9 13272 0000b964 302100ff andi r1,r1,#0x00ff 13273 0000b968 70210001 sleui r1,r1,#1 13274 0000b96c 10200008 beqz r1,L5_LF10 13275 0000b970 54000000 nop; not filled. 13276 0000b974 L6_LF10: 13277 0000b974 201f0001 addi r31,r0,#1 13278 0000b978 L5_LF10: 13279 0000b978 001f0820 add r1,r0,r31 13280 0000b97c 8fa20000 lw r2,0(r29) 13281 0000b980 8fdffff8 lw r31,-8(r30) 13282 0000b984 001ee820 add r29,r0,r30 13283 0000b988 8fdefffc lw r30,-4(r30) 13284 0000b98c 4be00000 jr r31 13285 0000b990 54000000 nop 13286 0000b994 .endproc _isspace 13287 0000b994 .align 2 13288 0000b994 .proc _isxdigit 13289 0000b994 .global _isxdigit 13290 0000b994 _isxdigit: 13291 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 13292 0000b994 afbefffc sw -4(r29),r30; push fp 13293 0000b998 001df020 add r30,r0,r29; fp = sp 13294 0000b99c afbffff8 sw -8(r29),r31; push ret addr 13295 0000b9a0 2fbd0010 subui r29,r29,#16; alloc local storage 13296 0000b9a4 afa20000 sw 0(r29),r2 13297 0000b9a8 83df0003 lb r31,3(r30) 13298 0000b9ac 20020000 addi r2,r0,#0 13299 0000b9b0 23e1ffd0 addi r1,r31,#-48 13300 0000b9b4 302100ff andi r1,r1,#0x00ff 13301 0000b9b8 70210009 sleui r1,r1,#9 13302 0000b9bc 14200028 bnez r1,L12_LF10 13303 0000b9c0 54000000 nop; not filled. 13304 0000b9c4 23e1ff9f addi r1,r31,#-97 13305 0000b9c8 302100ff andi r1,r1,#0x00ff 13306 0000b9cc 70210005 sleui r1,r1,#5 13307 0000b9d0 14200014 bnez r1,L12_LF10 13308 0000b9d4 54000000 nop; not filled. 13309 0000b9d8 33e100ff andi r1,r31,#0x00ff 13310 0000b9dc 64210041 snei r1,r1,#65 13311 0000b9e0 14200008 bnez r1,L11_LF10 13312 0000b9e4 54000000 nop; not filled. 13313 0000b9e8 L12_LF10: 13314 0000b9e8 20020001 addi r2,r0,#1 13315 0000b9ec L11_LF10: 13316 0000b9ec 00020820 add r1,r0,r2 13317 0000b9f0 8fa20000 lw r2,0(r29) 13318 0000b9f4 8fdffff8 lw r31,-8(r30) 13319 0000b9f8 001ee820 add r29,r0,r30 13320 0000b9fc 8fdefffc lw r30,-4(r30) 13321 0000ba00 4be00000 jr r31 13322 0000ba04 54000000 nop 13323 0000ba08 .endproc _isxdigit 13324 0000ba08 .align 2 13325 0000ba08 .proc _DisableIntrs 13326 0000ba08 .global _DisableIntrs 13327 0000ba08 _DisableIntrs: 13328 ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. 13329 0000ba08 afbefffc sw -4(r29),r30; push fp 13330 0000ba0c 001df020 add r30,r0,r29; fp = sp 13331 0000ba10 afbffff8 sw -8(r29),r31; push ret addr 13332 0000ba14 2fbd0010 subui r29,r29,#16; alloc local storage 13333 0000ba18 afa20000 sw 0(r29),r2 13334 0000ba1c 23bdfff8 addi r29,r29,#-8 13335 0000ba20 2002000f addi r2,r0,#15 13336 0000ba24 afa20000 sw (r29),r2 13337 0000ba28 0fff585c jal _SetIntrs 13338 0000ba2c 54000000 nop; not filled. 13339 0000ba30 23bd0008 addi r29,r29,#8 13340 0000ba34 8fa20000 lw r2,0(r29) 13341 0000ba38 8fdffff8 lw r31,-8(r30) 13342 0000ba3c 001ee820 add r29,r0,r30 13343 0000ba40 8fdefffc lw r30,-4(r30) 13344 0000ba44 4be00000 jr r31 13345 0000ba48 54000000 nop 13346 0000ba4c .endproc _DisableIntrs 13347 0000ba4c .align 2 13348 0000ba4c .proc _EnableIntrs 13349 0000ba4c .global _EnableIntrs 13350 0000ba4c _EnableIntrs: 13351 ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. 13352 0000ba4c afbefffc sw -4(r29),r30; push fp 13353 0000ba50 001df020 add r30,r0,r29; fp = sp 13354 0000ba54 afbffff8 sw -8(r29),r31; push ret addr 13355 0000ba58 2fbd0010 subui r29,r29,#16; alloc local storage 13356 0000ba5c afa20000 sw 0(r29),r2 13357 0000ba60 23bdfff8 addi r29,r29,#-8 13358 0000ba64 20020000 addi r2,r0,#0 13359 0000ba68 afa20000 sw (r29),r2 13360 0000ba6c 0fff5818 jal _SetIntrs 13361 0000ba70 54000000 nop; not filled. 13362 0000ba74 23bd0008 addi r29,r29,#8 13363 0000ba78 8fa20000 lw r2,0(r29) 13364 0000ba7c 8fdffff8 lw r31,-8(r30) 13365 0000ba80 001ee820 add r29,r0,r30 13366 0000ba84 8fdefffc lw r30,-4(r30) 13367 0000ba88 4be00000 jr r31 13368 0000ba8c 54000000 nop 13369 0000ba90 .endproc _EnableIntrs 13370 0000ba90 .align 2 13371 0000ba90 .proc _RestoreIntrs 13372 0000ba90 .global _RestoreIntrs 13373 0000ba90 _RestoreIntrs: 13374 ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. 13375 0000ba90 afbefffc sw -4(r29),r30; push fp 13376 0000ba94 001df020 add r30,r0,r29; fp = sp 13377 0000ba98 afbffff8 sw -8(r29),r31; push ret addr 13378 0000ba9c 2fbd0010 subui r29,r29,#16; alloc local storage 13379 0000baa0 afa20000 sw 0(r29),r2 13380 0000baa4 23bdfff8 addi r29,r29,#-8 13381 0000baa8 8fc20000 lw r2,(r30) 13382 0000baac afa20000 sw (r29),r2 13383 0000bab0 0fff57d4 jal _SetIntrs 13384 0000bab4 54000000 nop; not filled. 13385 0000bab8 23bd0008 addi r29,r29,#8 13386 0000babc 8fa20000 lw r2,0(r29) 13387 0000bac0 8fdffff8 lw r31,-8(r30) 13388 0000bac4 001ee820 add r29,r0,r30 13389 0000bac8 8fdefffc lw r30,-4(r30) 13390 0000bacc 4be00000 jr r31 13391 0000bad0 54000000 nop 13392 0000bad4 .endproc _RestoreIntrs 13393 0000bad4 .align 2 13394 0000bad4 .proc _QueueLinkInit 13395 0000bad4 .global _QueueLinkInit 13396 0000bad4 _QueueLinkInit: 13397 ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. 13398 0000bad4 afbefffc sw -4(r29),r30; push fp 13399 0000bad8 001df020 add r30,r0,r29; fp = sp 13400 0000badc afbffff8 sw -8(r29),r31; push ret addr 13401 0000bae0 2fbd0010 subui r29,r29,#16; alloc local storage 13402 0000bae4 afa20000 sw 0(r29),r2 13403 0000bae8 8fc10000 lw r1,(r30) 13404 0000baec 8fc20004 lw r2,4(r30) 13405 0000baf0 201f0000 addi r31,r0,#0 13406 0000baf4 ac3f0000 sw (r1),r31 13407 0000baf8 ac22000c sw 12(r1),r2 13408 0000bafc 8fa20000 lw r2,0(r29) 13409 0000bb00 8fdffff8 lw r31,-8(r30) 13410 0000bb04 001ee820 add r29,r0,r30 13411 0000bb08 8fdefffc lw r30,-4(r30) 13412 0000bb0c 4be00000 jr r31 13413 0000bb10 54000000 nop 13414 0000bb14 .endproc _QueueLinkInit 13415 0000bb14 .align 2 13416 0000bb14 .proc _QueueNext 13417 0000bb14 .global _QueueNext 13418 0000bb14 _QueueNext: 13419 ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. 13420 0000bb14 afbefffc sw -4(r29),r30; push fp 13421 0000bb18 001df020 add r30,r0,r29; fp = sp 13422 0000bb1c afbffff8 sw -8(r29),r31; push ret addr 13423 0000bb20 2fbd0008 subui r29,r29,#8; alloc local storage 13424 0000bb24 8fc10000 lw r1,(r30) 13425 0000bb28 8c210000 lw r1,(r1) 13426 0000bb2c 8fdffff8 lw r31,-8(r30) 13427 0000bb30 001ee820 add r29,r0,r30 13428 0000bb34 8fdefffc lw r30,-4(r30) 13429 0000bb38 4be00000 jr r31 13430 0000bb3c 54000000 nop 13431 0000bb40 .endproc _QueueNext 13432 0000bb40 .align 2 13433 0000bb40 .proc _QueuePrev 13434 0000bb40 .global _QueuePrev 13435 0000bb40 _QueuePrev: 13436 ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. 13437 0000bb40 afbefffc sw -4(r29),r30; push fp 13438 0000bb44 001df020 add r30,r0,r29; fp = sp 13439 0000bb48 afbffff8 sw -8(r29),r31; push ret addr 13440 0000bb4c 2fbd0008 subui r29,r29,#8; alloc local storage 13441 0000bb50 8fc10000 lw r1,(r30) 13442 0000bb54 8c210004 lw r1,4(r1) 13443 0000bb58 8fdffff8 lw r31,-8(r30) 13444 0000bb5c 001ee820 add r29,r0,r30 13445 0000bb60 8fdefffc lw r30,-4(r30) 13446 0000bb64 4be00000 jr r31 13447 0000bb68 54000000 nop 13448 0000bb6c .endproc _QueuePrev 13449 0000bb6c .align 2 13450 0000bb6c .proc _QueueFirst 13451 0000bb6c .global _QueueFirst 13452 0000bb6c _QueueFirst: 13453 ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. 13454 0000bb6c afbefffc sw -4(r29),r30; push fp 13455 0000bb70 001df020 add r30,r0,r29; fp = sp 13456 0000bb74 afbffff8 sw -8(r29),r31; push ret addr 13457 0000bb78 2fbd0008 subui r29,r29,#8; alloc local storage 13458 0000bb7c 8fc10000 lw r1,(r30) 13459 0000bb80 8c210000 lw r1,(r1) 13460 0000bb84 8fdffff8 lw r31,-8(r30) 13461 0000bb88 001ee820 add r29,r0,r30 13462 0000bb8c 8fdefffc lw r30,-4(r30) 13463 0000bb90 4be00000 jr r31 13464 0000bb94 54000000 nop 13465 0000bb98 .endproc _QueueFirst 13466 0000bb98 .align 2 13467 0000bb98 .proc _QueueLast 13468 0000bb98 .global _QueueLast 13469 0000bb98 _QueueLast: 13470 ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. 13471 0000bb98 afbefffc sw -4(r29),r30; push fp 13472 0000bb9c 001df020 add r30,r0,r29; fp = sp 13473 0000bba0 afbffff8 sw -8(r29),r31; push ret addr 13474 0000bba4 2fbd0008 subui r29,r29,#8; alloc local storage 13475 0000bba8 8fc10000 lw r1,(r30) 13476 0000bbac 8c210004 lw r1,4(r1) 13477 0000bbb0 8fdffff8 lw r31,-8(r30) 13478 0000bbb4 001ee820 add r29,r0,r30 13479 0000bbb8 8fdefffc lw r30,-4(r30) 13480 0000bbbc 4be00000 jr r31 13481 0000bbc0 54000000 nop 13482 0000bbc4 .endproc _QueueLast 13483 0000bbc4 .align 2 13484 0000bbc4 .proc _QueueInsertAfter 13485 0000bbc4 .global _QueueInsertAfter 13486 0000bbc4 _QueueInsertAfter: 13487 ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. 13488 0000bbc4 afbefffc sw -4(r29),r30; push fp 13489 0000bbc8 001df020 add r30,r0,r29; fp = sp 13490 0000bbcc afbffff8 sw -8(r29),r31; push ret addr 13491 0000bbd0 2fbd0010 subui r29,r29,#16; alloc local storage 13492 0000bbd4 afa20000 sw 0(r29),r2 13493 0000bbd8 afa30004 sw 4(r29),r3 13494 0000bbdc 8fc30000 lw r3,(r30) 13495 0000bbe0 8fc20004 lw r2,4(r30) 13496 0000bbe4 8fc10008 lw r1,8(r30) 13497 0000bbe8 ac230008 sw 8(r1),r3 13498 0000bbec ac220004 sw 4(r1),r2 13499 0000bbf0 8c5f0000 lw r31,(r2) 13500 0000bbf4 ac3f0000 sw (r1),r31 13501 0000bbf8 ac410000 sw (r2),r1 13502 0000bbfc 8c220000 lw r2,(r1) 13503 0000bc00 ac410004 sw 4(r2),r1 13504 0000bc04 8c610008 lw r1,8(r3) 13505 0000bc08 20210001 addi r1,r1,#1 13506 0000bc0c ac610008 sw 8(r3),r1 13507 0000bc10 8fa20000 lw r2,0(r29) 13508 0000bc14 8fa30004 lw r3,4(r29) 13509 0000bc18 8fdffff8 lw r31,-8(r30) 13510 0000bc1c 001ee820 add r29,r0,r30 13511 0000bc20 8fdefffc lw r30,-4(r30) 13512 0000bc24 4be00000 jr r31 13513 0000bc28 54000000 nop 13514 0000bc2c .endproc _QueueInsertAfter 13515 0000bc2c .align 2 13516 0000bc2c .proc _QueueInsertFirst 13517 0000bc2c .global _QueueInsertFirst 13518 0000bc2c _QueueInsertFirst: 13519 ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. 13520 0000bc2c afbefffc sw -4(r29),r30; push fp 13521 0000bc30 001df020 add r30,r0,r29; fp = sp 13522 0000bc34 afbffff8 sw -8(r29),r31; push ret addr 13523 0000bc38 2fbd0010 subui r29,r29,#16; alloc local storage 13524 0000bc3c afa20000 sw 0(r29),r2 13525 0000bc40 afa30004 sw 4(r29),r3 13526 0000bc44 8fc30000 lw r3,(r30) 13527 0000bc48 8fc10004 lw r1,4(r30) 13528 0000bc4c ac230008 sw 8(r1),r3 13529 0000bc50 ac230004 sw 4(r1),r3 13530 0000bc54 8c7f0000 lw r31,(r3) 13531 0000bc58 ac3f0000 sw (r1),r31 13532 0000bc5c ac610000 sw (r3),r1 13533 0000bc60 8c220000 lw r2,(r1) 13534 0000bc64 ac410004 sw 4(r2),r1 13535 0000bc68 8c610008 lw r1,8(r3) 13536 0000bc6c 20210001 addi r1,r1,#1 13537 0000bc70 ac610008 sw 8(r3),r1 13538 0000bc74 8fa20000 lw r2,0(r29) 13539 0000bc78 8fa30004 lw r3,4(r29) 13540 0000bc7c 8fdffff8 lw r31,-8(r30) 13541 0000bc80 001ee820 add r29,r0,r30 13542 0000bc84 8fdefffc lw r30,-4(r30) 13543 0000bc88 4be00000 jr r31 13544 0000bc8c 54000000 nop 13545 0000bc90 .endproc _QueueInsertFirst 13546 0000bc90 .align 2 13547 0000bc90 .proc _QueueInsertLast 13548 0000bc90 .global _QueueInsertLast 13549 0000bc90 _QueueInsertLast: 13550 ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. 13551 0000bc90 afbefffc sw -4(r29),r30; push fp 13552 0000bc94 001df020 add r30,r0,r29; fp = sp 13553 0000bc98 afbffff8 sw -8(r29),r31; push ret addr 13554 0000bc9c 2fbd0010 subui r29,r29,#16; alloc local storage 13555 0000bca0 afa20000 sw 0(r29),r2 13556 0000bca4 afa30004 sw 4(r29),r3 13557 0000bca8 8fc30000 lw r3,(r30) 13558 0000bcac 8fc10004 lw r1,4(r30) 13559 0000bcb0 8c620004 lw r2,4(r3) 13560 0000bcb4 ac230008 sw 8(r1),r3 13561 0000bcb8 ac220004 sw 4(r1),r2 13562 0000bcbc 8c5f0000 lw r31,(r2) 13563 0000bcc0 ac3f0000 sw (r1),r31 13564 0000bcc4 ac410000 sw (r2),r1 13565 0000bcc8 8c220000 lw r2,(r1) 13566 0000bccc ac410004 sw 4(r2),r1 13567 0000bcd0 8c610008 lw r1,8(r3) 13568 0000bcd4 20210001 addi r1,r1,#1 13569 0000bcd8 ac610008 sw 8(r3),r1 13570 0000bcdc 8fa20000 lw r2,0(r29) 13571 0000bce0 8fa30004 lw r3,4(r29) 13572 0000bce4 8fdffff8 lw r31,-8(r30) 13573 0000bce8 001ee820 add r29,r0,r30 13574 0000bcec 8fdefffc lw r30,-4(r30) 13575 0000bcf0 4be00000 jr r31 13576 0000bcf4 54000000 nop 13577 0000bcf8 .endproc _QueueInsertLast 13578 0000bcf8 .align 2 13579 0000bcf8 .proc _QueueRemove 13580 0000bcf8 .global _QueueRemove 13581 0000bcf8 _QueueRemove: 13582 ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. 13583 0000bcf8 afbefffc sw -4(r29),r30; push fp 13584 0000bcfc 001df020 add r30,r0,r29; fp = sp 13585 0000bd00 afbffff8 sw -8(r29),r31; push ret addr 13586 0000bd04 2fbd0010 subui r29,r29,#16; alloc local storage 13587 0000bd08 afa20000 sw 0(r29),r2 13588 0000bd0c afa30004 sw 4(r29),r3 13589 0000bd10 8fdf0000 lw r31,(r30) 13590 0000bd14 8fe10008 lw r1,8(r31) 13591 0000bd18 8c210008 lw r1,8(r1) 13592 0000bd1c 6c210000 sgti r1,r1,#0 13593 0000bd20 1020002c beqz r1,L44_LF10 13594 0000bd24 54000000 nop; not filled. 13595 0000bd28 8fe10004 lw r1,4(r31) 13596 0000bd2c 8fe30000 lw r3,(r31) 13597 0000bd30 ac230000 sw (r1),r3 13598 0000bd34 8fe10000 lw r1,(r31) 13599 0000bd38 8fe30004 lw r3,4(r31) 13600 0000bd3c ac230004 sw 4(r1),r3 13601 0000bd40 8fe20008 lw r2,8(r31) 13602 0000bd44 8c410008 lw r1,8(r2) 13603 0000bd48 2021ffff addi r1,r1,#-1 13604 0000bd4c ac410008 sw 8(r2),r1 13605 0000bd50 L44_LF10: 13606 0000bd50 20030000 addi r3,r0,#0 13607 0000bd54 afe30000 sw (r31),r3 13608 0000bd58 8fa20000 lw r2,0(r29) 13609 0000bd5c 8fa30004 lw r3,4(r29) 13610 0000bd60 8fdffff8 lw r31,-8(r30) 13611 0000bd64 001ee820 add r29,r0,r30 13612 0000bd68 8fdefffc lw r30,-4(r30) 13613 0000bd6c 4be00000 jr r31 13614 0000bd70 54000000 nop 13615 0000bd74 .endproc _QueueRemove 13616 0000bd74 .align 2 13617 0000bd74 .proc _QueueLength 13618 0000bd74 .global _QueueLength 13619 0000bd74 _QueueLength: 13620 ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. 13621 0000bd74 afbefffc sw -4(r29),r30; push fp 13622 0000bd78 001df020 add r30,r0,r29; fp = sp 13623 0000bd7c afbffff8 sw -8(r29),r31; push ret addr 13624 0000bd80 2fbd0008 subui r29,r29,#8; alloc local storage 13625 0000bd84 8fc10000 lw r1,(r30) 13626 0000bd88 8c210008 lw r1,8(r1) 13627 0000bd8c 8fdffff8 lw r31,-8(r30) 13628 0000bd90 001ee820 add r29,r0,r30 13629 0000bd94 8fdefffc lw r30,-4(r30) 13630 0000bd98 4be00000 jr r31 13631 0000bd9c 54000000 nop 13632 0000bda0 .endproc _QueueLength 13633 0000bda0 .align 2 13634 0000bda0 .proc _QueueEmpty 13635 0000bda0 .global _QueueEmpty 13636 0000bda0 _QueueEmpty: 13637 ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. 13638 0000bda0 afbefffc sw -4(r29),r30; push fp 13639 0000bda4 001df020 add r30,r0,r29; fp = sp 13640 0000bda8 afbffff8 sw -8(r29),r31; push ret addr 13641 0000bdac 2fbd0008 subui r29,r29,#8; alloc local storage 13642 0000bdb0 8fc10000 lw r1,(r30) 13643 0000bdb4 8c210008 lw r1,8(r1) 13644 0000bdb8 60210000 seqi r1,r1,#0 13645 0000bdbc 8fdffff8 lw r31,-8(r30) 13646 0000bdc0 001ee820 add r29,r0,r30 13647 0000bdc4 8fdefffc lw r30,-4(r30) 13648 0000bdc8 4be00000 jr r31 13649 0000bdcc 54000000 nop 13650 0000bdd0 .endproc _QueueEmpty 13651 0000bdd0 .data 13652 00015697 .align 2 13653 00015698 LC0_LF10: 13654 00015698 50726f63 .ascii "Process #\000" 13654 0001569c 65737320 13654 000156a0 2300 13655 000156a2 .align 2 13656 000156a4 LC1_LF10: 13657 000156a4 52756e6e .ascii "Running process %d (iteration %d)!\n\000" 13657 000156a8 696e6720 13657 000156ac 70726f63 13657 000156b0 65737320 13657 000156b4 25642028 13657 000156b8 69746572 13657 000156bc 6174696f 13657 000156c0 6e202564 13657 000156c4 29210a00 13658 000156c8 .text 13659 0000bdd0 .align 2 13660 0000bdd0 .proc _doSomething_LF10 13661 0000bdd0 _doSomething_LF10: 13662 ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. 13663 0000bdd0 afbefffc sw -4(r29),r30; push fp 13664 0000bdd4 001df020 add r30,r0,r29; fp = sp 13665 0000bdd8 afbffff8 sw -8(r29),r31; push ret addr 13666 0000bddc 2fbd0078 subui r29,r29,#120; alloc local storage 13667 0000bde0 afa20000 sw 0(r29),r2 13668 0000bde4 afa30004 sw 4(r29),r3 13669 0000bde8 afa40008 sw 8(r29),r4 13670 0000bdec afa5000c sw 12(r29),r5 13671 0000bdf0 afa60010 sw 16(r29),r6 13672 0000bdf4 afa70014 sw 20(r29),r7 13673 0000bdf8 afa80018 sw 24(r29),r8 13674 0000bdfc 8fc60000 lw r6,(r30) 13675 0000be00 2001000a addi r1,r0,#10 13676 0000be04 00c00035 movi2fp f0,r6 13677 0000be08 00200835 movi2fp f1,r1 13678 0000be0c 0401000f div f0,f0,f1 13679 0000be10 00001034 movfp2i r2,f0 13680 0000be14 50410002 slli r1,r2,#0x2 13681 0000be18 00220820 add r1,r1,r2 13682 0000be1c 50210001 slli r1,r1,#0x1 13683 0000be20 00c13822 sub r7,r6,r1 13684 0000be24 70c10063 slei r1,r6,#99 13685 0000be28 102000dc beqz r1,L52_LF10 13686 0000be2c 54000000 nop; not filled. 13687 0000be30 23bdfff8 addi r29,r29,#-8 13688 0000be34 50e10002 slli r1,r7,#0x2 13689 0000be38 00270820 add r1,r1,r7 13690 0000be3c 50210002 slli r1,r1,#0x2 13691 0000be40 3c080001 lhi r8,((_mysems_LF10)>>16)&0xffff 13692 0000be44 2508573c addui r8,r8,(_mysems_LF10)&0xffff 13693 0000be48 00280820 add r1,r1,r8 13694 0000be4c afa10000 sw (r29),r1 13695 0000be50 20080001 addi r8,r0,#1 13696 0000be54 afa80004 sw 4(r29),r8 13697 0000be58 0fffd580 jal _SemInit 13698 0000be5c 54000000 nop; not filled. 13699 0000be60 20030001 addi r3,r0,#1 13700 0000be64 23bd0008 addi r29,r29,#8 13701 0000be68 23c4ffd0 addi r4,r30,#-48 13702 0000be6c 23c5ffa8 addi r5,r30,#-88 13703 0000be70 00061020 add r2,r0,r6 13704 0000be74 L56_LF10: 13705 0000be74 23bdfff8 addi r29,r29,#-8 13706 0000be78 afa40000 sw (r29),r4 13707 0000be7c 3c080001 lhi r8,((LC0_LF10)>>16)&0xffff 13708 0000be80 25085698 addui r8,r8,(LC0_LF10)&0xffff 13709 0000be84 afa80004 sw 4(r29),r8 13710 0000be88 0fff86ec jal _dstrcpy 13711 0000be8c 54000000 nop; not filled. 13712 0000be90 afa30000 sw (r29),r3 13713 0000be94 afa50004 sw 4(r29),r5 13714 0000be98 0fff8c18 jal _ditoa 13715 0000be9c 54000000 nop; not filled. 13716 0000bea0 afa40000 sw (r29),r4 13717 0000bea4 afa50004 sw 4(r29),r5 13718 0000bea8 0fff87bc jal _dstrcat 13719 0000beac 54000000 nop; not filled. 13720 0000beb0 23bdfff8 addi r29,r29,#-8 13721 0000beb4 3c080000 lhi r8,((_doSomething_LF10)>>16)&0xffff 13722 0000beb8 2508bdd0 addui r8,r8,(_doSomething_LF10)&0xffff 13723 0000bebc afa80000 sw (r29),r8 13724 0000bec0 50410005 slli r1,r2,#0x5 13725 0000bec4 00220822 sub r1,r1,r2 13726 0000bec8 50210002 slli r1,r1,#0x2 13727 0000becc 00220820 add r1,r1,r2 13728 0000bed0 50210003 slli r1,r1,#0x3 13729 0000bed4 00260820 add r1,r1,r6 13730 0000bed8 afa10004 sw 4(r29),r1 13731 0000bedc afa40008 sw 8(r29),r4 13732 0000bee0 20080000 addi r8,r0,#0 13733 0000bee4 afa8000c sw 12(r29),r8 13734 0000bee8 0fffa234 jal _ProcessFork 13735 0000beec 54000000 nop; not filled. 13736 0000bef0 23bd0010 addi r29,r29,#16 13737 0000bef4 00461020 add r2,r2,r6 13738 0000bef8 20630001 addi r3,r3,#1 13739 0000befc 70610006 slei r1,r3,#6 13740 0000bf00 1420ff70 bnez r1,L56_LF10 13741 0000bf04 54000000 nop; not filled. 13742 0000bf08 L52_LF10: 13743 0000bf08 23bdfff8 addi r29,r29,#-8 13744 0000bf0c 50e10002 slli r1,r7,#0x2 13745 0000bf10 00270820 add r1,r1,r7 13746 0000bf14 50210002 slli r1,r1,#0x2 13747 0000bf18 3c080001 lhi r8,((_mysems_LF10)>>16)&0xffff 13748 0000bf1c 2508573c addui r8,r8,(_mysems_LF10)&0xffff 13749 0000bf20 00280820 add r1,r1,r8 13750 0000bf24 afa10000 sw (r29),r1 13751 0000bf28 0fffd60c jal _SemWait 13752 0000bf2c 54000000 nop; not filled. 13753 0000bf30 20030000 addi r3,r0,#0 13754 0000bf34 23bd0008 addi r29,r29,#8 13755 0000bf38 50c20001 slli r2,r6,#0x1 13756 0000bf3c 0062082a slt r1,r3,r2 13757 0000bf40 10200070 beqz r1,L59_LF10 13758 0000bf44 54000000 nop; not filled. 13759 0000bf48 200503e8 addi r5,r0,#1000 13760 0000bf4c 00022020 add r4,r0,r2 13761 0000bf50 L61_LF10: 13762 0000bf50 00600035 movi2fp f0,r3 13763 0000bf54 00a00835 movi2fp f1,r5 13764 0000bf58 0401000f div f0,f0,f1 13765 0000bf5c 00001034 movfp2i r2,f0 13766 0000bf60 50410005 slli r1,r2,#0x5 13767 0000bf64 00220822 sub r1,r1,r2 13768 0000bf68 50210002 slli r1,r1,#0x2 13769 0000bf6c 00220820 add r1,r1,r2 13770 0000bf70 50210003 slli r1,r1,#0x3 13771 0000bf74 00610829 sne r1,r3,r1 13772 0000bf78 14200028 bnez r1,L62_LF10 13773 0000bf7c 54000000 nop; not filled. 13774 0000bf80 23bdfff0 addi r29,r29,#-16 13775 0000bf84 3c080001 lhi r8,((LC1_LF10)>>16)&0xffff 13776 0000bf88 250856a4 addui r8,r8,(LC1_LF10)&0xffff 13777 0000bf8c afa80000 sw (r29),r8 13778 0000bf90 afa60004 sw 4(r29),r6 13779 0000bf94 afa30008 sw 8(r29),r3 13780 0000bf98 0c000278 jal _printf 13781 0000bf9c 54000000 nop; not filled. 13782 0000bfa0 23bd0010 addi r29,r29,#16 13783 0000bfa4 L62_LF10: 13784 0000bfa4 20630001 addi r3,r3,#1 13785 0000bfa8 0064082a slt r1,r3,r4 13786 0000bfac 1420ffa0 bnez r1,L61_LF10 13787 0000bfb0 54000000 nop; not filled. 13788 0000bfb4 L59_LF10: 13789 0000bfb4 23bdfff8 addi r29,r29,#-8 13790 0000bfb8 50e10002 slli r1,r7,#0x2 13791 0000bfbc 00270820 add r1,r1,r7 13792 0000bfc0 50210002 slli r1,r1,#0x2 13793 0000bfc4 3c080001 lhi r8,((_mysems_LF10)>>16)&0xffff 13794 0000bfc8 2508573c addui r8,r8,(_mysems_LF10)&0xffff 13795 0000bfcc 00280820 add r1,r1,r8 13796 0000bfd0 afa10000 sw (r29),r1 13797 0000bfd4 0fffd870 jal _SemSignal 13798 0000bfd8 54000000 nop; not filled. 13799 0000bfdc 23bd0008 addi r29,r29,#8 13800 0000bfe0 8fa20000 lw r2,0(r29) 13801 0000bfe4 8fa30004 lw r3,4(r29) 13802 0000bfe8 8fa40008 lw r4,8(r29) 13803 0000bfec 8fa5000c lw r5,12(r29) 13804 0000bff0 8fa60010 lw r6,16(r29) 13805 0000bff4 8fa70014 lw r7,20(r29) 13806 0000bff8 8fa80018 lw r8,24(r29) 13807 0000bffc 8fdffff8 lw r31,-8(r30) 13808 0000c000 001ee820 add r29,r0,r30 13809 0000c004 8fdefffc lw r30,-4(r30) 13810 0000c008 4be00000 jr r31 13811 0000c00c 54000000 nop 13812 0000c010 .endproc _doSomething_LF10 13813 0000c010 .data 13814 000156c8 .align 2 13815 000156c8 LC2_LF10: 13816 000156c8 63686173 .ascii "chasetail\000" 13816 000156cc 65746169 13816 000156d0 6c00 13817 000156d2 .align 2 13818 000156d4 LC3_LF10: 13819 000156d4 43686173 .ascii "Chasing tail %d.\n\000" 13819 000156d8 696e6720 13819 000156dc 7461696c 13819 000156e0 2025642e 13819 000156e4 0a00 13820 000156e6 .align 2 13821 000156e8 LC4_LF10: 13822 000156e8 4f70656e .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" 13822 000156ec 206f6620 13822 000156f0 2825732c 13822 000156f4 30782578 13822 000156f8 29207265 13822 000156fc 7475726e 13822 00015700 73203078 13822 00015704 25782e0a 13822 00015708 00 13823 00015709 .align 2 13824 0001570c LC5_LF10: 13825 0001570c 43686173 .ascii "ChaseTail\000" 13825 00015710 65546169 13825 00015714 6c00 13826 00015716 .text 13827 0000c010 .align 2 13828 0000c010 .proc _chaseTail_LF10 13829 0000c010 _chaseTail_LF10: 13830 ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. 13831 0000c010 afbefffc sw -4(r29),r30; push fp 13832 0000c014 001df020 add r30,r0,r29; fp = sp 13833 0000c018 afbffff8 sw -8(r29),r31; push ret addr 13834 0000c01c 2fbd0018 subui r29,r29,#24; alloc local storage 13835 0000c020 afa20000 sw 0(r29),r2 13836 0000c024 afa30004 sw 4(r29),r3 13837 0000c028 afa40008 sw 8(r29),r4 13838 0000c02c afa5000c sw 12(r29),r5 13839 0000c030 8fc40000 lw r4,(r30) 13840 0000c034 3c030001 lhi r3,((LC2_LF10)>>16)&0xffff 13841 0000c038 246356c8 addui r3,r3,(LC2_LF10)&0xffff 13842 0000c03c 23bdfff8 addi r29,r29,#-8 13843 0000c040 3c050001 lhi r5,((LC3_LF10)>>16)&0xffff 13844 0000c044 24a556d4 addui r5,r5,(LC3_LF10)&0xffff 13845 0000c048 afa50000 sw (r29),r5 13846 0000c04c afa40004 sw 4(r29),r4 13847 0000c050 0c0001c0 jal _printf 13848 0000c054 54000000 nop; not filled. 13849 0000c058 afa30000 sw (r29),r3 13850 0000c05c 20822000 addi r2,r4,#8192 13851 0000c060 afa20004 sw 4(r29),r2 13852 0000c064 0c000158 jal _Open 13853 0000c068 54000000 nop; not filled. 13854 0000c06c 23bdfff8 addi r29,r29,#-8 13855 0000c070 3c050001 lhi r5,((LC4_LF10)>>16)&0xffff 13856 0000c074 24a556e8 addui r5,r5,(LC4_LF10)&0xffff 13857 0000c078 afa50000 sw (r29),r5 13858 0000c07c afa30004 sw 4(r29),r3 13859 0000c080 afa20008 sw 8(r29),r2 13860 0000c084 afa1000c sw 12(r29),r1 13861 0000c088 0c000188 jal _printf 13862 0000c08c 54000000 nop; not filled. 13863 0000c090 23bd0010 addi r29,r29,#16 13864 0000c094 70810027 slei r1,r4,#39 13865 0000c098 1020003c beqz r1,L67_LF10 13866 0000c09c 54000000 nop; not filled. 13867 0000c0a0 23bdfff0 addi r29,r29,#-16 13868 0000c0a4 3c050000 lhi r5,((_chaseTail_LF10)>>16)&0xffff 13869 0000c0a8 24a5c010 addui r5,r5,(_chaseTail_LF10)&0xffff 13870 0000c0ac afa50000 sw (r29),r5 13871 0000c0b0 20810001 addi r1,r4,#1 13872 0000c0b4 afa10004 sw 4(r29),r1 13873 0000c0b8 3c050001 lhi r5,((LC5_LF10)>>16)&0xffff 13874 0000c0bc 24a5570c addui r5,r5,(LC5_LF10)&0xffff 13875 0000c0c0 afa50008 sw 8(r29),r5 13876 0000c0c4 20050000 addi r5,r0,#0 13877 0000c0c8 afa5000c sw 12(r29),r5 13878 0000c0cc 0fffa050 jal _ProcessFork 13879 0000c0d0 54000000 nop; not filled. 13880 0000c0d4 23bd0010 addi r29,r29,#16 13881 0000c0d8 L67_LF10: 13882 0000c0d8 8fa20000 lw r2,0(r29) 13883 0000c0dc 8fa30004 lw r3,4(r29) 13884 0000c0e0 8fa40008 lw r4,8(r29) 13885 0000c0e4 8fa5000c lw r5,12(r29) 13886 0000c0e8 8fdffff8 lw r31,-8(r30) 13887 0000c0ec 001ee820 add r29,r0,r30 13888 0000c0f0 8fdefffc lw r30,-4(r30) 13889 0000c0f4 4be00000 jr r31 13890 0000c0f8 54000000 nop 13891 0000c0fc .endproc _chaseTail_LF10 13892 0000c0fc .data 13893 00015716 .align 2 13894 00015718 LC6_LF10: 13895 00015718 25642000 .ascii "%d \000" 13896 0001571c .align 2 13897 0001571c LC7_LF10: 13898 0001571c 52616e64 .ascii "Random number %02i is 0x%08x.\n\000" 13898 00015720 6f6d206e 13898 00015724 756d6265 13898 00015728 72202530 13898 0001572c 32692069 13898 00015730 73203078 13898 00015734 25303878 13898 00015738 2e0a00 13899 0001573b .text 13900 0000c0fc .align 2 13901 0000c0fc .proc _SysprocCreateProcesses 13902 0000c0fc .global _SysprocCreateProcesses 13903 0000c0fc _SysprocCreateProcesses: 13904 ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. 13905 0000c0fc afbefffc sw -4(r29),r30; push fp 13906 0000c100 001df020 add r30,r0,r29; fp = sp 13907 0000c104 afbffff8 sw -8(r29),r31; push ret addr 13908 0000c108 2fbd0018 subui r29,r29,#24; alloc local storage 13909 0000c10c afa20000 sw 0(r29),r2 13910 0000c110 afa30004 sw 4(r29),r3 13911 0000c114 afa40008 sw 8(r29),r4 13912 0000c118 3c020001 lhi r2,((_mysems_LF10)>>16)&0xffff 13913 0000c11c 2442573c addui r2,r2,(_mysems_LF10)&0xffff 13914 0000c120 204300b4 addi r3,r2,#180 13915 0000c124 L90_LF10: 13916 0000c124 23bdfff8 addi r29,r29,#-8 13917 0000c128 afa20000 sw (r29),r2 13918 0000c12c 20040001 addi r4,r0,#1 13919 0000c130 afa40004 sw 4(r29),r4 13920 0000c134 0fffd2a4 jal _SemInit 13921 0000c138 54000000 nop; not filled. 13922 0000c13c 23bd0008 addi r29,r29,#8 13923 0000c140 20420014 addi r2,r2,#20 13924 0000c144 0043082c sle r1,r2,r3 13925 0000c148 1420ffd8 bnez r1,L90_LF10 13926 0000c14c 54000000 nop; not filled. 13927 0000c150 8fa20000 lw r2,0(r29) 13928 0000c154 8fa30004 lw r3,4(r29) 13929 0000c158 8fa40008 lw r4,8(r29) 13930 0000c15c 8fdffff8 lw r31,-8(r30) 13931 0000c160 001ee820 add r29,r0,r30 13932 0000c164 8fdefffc lw r30,-4(r30) 13933 0000c168 4be00000 jr r31 13934 0000c16c 54000000 nop 13935 0000c170 .endproc _SysprocCreateProcesses 13936 0000c170 .data 13937 0001573b .align 2 13938 0001573c _mysems_LF10: 13939 0001573c .space 200 13940 ;;; This file just includes a single variable that contains the last address 13941 ;;; in the operating system. The rest of memory is available for use by 13942 ;;; processes. 13944 00015804 .align 2 13945 00015804 .global _lastosaddress 13946 00015804 _lastosaddress: 13947 00015804 0001580c .word _lastosaddress+8 13948 ;;; Ethan L. Miller, 1999. Released to the public domain 13949 ;;; 13950 ;;; Most of the traps are called in files from libtraps. 13952 00015808 .text 13953 0000c170 .align 2 13954 0000c170 .proc _exit 13955 0000c170 .global _exit 13956 0000c170 _exit: 13957 0000c170 44000300 trap #0x300 13958 0000c174 4be00000 jr r31 13959 0000c178 54000000 nop 13960 0000c17c .endproc _exit 13962 ; for the benefit of gcc. 13963 0000c17c .proc ___main 13964 0000c17c .global ___main 13965 0000c17c ___main: 13966 0000c17c 4be00000 jr r31 13967 0000c180 54000000 nop 13968 0000c184 .endproc ___main 13969 ;;; 13970 ;;; Stub functions for DLX traps. 13971 ;;; 13972 ;;; Ethan L. Miller, 1999. Released to the public domain. 13973 ;;; 13974 ;;; There are two sets of traps here. The traps such as Open and Close 13975 ;;; (note the capital letters) are for use by user programs. The traps 13976 ;;; with names such as open and close (lower case) are for use by the OS. 13977 ;;; 13980 0000c184 .align 2 13981 0000c184 .proc _open 13982 0000c184 .global _open 13983 0000c184 _open: 13984 0000c184 44002013 trap #0x2013 13985 0000c188 4be00000 jr r31 13986 0000c18c 54000000 nop 13987 0000c190 .endproc _open 13989 0000c190 .proc _close 13990 0000c190 .global _close 13991 0000c190 _close: 13992 0000c190 44002014 trap #0x2014 13993 0000c194 4be00000 jr r31 13994 0000c198 54000000 nop 13995 0000c19c .endproc _close 13997 0000c19c .proc _read 13998 0000c19c .global _read 13999 0000c19c _read: 14000 0000c19c 44002010 trap #0x2010 14001 0000c1a0 4be00000 jr r31 14002 0000c1a4 54000000 nop 14003 0000c1a8 .endproc _read 14005 0000c1a8 .proc _write 14006 0000c1a8 .global _write 14007 0000c1a8 _write: 14008 0000c1a8 44002011 trap #0x2011 14009 0000c1ac 4be00000 jr r31 14010 0000c1b0 54000000 nop 14011 0000c1b4 .endproc _write 14013 0000c1b4 .proc _lseek 14014 0000c1b4 .global _lseek 14015 0000c1b4 _lseek: 14016 0000c1b4 44002012 trap #0x2012 14017 0000c1b8 4be00000 jr r31 14018 0000c1bc 54000000 nop 14019 0000c1c0 .endproc _lseek 14021 ;;; The following are the traps to be used by user-level programs 14022 ;;; 14024 0000c1c0 .align 2 14025 0000c1c0 .proc _Open 14026 0000c1c0 .global _Open 14027 0000c1c0 _Open: 14028 0000c1c0 44000213 trap #0x213 14029 0000c1c4 4be00000 jr r31 14030 0000c1c8 54000000 nop 14031 0000c1cc .endproc _Open 14033 0000c1cc .proc _Close 14034 0000c1cc .global _Close 14035 0000c1cc _Close: 14036 0000c1cc 44000214 trap #0x214 14037 0000c1d0 4be00000 jr r31 14038 0000c1d4 54000000 nop 14039 0000c1d8 .endproc _Close 14041 0000c1d8 .proc _Read 14042 0000c1d8 .global _Read 14043 0000c1d8 _Read: 14044 0000c1d8 44000210 trap #0x210 14045 0000c1dc 4be00000 jr r31 14046 0000c1e0 54000000 nop 14047 0000c1e4 .endproc _Read 14049 0000c1e4 .proc _Write 14050 0000c1e4 .global _Write 14051 0000c1e4 _Write: 14052 0000c1e4 44000211 trap #0x211 14053 0000c1e8 4be00000 jr r31 14054 0000c1ec 54000000 nop 14055 0000c1f0 .endproc _Write 14057 0000c1f0 .proc _Lseek 14058 0000c1f0 .global _Lseek 14059 0000c1f0 _Lseek: 14060 0000c1f0 44000212 trap #0x212 14061 0000c1f4 4be00000 jr r31 14062 0000c1f8 54000000 nop 14063 0000c1fc .endproc _Lseek 14065 ;;; 14066 ;;; Stub functions for DLX traps. 14067 ;;; 14068 ;;; Ethan L. Miller, 1999. Released to the public domain. 14069 ;;; 14070 ;;; There are two exit traps. The first, _exitsim, actually exits the 14071 ;;; simulator. The second, _exit, simply calls a regular trap in the 14072 ;;; DLX simulator, and would be suitable for a user program that wants 14073 ;;; to signal the OS that it's exiting. 14074 ;;; 14075 ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and 14076 ;;; programs run without an OS - should call exitsim() rather than just 14077 ;;; falling through to exit. 14078 ;;; 14081 0000c1fc .align 2 14082 0000c1fc .proc _exitsim 14083 0000c1fc .global _exitsim 14084 0000c1fc _exitsim: 14085 0000c1fc 44002f00 trap #0x2f00 14086 0000c200 4be00000 jr r31 14087 0000c204 54000000 nop 14088 0000c208 .endproc _exitsim 14090 0000c208 .proc _exit 14091 0000c208 .global _exit 14092 0000c208 _exit: 14093 0000c208 44000300 trap #0x300 14094 0000c20c 4be00000 jr r31 14095 0000c210 54000000 nop 14096 0000c214 .endproc _exit 14098 ; 14099 ; Stub functions for DLX traps. 14100 ; 14101 ; Aaron Sawdey 1996; released to the Public Domain. 14102 ; 14104 0000c214 .proc _printf 14105 0000c214 .global _printf 14106 0000c214 _printf: 14107 0000c214 44002001 trap #0x2001 14108 0000c218 4be00000 jr r31 14109 0000c21c 54000000 nop 14110 0000c220 .endproc _printf 14112 0000c220 .text 14113 0000c220 .global _etext 14114 0000c220 _etext: 14115 0000c220 .align 3 14116 0000c220 .data 14117 00015808 .global _edata 14118 00015808 _edata:
home/bshapir/cs314/project2/src/queue.h
// // queue.h // // Definitions for routines used to manage queues. The queues are // doubly-linked lists so it's easier to add and remove from them. // Also, the links themselves have pointers to objects so that objects // may be on more than one queue. // #ifndef _queue_h_ #define _queue_h_ #ifndef NULL #define NULL ((void *)0) #endif #define QUEUE_MAX_LINKS 400 typedef struct Link { struct Link *next; struct Link *prev; struct Queue *queue; void *object; } Link; typedef struct Queue { struct Link *first; struct Link *last; int nitems; } Queue; inline void QueueLinkInit (Link *l, void *obj) { l->next = NULL; l->object = obj; } inline Link * QueueNext (Link *l) { return (l->next); } inline Link * QueuePrev (Link *l) { return (l->prev); } inline Link * QueueFirst (Queue *q) { return (q->first); } inline Link * QueueLast (Queue *q) { return (q->last); } inline void QueueInsertAfter (Queue *q, Link *after, Link *l) { l->queue = q; l->prev = after; l->next = after->next; after->next = l; l->next->prev = l; q->nitems += 1; } inline void QueueInsertFirst (Queue *q, Link *l) { QueueInsertAfter (q, (Link *)q, l); } inline void QueueInsertLast (Queue *q, Link *l) { QueueInsertAfter (q, QueueLast(q), l); } inline void QueueRemove (Link *l) { if (l->queue->nitems > 0) { l->prev->next = l->next; l->next->prev = l->prev; l->queue->nitems -= 1; } l->next = NULL; } inline int QueueLength (Queue *q) { return (q->nitems); } inline int QueueEmpty (Queue *q) { return (QueueLength (q) == 0); } extern void QueueModuleInit (); extern void QueueFreeLink (Link *l); extern Link *QueueAllocLink (); extern void QueueInit (Queue *q); #endif // _queue_h_
home/bshapir/cs314/project2/src/userprog2.o
; Compiled by GCC .data .align 2 LC0: .ascii "Usage: \000" .align 2 LC1: .ascii " handle_str spage_str semaphore_str\n\000" .align 2 LC2: .ascii "Could not map the virtual address to the memory, exiting...\n\000" .align 2 LC3: .ascii "Bad semaphore spage.... Exiting!\n\000" .align 2 LC4: .ascii "This is one of the %d instances you created\n\000" .align 2 LC5: .ascii "The shared character is %c\n\000" .align 2 LC6: .ascii "My PID is %d\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop ; not filled. snei r1,r2,#4 beqz r1,L2 nop ; not filled. addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 jal _Printf nop ; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop ; not filled. lhi r5,((LC1)>>16)&0xffff addui r5,r5,(LC1)&0xffff sw (r29),r5 jal _Printf nop ; not filled. jal _exit nop ; not filled. L2: addi r29,r29,#-16 lw r5,4(r3) sw (r29),r5 addi r5,r0,#0 sw 4(r29),r5 addi r5,r0,#10 sw 8(r29),r5 jal _dstrtol nop ; not filled. add r2,r0,r1 lw r5,8(r3) sw (r29),r5 addi r5,r0,#0 sw 4(r29),r5 addi r5,r0,#10 sw 8(r29),r5 jal _dstrtol nop ; not filled. add r4,r0,r1 lw r3,8(r3) sw (r29),r3 addi r5,r0,#0 sw 4(r29),r5 addi r5,r0,#10 sw 8(r29),r5 jal _dstrtol nop ; not filled. sw (r29),r2 jal _shmat nop ; not filled. add r2,r0,r1 addi r29,r29,#16 snei r1,r2,#0 bnez r1,L3 nop ; not filled. addi r29,r29,#-8 lhi r5,((LC2)>>16)&0xffff addui r5,r5,(LC2)&0xffff sw (r29),r5 jal _Printf nop ; not filled. jal _exit nop ; not filled. L3: addi r29,r29,#-8 sw (r29),r4 jal _sem_signal nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L4 nop ; not filled. addi r29,r29,#-8 lhi r5,((LC3)>>16)&0xffff addui r5,r5,(LC3)&0xffff sw (r29),r5 jal _Printf nop ; not filled. jal _exit nop ; not filled. L4: addi r29,r29,#-8 lhi r5,((LC4)>>16)&0xffff addui r5,r5,(LC4)&0xffff sw (r29),r5 lw r1,(r2) sw 4(r29),r1 jal _Printf nop ; not filled. lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw (r29),r5 lbu r1,4(r2) sw 4(r29),r1 jal _Printf nop ; not filled. jal _getpid nop ; not filled. lhi r5,((LC6)>>16)&0xffff addui r5,r5,(LC6)&0xffff sw (r29),r5 sw 4(r29),r1 jal _Printf nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main
home/bshapir/cs314/project2/src/Makefile.depend
filesys.o: filesys.c dlxos.h misc.h process.h queue.h filesys.h memory.o: memory.c dlxos.h misc.h memory.h process.h queue.h misc.o: misc.c misc.h process.o: process.c dlxos.h misc.h process.h queue.h synch.h memory.h \ filesys.h queue.o: queue.c dlxos.h misc.h queue.h synch.o: synch.c dlxos.h misc.h process.h queue.h synch.h traps.o: traps.c dlx.h dlxos.h misc.h traps.h process.h queue.h sysproc.o: sysproc.c process.h dlxos.h misc.h queue.h synch.h
home/bshapir/cs314/project2/src/process.c
// // process.c // // This file defines routines for dealing with processes. This // includes the "main" routine for the OS, which creates a process // for the initial thread of execution. It also includes // code to create and delete processes, as well as context switch // code. Note, however, that the actual context switching is // done in assembly language elsewhere. #include "dlxos.h" #include "process.h" #include "synch.h" #include "memory.h" #include "filesys.h" // Pointer to the current PCB. This is used by the assembly language // routines for context switches. PCB *currentPCB; // List of free PCBs. static Queue freepcbs; // List of processes that are ready to run (ie, not waiting for something // to happen). static Queue runQueue; // List of processes that are waiting for something to happen. There's no // reason why this must be a single list; there could be many lists for many // different conditions. static Queue waitQueue; // List of processes waiting to be deleted. See below for a description of // the reason that we need a separate queue for processes about to die. static Queue zombieQueue; // Static area for all process control blocks. This is necessary because // we can't use malloc() inside the OS. static PCB pcbs[PROCESS_MAX_PROCS]; // Default value for scheduler quantum. This could be set to any value. // In fact, it could even be dynamic, though that would require modifying // the timer trap handler.... static processQuantum = DLX_PROCESS_QUANTUM; // String listing debugging options to print out. char debugstr[200]; � //---------------------------------------------------------------------- // // ProcessModuleInit // // Initialize the process module. This involves initializing all // of the process control blocks to appropriate values (ie, free // and available). We also need to initialize all of the queues. // //---------------------------------------------------------------------- void ProcessModuleInit () { int i; dbprintf ('p', "Entering ProcessModuleInit\n"); QueueInit (&freepcbs); QueueInit (&runQueue); QueueInit (&waitQueue); QueueInit (&zombieQueue); for (i = 0; i < PROCESS_MAX_PROCS; i++) { dbprintf ('p', "Initializing PCB %d @ 0x%x.\n", i, &(pcbs[i])); pcbs[i].flags = PROCESS_STATUS_FREE; QueueLinkInit (&(pcbs[i].l), (void *)&pcbs[i]); QueueInsertFirst(&freepcbs, &(pcbs[i].l)); } currentPCB = NULL; dbprintf ('p', "Leaving ProcessModuleInit\n"); } � //---------------------------------------------------------------------- // // ProcessSetStatus // // Set the status of a process. // //---------------------------------------------------------------------- void ProcessSetStatus (PCB *pcb, int status) { pcb->flags &= ~PROCESS_STATUS_MASK; pcb->flags |= status; } //---------------------------------------------------------------------- // // ProcessFreeResources // // Free the resources associated with a process. This assumes the // process isn't currently on any queue. // //---------------------------------------------------------------------- void ProcessFreeResources (PCB *pcb) { int i; int npages; QueueInsertLast (&freepcbs, &pcb->l); // Free the process's memory. This is easy with a one-level page // table, but could get more complex with two-level page tables. npages = pcb->npages; for (i=0; i<npages; i++) { MemoryFreeSharedPte(pcb, i); // *MUST* be called before calling // MemoryFreePte. MemoryFreePte does not know // anything about shared pages, and hence it // might screw up big time } for (i = 0; i < pcb->npages; i++) { MemoryFreePte (pcb->pagetable[i]); } // Free the page allocated for the system stack MemoryFreePage (pcb->sysStackArea / MEMORY_PAGE_SIZE); ProcessSetStatus (pcb, PROCESS_STATUS_FREE); } //---------------------------------------------------------------------- // // ProcessSetResult // // Set the result returned to a process. This is done by storing // the value into the current register save area for r1. When the // context is restored, r1 will contain the return value. This // routine should only be called from a trap. Calling it at other // times (such as an interrupt handler) will cause unpredictable // results. // //---------------------------------------------------------------------- void ProcessSetResult (PCB * pcb, uint32 result) { pcb->currentSavedFrame[PROCESS_STACK_IREG+1] = result; } � //---------------------------------------------------------------------- // // ProcessSchedule // // Schedule the next process to run. If there are no processes to // run, exit. This means that there should be an idle loop process // if you want to allow the system to "run" when there's no real // work to be done. // // NOTE: the scheduler should only be called from a trap or interrupt // handler. This way, interrupts are disabled. Also, it must be // called consistently, and because it might be called from an interrupt // handler (the timer interrupt), it must ALWAYS be called from a trap // or interrupt handler. // // Note that this procedure doesn't actually START the next process. // It only changes the currentPCB and other variables so the next // return from interrupt will restore a different context from that // which was saved. // //---------------------------------------------------------------------- void ProcessSchedule () { PCB *pcb; int i; dbprintf ('p', "Now entering ProcessSchedule (cur=0x%x, %d ready)\n", currentPCB, QueueLength (&runQueue)); // The OS exits if there's no runnable process. This is a feature, not a // bug. An easy solution to allowing no runnable "user" processes is to // have an "idle" process that's simply an infinite loop. if (QueueEmpty (&runQueue)) { printf ("No runnable processes - exiting!\n"); exitsim (); // NEVER RETURNS } // Move the front of the queue to the end. The running process was the // one in front. pcb = (PCB *)((QueueFirst (&runQueue))->object); QueueRemove (&pcb->l); QueueInsertLast (&runQueue, &pcb->l); // Now, run the one at the head of the queue. pcb = (PCB *)((QueueFirst (&runQueue))->object); currentPCB = pcb; dbprintf ('p',"About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n", pcb, pcb->flags, pcb->sysStackPtr[PROCESS_STACK_IAR]); // Clean up zombie processes here. This is done at interrupt time // because it can't be done while the process might still be running while (!QueueEmpty (&zombieQueue)) { pcb = (PCB *)(QueueFirst (&zombieQueue)->object); dbprintf ('p', "Freeing zombie PCB 0x%x.\n", pcb); QueueRemove (&pcb->l); ProcessFreeResources (pcb); } // Set the timer so this process gets at most a fixed quantum of time. TimerSet (processQuantum); dbprintf ('p', "Leaving ProcessSchedule (cur=0x%x)\n", currentPCB); } � //---------------------------------------------------------------------- // // ProcessSuspend // // Place a process in suspended animation until it's // awakened by ProcessAwaken. // // NOTE: This must only be called from an interrupt or trap. It // should be immediately followed by ProcessSchedule(). // //---------------------------------------------------------------------- void ProcessSuspend (PCB *suspend) { // Make sure it's already a runnable process. dbprintf ('p', "Suspending PCB 0x%x (%s).\n", suspend, suspend->name); ASSERT (suspend->flags & PROCESS_STATUS_RUNNABLE, "Trying to suspend a non-running process!\n"); ProcessSetStatus (suspend, PROCESS_STATUS_WAITING); QueueRemove (&suspend->l); QueueInsertLast (&waitQueue, &suspend->l); } //---------------------------------------------------------------------- // // ProcessWakeup // // Wake up a process from its slumber. This only involves putting // it on the run queue; it's not guaranteed to be the next one to // run. // // NOTE: This must only be called from an interrupt or trap. It // need not be followed immediately by ProcessSchedule() because // the currently running process is unaffected. // //---------------------------------------------------------------------- void ProcessWakeup (PCB *wakeup) { dbprintf ('p',"Waking up PCB 0x%x.\n", wakeup); // Make sure it's not yet a runnable process. ASSERT (wakeup->flags & PROCESS_STATUS_WAITING, "Trying to wake up a non-sleeping process!\n"); ProcessSetStatus (wakeup, PROCESS_STATUS_RUNNABLE); QueueRemove (&wakeup->l); QueueInsertLast (&runQueue, &wakeup->l); } � //---------------------------------------------------------------------- // // ProcessDestroy // // Destroy a process by setting its status to zombie and putting it // on the zombie queue. The next time the scheduler is called, this // process will be marked as free. We can't necessarily do it now // because we might be the currently running process. // // NOTE: This must only be called from an interrupt or trap. However, // it need not be followed immediately by a ProcessSchedule() because // the process can continue running. // //---------------------------------------------------------------------- void ProcessDestroy (PCB *pcb) { dbprintf('p', "Entering ProcessDestroy for 0x%x.\n", pcb); ProcessSetStatus (pcb, PROCESS_STATUS_ZOMBIE); QueueRemove (&pcb->l); QueueInsertFirst (&zombieQueue, &pcb->l); dbprintf('p', "Leaving ProcessDestroy for 0x%x.\n", pcb); } //---------------------------------------------------------------------- // // ProcessExit // // This routine is called to exit from a system process. It simply // calls an exit trap, which will be caught to exit the process. // //---------------------------------------------------------------------- static void ProcessExit () { exit (); } � //---------------------------------------------------------------------- // // ProcessFork // // Create a new process and make it runnable. This involves the // following steps: // * Allocate resources for the process (PCB, memory, etc.) // * Initialize the resources // * Place the PCB on the runnable queue // // NOTE: This code has been tested for system processes, but not // for user processes. // //---------------------------------------------------------------------- int ProcessFork (VoidFunc func, uint32 param, char *name, int isUser) { int i, j, fd, n; Link *l; int start, codeS, codeL, dataS, dataL; uint32 *stackframe; int newPage; PCB *pcb; int addr = 0; int intrs; unsigned char buf[100]; uint32 dum[MAX_ARGS+8], count, offset; char *str; intrs = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrs); dbprintf ('p', "Entering ProcessFork args=0x%x 0x%x %s %d\n", func, param, name, isUser); // Get a free PCB for the new process if (QueueEmpty (&freepcbs)) { printf ("FATAL error: no free processes!\n"); exitsim (); // NEVER RETURNS! } l = QueueFirst (&freepcbs); dbprintf ('p', "Got a link @ 0x%x\n", l); QueueRemove (l); pcb = (PCB *)(l->object); // This prevents someone else from grabbing this process ProcessSetStatus (pcb, PROCESS_STATUS_RUNNABLE); // At this point, the PCB is allocated and nobody else can get it. // However, it's not in the run queue, so it won't be run. Thus, we // can turn on interrupts here. dbprintf ('I', "Before restore interrupt value is 0x%x.\n", CurrentIntrs()); RestoreIntrs (intrs); dbprintf ('I', "New interrupt value is 0x%x.\n", CurrentIntrs()); // Copy the process name into the PCB. dstrcpy (pcb->name, name); //---------------------------------------------------------------------- // This section initializes the memory for this process //---------------------------------------------------------------------- // For now, we'll use one user page and a page for the system stack. // For system processes, though, all pages must be contiguous. // Of course, system processes probably need just a single page for // their stack, and don't need any code or data pages allocated for them. pcb->npages = 1; newPage = MemoryAllocPage (); if (newPage == 0) { printf ("aFATAL: couldn't allocate memory - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->pagetable[0] = MemorySetupPte (newPage); newPage = MemoryAllocPage (); if (newPage == 0) { printf ("bFATAL: couldn't allocate system stack - no free pages!\n"); exitsim (); // NEVER RETURNS! } pcb->sysStackArea = newPage * MEMORY_PAGE_SIZE; //---------------------------------------------------------------------- // Stacks grow down from the top. The current system stack pointer has // to be set to the bottom of the interrupt stack frame, which is at the // high end (address-wise) of the system stack. stackframe = ((uint32 *)(pcb->sysStackArea + MEMORY_PAGE_SIZE)) - (PROCESS_STACK_FRAME_SIZE + 8); // The system stack pointer is set to the base of the current interrupt // stack frame. pcb->sysStackPtr = stackframe; // The current stack frame pointer is set to the same thing. pcb->currentSavedFrame = stackframe; dbprintf ('p', "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n", pcb, pcb->sysStackArea, pcb->pagetable[0], pcb->npages * MEMORY_PAGE_SIZE); //---------------------------------------------------------------------- // This section sets up the stack frame for the process. This is done // so that the frame looks to the interrupt handler like the process // was "suspended" right before it began execution. The standard // mechanism of swapping in the registers and returning to the place // where it was "interrupted" will then work. //---------------------------------------------------------------------- // The previous stack frame pointer is set to 0, meaning there is no // previous frame. stackframe[PROCESS_STACK_PREV_FRAME] = 0; // Set the base of the level 1 page table. If there's only one page // table level, this is it. For 2-level page tables, put the address // of the level 1 page table here. For 2-level page tables, we'll also // have to build up the necessary tables.... stackframe[PROCESS_STACK_PTBASE] = (uint32)&(pcb->pagetable[0]); // Set the size (maximum number of entries) of the level 1 page table. // In our case, it's just one page, but it could be larger. stackframe[PROCESS_STACK_PTSIZE] = pcb->npages; // Set the number of bits for both the level 1 and level 2 page tables. // This can be changed on a per-process basis if desired. For now, // though, it's fixed. stackframe[PROCESS_STACK_PTBITS] = (MEMORY_L1_PAGE_SIZE_BITS + (MEMORY_L2_PAGE_SIZE_BITS << 16)); if (isUser) { dbprintf ('p', "About to load %s\n", name); fd = ProcessGetCodeInfo (name, &start, &codeS, &codeL, &dataS, &dataL); if (fd < 0) { // Free newpage and pcb so we don't run out... ProcessFreeResources (pcb); return (-1); } dbprintf ('p', "File %s -> start=0x%08x\n", name, start); dbprintf ('p', "File %s -> code @ 0x%08x (size=0x%08x)\n", name, codeS, codeL); dbprintf ('p', "File %s -> data @ 0x%08x (size=0x%08x)\n", name, dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { dbprintf ('p', "Placing %d bytes at vaddr %08x.\n", n, addr - n); // Copy the data to user memory. Note that the user memory needs to // have enough space so that this copy will succeed! MemoryCopySystemToUser (pcb, buf, addr - n, n); } FsClose (fd); stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_USER; // Set the initial stack pointer correctly. Currently, it's just set // to the top of the (single) user address space allocated to this // process. str = (char *)param; stackframe[PROCESS_STACK_IREG+29] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF; // Copy the initial parameter to the top of stack MemoryCopySystemToUser (pcb, (char *)str, (char *)stackframe[PROCESS_STACK_IREG+29], SIZE_ARG_BUFF-32); offset = get_argument((char *)param); dum[2] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; for(count=3;;count++) { offset=get_argument(NULL); dum[count] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; if(offset==0) { break; } } dum[0] = count-2; dum[1] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF - (count-2)*4; MemoryCopySystemToUser (pcb, (char *)dum, (char *)(stackframe[PROCESS_STACK_IREG+29]-count*4), (count)*sizeof(uint32)); stackframe[PROCESS_STACK_IREG+29] -= 4*count; // Set the correct address at which to execute a user process. stackframe[PROCESS_STACK_IAR] = (uint32)start; pcb->flags |= PROCESS_TYPE_USER; } else { // Set r31 to ProcessExit(). This will only be called for a system // process; user processes do an exit() trap. stackframe[PROCESS_STACK_IREG+31] = (uint32)ProcessExit; // Set the stack register to the base of the system stack. stackframe[PROCESS_STACK_IREG+29]=pcb->sysStackArea + MEMORY_PAGE_SIZE-32; // Set the initial parameter properly by placing it on the stack frame // at the location pointed to by the "saved" stack pointer (r29). *((uint32 *)(stackframe[PROCESS_STACK_IREG+29])) = param; // Set up the initial address at which to execute. This is done by // placing the address into the IAR slot of the stack frame. stackframe[PROCESS_STACK_IAR] = (uint32)func; // Set the initial value for the interrupt status register stackframe[PROCESS_STACK_ISR] = PROCESS_INIT_ISR_SYS; // Mark this as a system process. pcb->flags |= PROCESS_TYPE_SYSTEM; } // Place the PCB onto the run queue. intrs = DisableIntrs (); QueueInsertLast (&runQueue, l); RestoreIntrs (intrs); // If this is the first process, make it the current one if (currentPCB == NULL) { dbprintf ('p', "Setting currentPCB=0x%x, stackframe=0x%x\n", pcb, pcb->currentSavedFrame); currentPCB = pcb; } dbprintf ('p', "Leaving ProcessFork (%s)\n", name); // Return the process number (found by subtracting the PCB number // from the base of the PCB array). return (pcb - pcbs); } � //---------------------------------------------------------------------- // // getxvalue // // Convert a hex digit into an actual value. // //---------------------------------------------------------------------- static inline int getxvalue (int x) { if ((x >= '0') && (x <= '9')) { return (x - '0'); } else if ((x >= 'a') && (x <= 'f')) { return (x + 10 - 'a'); } else if ((x >= 'A') && (x <= 'F')) { return (x + 10 - 'A'); } else { return (0); } } � //---------------------------------------------------------------------- // // ProcessGetCodeSizes // // Get the code sizes (stack & data) for a file. A file descriptor // for the named file is returned. This descriptor MUST be closed // (presumably by the caller) at some point. // //---------------------------------------------------------------------- int ProcessGetCodeInfo (const char *file, uint32 *startAddr, uint32 *codeStart, uint32 *codeSize, uint32 *dataStart, uint32 *dataSize) { int fd; int totalsize; char buf[100]; char *pos; // Open the file for reading. If it returns a negative number, the open // didn't work. if ((fd = FsOpen (file, FS_MODE_READ)) < 0) { dbprintf ('f', "ProcessGetCodeInfo: open of %s failed (%d).\n", file, fd); return (-1); } dbprintf ('f', "File descriptor is now %d.\n", fd); if ((totalsize = FsRead (fd, buf, sizeof (buf))) != sizeof (buf)) { dbprintf ('f', "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n", totalsize, sizeof (buf), file); FsClose (fd); return (-1); } if (dstrstr (buf, "start:") == NULL) { dbprintf ('f', "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n", file); return (-1); } pos = (char *)dindex (buf, ':') + 1; // Get the start address and overall size *startAddr = dstrtol (pos, &pos, 16); totalsize = dstrtol (pos, &pos, 16); // Get code & data section start & sizes *codeStart = dstrtol (pos, &pos, 16); *codeSize = dstrtol (pos, &pos, 16); *dataStart = dstrtol (pos, &pos, 16); *dataSize = dstrtol (pos, &pos, 16); // Seek to start of first real line FsSeek (fd, 1 + dindex (buf, '\n') - buf, 0); return (fd); } � //---------------------------------------------------------------------- // // ProcessGetFromFile // // Inputs: // addr - points to an integer that contains the address of // the byte past that previously returned. If this is the // first call to this routine, *addr should be set to 0. // fd - File descriptor from which to read data. The file format // is the same as that used by the DLX simulator. // buf - points to a buffer that will receive data from the input // file. Note that the data is NOT 0-terminated, and may // include any number of 0 bytes. // max - maximum length of data to return. The routine collects data // until either the address changes or it has read max bytes. // // Returns the number of bytes actually stored into buf. In addition, // *addr is updated to point to the byte following the last byte in // the buffer. // // Load a file into memory. The file format consists of a // leading address, followed by a colon, followed by the data // to go at that address. If the address is omitted, the data // follows that from the previous line of the file. // //---------------------------------------------------------------------- int ProcessGetFromFile (int fd, unsigned char *buf, uint32 *addr, int max) { char localbuf[204]; int nbytes; int seekpos; unsigned char *pos = buf; char *lpos = localbuf; // Remember our position at the start of the routine so we can adjust // it later. seekpos = FsSeek (fd, 0, FS_SEEK_CUR); // The maximum number of characters we could read is limited to the // maximum buffer space available to the caller * 2 because each 2 // characters in the input file result in a single byte of program // info being read in. max = max * 2; // If the callers maximum is greater than the available buffer space, // limit the buffer space further. if (max > (sizeof(localbuf)-4)) { max = sizeof(localbuf)-4; } if ((nbytes = FsRead (fd, localbuf, max)) <= 0) { return (0); } // 'Z' is unused in load file, so use it to mark the end of the buffer // Back up until just after the last newline in the data we read. dbprintf ('f', "Got %d bytes at offset %d ...", nbytes, seekpos); while (localbuf[--nbytes] != '\n') { } localbuf[nbytes+1] = 'Z'; localbuf[nbytes+2] = '\0'; dbprintf ('f', " terminated at %d.\n", nbytes); dbprintf ('f', "Buffer is '%s'\n", localbuf); nbytes = 0; while (dindex (lpos, 'Z') != NULL) { if (dindex (lpos, ':') == NULL) { break; } if (*lpos != ':') { // If we're going to go to a new address, we break out of the // loop and return what we've got already. if (nbytes > 0) { break; } *addr = dstrtol (lpos, &lpos, 16); dbprintf ('f', "New address is 0x%x.\n", *addr); } if (*lpos != ':') { break; } lpos++; // skip past colon while (1) { while (((*lpos) == ' ') || (*lpos == '\t')) { lpos++; } if (*lpos == '\n') { lpos++; break; } else if (!(isxdigit (*lpos) && isxdigit (*(lpos+1)))) { // Exit loop if at least one digit isn't a hex digit. break; } pos[nbytes++] = (getxvalue(*lpos) * 16) + getxvalue(*(lpos+1)); lpos += 2; (*addr)++; } } // Seek to just past the last line we read. FsSeek (fd, seekpos + lpos - localbuf, FS_SEEK_SET); dbprintf ('f', "Seeking to %d and returning %d bytes!\n", seekpos + lpos - localbuf, nbytes); return (nbytes); } � //---------------------------------------------------------------------- // // main // // This routine is called when the OS starts up. It allocates a // PCB for the first process - the one corresponding to the initial // thread of execution. Note that the stack pointer is already // set correctly by _osinit (assembly language code) to point // to the stack for the 0th process. This stack isn't very big, // though, so it should be replaced by the system stack of the // currently running process. // //---------------------------------------------------------------------- main (int argc, char *argv[]) { int i, j; int n; char buf[120]; char *userprog = (char *)0; static PCB temppcb; uint32 addr; extern void SysprocCreateProcesses (); char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int base; debugstr[0] = '\0'; printf ("Got %d arguments.\n", argc); printf ("Available memory: 0x%x -> 0x%x.\n", lastosaddress, MemoryGetSize ()); printf ("Argument count is %d.\n", argc); for (i = 0; i < argc; i++) { printf ("Argument %d is %s.\n", i, argv[i]); } // *((int *)0xfff00100) = 't'; FsModuleInit (); for (i = 0; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'D': dstrcpy (debugstr, argv[++i]); break; case 'i': n = dstrtol (argv[++i], (void *)0, 0); ditoa (n, buf); printf ("Converted %s to %d=%s\n", argv[i], n, buf); break; case 'f': { int start, codeS, codeL, dataS, dataL, fd, j; int addr = 0; static unsigned char buf[200]; fd = ProcessGetCodeInfo (argv[++i], &start, &codeS, &codeL, &dataS, &dataL); printf ("File %s -> start=0x%08x\n", argv[i], start); printf ("File %s -> code @ 0x%08x (size=0x%08x)\n", argv[i], codeS, codeL); printf ("File %s -> data @ 0x%08x (size=0x%08x)\n", argv[i], dataS, dataL); while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) { for (j = 0; j < n; j += 4) { printf ("%08x: %02x%02x%02x%02x\n", addr + j - n, buf[j], buf[j+1], buf[j+2], buf[j+3]); } } close (fd); break; } case 'u': userprog = argv[++i]; base = i; break; default: printf ("Option %s not recognized.\n", argv[i]); break; } if(userprog) break; } } dbprintf ('i', "About to initialize queues.\n"); QueueModuleInit (); dbprintf ('i', "After initializing queues.\n"); MemoryModuleInit (); dbprintf ('i', "After initializing memory.\n"); ProcessModuleInit (); dbprintf ('i', "After initializing processes.\n"); ShareModuleInit (); dbprintf ('i', "After initializing shared memory.\n"); SynchModuleInit (); dbprintf ('i', "After initializing synchronization tools.\n"); KbdModuleInit (); dbprintf ('i', "After initializing keyboard.\n"); for (i = 0; i < 100; i++) { buf[i] = 'a'; } i = FsOpen ("vm", FS_MODE_WRITE); dbprintf ('i', "VM Descriptor is %d\n", i); FsSeek (i, 0, FS_SEEK_SET); FsWrite (i, buf, 80); FsClose (i); if (userprog != (char *)0) { for(i=base;i<argc&&i-base<11; i++) { param[i-base] = argv[i]; } process_create(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7], param[8], param[9], param[10], param[11]); // ProcessFork (0, (uint32)"Help Me man!", userprog, 1); } SysprocCreateProcesses (); dbprintf ('i', "Created processes - about to set timer quantum.\n"); TimerSet (processQuantum); dbprintf ('i', "Set timer quantum to %d, about to run first process.\n", processQuantum); intrreturn (); // Should never be called because the scheduler exits when there // are no runnable processes left. exitsim(); // NEVER RETURNS! } unsigned GetCurrentPid() { return (unsigned)(currentPCB - pcbs); } unsigned findpid(PCB *pcb) { return (unsigned)(pcb - pcbs); } uint32 get_argument(char *string) { static char *str; static int location=0; int location2; if(string) { str=string; location = 0; } location2 = location; if(str[location]=='\0'||location>=99) return 0; for(;location<100;location++) { if(str[location]=='\0') { location++; break; } } return location2; } void process_create(char *name, ...) { char **args; int i, j, k; char allargs[1000]; args = &name; k=0; for(i=0; args[i]!=NULL; i++) { j=0; do { allargs[k] = args[i][j]; j++; k++; } while(args[i][j-1]!='\0'); } allargs[k] = allargs[k+1] = 0; ProcessFork(0, (uint32)allargs, name, 1); }
home/bshapir/cs314/project2/src/sysproc.c
// // sysproc.c // // This file defines system processes run by the OS. It also // includes a routine to initialize system processes. #include "process.h" #include "synch.h" //---------------------------------------------------------------------- // // doSomething // // A useless little function that does some small stuff to test // process switching and the like. // //---------------------------------------------------------------------- static Sem mysems[10]; static void doSomething (int me) { int i; int j; int mygrp = me % 10; char buf[40]; char buf2[40]; if (me < 100) { SemInit (&(mysems[mygrp]), 1); for (i = 1; i <= 6; i++) { dstrcpy (buf, "Process #"); ditoa (i, buf2); dstrcat (buf, buf2); ProcessFork (&doSomething, i * me * 1000 + me, buf, 0); } } SemWait (&mysems[mygrp]); for (i = 0, j = 0; i < (me * 2); i++) { if ((i % 1000) == 0) { printf ("Running process %d (iteration %d)!\n", me, i); } j += (i & 3); } SemSignal (&mysems[mygrp]); } � //---------------------------------------------------------------------- // // chaseTail // // A little function that chases its tail, forking off other // processes before exiting. This can be used to test resource // allocation and reclamation. // //---------------------------------------------------------------------- static void chaseTail (int me) { char *str = "chasetail"; printf ("Chasing tail %d.\n", me); printf ("Open of (%s,0x%x) returns 0x%x.\n", str, me+0x2000, Open (str, me + 0x2000)); if (me < 40) { ProcessFork (&chaseTail, me + 1, "ChaseTail", 0); } } //---------------------------------------------------------------------- // // emptyLoop // // This is an empty loop. It's used to test running code. A similar // loop could be used as the "idle" process. // //---------------------------------------------------------------------- static void emptyLoop (int me) { int i; int limit = me * 50000; i = 0; while (1) { i += 1; if (i > limit) { i = 0; printf ("%d ", me); } } } � //---------------------------------------------------------------------- // // randomStuff // // This routine tests random number usage in DLXOS. // //---------------------------------------------------------------------- static void randomStuff (int seed) { int i,rn; extern int random(),srandom(); srandom (seed); for (i = 0; i < 40; i++) { rn = random (); printf ("Random number %02i is 0x%08x.\n", i, rn); } } //---------------------------------------------------------------------- // // SysprocCreateProcesses // // This is the routine that is called by main to create processes. // It must create at least one process, and there must always be // at least one runnable process. If there isn't, the OS will // exit. // //---------------------------------------------------------------------- void SysprocCreateProcesses () { int i; for (i = 0; i < 10; i++) { SemInit (&mysems[i], 1); } // ProcessFork (&emptyLoop, 1, "Loop1", 0); // ProcessFork (&emptyLoop, 2, "Loop1", 0); // ProcessFork (&emptyLoop, 3, "Loop1", 0); // ProcessFork (&doSomething, 1, "Creator1", 0); // ProcessFork (&doSomething, 2, "Creator2", 0); // ProcessFork (&randomStuff, 1234, "randomStuff", 0); // ProcessFork (&chaseTail, 10, "ChaseTail", 0); }
home/bshapir/cs314/project2/src/queue.o
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool)>>16)&0xffff addui r2,r2,(_linkpool)&0xffff L63: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L64: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1: .ascii "%s: %s\n\000" .align 2 LC2: .ascii "QueueFreeLink\000" .align 2 LC3: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC2)>>16)&0xffff addui r1,r1,(LC2)&0xffff sw 4(r29),r1 lhi r4,((LC3)>>16)&0xffff addui r4,r4,(LC3)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L77: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4: .ascii "QueueAllocLink\000" .align 2 LC5: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97 nop ; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97: addi r4,r0,#0 sw (r3),r4 j L98 nop ; not filled. L92: addi r3,r0,#0 L98: snei r1,r3,#0 bnez r1,L100 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC1)>>16)&0xffff addui r4,r4,(LC1)&0xffff sw (r29),r4 lhi r1,((LC4)>>16)&0xffff addui r1,r1,(LC4)&0xffff sw 4(r29),r1 lhi r4,((LC5)>>16)&0xffff addui r4,r4,(LC5)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L100: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool: .space 6400
home/bshapir/cs314/project2/src/filesys.o
; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1: .ascii "dlx:\000" .align 2 LC2: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55 nop ; not filled. L56: addi r29,r29,#-16 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L55: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74 nop ; not filled. addi r3,r0,#0 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r2,r0,r6 L61: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59 nop ; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61 nop ; not filled. L59: sgti r1,r3,#31 beqz r1,L64 nop ; not filled. L74: addi r1,r0,#-1 j L73 nop ; not filled. L64: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75 nop ; not filled. L65: addi r8,r0,#0 L75: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67 nop ; not filled. L68: addi r29,r29,#-16 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L67: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs)>>16)&0xffff addui r8,r8,(_fs)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop ; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69 nop ; not filled. lhi r8,((_openfiles)>>16)&0xffff addui r8,r8,(_openfiles)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73 nop ; not filled. L69: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-24 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L71: add r1,r0,r3 L73: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84 nop ; not filled. addi r2,r0,#1 L84: snei r1,r2,#0 beqz r1,L82 nop ; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs)>>16)&0xffff addui r4,r4,(_fs)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lhi r4,((_openfiles)>>16)&0xffff addui r4,r4,(_openfiles)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86 nop ; not filled. L82: addi r1,r0,#-1 L86: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94 nop ; not filled. addi r2,r0,#1 L94: snei r1,r2,#0 beqz r1,L92 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L91 nop ; not filled. L92: addi r1,r0,#-1 L91: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r2,r0,#1 L103: snei r1,r2,#0 beqz r1,L101 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L100 nop ; not filled. L101: addi r1,r0,#-1 L100: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112 nop ; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112 nop ; not filled. addi r2,r0,#1 L112: snei r1,r2,#0 beqz r1,L110 nop ; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs)>>16)&0xffff addui r3,r3,(_fs)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop ; not filled. addi r29,r29,#16 j L109 nop ; not filled. L110: addi r1,r0,#-1 L109: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1)>>16)&0xffff addui r1,r1,(LC1)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118 nop ; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs+44)>>16)&0xffff addui r1,r1,(_fs+44)&0xffff j L120 nop ; not filled. L118: addi r29,r29,#-8 lhi r1,((_fs+20)>>16)&0xffff addui r1,r1,(_fs+20)&0xffff L120: sw (r29),r2 lw r1,(r1) jalr r1 nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126 nop ; not filled. L127: addi r29,r29,#-16 lhi r6,((LC4)>>16)&0xffff addui r6,r6,(LC4)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L126: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop ; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles)>>16)&0xffff addui r6,r6,(_openfiles)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128 nop ; not filled. addi r1,r0,#1 L128: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles)>>16)&0xffff addui r5,r5,(_openfiles)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles)>>16)&0xffff addui r3,r3,(_openfiles)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles)>>16)&0xffff addui r31,r31,(_openfiles)&0xffff addi r2,r31,#8308 L182: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182 nop ; not filled. lhi r1,((_fs)>>16)&0xffff addui r1,r1,(_fs)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs: .space 48 .align 2 _openfiles: .space 8576
home/bshapir/cs314/project2/src/trap_random.o
; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom
home/bshapir/cs314/project2/src/memory.o
; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61 nop ; not filled. addi r2,r3,#31 L61: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-16 lhi r6,((LC0)>>16)&0xffff addui r6,r6,(LC0)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68 nop ; not filled. addui r2,r2,#65535 L68: srai r8,r2,#0x10 lhi r3,((_pagestart)>>16)&0xffff addui r3,r3,(_pagestart)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69 nop ; not filled. addui r2,r2,#65535 L69: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax)>>16)&0xffff addui r3,r3,(_freemapmax)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70 nop ; not filled. addi r2,r8,#62 L70: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71 nop ; not filled. L72: addi r29,r29,#-16 lhi r11,((LC1)>>16)&0xffff addui r11,r11,(LC1)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop ; not filled. addi r29,r29,#16 L71: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73 nop ; not filled. L74: addi r29,r29,#-8 lhi r11,((LC2)>>16)&0xffff addui r11,r11,(LC2)&0xffff sw (r29),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L73: addi r2,r0,#0 lhi r4,((_freemapmax)>>16)&0xffff addui r4,r4,(_freemapmax)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76 nop ; not filled. lhi r3,((_freepages)>>16)&0xffff addui r3,r3,(_freepages)&0xffff L78: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78 nop ; not filled. L76: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart)>>16)&0xffff addui r1,r1,(_pagestart)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81 nop ; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone)>>16)&0xffff addui r9,r9,(_negativeone)&0xffff L83: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85 nop ; not filled. addi r2,r4,#31 L85: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages)>>16)&0xffff addui r11,r11,(_freepages)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82 nop ; not filled. L89: addi r29,r29,#-16 lhi r11,((LC0)>>16)&0xffff addui r11,r11,(LC0)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L82: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83 nop ; not filled. L81: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91 nop ; not filled. L92: addi r29,r29,#-8 lhi r11,((LC3)>>16)&0xffff addui r11,r11,(LC3)&0xffff sw (r29),r11 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42: .word 0 .align 2 LC4: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111 nop ; not filled. addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110 nop ; not filled. L111: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112 nop ; not filled. L113: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L112: lhi r2,((_mapnum42)>>16)&0xffff addui r2,r2,(_mapnum42)&0xffff lw r1,(r2) lhi r4,((_freepages)>>16)&0xffff addui r4,r4,(_freepages)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115 nop ; not filled. lhi r1,((_freemapmax)>>16)&0xffff addui r1,r1,(_freemapmax)&0xffff lw r3,(r1) L116: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114 nop ; not filled. addi r7,r0,#0 sw (r2),r7 L114: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116 nop ; not filled. L115: lhi r1,((_mapnum42)>>16)&0xffff addui r1,r1,(_mapnum42)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120 nop ; not filled. addi r2,r0,#1 L121: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121 nop ; not filled. L120: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42)>>16)&0xffff addui r5,r5,(_mapnum42)&0xffff lw r3,(r5) lhi r6,((_freepages)>>16)&0xffff addui r6,r6,(_freepages)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125 nop ; not filled. L126: addi r29,r29,#-16 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L125: lhi r1,((_nfreepages)>>16)&0xffff addui r1,r1,(_nfreepages)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129 nop ; not filled. addi r2,r6,#31 L129: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone)>>16)&0xffff addui r1,r1,(_negativeone)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages)>>16)&0xffff addui r7,r7,(_freepages)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133 nop ; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128 nop ; not filled. L133: addi r29,r29,#-16 lhi r7,((LC0)>>16)&0xffff addui r7,r7,(LC0)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L128: lhi r2,((_nfreepages)>>16)&0xffff addui r2,r2,(_nfreepages)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134 nop ; not filled. L135: addi r29,r29,#-16 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L134: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,160(r3) sgt r1,r31,r1 bnez r1,L139 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140 nop ; not filled. L139: addi r1,r0,#0 L140: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L168: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,160(r7) sgt r1,r2,r1 beqz r1,L170 nop ; not filled. addi r31,r0,#0 j L169 nop ; not filled. L170: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169: snei r1,r31,#0 beqz r1,L167 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172 nop ; not filled. add r2,r0,r3 L172: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168 nop ; not filled. L167: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191 nop ; not filled. lhi r8,#1 addui r8,r8,#0 L192: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,160(r7) sgt r1,r2,r1 beqz r1,L194 nop ; not filled. addi r31,r0,#0 j L193 nop ; not filled. L194: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193: snei r1,r31,#0 beqz r1,L191 nop ; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197 nop ; not filled. add r2,r0,r3 L197: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop ; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192 nop ; not filled. L191: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61: .word 13316 .align 2 LC8: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214 nop ; not filled. lhi r1,((_invalidOps61)>>16)&0xffff addui r1,r1,(_invalidOps61)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213 nop ; not filled. L214: addi r1,r0,#-1 j L218 nop ; not filled. L213: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215 nop ; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216 nop ; not filled. L217: addi r29,r29,#-24 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L216: add r1,r0,r4 L218: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart: .space 4 .align 2 _freemapmax: .space 4 .align 2 _nfreepages: .space 4 .align 2 _freepages: .space 8192
home/bshapir/cs314/project2/src/userprog.dlx
; Linked by DLX-LD. ; MemSize 20480 ; Data size: 126 ; Text size: 3324 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "Setting number = %d\n\000" .align 2 LC1_LF0: .ascii "Usage: \000" .align 2 LC2_LF0: .ascii " number\n\000" .align 2 LC3_LF0: .ascii "Could not map the shared page to virtual address, exiting..\n\000" .align 2 LC4_LF0: .ascii "userprog2.dlx.obj\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 48 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#56; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop; not filled. seqi r1,r2,#2 beqz r1,L4_LF0 nop; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r8,r0,#0 sw 4(r29),r8 addi r8,r0,#10 sw 8(r29),r8 jal _dstrtol nop; not filled. add r5,r0,r1 lhi r8,((LC0_LF0)>>16)&0xffff addui r8,r8,(LC0_LF0)&0xffff sw (r29),r8 sw 4(r29),r5 jal _Printf nop; not filled. addi r29,r29,#16 j L2_LF0 nop; not filled. L4_LF0: addi r29,r29,#-8 lhi r8,((LC1_LF0)>>16)&0xffff addui r8,r8,(LC1_LF0)&0xffff sw (r29),r8 jal _Printf nop; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop; not filled. lhi r8,((LC2_LF0)>>16)&0xffff addui r8,r8,(LC2_LF0)&0xffff sw (r29),r8 jal _Printf nop; not filled. jal _exit nop; not filled. L2_LF0: jal _shmget nop; not filled. add r3,r0,r1 addi r29,r29,#-8 sw (r29),r3 jal _shmat nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L6_LF0 nop; not filled. addi r29,r29,#-8 lhi r8,((LC3_LF0)>>16)&0xffff addui r8,r8,(LC3_LF0)&0xffff sw (r29),r8 jal _Printf nop; not filled. jal _exit nop; not filled. L6_LF0: sw (r2),r5 addi r8,r0,(#0x41)&0xff sb 4(r2),r8 addi r29,r29,#-8 addi r8,r0,#0 sw (r29),r8 jal _sem_create nop; not filled. add r7,r0,r1 addi r8,r0,#5 sw (r29),r8 jal _sem_create nop; not filled. add r2,r0,r1 sw (r29),r3 addi r6,r30,#-24 sw 4(r29),r6 jal _ditoa nop; not filled. sw (r29),r7 addi r4,r30,#-40 sw 4(r29),r4 jal _ditoa nop; not filled. sw (r29),r2 addi r3,r30,#-56 sw 4(r29),r3 jal _ditoa nop; not filled. addi r2,r0,#0 addi r29,r29,#8 slt r1,r2,r5 beqz r1,L8_LF0 nop; not filled. L10_LF0: addi r29,r29,#-24 lhi r8,((LC4_LF0)>>16)&0xffff addui r8,r8,(LC4_LF0)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r4 sw 12(r29),r3 addi r8,r0,#0 sw 16(r29),r8 jal _process_create nop; not filled. addi r29,r29,#24 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L10_LF0 nop; not filled. L8_LF0: addi r29,r29,#-8 sw (r29),r7 jal _sem_wait nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _shmget .global _shmget _shmget: trap #0x440 jr r31 nop .endproc _shmget .proc _shmat .global _shmat _shmat: trap #0x441 jr r31 nop .endproc _shmat .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal .proc _lock_create .global _lock_create _lock_create: trap #0x453 jr r31 nop .endproc _lock_create .proc _lock_acquire .global _lock_acquire _lock_acquire: trap #0x454 jr r31 nop .endproc _lock_acquire .proc _lock_release .global _lock_release _lock_release: trap #0x455 jr r31 nop .endproc _lock_release .proc _cond_create .global _cond_create _cond_create: trap #0x456 jr r31 nop .endproc _cond_create .proc _cond_wait .global _cond_wait _cond_wait: trap #0x457 jr r31 nop .endproc _cond_wait .proc _cond_signal .global _cond_signal _cond_signal: trap #0x458 jr r31 nop .endproc _cond_signal .proc _cond_broadcast .global _cond_broadcast _cond_broadcast: trap #0x459 jr r31 nop .endproc _cond_broadcast ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:
home/bshapir/cs314/project2/src/userprog2.dlx
; Linked by DLX-LD. ; MemSize 20480 ; Data size: 238 ; Text size: 3280 ; Stack size: 8192 .text 0x1000 .data 0x2000 ; Compiled by GCC .align 2 LC0_LF0: .ascii "Usage: \000" .align 2 LC1_LF0: .ascii " handle_str spage_str semaphore_str\n\000" .align 2 LC2_LF0: .ascii "Could not map the virtual address to the memory, exiting...\n\000" .align 2 LC3_LF0: .ascii "Bad semaphore spage.... Exiting!\n\000" .align 2 LC4_LF0: .ascii "This is one of the %d instances you created\n\000" .align 2 LC5_LF0: .ascii "The shared character is %c\n\000" .align 2 LC6_LF0: .ascii "My PID is %d\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop; not filled. snei r1,r2,#4 beqz r1,L2_LF0 nop; not filled. addi r29,r29,#-8 lhi r5,((LC0_LF0)>>16)&0xffff addui r5,r5,(LC0_LF0)&0xffff sw (r29),r5 jal _Printf nop; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop; not filled. lhi r5,((LC1_LF0)>>16)&0xffff addui r5,r5,(LC1_LF0)&0xffff sw (r29),r5 jal _Printf nop; not filled. jal _exit nop; not filled. L2_LF0: addi r29,r29,#-16 lw r5,4(r3) sw (r29),r5 addi r5,r0,#0 sw 4(r29),r5 addi r5,r0,#10 sw 8(r29),r5 jal _dstrtol nop; not filled. add r2,r0,r1 lw r5,8(r3) sw (r29),r5 addi r5,r0,#0 sw 4(r29),r5 addi r5,r0,#10 sw 8(r29),r5 jal _dstrtol nop; not filled. add r4,r0,r1 lw r3,8(r3) sw (r29),r3 addi r5,r0,#0 sw 4(r29),r5 addi r5,r0,#10 sw 8(r29),r5 jal _dstrtol nop; not filled. sw (r29),r2 jal _shmat nop; not filled. add r2,r0,r1 addi r29,r29,#16 snei r1,r2,#0 bnez r1,L3_LF0 nop; not filled. addi r29,r29,#-8 lhi r5,((LC2_LF0)>>16)&0xffff addui r5,r5,(LC2_LF0)&0xffff sw (r29),r5 jal _Printf nop; not filled. jal _exit nop; not filled. L3_LF0: addi r29,r29,#-8 sw (r29),r4 jal _sem_signal nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L4_LF0 nop; not filled. addi r29,r29,#-8 lhi r5,((LC3_LF0)>>16)&0xffff addui r5,r5,(LC3_LF0)&0xffff sw (r29),r5 jal _Printf nop; not filled. jal _exit nop; not filled. L4_LF0: addi r29,r29,#-8 lhi r5,((LC4_LF0)>>16)&0xffff addui r5,r5,(LC4_LF0)&0xffff sw (r29),r5 lw r1,(r2) sw 4(r29),r1 jal _Printf nop; not filled. lhi r5,((LC5_LF0)>>16)&0xffff addui r5,r5,(LC5_LF0)&0xffff sw (r29),r5 lbu r1,4(r2) sw 4(r29),r1 jal _Printf nop; not filled. jal _getpid nop; not filled. lhi r5,((LC6_LF0)>>16)&0xffff addui r5,r5,(LC6_LF0)&0xffff sw (r29),r5 sw 4(r29),r1 jal _Printf nop; not filled. addi r29,r29,#8 jal _exit nop .endproc _main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _shmget .global _shmget _shmget: trap #0x440 jr r31 nop .endproc _shmget .proc _shmat .global _shmat _shmat: trap #0x441 jr r31 nop .endproc _shmat .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal .proc _lock_create .global _lock_create _lock_create: trap #0x453 jr r31 nop .endproc _lock_create .proc _lock_acquire .global _lock_acquire _lock_acquire: trap #0x454 jr r31 nop .endproc _lock_acquire .proc _lock_release .global _lock_release _lock_release: trap #0x455 jr r31 nop .endproc _lock_release .proc _cond_create .global _cond_create _cond_create: trap #0x456 jr r31 nop .endproc _cond_create .proc _cond_wait .global _cond_wait _cond_wait: trap #0x457 jr r31 nop .endproc _cond_wait .proc _cond_signal .global _cond_signal _cond_signal: trap #0x458 jr r31 nop .endproc _cond_signal .proc _cond_broadcast .global _cond_broadcast _cond_broadcast: trap #0x459 jr r31 nop .endproc _cond_broadcast ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF2: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF2 nop; not filled. L34_LF2: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF2 nop; not filled. L37_LF2: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF2 nop; not filled. L32_LF2: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF2 nop; not filled. L51_LF2: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF2 nop; not filled. L50_LF2: add r2,r0,r31 lw r31,4(r30) L54_LF2: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF2 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF2 nop; not filled. L75_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF2 nop; not filled. L73_LF2: seq r1,r2,r5 beqz r1,L80_LF2 nop; not filled. L86_LF2: addi r1,r0,#0 j L84_LF2 nop; not filled. L80_LF2: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF2 nop; not filled. sne r2,r31,r3 L82_LF2: add r1,r0,r2 L84_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF2 nop; not filled. L95_LF2: addi r2,r2,#1 L97_LF2: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF2 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF2 nop; not filled. L126_LF2: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF2 nop; not filled. L125_LF2: add r6,r0,r3 j L149_LF2 nop; not filled. L130_LF2: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF2 nop; not filled. L136_LF2: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF2 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF2 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF2 nop; not filled. L134_LF2: seq r1,r2,r6 beqz r1,L141_LF2 nop; not filled. L150_LF2: addi r1,r0,#0 j L132_LF2 nop; not filled. L141_LF2: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF2 nop; not filled. sne r31,r3,r2 L143_LF2: add r1,r0,r31 L132_LF2: snei r1,r1,#0 bnez r1,L131_LF2 nop; not filled. add r1,r0,r5 j L146_LF2 nop; not filled. L131_LF2: addi r5,r5,#1 L149_LF2: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF2 nop; not filled. addi r1,r0,#0 L146_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF2 nop; not filled. add r5,r0,r1 L165_LF2: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF2 nop; not filled. lbu r3,(r4) L169_LF2: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF2 nop; not filled. add r1,r0,r4 j L173_LF2 nop; not filled. L168_LF2: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF2 nop; not filled. L163_LF2: bnez r5,L165_LF2 nop; not filled. L164_LF2: addi r1,r0,#0 L173_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF2 nop; not filled. L183_LF2: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF2 nop; not filled. add r1,r0,r2 j L186_LF2 nop; not filled. L184_LF2: addi r2,r2,#1 L187_LF2: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF2 nop; not filled. addi r1,r0,#0 L186_LF2: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF2 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF2 nop; not filled. L203_LF2: snei r1,r3,#0 bnez r1,L205_LF2 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF2: sb (r4),r6 addi r4,r4,#1 j L204_LF2 nop; not filled. L205_LF2: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF2 nop; not filled. L209_LF2: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF2 nop; not filled. L208_LF2: addi r5,r0,#10 L212_LF2: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF2 nop; not filled. L204_LF2: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF2 nop; not filled. L220_LF2: addi r2,r2,#1 L247_LF2: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF2 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF2 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF2 nop; not filled. sw (r5),r2 L222_LF2: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF2 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF2 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF2 nop; not filled. L224_LF2: addi r6,r0,#1 L225_LF2: snei r1,r4,#0 bnez r1,L226_LF2 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF2 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF2 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF2 nop; not filled. L229_LF2: addi r4,r0,#16 addi r2,r2,#1 j L226_LF2 nop; not filled. L228_LF2: addi r4,r0,#8 j L226_LF2 nop; not filled. L227_LF2: addi r4,r0,#10 L226_LF2: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF2 nop; not filled. L248_LF2: add r1,r0,r3 j L245_LF2 nop; not filled. L233_LF2: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF2 nop; not filled. L236_LF2: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF2 nop; not filled. L238_LF2: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF2 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF2 nop; not filled. L240_LF2: addi r1,r0,#1000 L237_LF2: slt r31,r1,r4 beqz r31,L246_LF2 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF2 nop; not filled. L246_LF2: snei r1,r5,#0 beqz r1,L244_LF2 nop; not filled. sw (r5),r2 L244_LF2: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF2 nop; not filled. L257_LF2: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF2 nop; not filled. L268_LF2: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF2: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF2 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main .text .global _etext _etext: .align 3 .data .global _edata _edata:
home/bshapir/cs314/project2/src/misc.c
// // misc.c // // Miscellaneous routines for the operating system. These include // basic routines that would be in libc if we had access to it. // #include "misc.h" //---------------------------------------------------------------------- // // dstrcpy // dstrncpy // dstrcat // // These three functions do exactly what their counterparts in the // standard C library do. // //---------------------------------------------------------------------- char* dstrcpy (char *to, const char *from) { char *tokeep = to; char last; do { last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char* dstrncpy (char *to, const char *from, int n) { char *tokeep = to; char last; int cur = 0; do { // Stop if we're exceeded the maximum string length if (n-- <= 0) { break; } last = *(to++) = *(from++); } while (last != '\0'); return (tokeep); } char * dstrcat (char *onto, const char *addn) { char *konto = onto; while (*onto != '\0') { onto++; } dstrcpy (onto, addn); return (konto); } int dstrncmp (const char *s1, const char *s2, int n) { int i; for (i = 0; i < n; i++) { // If they don't match, end the loop if (*s2 == '\0') { // If the second string is NULL, we're at the end of the string and // have a match. return (0); } else if (*s1 != *s2) { break; } s1++; s2++; } if (i == n) { return (0); } else { return (((*s1 - *s2) < 0) ? -1 : ((*s1 == *s2) ? 0 : 1)); } } int dstrlen (const char *s) { int i = 0; while (*(s++) != '\0') { i++; } return (i); } const char * dstrstr (const char *buf, const char *pattern) { int n = dstrlen (pattern); while (*buf != '\0') { if (dstrncmp (buf, pattern, n) == 0) { return (buf); } buf++; } return ((char *)0); } � //---------------------------------------------------------------------- // // dindex // dmindex // // dindex is identical to the libc function index. dmindex is // similar to dindex, but it reports the index in the string of the // first match for any one of the characters passed (rather than // matching only on a single specific character). // //---------------------------------------------------------------------- const char * dmindex (const char *s, const char *match) { const char *c; while (*s != '\0') { for (c = match; *c != '\0'; c++) { if (*s == *c) { return (s); } } } return ((const char *)0); } const char* dindex (const char *s, int c) { while (*s != '\0') { if (*s == c) { return (s); } s++; } return ((char *)0); } � //---------------------------------------------------------------------- // // ditoa: Convert an integer into an ASCII number. // dstrtol: Convert ASCII into an integer // //---------------------------------------------------------------------- void ditoa (int n, char *buf) { int k; if (n < 0) { *(buf++) = '-'; n = -n; } else if (n == 0) { *(buf++) = '0'; } else { for (k = 1; k <= n; k *= 10) { } do { k /= 10; *(buf++) = (n / k) + '0'; n %= k; } while (k > 1); } *buf = '\0'; } int dstrtol (char *c, char **newpos, int base) { int v = 0; int curdigit; int sign; while ((*c == ' ') || (*c == '\t') || (*c == '\n')) { c++; } if (newpos != (char **)0) { *newpos = c; } if (*c == '\0') { return (v); } if (*c == '-') { sign = -1; c++; } else { sign = 1; } if (base == 0) { if (*c == '0') { c++; if ((*c == 'x') || (*c == 'X')) { base = 16; c++; } else { base = 8; } } else { base = 10; } } if ((base <= 0) || (base > 16)) { return (v); } do { if ((*c >= '0') && (*c <= '9')) { curdigit = (*c) - '0'; } else if ((*c >= 'a') && (*c <= 'z')) { curdigit = (*c) + 10 - 'a'; } else if ((*c >= 'A') && (*c <= 'Z')) { curdigit = (*c) + 10 - 'A'; } else { curdigit = 1000; } if (curdigit < base) { v *= base; v += curdigit; c++; } } while (curdigit < base); if (newpos != (char **)0) { *newpos = c; } v *= sign; return (v); } � //---------------------------------------------------------------------- // // bcopy: Copy bytes from one location to another. // bzero: Set all the bytes in a region to zero. // //---------------------------------------------------------------------- void bcopy (char *src, char *dst, int count) { while (count-- > 0) { *(dst++) = *(src++); } } void bzero (char *dst, int count) { while (count-- > 0) { *(dst++) = 0; } }
home/bshapir/cs314/project2/src/synch.o
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r3,((LC0)>>16)&0xffff addui r3,r3,(LC0)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L52: lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff addi r2,r31,#620 L57: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57 nop ; not filled. addi r31,r0,#0 L61: addi r31,r31,#1 slei r1,r31,#63 bnez r1,L61 nop ; not filled. addi r31,r0,#0 L66: addi r31,r31,#1 slei r1,r31,#31 bnez r1,L66 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L70 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L69 nop ; not filled. L70: addi r29,r29,#-8 lhi r3,((LC1)>>16)&0xffff addui r3,r3,(LC1)&0xffff sw (r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L69: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems)>>16)&0xffff addui r31,r31,(_sems)&0xffff L89: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L96 nop ; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L89 nop ; not filled. L87: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L93 nop ; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems)>>16)&0xffff addui r5,r5,(_sems)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop ; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L95 nop ; not filled. L96: addi r5,r0,#1 sw 16(r31),r5 j L87 nop ; not filled. L93: addi r1,r0,#-1 L95: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#32 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop ; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L100 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L99 nop ; not filled. L100: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L99: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L102 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L101 nop ; not filled. L102: addi r29,r29,#-16 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 L101: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L103 nop ; not filled. jal _QueueAllocLink nop ; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105 nop ; not filled. L106: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L105: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop ; not filled. L103: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L116 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L117 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L115 nop ; not filled. L117: addi r1,r0,#1 j L115 nop ; not filled. L116: addi r1,r0,#1 L115: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop ; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123 nop ; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122 nop ; not filled. L123: addi r29,r29,#-16 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L122: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L124 nop ; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L127 nop ; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L127: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L129 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128 nop ; not filled. L129: addi r29,r29,#-8 lhi r5,((LC6)>>16)&0xffff addui r5,r5,(LC6)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L128: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop ; not filled. sw (r29),r3 jal _QueueFreeLink nop ; not filled. addi r29,r29,#8 L124: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L136 nop ; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems)>>16)&0xffff addui r2,r2,(_sems)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L137 nop ; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop ; not filled. addi r1,r0,#0 addi r29,r29,#8 j L135 nop ; not filled. L137: addi r1,r0,#1 j L135 nop ; not filled. L136: addi r1,r0,#1 L135: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .align 2 .proc _LockCreate .global _LockCreate _LockCreate: ; Function 'LockCreate'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockCreate .align 2 .proc _LockHandleAcquire .global _LockHandleAcquire _LockHandleAcquire: ; Function 'LockHandleAcquire'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockHandleAcquire .align 2 .proc _LockHandleRelease .global _LockHandleRelease _LockHandleRelease: ; Function 'LockHandleRelease'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockHandleRelease .align 2 .proc _CondCreate .global _CondCreate _CondCreate: ; Function 'CondCreate'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondCreate .align 2 .proc _CondHandleWait .global _CondHandleWait _CondHandleWait: ; Function 'CondHandleWait'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondHandleWait .align 2 .proc _CondHandleSignal .global _CondHandleSignal _CondHandleSignal: ; Function 'CondHandleSignal'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondHandleSignal .align 2 .proc _CondHandleBroadcast .global _CondHandleBroadcast _CondHandleBroadcast: ; Function 'CondHandleBroadcast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondHandleBroadcast .data .align 2 _sems: .space 640
home/bshapir/cs314/project2/src/osend.s
;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8
home/bshapir/cs314/project2/src/traps.c
// // traps.c // // This file handles the low-level trap stuff for an operating system // running under DLX. static char rcsid[] = "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlx.h" #include "dlxos.h" #include "traps.h" #include "process.h" //---------------------------------------------------------------------- // // TimerSet // // Set the timer to go off after a particular number of microseconds. // The number of microseconds is passed to the routine. // //---------------------------------------------------------------------- void TimerSet (int us) { *((int *)DLX_TIMER_ADDRESS) = us; } � //---------------------------------------------------------------------- // // KbdModuleInit // // Initialize the keyboard module. This involves turning on // interrupts for the keyboard. // //---------------------------------------------------------------------- void KbdModuleInit () { *((uint32 *)DLX_KBD_INTR) = 1; } //-------------------------------------------------------------------- // GetUintFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static uint32 GetUintFromTrapArg(uint32 *trapArgs, int sysmode) { uint32 arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // GetIntFromTrapArg(uint32 *trapArgs, int sysmode) //-------------------------------------------------------------------- static int GetIntFromTrapArg(uint32 *trapArgs, int sysmode) { int arg; if(!sysmode) { MemoryCopyUserToSystem (currentPCB, trapArgs, &arg, sizeof (arg)); } else { bcopy (trapArgs, &arg, sizeof (arg)); } return arg; } //-------------------------------------------------------------------- // Here we support reading the arguments // Maximum 10 command-line arguments are allowed // Also the total length of the arguments including the terminating // '\0' should be less than or equal to 100 //-------------------------------------------------------------------- static void TrapProcessCreateHandler(uint32 *trapArgs, int sysmode) { char allargs[SIZE_ARG_BUFF]; char name[100]; int i=0, j=0, k=0; uint32 args[MAX_ARGS]; char *destination; // The first argument is the name of the executable file i=0; for(i=0;i<100; i++) allargs[i] = 0; i=0; if(!sysmode) { //Get the arguments into the sytem space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,name+i,1); i++; } while ((i < sizeof (name)) && (name[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], name, sizeof (name)); } name[sizeof(name)-1] = '\0'; // null terminate the name i=0; if(!sysmode) { //Copy the rest of the arguments to the system space for(j=0; (j<11)&&(args[j]!=0); j++) { k=0; do { MemoryCopyUserToSystem (currentPCB,((char*)args[j])+k,allargs+i,1); i++; k++; } while ((i<sizeof(allargs)) && (allargs[i-1]!='\0')); } } else { destination = &allargs[0]; for(j=0; (j<11)&&(args[j]!=0); j++) { k = dstrlen((char *)args[j]); //length of the argument if(&destination[k]-allargs>100) { printf("Fatal: Cumulative length of all arguments > 100\n"); exitsim(); } dstrcpy(destination, (char *)args[j]); destination[k] = '\0'; } } allargs[sizeof(allargs)-1] = '\0'; // null terminate the name ProcessFork(0, (uint32)allargs, name, 1); } � //---------------------------------------------------------------------- // // TrapPrintfHandler // // Handle a printf trap.here. This printf code will correctly // handle integers but will not correctly handle strings (yet). // Also, note that the maximum format string length is 79 characters. // Exceeding this length will cause the format to be truncated. // //---------------------------------------------------------------------- static void TrapPrintfHandler (uint32 *trapArgs, int sysMode) { char formatstr[80]; int i = 0; uint32 printfArgs[10]; uint32 args[10]; int nargs = 0; char *c; // The first argument is the print format string. Copy it to system // space, truncating if necessary. i = 0; if (!sysMode) { // Get the arguments themselves into system space MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof (args)); do { MemoryCopyUserToSystem (currentPCB,((char*)args[0])+i,formatstr+i,1); i++; } while ((i < sizeof (formatstr)) && (formatstr[i-1] != '\0')); } else { bcopy (trapArgs, args, sizeof (args)); dstrncpy ((char *)args[0], formatstr, sizeof (formatstr)); } formatstr[sizeof(formatstr)-1] = '\0'; // null terminate the fmt str for (c = formatstr; *c != '\0'; c++) { if (*c == '%') { // if this is a %%, skip past second % if (*(c+1) == '%') { c++; continue; } // Get the current argument off the stack printfArgs[nargs] = args[nargs+1]; // dbprintf ('t', "Argument %d at 0x%x is %d (0x%x).\n", nargs, // args[nargs], args[nargs]); while (1) { c++; if (*c == 's') { // Handle strings here. They don't work for user programs (yet...) break; } else if (*c == 'l') { continue; } else if ((*c == 'f') || (*c == 'g') || (*c == 'e')) { // If it's a floating point number, it'll be passed as // a double, so grab the second word also. nargs += 1; printfArgs[nargs] = args[nargs+1]; break; } else if ((*c >= 'a') && (*c <= 'z')) { // If it's another formatting character, it's not // a string, but we can leave the loop anyway. break; } } nargs += 1; } } printf (formatstr,printfArgs[0],printfArgs[1],printfArgs[2], printfArgs[3], printfArgs[4], printfArgs[5], printfArgs[6], printfArgs[7]); } � //---------------------------------------------------------------------- // // doInterrupt // // Handle an interrupt or trap. // //---------------------------------------------------------------------- void dointerrupt (unsigned int cause, unsigned int iar, unsigned int isr, uint32 *trapArgs) { int result; int i; uint32 args[4]; int intrs; uint32 handle; int ihandle; dbprintf ('t',"Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n", cause, iar, isr, trapArgs); // If the TRAP_INSTR bit is set, this was from a trap instruction. // If the bit isn't set, this was a system interrupt. if (cause & TRAP_TRAP_INSTR) { cause &= ~TRAP_TRAP_INSTR; switch (cause) { case TRAP_CONTEXT_SWITCH: dbprintf ('t', "Got a context switch trap!\n"); ProcessSchedule (); break; case TRAP_EXIT: dbprintf ('t', "Got an exit trap!\n"); ProcessDestroy (currentPCB); ProcessSchedule (); break; case TRAP_PROCESS_FORK: dbprintf ('t', "Got a fork trap!\n"); break; case TRAP_PROCESS_SLEEP: dbprintf ('t', "Got a process sleep trap!\n"); ProcessSuspend (currentPCB); ProcessSchedule (); break; case TRAP_PRINTF: // Call the trap printf handler and pass the arguments and a flag // indicating whether the trap was called from system mode. dbprintf ('t', "Got a printf trap!\n"); TrapPrintfHandler (trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_OPEN: // Get the arguments to the trap handler. If this is a user mode trap, // copy them from user space. if (isr & DLX_STATUS_SYSMODE) { args[0] = trapArgs[0]; args[1] = trapArgs[1]; } else { char filename[32]; // trapArgs points to the trap arguments in user space. There are // two of them, so copy them to to system space. The first argument // is a string, so it has to be copied to system space and the // argument replaced with a pointer to the string in system space. MemoryCopyUserToSystem (currentPCB, trapArgs, args, sizeof(args[0])*2); MemoryCopyUserToSystem (currentPCB, args[0], filename, 31); // Null-terminate the string in case it's longer than 31 characters. filename[31] = '\0'; // Set the argument to be the filename args[0] = (uint32)filename; } // Allow Open() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, args[1] + 0x10000); printf ("Got an open with parameters ('%s',0x%x)\n", args[0], args[1]); RestoreIntrs (intrs); break; case TRAP_CLOSE: // Allow Close() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_READ: // Allow Read() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_WRITE: // Allow Write() calls to be interruptible! intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_DELETE: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_SEEK: intrs = EnableIntrs (); ProcessSetResult (currentPCB, -1); RestoreIntrs (intrs); break; case TRAP_PROCESS_GETPID: ProcessSetResult(currentPCB, GetCurrentPid()); break; case TRAP_PROCESS_CREATE: TrapProcessCreateHandler(trapArgs, isr & DLX_STATUS_SYSMODE); break; case TRAP_SHARE_CREATE_PAGE: handle = MemoryCreateSharedPage(currentPCB); ProcessSetResult(currentPCB, handle); break; case TRAP_SHARE_MAP_PAGE: handle = GetUintFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = (uint32)mmap(currentPCB, handle); ProcessSetResult(currentPCB, handle); break; case TRAP_SEM_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = SemCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_SEM_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleWait(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_SEM_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = SemHandleSignal(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_LOCK_CREATE: ihandle = LockCreate(); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_LOCK_ACQUIRE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = LockHandleAcquire(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_LOCK_RELEASE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); handle = LockHandleRelease(ihandle); ProcessSetResult(currentPCB, handle); //Return 1 or 0 break; case TRAP_COND_CREATE: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondCreate(ihandle); ProcessSetResult(currentPCB, ihandle); //Return handle break; case TRAP_COND_WAIT: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondHandleWait(ihandle); ProcessSetResult(currentPCB, ihandle); //Return 1 or 0 break; case TRAP_COND_SIGNAL: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondHandleSignal(ihandle); ProcessSetResult(currentPCB, ihandle); //Return 1 or 0 break; case TRAP_COND_BROADCAST: ihandle = GetIntFromTrapArg(trapArgs, isr & DLX_STATUS_SYSMODE); ihandle = CondHandleBroadcast(ihandle); ProcessSetResult(currentPCB, ihandle); //Return 1 or 0 break; default: printf ("Got an unrecognized trap (0x%x) - exiting!\n", cause); exitsim (); break; } } else { switch (cause) { case TRAP_TIMER: dbprintf ('t', "Got a timer interrupt!\n"); ProcessSchedule (); break; case TRAP_KBD: do { i = *((uint32 *)DLX_KBD_NCHARSIN); result = *((uint32 *)DLX_KBD_GETCHAR); printf ("Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n", result, result, i); } while (i > 1); break; case TRAP_ACCESS: printf ("Exiting after illegal access at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_ADDRESS: printf ("Exiting after illegal address at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_ILLEGALINST: printf ("Exiting after illegal instruction at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; case TRAP_PAGEFAULT: printf ("Exiting after page fault at iar=0x%x, isr=0x%x\n", iar, isr); exitsim (); break; default: printf ("Got an unrecognized system interrupt (0x%x) - exiting!\n", cause); exitsim (); break; } } dbprintf ('t',"About to return from dointerrupt.\n"); // Note that this return may schedule a new process! intrreturn (); }
home/bshapir/cs314/project2/src/userprog.c
#include "lab2-api.h" typedef struct DB { int some_int; char some_char; } DB; main (int argc, char *argv[]) { int number, i; DB *db; uint32 handle; sem_t spage; sem_t semaphore; char handle_str[10], spage_str[10], semaphore_str[10]; switch(argc) { case 2: number = dstrtol(argv[1], NULL, 10); Printf("Setting number = %d\n", number); break; default: Printf("Usage: "); Printf(argv[0]); Printf(" number\n"); exit(); } handle = shmget(); //Get a shared memory page db = (DB *)shmat(handle); if(db==NULL) { Printf("Could not map the shared page to virtual address, exiting..\n"); exit(); } db->some_int = number; db->some_char = 'A'; spage = sem_create(0); //Get a semaphore to wait till this memory //page is mapped to some other process's //virtual address space semaphore = sem_create(5); ditoa(handle, handle_str); //Convert the shared page handle to a string ditoa(spage, spage_str); //Convert the semaphore spage to a string ditoa(semaphore, semaphore_str); //Convert the semaphore to a string for(i=0; i<number; i++) process_create("userprog2.dlx.obj", handle_str, spage_str, semaphore_str, NULL); sem_wait(spage); //Wait till at least one process grabs the //shared memory page. Otherwise the page could //be released before anyone grabs it! }
home/bshapir/cs314/project2/src/synch.h
// // synch.h // // Include file for synchronization stuff. The synchronization // primitives include: // Semaphore // Lock // Condition // // Semaphores are the only "native" synchronization primitive. // Condition variables and locks are implemented using semaphores. // #ifndef _synch_h_ #define _synch_h_ #include "queue.h" #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system #define MAX_LOCKS 64 //Maximum 64 locks allowed in the system //This is because condition vars also use //locks from the same pool #define MAX_CONDS 32 //Maximum 32 conds allowed in the system typedef int sem_t; typedef int lock_t; typedef int cond_t; #define INVALID_SEM -1 #define INVALID_LOCK -1 #define INVALID_PROC -1 #define INVALID_COND -1 typedef struct Sem { Queue waiting; int count; uint32 inuse; //indicates whether the semaphore is being //used by any process } Sem; extern void SemInit (Sem *, int); extern void SemWait (Sem *); extern void SemSignal (Sem *); typedef struct Lock { //Your stuff goes here } Lock; typedef struct Cond { //Your stuff goes here } Cond; #endif //_synch_h_
home/bshapir/cs314/project2/src/dlxos.s
;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep
home/bshapir/cs314/project2/src/Makefile
# # This is a makefile for the DLX OS projects. # CC = gcc-dlx AS = dlxasm CFLAGS = -mtraps -O3 #INCS = $(wildcard *.h) #SRCS = $(wildcard *.c) #OBJS = $(addsuffix .o, $(basename $(wildcard *.c))) \ # $(addsuffix .o, $(basename $(wildcard *.s))) INCS = dlxos.h traps.h filesys.h memory.h misc.h process.h queue.h \ synch.h syscall.h share_memory.h SRCS = filesys.c memory.c misc.c process.c queue.c synch.c traps.c sysproc.c OBJS = $(addsuffix .o, $(basename $(SRCS))) all: os.dlx.obj userprog userprog2 os.dlx.obj: os.dlx $(AS) -i _osinit -l os.lst os.dlx mv os.dlx.obj ../execs os.dlx: $(OBJS) dlxos.o trap_random.o osend.o share_memory.o $(CC) -mtraps -O3 dlxos.o trap_random.o share_memory.o $(OBJS) osend.o -o os.dlx share_memory.o: cp share_memory.api share_memory.o osend.o: osend.s $(CC) -c osend.s trap_random.o: trap_random.s $(CC) -c trap_random.s dlxos.o: dlxos.s $(CC) -c dlxos.s usertraps.o: usertraps.s $(CC) -c usertraps.s userprog : userprog.o usertraps.o misc.o $(CC) -mtraps -O3 userprog.o usertraps.o misc.o -o userprog.dlx $(AS) -l userprog.lst userprog.dlx mv userprog.dlx.obj ../execs userprog2 : userprog2.o usertraps.o misc.o $(CC) -mtraps -O3 userprog2.o usertraps.o misc.o -o userprog2.dlx $(AS) -l userprog2.lst userprog2.dlx mv userprog2.dlx.obj ../execs Makefile.depend: depend depend: $(SRCS) $(INCS) $(CC) -MM $(SRCS) > Makefile.depend clean: /bin/rm -f *.o *.dlx *.lst *.obj Makefile.depend vm include Makefile.depend
home/bshapir/cs314/project2/src/dlxos.o
;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29 ; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg ; skip over the system part.... intrSystem: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29 ; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6 ; push CAUSE sw 4(r29),r4 ; push IAR sw 8(r29),r5 ; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1), r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler � ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1), r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1) ; 156-340 = -184 lw r1,-296(r1) ; 44-340 = -296 rfe .endproc _intrreturn � ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2 ; save r2 lw r2,16(r29) ; Get the new interrupt level andi r2,r2,#0x0f ; Mask off interrupt levels movs2i r1,status sw 8(r29),r1 ; Store the old interrupt values andi r1,r1,#0xfff0 ; Mask off old interrupt level or r1,r2,r1 ; OR in new interrupt level movi2s status,r1 lw r1,8(r29) ; Get back the original interrupt level andi r1,r1,#0x0f ; Mask off all but interrupt levels lw r2,12(r29) ; restore r2 addui r29,r29,#16 ; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410 ; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep
home/bshapir/cs314/project2/src/osend.o
;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .data .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8
home/bshapir/cs314/project2/src/process.h
// // process.h // // Definitions for process creation and manipulation. These include // the process control block (PCB) structure as well as information // about the stack format for a saved process. // #ifndef _process_h_ #define _process_h_ #include "dlxos.h" #include "queue.h" //#include "share_memory.h" #define PROCESS_MAX_PROCS 32 // Maximum number of active processes #define PROCESS_INIT_ISR_SYS 0x140 // Initial status reg value for system processes #define PROCESS_INIT_ISR_USER 0x100 // Initial status reg value for user processes #define PROCESS_STATUS_FREE 0x1 #define PROCESS_STATUS_RUNNABLE 0x2 #define PROCESS_STATUS_WAITING 0x4 #define PROCESS_STATUS_STARTING 0x8 #define PROCESS_STATUS_ZOMBIE 0x10 #define PROCESS_STATUS_MASK 0x3f #define PROCESS_TYPE_SYSTEM 0x100 #define PROCESS_TYPE_USER 0x200 typedef void (*VoidFunc)(); // Process control block typedef struct PCB { uint32 *currentSavedFrame; // -> current saved frame. MUST BE 1ST! uint32 *sysStackPtr; // Current system stack pointer. MUST BE 2ND! uint32 sysStackArea; // System stack area for this process unsigned int flags; char name[80]; // Process name uint32 pagetable[16]; // Statically allocated page table int npages; // Number of pages allocated to this process Link l; // Used for keeping PCB in queues } PCB; // Offsets of various registers from the stack pointer in the register // save frame. Offsets are in WORDS (4 byte chunks) #define PROCESS_STACK_IREG 10 // Offset of r0 (grows upwards) // NOTE: r0 isn't actually stored! This is for convenience - r1 is the // first stored register, and is at location PROCESS_STACK_IREG+1 #define PROCESS_STACK_FREG (PROCESS_STACK_IREG+32) // Offset of f0 #define PROCESS_STACK_IAR (PROCESS_STACK_FREG+32) // Offset of IAR #define PROCESS_STACK_ISR (PROCESS_STACK_IAR+1) #define PROCESS_STACK_CAUSE (PROCESS_STACK_IAR+2) #define PROCESS_STACK_FAULT (PROCESS_STACK_IAR+3) #define PROCESS_STACK_PTBASE (PROCESS_STACK_IAR+4) #define PROCESS_STACK_PTSIZE (PROCESS_STACK_IAR+5) #define PROCESS_STACK_PTBITS (PROCESS_STACK_IAR+6) #define PROCESS_STACK_PREV_FRAME 10 // points to previous interrupt frame #define PROCESS_STACK_FRAME_SIZE 85 // interrupt frame is 85 words #define SIZE_ARG_BUFF 1024 // Max number of characters in the // command-line arguments #define MAX_ARGS 128 // Max number of command-line // arguments extern PCB *currentPCB; extern int ProcessFork (VoidFunc, unsigned int, char *, int); extern void ProcessSchedule (); extern void ContextSwitch(void *, void *, int); extern void ProcessSuspend (PCB *); extern void ProcessWakeup (PCB *); extern void ProcessSetResult (PCB *, uint32); extern void ProcessSleep (); extern unsigned GetCurrentPid(); extern unsigned getpid(); void process_create(char *name, ...); #endif /* _process_h_ */
home/bshapir/cs314/project2/src/process.o
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum: .word 10000 .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52 nop ; not filled. L53: addi r29,r29,#-8 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L52: addi r29,r29,#-8 lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff sw (r29),r2 jal _QueueInit nop ; not filled. lhi r8,((_runQueue)>>16)&0xffff addui r8,r8,(_runQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_waitQueue)>>16)&0xffff addui r8,r8,(_waitQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. lhi r8,((_zombieQueue)>>16)&0xffff addui r8,r8,(_zombieQueue)&0xffff sw (r29),r8 jal _QueueInit nop ; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs)>>16)&0xffff addui r1,r1,(_pcbs)&0xffff add r5,r0,r2 addi r2,r1,#164 add r3,r0,r1 add r6,r0,r3 L57: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58 nop ; not filled. L59: addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L58: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#180 addi r3,r3,#180 addi r6,r6,#180 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57 nop ; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64 nop ; not filled. L65: addi r29,r29,#-8 lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L64: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r4,#164 lw r1,4(r3) sw 172(r4),r3 sw 168(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r3,160(r4) addi r2,r0,#0 slt r1,r2,r3 beqz r1,L98 nop ; not filled. L90: addi r29,r29,#-8 sw (r29),r4 sw 4(r29),r2 jal _MemoryFreeSharedPte nop ; not filled. addi r29,r29,#8 addi r2,r2,#1 slt r1,r2,r3 bnez r1,L90 nop ; not filled. addi r2,r0,#0 L98: lw r1,160(r4) slt r1,r2,r1 beqz r1,L93 nop ; not filled. add r3,r0,r4 L95: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,160(r4) slt r1,r2,r1 bnez r1,L95 nop ; not filled. L93: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#40 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L103 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L102 nop ; not filled. L103: lhi r1,((_runQueue)>>16)&0xffff addui r1,r1,(_runQueue)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 L102: lhi r5,((_runQueue)>>16)&0xffff addui r5,r5,(_runQueue)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L105 nop ; not filled. addi r29,r29,#-8 lhi r8,((LC4)>>16)&0xffff addui r8,r8,(LC4)&0xffff sw (r29),r8 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L105: lw r1,(r5) lw r4,12(r1) addi r3,r4,#164 lw r1,172(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L110 nop ; not filled. lw r1,168(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,168(r4) sw 4(r1),r8 lw r2,172(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L110: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 172(r4),r5 sw 168(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L116 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L115 nop ; not filled. L116: addi r29,r29,#-16 lhi r8,((LC5)>>16)&0xffff addui r8,r8,(LC5)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L115: lhi r7,((_zombieQueue)>>16)&0xffff addui r7,r7,(_zombieQueue)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs)>>16)&0xffff addui r5,r5,(_freepcbs)&0xffff L117: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L118 nop ; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L124 nop ; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L123 nop ; not filled. L124: addi r29,r29,#-8 lhi r8,((LC6)>>16)&0xffff addui r8,r8,(LC6)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop ; not filled. addi r29,r29,#8 L123: addi r31,r4,#164 lw r1,172(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L126 nop ; not filled. lw r1,168(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,168(r4) sw 4(r1),r8 lw r2,172(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L126: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 172(r4),r5 sw 168(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 lw r3,160(r4) addi r2,r0,#0 slt r1,r2,r3 beqz r1,L144 nop ; not filled. L134: addi r29,r29,#-8 sw (r29),r4 sw 4(r29),r2 jal _MemoryFreeSharedPte nop ; not filled. addi r29,r29,#8 addi r2,r2,#1 slt r1,r2,r3 bnez r1,L134 nop ; not filled. addi r2,r0,#0 L144: lw r1,160(r4) slt r1,r2,r1 beqz r1,L137 nop ; not filled. add r3,r0,r4 L139: addi r29,r29,#-8 lw r8,96(r3) sw (r29),r8 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,160(r4) slt r1,r2,r1 bnez r1,L139 nop ; not filled. L137: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L117 nop ; not filled. L118: addi r29,r29,#-8 lhi r1,((_processQuantum)>>16)&0xffff addui r1,r1,(_processQuantum)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L143 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L142 nop ; not filled. L143: addi r29,r29,#-8 lhi r8,((LC7)>>16)&0xffff addui r8,r8,(LC7)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L142: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9: .ascii "%s: %s\n\000" .align 2 LC10: .ascii "ProcessSuspend\000" .align 2 LC11: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L147 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L146 nop ; not filled. L147: addi r29,r29,#-16 lhi r4,((LC8)>>16)&0xffff addui r4,r4,(LC8)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L146: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L149 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC10)>>16)&0xffff addui r1,r1,(LC10)&0xffff sw 4(r29),r1 lhi r4,((LC11)>>16)&0xffff addui r4,r4,(LC11)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L149: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#164 lw r1,172(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L152 nop ; not filled. lw r1,168(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,168(r3) sw 4(r1),r4 lw r2,172(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L152: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue)>>16)&0xffff addui r2,r2,(_waitQueue)&0xffff lw r1,4(r2) sw 172(r3),r2 sw 168(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13: .ascii "ProcessWakeup\000" .align 2 LC14: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L158 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L157 nop ; not filled. L158: addi r29,r29,#-8 lhi r4,((LC12)>>16)&0xffff addui r4,r4,(LC12)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L157: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L160 nop ; not filled. addi r29,r29,#-16 lhi r4,((LC9)>>16)&0xffff addui r4,r4,(LC9)&0xffff sw (r29),r4 lhi r1,((LC13)>>16)&0xffff addui r1,r1,(LC13)&0xffff sw 4(r29),r1 lhi r4,((LC14)>>16)&0xffff addui r4,r4,(LC14)&0xffff sw 8(r29),r4 jal _printf nop ; not filled. addi r29,r29,#16 L160: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#164 lw r1,172(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L163 nop ; not filled. lw r1,168(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,168(r3) sw 4(r1),r4 lw r2,172(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L163: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue)>>16)&0xffff addui r2,r2,(_runQueue)&0xffff lw r1,4(r2) sw 172(r3),r2 sw 168(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L169 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L168 nop ; not filled. L169: addi r29,r29,#-8 lhi r4,((LC15)>>16)&0xffff addui r4,r4,(LC15)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L168: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#164 lw r1,172(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L172 nop ; not filled. lw r1,168(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,168(r3) sw 4(r1),r4 lw r2,172(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L172: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue)>>16)&0xffff addui r2,r2,(_zombieQueue)&0xffff sw 172(r3),r2 sw 168(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L176 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L175 nop ; not filled. L176: addi r29,r29,#-8 lhi r4,((LC16)>>16)&0xffff addui r4,r4,(LC16)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L175: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 LC17: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26: .ascii "About to load %s\n\000" .align 2 LC27: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#728 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r7,(r30) lw r11,4(r30) lw r10,8(r30) lw r4,12(r30) addi r12,r0,#0 sw -680(r30),r12 addi r29,r29,#-8 addi r12,r0,#15 sw (r29),r12 jal _SetIntrs nop ; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#73 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L181 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L180 nop ; not filled. L181: addi r29,r29,#-8 lhi r12,((LC17)>>16)&0xffff addui r12,r12,(LC17)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L180: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L183 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L182 nop ; not filled. L183: addi r29,r29,#-24 lhi r12,((LC18)>>16)&0xffff addui r12,r12,(LC18)&0xffff sw (r29),r12 sw 4(r29),r7 sw 8(r29),r11 sw 12(r29),r10 sw 16(r29),r4 jal _printf nop ; not filled. addi r29,r29,#24 L182: lhi r2,((_freepcbs)>>16)&0xffff addui r2,r2,(_freepcbs)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L184 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC19)>>16)&0xffff addui r12,r12,(LC19)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L184: lw r8,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188 nop ; not filled. L189: addi r29,r29,#-8 lhi r12,((LC20)>>16)&0xffff addui r12,r12,(LC20)&0xffff sw (r29),r12 sw 4(r29),r8 jal _printf nop ; not filled. addi r29,r29,#8 L188: lw r1,8(r8) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L191 nop ; not filled. lw r1,4(r8) lw r12,(r8) sw (r1),r12 lw r1,(r8) lw r12,4(r8) sw 4(r1),r12 lw r2,8(r8) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L191: addi r12,r0,#0 sw (r8),r12 lw r5,12(r8) lw r1,12(r5) addi r12,r0,#-64 and r1,r1,r12 ori r1,r1,#2 sw 12(r5),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#73 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L194 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L193 nop ; not filled. L194: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r12,((LC21)>>16)&0xffff addui r12,r12,(LC21)&0xffff sw (r29),r12 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L193: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#73 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L197 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L196 nop ; not filled. L197: jal _CurrentIntrs nop ; not filled. addi r29,r29,#-8 lhi r12,((LC22)>>16)&0xffff addui r12,r12,(LC22)&0xffff sw (r29),r12 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L196: addi r29,r29,#-8 addi r1,r5,#16 sw (r29),r1 sw 4(r29),r10 jal _dstrcpy nop ; not filled. addi r12,r0,#1 sw 160(r5),r12 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L198 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC23)>>16)&0xffff addui r12,r12,(LC23)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L198: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop ; not filled. sw 96(r5),r1 jal _MemoryAllocPage nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L199 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC24)>>16)&0xffff addui r12,r12,(LC24)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L199: slli r1,r2,#0x10 sw 8(r5),r1 ori r6,r1,#65164 sw 4(r5),r6 sw (r5),r6 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L201 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L200 nop ; not filled. L201: addi r29,r29,#-24 lhi r12,((LC25)>>16)&0xffff addui r12,r12,(LC25)&0xffff sw (r29),r12 sw 4(r29),r5 lw r12,8(r5) sw 8(r29),r12 lw r12,96(r5) sw 12(r29),r12 lw r1,160(r5) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 L200: addi r12,r0,#0 sw 40(r6),r12 addi r1,r5,#96 sw 312(r6),r1 lw r12,160(r5) sw 316(r6),r12 lhi r1,#16 addui r1,r1,#16 sw 320(r6),r1 snei r1,r4,#0 beqz r1,L202 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L204 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L203 nop ; not filled. L204: addi r29,r29,#-8 lhi r12,((LC26)>>16)&0xffff addui r12,r12,(LC26)&0xffff sw (r29),r12 sw 4(r29),r10 jal _printf nop ; not filled. addi r29,r29,#8 L203: addi r29,r29,#-24 sw (r29),r10 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r7,r0,r1 addi r29,r29,#24 slti r1,r7,#0 beqz r1,L205 nop ; not filled. lhi r3,((_freepcbs)>>16)&0xffff addui r3,r3,(_freepcbs)&0xffff addi r2,r5,#164 lw r1,4(r3) sw 172(r5),r3 sw 168(r5),r1 lw r12,(r1) sw (r2),r12 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r3,160(r5) addi r2,r0,#0 slt r1,r2,r3 beqz r1,L248 nop ; not filled. L213: addi r29,r29,#-8 sw (r29),r5 sw 4(r29),r2 jal _MemoryFreeSharedPte nop ; not filled. addi r29,r29,#8 addi r2,r2,#1 slt r1,r2,r3 bnez r1,L213 nop ; not filled. addi r2,r0,#0 L248: lw r1,160(r5) slt r1,r2,r1 beqz r1,L216 nop ; not filled. add r3,r0,r5 L218: addi r29,r29,#-8 lw r12,96(r3) sw (r29),r12 jal _MemoryFreePte nop ; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,160(r5) slt r1,r2,r1 bnez r1,L218 nop ; not filled. L216: addi r29,r29,#-8 lhu r1,8(r5) sw (r29),r1 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 lw r1,12(r5) addi r12,r0,#-64 and r1,r1,r12 ori r1,r1,#1 sw 12(r5),r1 addi r1,r0,#-1 j L247 nop ; not filled. L205: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L222 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L221 nop ; not filled. L222: addi r29,r29,#-16 lhi r12,((LC27)>>16)&0xffff addui r12,r12,(LC27)&0xffff sw (r29),r12 sw 4(r29),r10 lw r12,-660(r30) sw 8(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 L221: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L224 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L223 nop ; not filled. L224: addi r29,r29,#-16 lhi r12,((LC28)>>16)&0xffff addui r12,r12,(LC28)&0xffff sw (r29),r12 sw 4(r29),r10 lw r12,-664(r30) sw 8(r29),r12 lw r12,-668(r30) sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 L223: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L226 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L225 nop ; not filled. L226: addi r29,r29,#-16 lhi r12,((LC29)>>16)&0xffff addui r12,r12,(LC29)&0xffff sw (r29),r12 sw 4(r29),r10 lw r12,-672(r30) sw 8(r29),r12 lw r12,-676(r30) sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 L225: addi r3,r30,#-112 addi r9,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L227: addi r29,r29,#-16 sw (r29),r7 sw 4(r29),r3 sw 8(r29),r9 addi r12,r0,#100 sw 12(r29),r12 jal _ProcessGetFromFile nop ; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L228 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L231 nop ; not filled. addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L230 nop ; not filled. L231: addi r29,r29,#-16 lhi r12,((LC30)>>16)&0xffff addui r12,r12,(LC30)&0xffff sw (r29),r12 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 L230: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. addi r29,r29,#16 j L227 nop ; not filled. L228: addi r29,r29,#-8 sw (r29),r7 jal _FsClose nop ; not filled. addi r12,r0,#256 sw 300(r6),r12 addui r2,r0,#64512 sw 156(r6),r2 addi r29,r29,#-8 sw (r29),r5 sw 4(r29),r11 lw r12,156(r6) sw 8(r29),r12 addi r12,r0,#992 sw 12(r29),r12 jal _MemoryCopySystemToUser nop ; not filled. sw (r29),r11 jal _get_argument nop ; not filled. add r1,r1,r2 sw -648(r30),r1 addi r4,r0,#3 addi r29,r29,#16 add r7,r0,r2 addi r2,r30,#4 L232: addi r29,r29,#-8 addi r12,r0,#0 sw (r29),r12 jal _get_argument nop ; not filled. add r3,r0,r1 add r1,r3,r7 sw -648(r2),r1 addi r29,r29,#8 snei r1,r3,#0 beqz r1,L233 nop ; not filled. addi r2,r2,#4 addi r4,r4,#1 j L232 nop ; not filled. L233: addi r1,r4,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r7,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r5 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r4,#0x2 lw r1,156(r6) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop ; not filled. lw r1,156(r6) sub r1,r1,r2 sw 156(r6),r1 lw r12,-660(r30) sw 296(r6),r12 lw r1,12(r5) ori r1,r1,#512 sw 12(r5),r1 addi r29,r29,#16 j L236 nop ; not filled. L202: lhi r12,((_ProcessExit)>>16)&0xffff addui r12,r12,(_ProcessExit)&0xffff sw 164(r6),r12 lw r1,8(r5) addui r1,r1,#65504 sw 156(r6),r1 sw (r1),r11 sw 296(r6),r7 addi r12,r0,#320 sw 300(r6),r12 lw r1,12(r5) ori r1,r1,#256 sw 12(r5),r1 L236: addi r29,r29,#-8 addi r12,r0,#15 sw (r29),r12 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r3,((_runQueue)>>16)&0xffff addui r3,r3,(_runQueue)&0xffff lw r2,4(r3) sw 8(r8),r3 sw 4(r8),r2 lw r12,(r2) sw (r8),r12 sw (r2),r8 lw r2,(r8) sw 4(r2),r8 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L242 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L244 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L243 nop ; not filled. L244: addi r29,r29,#-16 lhi r12,((LC31)>>16)&0xffff addui r12,r12,(LC31)&0xffff sw (r29),r12 sw 4(r29),r5 lw r12,(r5) sw 8(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 L243: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r5 L242: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L246 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L245 nop ; not filled. L246: addi r29,r29,#-8 lhi r12,((LC32)>>16)&0xffff addui r12,r12,(LC32)&0xffff sw (r29),r12 sw 4(r29),r10 jal _printf nop ; not filled. addi r29,r29,#8 L245: lhi r12,((_pcbs)>>16)&0xffff addui r12,r12,(_pcbs)&0xffff sub r2,r5,r12 lhi r1,#-23302 addui r1,r1,#20389 movi2fp f0,r2 movi2fp f1,r1 mult f0,f0,f1 movfp2i r1,f0 srai r1,r1,#0x2 L247: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34: .ascii "File descriptor is now %d.\n\000" .align 2 LC35: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36: .ascii "start:\000" .align 2 LC37: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#168 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop ; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L257 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L259 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266 nop ; not filled. L259: addi r29,r29,#-16 lhi r12,((LC33)>>16)&0xffff addui r12,r12,(LC33)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 j L266 nop ; not filled. L257: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L261 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L260 nop ; not filled. L261: addi r29,r29,#-8 lhi r12,((LC34)>>16)&0xffff addui r12,r12,(LC34)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop ; not filled. addi r29,r29,#8 L260: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L262 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L264 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L263 nop ; not filled. L264: addi r29,r29,#-16 lhi r12,((LC35)>>16)&0xffff addui r12,r12,(LC35)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop ; not filled. addi r29,r29,#16 L263: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop ; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L256 nop ; not filled. L262: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36)>>16)&0xffff addui r1,r1,(LC36)&0xffff sw 4(r29),r1 jal _dstrstr nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266 nop ; not filled. L267: addi r29,r29,#-8 lhi r12,((LC37)>>16)&0xffff addui r12,r12,(LC37)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop ; not filled. addi r29,r29,#8 L266: addi r1,r0,#-1 j L256 nop ; not filled. L265: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop ; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r1,r0,r3 addi r29,r29,#16 L256: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39: .ascii " terminated at %d.\n\000" .align 2 LC40: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41: .ascii "New address is 0x%x.\n\000" .align 2 LC42: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#272 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop ; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L270 nop ; not filled. addi r2,r0,#200 L270: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop ; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L271 nop ; not filled. addi r1,r0,#0 j L325 nop ; not filled. L271: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L273 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L272 nop ; not filled. L273: addi r29,r29,#-16 lhi r12,((LC38)>>16)&0xffff addui r12,r12,(LC38)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop ; not filled. addi r29,r29,#16 L272: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L328 nop ; not filled. L274: addi r2,r2,#-1 addi r5,r5,#-1 L328: lbu r1,(r2) snei r1,r1,#10 bnez r1,L274 nop ; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L279 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L278 nop ; not filled. L279: addi r29,r29,#-8 lhi r12,((LC39)>>16)&0xffff addui r12,r12,(LC39)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L278: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L280 nop ; not filled. L281: addi r29,r29,#-8 lhi r12,((LC40)>>16)&0xffff addui r12,r12,(LC40)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L280: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L282: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L283 nop ; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L283 nop ; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L327 nop ; not filled. sgti r1,r5,#0 bnez r1,L283 nop ; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop ; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L289 nop ; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L286 nop ; not filled. L289: addi r29,r29,#-8 lhi r12,((LC41)>>16)&0xffff addui r12,r12,(LC41)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L286: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L283 nop ; not filled. L327: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L293: lw r1,-220(r30) j L329 nop ; not filled. L296: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L329: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L296 nop ; not filled. seqi r1,r31,#9 bnez r1,L296 nop ; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L298 nop ; not filled. addi r1,r2,#1 sw -220(r30),r1 j L282 nop ; not filled. L298: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L304 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L304 nop ; not filled. snei r1,r3,#65 bnez r1,L303 nop ; not filled. L304: addi r2,r0,#1 L303: snei r1,r2,#0 beqz r1,L282 nop ; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L307 nop ; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L307 nop ; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L306 nop ; not filled. L307: addi r3,r0,#1 L306: snei r1,r3,#0 beqz r1,L282 nop ; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L309 nop ; not filled. add r4,r0,r31 j L308 nop ; not filled. L309: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L311 nop ; not filled. addi r4,r2,#-87 j L308 nop ; not filled. L311: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L308 nop ; not filled. addi r4,r3,#-55 L308: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L316 nop ; not filled. add r2,r0,r31 j L315 nop ; not filled. L316: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L318 nop ; not filled. addi r2,r2,#-87 j L315 nop ; not filled. L318: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L315 nop ; not filled. addi r2,r3,#-55 L315: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L293 nop ; not filled. L283: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L324 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L323 nop ; not filled. L324: addi r29,r29,#-16 lhi r12,((LC42)>>16)&0xffff addui r12,r12,(LC42)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop ; not filled. addi r29,r29,#16 L323: add r1,r0,r5 L325: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb60: .space 180 .align 2 LC43: .ascii "Got %d arguments.\n\000" .align 2 LC44: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC45: .ascii "Argument count is %d.\n\000" .align 2 LC46: .ascii "Argument %d is %s.\n\000" .align 2 LC47: .ascii "Converted %s to %d=%s\n\000" _buf61: .space 200 .align 2 LC48: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC49: .ascii "Option %s not recognized.\n\000" .align 2 LC50: .ascii "About to initialize queues.\n\000" .align 2 LC51: .ascii "After initializing queues.\n\000" .align 2 LC52: .ascii "After initializing memory.\n\000" .align 2 LC53: .ascii "After initializing processes.\n\000" .align 2 LC54: .ascii "After initializing shared memory.\n\000" .align 2 LC55: .ascii "After initializing synchronization tools.\n\000" .align 2 LC56: .ascii "After initializing keyboard.\n\000" .align 2 LC57: .ascii "vm\000" .align 2 LC58: .ascii "VM Descriptor is %d\n\000" .align 2 LC59: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC60: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#200 ; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop ; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb (r1),r21 addi r29,r29,#-8 lhi r21,((LC43)>>16)&0xffff addui r21,r21,(LC43)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. jal _MemoryGetSize nop ; not filled. addi r29,r29,#-8 lhi r21,((LC44)>>16)&0xffff addui r21,r21,(LC44)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop ; not filled. lhi r21,((LC45)>>16)&0xffff addui r21,r21,(LC45)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop ; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L332 nop ; not filled. add r2,r0,r20 L334: addi r29,r29,#-16 lhi r21,((LC46)>>16)&0xffff addui r21,r21,(LC46)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop ; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L334 nop ; not filled. L332: jal _FsModuleInit nop ; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L337 nop ; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf61)>>16)&0xffff addui r15,r15,(_buf61)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L339: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L338 nop ; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L344 nop ; not filled. sgti r1,r2,#102 bnez r1,L356 nop ; not filled. seqi r1,r2,#68 beqz r1,L354 nop ; not filled. j L342 nop ; not filled. L356: seqi r1,r2,#105 bnez r1,L343 nop ; not filled. seqi r1,r2,#117 beqz r1,L354 nop ; not filled. j L353 nop ; not filled. L342: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop ; not filled. j L391 nop ; not filled. L343: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop ; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop ; not filled. lhi r21,((LC47)>>16)&0xffff addui r21,r21,(LC47)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop ; not filled. addi r29,r29,#16 j L341 nop ; not filled. L344: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop ; not filled. add r10,r0,r1 lhi r21,((LC27)>>16)&0xffff addui r21,r21,(LC27)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop ; not filled. lhi r21,((LC28)>>16)&0xffff addui r21,r21,(LC28)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop ; not filled. lhi r21,((LC29)>>16)&0xffff addui r21,r21,(LC29)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop ; not filled. addi r29,r29,#24 lhi r11,((_buf61+3)>>16)&0xffff addui r11,r11,(_buf61+3)&0xffff L345: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf61)>>16)&0xffff addui r21,r21,(_buf61)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop ; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L346 nop ; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L345 nop ; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L351: addi r29,r29,#-24 lhi r21,((LC48)>>16)&0xffff addui r21,r21,(LC48)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop ; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L351 nop ; not filled. j L345 nop ; not filled. L346: addi r29,r29,#-8 sw (r29),r10 jal _close nop ; not filled. j L391 nop ; not filled. L353: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L341 nop ; not filled. L354: addi r29,r29,#-8 lhi r21,((LC49)>>16)&0xffff addui r21,r21,(LC49)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop ; not filled. L391: addi r29,r29,#8 L341: snei r1,r16,#0 bnez r1,L337 nop ; not filled. L338: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L339 nop ; not filled. L337: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L360 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L359 nop ; not filled. L360: addi r29,r29,#-8 lhi r21,((LC50)>>16)&0xffff addui r21,r21,(LC50)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L359: jal _QueueModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L362 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L361 nop ; not filled. L362: addi r29,r29,#-8 lhi r21,((LC51)>>16)&0xffff addui r21,r21,(LC51)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L361: jal _MemoryModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L364 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L363 nop ; not filled. L364: addi r29,r29,#-8 lhi r21,((LC52)>>16)&0xffff addui r21,r21,(LC52)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L363: jal _ProcessModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L366 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L365 nop ; not filled. L366: addi r29,r29,#-8 lhi r21,((LC53)>>16)&0xffff addui r21,r21,(LC53)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L365: jal _ShareModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L368 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L367 nop ; not filled. L368: addi r29,r29,#-8 lhi r21,((LC54)>>16)&0xffff addui r21,r21,(LC54)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L367: jal _SynchModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L370 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L369 nop ; not filled. L370: addi r29,r29,#-8 lhi r21,((LC55)>>16)&0xffff addui r21,r21,(LC55)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L369: jal _KbdModuleInit nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L372 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L371 nop ; not filled. L372: addi r29,r29,#-8 lhi r21,((LC56)>>16)&0xffff addui r21,r21,(LC56)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L371: addi r2,r30,#-128 addi r3,r30,#-29 L376: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L376 nop ; not filled. addi r29,r29,#-8 lhi r21,((LC57)>>16)&0xffff addui r21,r21,(LC57)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop ; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L379 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L378 nop ; not filled. L379: addi r29,r29,#-8 lhi r21,((LC58)>>16)&0xffff addui r21,r21,(LC58)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop ; not filled. addi r29,r29,#8 L378: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop ; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop ; not filled. sw (r29),r9 jal _FsClose nop ; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L380 nop ; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L382 nop ; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L386: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L382 nop ; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L386 nop ; not filled. L382: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop ; not filled. addi r29,r29,#48 L380: jal _SysprocCreateProcesses nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387 nop ; not filled. L388: addi r29,r29,#-8 lhi r21,((LC59)>>16)&0xffff addui r21,r21,(LC59)&0xffff sw (r29),r21 jal _printf nop ; not filled. addi r29,r29,#8 L387: addi r29,r29,#-8 lhi r3,((_processQuantum)>>16)&0xffff addui r3,r3,(_processQuantum)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop ; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389 nop ; not filled. L390: addi r29,r29,#-8 lhi r21,((LC60)>>16)&0xffff addui r21,r21,(LC60)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop ; not filled. addi r29,r29,#8 L389: jal _intrreturn nop ; not filled. jal _exitsim nop ; not filled. jal _exit nop .endproc _main .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 lhi r1,#-23302 addui r1,r1,#20389 movi2fp f0,r2 movi2fp f1,r1 mult f0,f0,f1 movfp2i r1,f0 srai r1,r1,#0x2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs)>>16)&0xffff addui r31,r31,(_pcbs)&0xffff sub r2,r1,r31 lhi r1,#-23302 addui r1,r1,#20389 movi2fp f0,r2 movi2fp f1,r1 mult f0,f0,f1 movfp2i r1,f0 srai r1,r1,#0x2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .data .align 2 _str68: .space 4 .align 2 _location69: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L407 nop ; not filled. lhi r1,((_str68)>>16)&0xffff addui r1,r1,(_str68)&0xffff sw (r1),r2 lhi r1,((_location69)>>16)&0xffff addui r1,r1,(_location69)&0xffff addi r5,r0,#0 sw (r1),r5 L407: lhi r31,((_location69)>>16)&0xffff addui r31,r31,(_location69)&0xffff lw r3,(r31) lhi r1,((_str68)>>16)&0xffff addui r1,r1,(_str68)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L409 nop ; not filled. sgti r1,r3,#98 beqz r1,L408 nop ; not filled. L409: addi r1,r0,#0 j L416 nop ; not filled. L417: addi r1,r31,#1 sw (r2),r1 j L411 nop ; not filled. L408: slei r1,r3,#99 beqz r1,L411 nop ; not filled. add r4,r0,r2 add r2,r0,r31 L413: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L417 nop ; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L413 nop ; not filled. L411: add r1,r0,r3 L416: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1032 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420 nop ; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422: addi r2,r0,#0 add r3,r4,r5 L423: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423 nop ; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422 nop ; not filled. L420: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs: .space 12 .align 2 _runQueue: .space 12 .align 2 _waitQueue: .space 12 .align 2 _zombieQueue: .space 12 .align 2 _pcbs: .space 5760 .text .align 2 .proc _ProcessExit _ProcessExit: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage jal _exit nop ; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit
home/bshapir/cs314/project2/src/dlx.h
// // Definitions of flags and other things defined by the DLX processor. // #ifndef _dlx_h_ #define _dlx_h_ #define DLX_STATUS_INTRMASK 0x0f // up to 16 interrupt levels #define DLX_STATUS_FPTRUE 0x20 // Set if last FP comparison was true #define DLX_STATUS_SYSMODE 0x40 // Set if CPU is in system mode #define DLX_STATUS_PAGE_TABLE 0x100 // Set -> use a page table #define DLX_STATUS_TLB 0x200 // Set -> use a software-loaded TLB #endif // _dlx_h_
home/bshapir/cs314/project2/src/userprog2.lst
line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 238 4 ; Text size: 3280 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 55736167 .ascii "Usage: \000" 12 00002004 653a2000 13 00002008 .align 2 14 00002008 LC1_LF0: 15 00002008 2068616e .ascii " handle_str spage_str semaphore_str\n\000" 15 0000200c 646c655f 15 00002010 73747220 15 00002014 73706167 15 00002018 655f7374 15 0000201c 72207365 15 00002020 6d617068 15 00002024 6f72655f 15 00002028 7374720a 15 0000202c 00 16 0000202d .align 2 17 00002030 LC2_LF0: 18 00002030 436f756c .ascii "Could not map the virtual address to the memory, exiting...\n\000" 18 00002034 64206e6f 18 00002038 74206d61 18 0000203c 70207468 18 00002040 65207669 18 00002044 72747561 18 00002048 6c206164 18 0000204c 64726573 18 00002050 7320746f 18 00002054 20746865 18 00002058 206d656d 18 0000205c 6f72792c 18 00002060 20657869 18 00002064 74696e67 18 00002068 2e2e2e0a 18 0000206c 00 19 0000206d .align 2 20 00002070 LC3_LF0: 21 00002070 42616420 .ascii "Bad semaphore spage.... Exiting!\n\000" 21 00002074 73656d61 21 00002078 70686f72 21 0000207c 65207370 21 00002080 6167652e 21 00002084 2e2e2e20 21 00002088 45786974 21 0000208c 696e6721 21 00002090 0a00 22 00002092 .align 2 23 00002094 LC4_LF0: 24 00002094 54686973 .ascii "This is one of the %d instances you created\n\000" 24 00002098 20697320 24 0000209c 6f6e6520 24 000020a0 6f662074 24 000020a4 68652025 24 000020a8 6420696e 24 000020ac 7374616e 24 000020b0 63657320 24 000020b4 796f7520 24 000020b8 63726561 24 000020bc 7465640a 24 000020c0 00 25 000020c1 .align 2 26 000020c4 LC5_LF0: 27 000020c4 54686520 .ascii "The shared character is %c\n\000" 27 000020c8 73686172 27 000020cc 65642063 27 000020d0 68617261 27 000020d4 63746572 27 000020d8 20697320 27 000020dc 25630a00 28 000020e0 .align 2 29 000020e0 LC6_LF0: 30 000020e0 4d792050 .ascii "My PID is %d\n\000" 30 000020e4 49442069 30 000020e8 73202564 30 000020ec 0a00 31 000020ee .text 32 00001000 .align 2 33 00001000 .proc _main 34 00001000 .global _main 35 00001000 _main: 36 ; Function 'main'; 0 bytes of locals, 0 regs to save. 37 00001000 afbefffc sw -4(r29),r30; push fp 38 00001004 001df020 add r30,r0,r29; fp = sp 39 00001008 afbffff8 sw -8(r29),r31; push ret addr 40 0000100c 2fbd0008 subui r29,r29,#8; alloc local storage 41 00001010 8fc20000 lw r2,(r30) 42 00001014 8fc30004 lw r3,4(r30) 43 00001018 0c000cac jal ___main 44 0000101c 54000000 nop; not filled. 45 00001020 64410004 snei r1,r2,#4 46 00001024 10200048 beqz r1,L2_LF0 47 00001028 54000000 nop; not filled. 48 0000102c 23bdfff8 addi r29,r29,#-8 49 00001030 3c050000 lhi r5,((LC0_LF0)>>16)&0xffff 50 00001034 24a52000 addui r5,r5,(LC0_LF0)&0xffff 51 00001038 afa50000 sw (r29),r5 52 0000103c 0c0001cc jal _Printf 53 00001040 54000000 nop; not filled. 54 00001044 8c630000 lw r3,(r3) 55 00001048 afa30000 sw (r29),r3 56 0000104c 0c0001bc jal _Printf 57 00001050 54000000 nop; not filled. 58 00001054 3c050000 lhi r5,((LC1_LF0)>>16)&0xffff 59 00001058 24a52008 addui r5,r5,(LC1_LF0)&0xffff 60 0000105c afa50000 sw (r29),r5 61 00001060 0c0001a8 jal _Printf 62 00001064 54000000 nop; not filled. 63 00001068 0c000c50 jal _exit 64 0000106c 54000000 nop; not filled. 65 00001070 L2_LF0: 66 00001070 23bdfff0 addi r29,r29,#-16 67 00001074 8c650004 lw r5,4(r3) 68 00001078 afa50000 sw (r29),r5 69 0000107c 20050000 addi r5,r0,#0 70 00001080 afa50004 sw 4(r29),r5 71 00001084 2005000a addi r5,r0,#10 72 00001088 afa50008 sw 8(r29),r5 73 0000108c 0c00094c jal _dstrtol 74 00001090 54000000 nop; not filled. 75 00001094 00011020 add r2,r0,r1 76 00001098 8c650008 lw r5,8(r3) 77 0000109c afa50000 sw (r29),r5 78 000010a0 20050000 addi r5,r0,#0 79 000010a4 afa50004 sw 4(r29),r5 80 000010a8 2005000a addi r5,r0,#10 81 000010ac afa50008 sw 8(r29),r5 82 000010b0 0c000928 jal _dstrtol 83 000010b4 54000000 nop; not filled. 84 000010b8 00012020 add r4,r0,r1 85 000010bc 8c630008 lw r3,8(r3) 86 000010c0 afa30000 sw (r29),r3 87 000010c4 20050000 addi r5,r0,#0 88 000010c8 afa50004 sw 4(r29),r5 89 000010cc 2005000a addi r5,r0,#10 90 000010d0 afa50008 sw 8(r29),r5 91 000010d4 0c000904 jal _dstrtol 92 000010d8 54000000 nop; not filled. 93 000010dc afa20000 sw (r29),r2 94 000010e0 0c000158 jal _shmat 95 000010e4 54000000 nop; not filled. 96 000010e8 00011020 add r2,r0,r1 97 000010ec 23bd0010 addi r29,r29,#16 98 000010f0 64410000 snei r1,r2,#0 99 000010f4 14200024 bnez r1,L3_LF0 100 000010f8 54000000 nop; not filled. 101 000010fc 23bdfff8 addi r29,r29,#-8 102 00001100 3c050000 lhi r5,((LC2_LF0)>>16)&0xffff 103 00001104 24a52030 addui r5,r5,(LC2_LF0)&0xffff 104 00001108 afa50000 sw (r29),r5 105 0000110c 0c0000fc jal _Printf 106 00001110 54000000 nop; not filled. 107 00001114 0c000ba4 jal _exit 108 00001118 54000000 nop; not filled. 109 0000111c L3_LF0: 110 0000111c 23bdfff8 addi r29,r29,#-8 111 00001120 afa40000 sw (r29),r4 112 00001124 0c000138 jal _sem_signal 113 00001128 54000000 nop; not filled. 114 0000112c 23bd0008 addi r29,r29,#8 115 00001130 64210000 snei r1,r1,#0 116 00001134 10200024 beqz r1,L4_LF0 117 00001138 54000000 nop; not filled. 118 0000113c 23bdfff8 addi r29,r29,#-8 119 00001140 3c050000 lhi r5,((LC3_LF0)>>16)&0xffff 120 00001144 24a52070 addui r5,r5,(LC3_LF0)&0xffff 121 00001148 afa50000 sw (r29),r5 122 0000114c 0c0000bc jal _Printf 123 00001150 54000000 nop; not filled. 124 00001154 0c000b64 jal _exit 125 00001158 54000000 nop; not filled. 126 0000115c L4_LF0: 127 0000115c 23bdfff8 addi r29,r29,#-8 128 00001160 3c050000 lhi r5,((LC4_LF0)>>16)&0xffff 129 00001164 24a52094 addui r5,r5,(LC4_LF0)&0xffff 130 00001168 afa50000 sw (r29),r5 131 0000116c 8c410000 lw r1,(r2) 132 00001170 afa10004 sw 4(r29),r1 133 00001174 0c000094 jal _Printf 134 00001178 54000000 nop; not filled. 135 0000117c 3c050000 lhi r5,((LC5_LF0)>>16)&0xffff 136 00001180 24a520c4 addui r5,r5,(LC5_LF0)&0xffff 137 00001184 afa50000 sw (r29),r5 138 00001188 90410004 lbu r1,4(r2) 139 0000118c afa10004 sw 4(r29),r1 140 00001190 0c000078 jal _Printf 141 00001194 54000000 nop; not filled. 142 00001198 0c00007c jal _getpid 143 0000119c 54000000 nop; not filled. 144 000011a0 3c050000 lhi r5,((LC6_LF0)>>16)&0xffff 145 000011a4 24a520e0 addui r5,r5,(LC6_LF0)&0xffff 146 000011a8 afa50000 sw (r29),r5 147 000011ac afa10004 sw 4(r29),r1 148 000011b0 0c000058 jal _Printf 149 000011b4 54000000 nop; not filled. 150 000011b8 23bd0008 addi r29,r29,#8 151 000011bc 0c000afc jal _exit 152 000011c0 54000000 nop 153 000011c4 .endproc _main 154 ;;; 155 ;;; Stub functions for DLX traps. 156 ;;; 157 ;;; Ethan L. Miller, 1999. Released to the public domain. 158 ;;; 159 ;;; The traps such as Open and Close 160 ;;; (note the capital letters) are for use by user programs. The traps 161 ;;; with names such as open and close (lower case) are for use by the OS. 162 ;;; 165 000011c4 .align 2 167 ;;; The following are the traps to be used by user-level programs 168 ;;; 170 000011c4 .align 2 171 000011c4 .proc _Open 172 000011c4 .global _Open 173 000011c4 _Open: 174 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 175 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 176 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 177 000011c4 44000213 trap #0x213 178 000011c8 4be00000 jr r31 179 000011cc 54000000 nop 180 000011d0 .endproc _Open 182 000011d0 .proc _Close 183 000011d0 .global _Close 184 000011d0 _Close: 185 000011d0 44000214 trap #0x214 186 000011d4 4be00000 jr r31 187 000011d8 54000000 nop 188 000011dc .endproc _Close 190 000011dc .proc _Read 191 000011dc .global _Read 192 000011dc _Read: 193 000011dc 44000210 trap #0x210 194 000011e0 4be00000 jr r31 195 000011e4 54000000 nop 196 000011e8 .endproc _Read 198 000011e8 .proc _Write 199 000011e8 .global _Write 200 000011e8 _Write: 201 000011e8 44000211 trap #0x211 202 000011ec 4be00000 jr r31 203 000011f0 54000000 nop 204 000011f4 .endproc _Write 206 000011f4 .proc _Lseek 207 000011f4 .global _Lseek 208 000011f4 _Lseek: 209 000011f4 44000212 trap #0x212 210 000011f8 4be00000 jr r31 211 000011fc 54000000 nop 212 00001200 .endproc _Lseek 214 00001200 .proc _Putchar 215 00001200 .global _Putchar 216 00001200 _Putchar: 217 00001200 44000280 trap #0x280 218 00001204 4be00000 jr r31 219 00001208 54000000 nop 220 0000120c .endproc _Putchar 222 0000120c .proc _Printf 223 0000120c .global _Printf 224 0000120c _Printf: 225 0000120c 44000201 trap #0x201 226 00001210 4be00000 jr r31 227 00001214 54000000 nop 228 00001218 .endproc _Printf 230 00001218 .proc _getpid 231 00001218 .global _getpid 232 00001218 _getpid: 233 00001218 44000431 trap #0x431 234 0000121c 4be00000 jr r31 235 00001220 54000000 nop 236 00001224 .endproc _getpid 238 00001224 .proc _process_create 239 00001224 .global _process_create 240 00001224 _process_create: 241 00001224 44000432 trap #0x432 242 00001228 4be00000 jr r31 243 0000122c 54000000 nop 244 00001230 .endproc _process_create 246 00001230 .proc _shmget 247 00001230 .global _shmget 248 00001230 _shmget: 249 00001230 44000440 trap #0x440 250 00001234 4be00000 jr r31 251 00001238 54000000 nop 252 0000123c .endproc _shmget 254 0000123c .proc _shmat 255 0000123c .global _shmat 256 0000123c _shmat: 257 0000123c 44000441 trap #0x441 258 00001240 4be00000 jr r31 259 00001244 54000000 nop 260 00001248 .endproc _shmat 262 00001248 .proc _sem_create 263 00001248 .global _sem_create 264 00001248 _sem_create: 265 00001248 44000450 trap #0x450 266 0000124c 4be00000 jr r31 267 00001250 54000000 nop 268 00001254 .endproc _sem_create 270 00001254 .proc _sem_wait 271 00001254 .global _sem_wait 272 00001254 _sem_wait: 273 00001254 44000451 trap #0x451 274 00001258 4be00000 jr r31 275 0000125c 54000000 nop 276 00001260 .endproc _sem_wait 278 00001260 .proc _sem_signal 279 00001260 .global _sem_signal 280 00001260 _sem_signal: 281 00001260 44000452 trap #0x452 282 00001264 4be00000 jr r31 283 00001268 54000000 nop 284 0000126c .endproc _sem_signal 286 0000126c .proc _lock_create 287 0000126c .global _lock_create 288 0000126c _lock_create: 289 0000126c 44000453 trap #0x453 290 00001270 4be00000 jr r31 291 00001274 54000000 nop 292 00001278 .endproc _lock_create 294 00001278 .proc _lock_acquire 295 00001278 .global _lock_acquire 296 00001278 _lock_acquire: 297 00001278 44000454 trap #0x454 298 0000127c 4be00000 jr r31 299 00001280 54000000 nop 300 00001284 .endproc _lock_acquire 302 00001284 .proc _lock_release 303 00001284 .global _lock_release 304 00001284 _lock_release: 305 00001284 44000455 trap #0x455 306 00001288 4be00000 jr r31 307 0000128c 54000000 nop 308 00001290 .endproc _lock_release 310 00001290 .proc _cond_create 311 00001290 .global _cond_create 312 00001290 _cond_create: 313 00001290 44000456 trap #0x456 314 00001294 4be00000 jr r31 315 00001298 54000000 nop 316 0000129c .endproc _cond_create 318 0000129c .proc _cond_wait 319 0000129c .global _cond_wait 320 0000129c _cond_wait: 321 0000129c 44000457 trap #0x457 322 000012a0 4be00000 jr r31 323 000012a4 54000000 nop 324 000012a8 .endproc _cond_wait 326 000012a8 .proc _cond_signal 327 000012a8 .global _cond_signal 328 000012a8 _cond_signal: 329 000012a8 44000458 trap #0x458 330 000012ac 4be00000 jr r31 331 000012b0 54000000 nop 332 000012b4 .endproc _cond_signal 334 000012b4 .proc _cond_broadcast 335 000012b4 .global _cond_broadcast 336 000012b4 _cond_broadcast: 337 000012b4 44000459 trap #0x459 338 000012b8 4be00000 jr r31 339 000012bc 54000000 nop 340 000012c0 .endproc _cond_broadcast 342 ; Compiled by GCC 344 000012c0 .align 2 345 000012c0 .proc _isspace 346 000012c0 .global _isspace 347 000012c0 _isspace: 348 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 349 000012c0 afbefffc sw -4(r29),r30; push fp 350 000012c4 001df020 add r30,r0,r29; fp = sp 351 000012c8 afbffff8 sw -8(r29),r31; push ret addr 352 000012cc 2fbd0010 subui r29,r29,#16; alloc local storage 353 000012d0 afa20000 sw 0(r29),r2 354 000012d4 83c20003 lb r2,3(r30) 355 000012d8 201f0000 addi r31,r0,#0 356 000012dc 304100ff andi r1,r2,#0x00ff 357 000012e0 60210020 seqi r1,r1,#32 358 000012e4 14200018 bnez r1,L6_LF2 359 000012e8 54000000 nop; not filled. 360 000012ec 2041fff7 addi r1,r2,#-9 361 000012f0 302100ff andi r1,r1,#0x00ff 362 000012f4 70210001 sleui r1,r1,#1 363 000012f8 10200008 beqz r1,L5_LF2 364 000012fc 54000000 nop; not filled. 365 00001300 L6_LF2: 366 00001300 201f0001 addi r31,r0,#1 367 00001304 L5_LF2: 368 00001304 001f0820 add r1,r0,r31 369 00001308 8fa20000 lw r2,0(r29) 370 0000130c 8fdffff8 lw r31,-8(r30) 371 00001310 001ee820 add r29,r0,r30 372 00001314 8fdefffc lw r30,-4(r30) 373 00001318 4be00000 jr r31 374 0000131c 54000000 nop 375 00001320 .endproc _isspace 376 00001320 .align 2 377 00001320 .proc _isxdigit 378 00001320 .global _isxdigit 379 00001320 _isxdigit: 380 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 381 00001320 afbefffc sw -4(r29),r30; push fp 382 00001324 001df020 add r30,r0,r29; fp = sp 383 00001328 afbffff8 sw -8(r29),r31; push ret addr 384 0000132c 2fbd0010 subui r29,r29,#16; alloc local storage 385 00001330 afa20000 sw 0(r29),r2 386 00001334 83df0003 lb r31,3(r30) 387 00001338 20020000 addi r2,r0,#0 388 0000133c 23e1ffd0 addi r1,r31,#-48 389 00001340 302100ff andi r1,r1,#0x00ff 390 00001344 70210009 sleui r1,r1,#9 391 00001348 14200028 bnez r1,L12_LF2 392 0000134c 54000000 nop; not filled. 393 00001350 23e1ff9f addi r1,r31,#-97 394 00001354 302100ff andi r1,r1,#0x00ff 395 00001358 70210005 sleui r1,r1,#5 396 0000135c 14200014 bnez r1,L12_LF2 397 00001360 54000000 nop; not filled. 398 00001364 33e100ff andi r1,r31,#0x00ff 399 00001368 64210041 snei r1,r1,#65 400 0000136c 14200008 bnez r1,L11_LF2 401 00001370 54000000 nop; not filled. 402 00001374 L12_LF2: 403 00001374 20020001 addi r2,r0,#1 404 00001378 L11_LF2: 405 00001378 00020820 add r1,r0,r2 406 0000137c 8fa20000 lw r2,0(r29) 407 00001380 8fdffff8 lw r31,-8(r30) 408 00001384 001ee820 add r29,r0,r30 409 00001388 8fdefffc lw r30,-4(r30) 410 0000138c 4be00000 jr r31 411 00001390 54000000 nop 412 00001394 .endproc _isxdigit 413 00001394 .align 2 414 00001394 .proc _dstrcpy 415 00001394 .global _dstrcpy 416 00001394 _dstrcpy: 417 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 418 00001394 afbefffc sw -4(r29),r30; push fp 419 00001398 001df020 add r30,r0,r29; fp = sp 420 0000139c afbffff8 sw -8(r29),r31; push ret addr 421 000013a0 2fbd0010 subui r29,r29,#16; alloc local storage 422 000013a4 afa20000 sw 0(r29),r2 423 000013a8 afa30004 sw 4(r29),r3 424 000013ac 8fdf0000 lw r31,(r30) 425 000013b0 8fc20004 lw r2,4(r30) 426 000013b4 001f1820 add r3,r0,r31 427 000013b8 L19_LF2: 428 000013b8 80410000 lb r1,(r2) 429 000013bc a3e10000 sb (r31),r1 430 000013c0 20420001 addi r2,r2,#1 431 000013c4 23ff0001 addi r31,r31,#1 432 000013c8 302100ff andi r1,r1,#0x00ff 433 000013cc 64210000 snei r1,r1,#0 434 000013d0 1420ffe4 bnez r1,L19_LF2 435 000013d4 54000000 nop; not filled. 436 000013d8 00030820 add r1,r0,r3 437 000013dc 8fa20000 lw r2,0(r29) 438 000013e0 8fa30004 lw r3,4(r29) 439 000013e4 8fdffff8 lw r31,-8(r30) 440 000013e8 001ee820 add r29,r0,r30 441 000013ec 8fdefffc lw r30,-4(r30) 442 000013f0 4be00000 jr r31 443 000013f4 54000000 nop 444 000013f8 .endproc _dstrcpy 445 000013f8 .align 2 446 000013f8 .proc _dstrncpy 447 000013f8 .global _dstrncpy 448 000013f8 _dstrncpy: 449 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 450 000013f8 afbefffc sw -4(r29),r30; push fp 451 000013fc 001df020 add r30,r0,r29; fp = sp 452 00001400 afbffff8 sw -8(r29),r31; push ret addr 453 00001404 2fbd0018 subui r29,r29,#24; alloc local storage 454 00001408 afa20000 sw 0(r29),r2 455 0000140c afa30004 sw 4(r29),r3 456 00001410 afa40008 sw 8(r29),r4 457 00001414 8fc20000 lw r2,(r30) 458 00001418 8fc30004 lw r3,4(r30) 459 0000141c 8fdf0008 lw r31,8(r30) 460 00001420 00022020 add r4,r0,r2 461 00001424 08000024 j L37_LF2 462 00001428 54000000 nop; not filled. 463 0000142c L34_LF2: 464 0000142c 80610000 lb r1,(r3) 465 00001430 a0410000 sb (r2),r1 466 00001434 20630001 addi r3,r3,#1 467 00001438 20420001 addi r2,r2,#1 468 0000143c 302100ff andi r1,r1,#0x00ff 469 00001440 64210000 snei r1,r1,#0 470 00001444 10200018 beqz r1,L32_LF2 471 00001448 54000000 nop; not filled. 472 0000144c L37_LF2: 473 0000144c 001f0820 add r1,r0,r31 474 00001450 23ffffff addi r31,r31,#-1 475 00001454 70210000 slei r1,r1,#0 476 00001458 1020ffd0 beqz r1,L34_LF2 477 0000145c 54000000 nop; not filled. 478 00001460 L32_LF2: 479 00001460 00040820 add r1,r0,r4 480 00001464 8fa20000 lw r2,0(r29) 481 00001468 8fa30004 lw r3,4(r29) 482 0000146c 8fa40008 lw r4,8(r29) 483 00001470 8fdffff8 lw r31,-8(r30) 484 00001474 001ee820 add r29,r0,r30 485 00001478 8fdefffc lw r30,-4(r30) 486 0000147c 4be00000 jr r31 487 00001480 54000000 nop 488 00001484 .endproc _dstrncpy 489 00001484 .align 2 490 00001484 .proc _dstrcat 491 00001484 .global _dstrcat 492 00001484 _dstrcat: 493 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 494 00001484 afbefffc sw -4(r29),r30; push fp 495 00001488 001df020 add r30,r0,r29; fp = sp 496 0000148c afbffff8 sw -8(r29),r31; push ret addr 497 00001490 2fbd0010 subui r29,r29,#16; alloc local storage 498 00001494 afa20000 sw 0(r29),r2 499 00001498 afa30004 sw 4(r29),r3 500 0000149c 8fdf0000 lw r31,(r30) 501 000014a0 001f1820 add r3,r0,r31 502 000014a4 90610000 lbu r1,(r3) 503 000014a8 64210000 snei r1,r1,#0 504 000014ac 10200018 beqz r1,L50_LF2 505 000014b0 54000000 nop; not filled. 506 000014b4 L51_LF2: 507 000014b4 23ff0001 addi r31,r31,#1 508 000014b8 93e10000 lbu r1,(r31) 509 000014bc 64210000 snei r1,r1,#0 510 000014c0 1420fff0 bnez r1,L51_LF2 511 000014c4 54000000 nop; not filled. 512 000014c8 L50_LF2: 513 000014c8 001f1020 add r2,r0,r31 514 000014cc 8fdf0004 lw r31,4(r30) 515 000014d0 L54_LF2: 516 000014d0 83e10000 lb r1,(r31) 517 000014d4 a0410000 sb (r2),r1 518 000014d8 23ff0001 addi r31,r31,#1 519 000014dc 20420001 addi r2,r2,#1 520 000014e0 302100ff andi r1,r1,#0x00ff 521 000014e4 64210000 snei r1,r1,#0 522 000014e8 1420ffe4 bnez r1,L54_LF2 523 000014ec 54000000 nop; not filled. 524 000014f0 00030820 add r1,r0,r3 525 000014f4 8fa20000 lw r2,0(r29) 526 000014f8 8fa30004 lw r3,4(r29) 527 000014fc 8fdffff8 lw r31,-8(r30) 528 00001500 001ee820 add r29,r0,r30 529 00001504 8fdefffc lw r30,-4(r30) 530 00001508 4be00000 jr r31 531 0000150c 54000000 nop 532 00001510 .endproc _dstrcat 533 00001510 .align 2 534 00001510 .proc _dstrncmp 535 00001510 .global _dstrncmp 536 00001510 _dstrncmp: 537 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 538 00001510 afbefffc sw -4(r29),r30; push fp 539 00001514 001df020 add r30,r0,r29; fp = sp 540 00001518 afbffff8 sw -8(r29),r31; push ret addr 541 0000151c 2fbd0018 subui r29,r29,#24; alloc local storage 542 00001520 afa20000 sw 0(r29),r2 543 00001524 afa30004 sw 4(r29),r3 544 00001528 afa40008 sw 8(r29),r4 545 0000152c afa5000c sw 12(r29),r5 546 00001530 8fc30000 lw r3,(r30) 547 00001534 8fc40004 lw r4,4(r30) 548 00001538 8fc50008 lw r5,8(r30) 549 0000153c 20020000 addi r2,r0,#0 550 00001540 0045082a slt r1,r2,r5 551 00001544 1020003c beqz r1,L73_LF2 552 00001548 54000000 nop; not filled. 553 0000154c L75_LF2: 554 0000154c 909f0000 lbu r31,(r4) 555 00001550 67e10000 snei r1,r31,#0 556 00001554 10200038 beqz r1,L86_LF2 557 00001558 54000000 nop; not filled. 558 0000155c 90610000 lbu r1,(r3) 559 00001560 003f0829 sne r1,r1,r31 560 00001564 1420001c bnez r1,L73_LF2 561 00001568 54000000 nop; not filled. 562 0000156c 20630001 addi r3,r3,#1 563 00001570 20840001 addi r4,r4,#1 564 00001574 20420001 addi r2,r2,#1 565 00001578 0045082a slt r1,r2,r5 566 0000157c 1420ffcc bnez r1,L75_LF2 567 00001580 54000000 nop; not filled. 568 00001584 L73_LF2: 569 00001584 00450828 seq r1,r2,r5 570 00001588 10200010 beqz r1,L80_LF2 571 0000158c 54000000 nop; not filled. 572 00001590 L86_LF2: 573 00001590 20010000 addi r1,r0,#0 574 00001594 08000028 j L84_LF2 575 00001598 54000000 nop; not filled. 576 0000159c L80_LF2: 577 0000159c 907f0000 lbu r31,(r3) 578 000015a0 90830000 lbu r3,(r4) 579 000015a4 03e30822 sub r1,r31,r3 580 000015a8 74210000 sgei r1,r1,#0 581 000015ac 2002ffff addi r2,r0,#-1 582 000015b0 10200008 beqz r1,L82_LF2 583 000015b4 54000000 nop; not filled. 584 000015b8 03e31029 sne r2,r31,r3 585 000015bc L82_LF2: 586 000015bc 00020820 add r1,r0,r2 587 000015c0 L84_LF2: 588 000015c0 8fa20000 lw r2,0(r29) 589 000015c4 8fa30004 lw r3,4(r29) 590 000015c8 8fa40008 lw r4,8(r29) 591 000015cc 8fa5000c lw r5,12(r29) 592 000015d0 8fdffff8 lw r31,-8(r30) 593 000015d4 001ee820 add r29,r0,r30 594 000015d8 8fdefffc lw r30,-4(r30) 595 000015dc 4be00000 jr r31 596 000015e0 54000000 nop 597 000015e4 .endproc _dstrncmp 598 000015e4 .align 2 599 000015e4 .proc _dstrlen 600 000015e4 .global _dstrlen 601 000015e4 _dstrlen: 602 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 603 000015e4 afbefffc sw -4(r29),r30; push fp 604 000015e8 001df020 add r30,r0,r29; fp = sp 605 000015ec afbffff8 sw -8(r29),r31; push ret addr 606 000015f0 2fbd0010 subui r29,r29,#16; alloc local storage 607 000015f4 afa20000 sw 0(r29),r2 608 000015f8 8fdf0000 lw r31,(r30) 609 000015fc 20020000 addi r2,r0,#0 610 00001600 08000008 j L97_LF2 611 00001604 54000000 nop; not filled. 612 00001608 L95_LF2: 613 00001608 20420001 addi r2,r2,#1 614 0000160c L97_LF2: 615 0000160c 93e10000 lbu r1,(r31) 616 00001610 23ff0001 addi r31,r31,#1 617 00001614 64210000 snei r1,r1,#0 618 00001618 1420ffec bnez r1,L95_LF2 619 0000161c 54000000 nop; not filled. 620 00001620 00020820 add r1,r0,r2 621 00001624 8fa20000 lw r2,0(r29) 622 00001628 8fdffff8 lw r31,-8(r30) 623 0000162c 001ee820 add r29,r0,r30 624 00001630 8fdefffc lw r30,-4(r30) 625 00001634 4be00000 jr r31 626 00001638 54000000 nop 627 0000163c .endproc _dstrlen 628 0000163c .align 2 629 0000163c .proc _dstrstr 630 0000163c .global _dstrstr 631 0000163c _dstrstr: 632 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 633 0000163c afbefffc sw -4(r29),r30; push fp 634 00001640 001df020 add r30,r0,r29; fp = sp 635 00001644 afbffff8 sw -8(r29),r31; push ret addr 636 00001648 2fbd0020 subui r29,r29,#32; alloc local storage 637 0000164c afa20000 sw 0(r29),r2 638 00001650 afa30004 sw 4(r29),r3 639 00001654 afa40008 sw 8(r29),r4 640 00001658 afa5000c sw 12(r29),r5 641 0000165c afa60010 sw 16(r29),r6 642 00001660 afa70014 sw 20(r29),r7 643 00001664 8fc50000 lw r5,(r30) 644 00001668 8fc70004 lw r7,4(r30) 645 0000166c 20030000 addi r3,r0,#0 646 00001670 90e10000 lbu r1,(r7) 647 00001674 20e20001 addi r2,r7,#1 648 00001678 64210000 snei r1,r1,#0 649 0000167c 1020001c beqz r1,L125_LF2 650 00001680 54000000 nop; not filled. 651 00001684 L126_LF2: 652 00001684 20630001 addi r3,r3,#1 653 00001688 90410000 lbu r1,(r2) 654 0000168c 20420001 addi r2,r2,#1 655 00001690 64210000 snei r1,r1,#0 656 00001694 1420ffec bnez r1,L126_LF2 657 00001698 54000000 nop; not filled. 658 0000169c L125_LF2: 659 0000169c 00033020 add r6,r0,r3 660 000016a0 080000ac j L149_LF2 661 000016a4 54000000 nop; not filled. 662 000016a8 L130_LF2: 663 000016a8 00051820 add r3,r0,r5 664 000016ac 00072020 add r4,r0,r7 665 000016b0 20020000 addi r2,r0,#0 666 000016b4 0046082a slt r1,r2,r6 667 000016b8 1020003c beqz r1,L134_LF2 668 000016bc 54000000 nop; not filled. 669 000016c0 L136_LF2: 670 000016c0 909f0000 lbu r31,(r4) 671 000016c4 67e10000 snei r1,r31,#0 672 000016c8 10200038 beqz r1,L150_LF2 673 000016cc 54000000 nop; not filled. 674 000016d0 90610000 lbu r1,(r3) 675 000016d4 003f0829 sne r1,r1,r31 676 000016d8 1420001c bnez r1,L134_LF2 677 000016dc 54000000 nop; not filled. 678 000016e0 20630001 addi r3,r3,#1 679 000016e4 20840001 addi r4,r4,#1 680 000016e8 20420001 addi r2,r2,#1 681 000016ec 0046082a slt r1,r2,r6 682 000016f0 1420ffcc bnez r1,L136_LF2 683 000016f4 54000000 nop; not filled. 684 000016f8 L134_LF2: 685 000016f8 00460828 seq r1,r2,r6 686 000016fc 10200010 beqz r1,L141_LF2 687 00001700 54000000 nop; not filled. 688 00001704 L150_LF2: 689 00001704 20010000 addi r1,r0,#0 690 00001708 08000028 j L132_LF2 691 0000170c 54000000 nop; not filled. 692 00001710 L141_LF2: 693 00001710 90630000 lbu r3,(r3) 694 00001714 90820000 lbu r2,(r4) 695 00001718 00620822 sub r1,r3,r2 696 0000171c 74210000 sgei r1,r1,#0 697 00001720 201fffff addi r31,r0,#-1 698 00001724 10200008 beqz r1,L143_LF2 699 00001728 54000000 nop; not filled. 700 0000172c 0062f829 sne r31,r3,r2 701 00001730 L143_LF2: 702 00001730 001f0820 add r1,r0,r31 703 00001734 L132_LF2: 704 00001734 64210000 snei r1,r1,#0 705 00001738 14200010 bnez r1,L131_LF2 706 0000173c 54000000 nop; not filled. 707 00001740 00050820 add r1,r0,r5 708 00001744 0800001c j L146_LF2 709 00001748 54000000 nop; not filled. 710 0000174c L131_LF2: 711 0000174c 20a50001 addi r5,r5,#1 712 00001750 L149_LF2: 713 00001750 90a10000 lbu r1,(r5) 714 00001754 64210000 snei r1,r1,#0 715 00001758 1420ff4c bnez r1,L130_LF2 716 0000175c 54000000 nop; not filled. 717 00001760 20010000 addi r1,r0,#0 718 00001764 L146_LF2: 719 00001764 8fa20000 lw r2,0(r29) 720 00001768 8fa30004 lw r3,4(r29) 721 0000176c 8fa40008 lw r4,8(r29) 722 00001770 8fa5000c lw r5,12(r29) 723 00001774 8fa60010 lw r6,16(r29) 724 00001778 8fa70014 lw r7,20(r29) 725 0000177c 8fdffff8 lw r31,-8(r30) 726 00001780 001ee820 add r29,r0,r30 727 00001784 8fdefffc lw r30,-4(r30) 728 00001788 4be00000 jr r31 729 0000178c 54000000 nop 730 00001790 .endproc _dstrstr 731 00001790 .align 2 732 00001790 .proc _dmindex 733 00001790 .global _dmindex 734 00001790 _dmindex: 735 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 736 00001790 afbefffc sw -4(r29),r30; push fp 737 00001794 001df020 add r30,r0,r29; fp = sp 738 00001798 afbffff8 sw -8(r29),r31; push ret addr 739 0000179c 2fbd0020 subui r29,r29,#32; alloc local storage 740 000017a0 afa20000 sw 0(r29),r2 741 000017a4 afa30004 sw 4(r29),r3 742 000017a8 afa40008 sw 8(r29),r4 743 000017ac afa5000c sw 12(r29),r5 744 000017b0 afa60010 sw 16(r29),r6 745 000017b4 8fc40000 lw r4,(r30) 746 000017b8 8fc60004 lw r6,4(r30) 747 000017bc 90810000 lbu r1,(r4) 748 000017c0 64210000 snei r1,r1,#0 749 000017c4 10200060 beqz r1,L164_LF2 750 000017c8 54000000 nop; not filled. 751 000017cc 00012820 add r5,r0,r1 752 000017d0 L165_LF2: 753 000017d0 00061020 add r2,r0,r6 754 000017d4 80df0000 lb r31,(r6) 755 000017d8 33e100ff andi r1,r31,#0x00ff 756 000017dc 64210000 snei r1,r1,#0 757 000017e0 1020003c beqz r1,L163_LF2 758 000017e4 54000000 nop; not filled. 759 000017e8 90830000 lbu r3,(r4) 760 000017ec L169_LF2: 761 000017ec 33e100ff andi r1,r31,#0x00ff 762 000017f0 00610828 seq r1,r3,r1 763 000017f4 10200010 beqz r1,L168_LF2 764 000017f8 54000000 nop; not filled. 765 000017fc 00040820 add r1,r0,r4 766 00001800 08000028 j L173_LF2 767 00001804 54000000 nop; not filled. 768 00001808 L168_LF2: 769 00001808 20420001 addi r2,r2,#1 770 0000180c 805f0000 lb r31,(r2) 771 00001810 33e100ff andi r1,r31,#0x00ff 772 00001814 64210000 snei r1,r1,#0 773 00001818 1420ffd0 bnez r1,L169_LF2 774 0000181c 54000000 nop; not filled. 775 00001820 L163_LF2: 776 00001820 14a0ffac bnez r5,L165_LF2 777 00001824 54000000 nop; not filled. 778 00001828 L164_LF2: 779 00001828 20010000 addi r1,r0,#0 780 0000182c L173_LF2: 781 0000182c 8fa20000 lw r2,0(r29) 782 00001830 8fa30004 lw r3,4(r29) 783 00001834 8fa40008 lw r4,8(r29) 784 00001838 8fa5000c lw r5,12(r29) 785 0000183c 8fa60010 lw r6,16(r29) 786 00001840 8fdffff8 lw r31,-8(r30) 787 00001844 001ee820 add r29,r0,r30 788 00001848 8fdefffc lw r30,-4(r30) 789 0000184c 4be00000 jr r31 790 00001850 54000000 nop 791 00001854 .endproc _dmindex 792 00001854 .align 2 793 00001854 .proc _dindex 794 00001854 .global _dindex 795 00001854 _dindex: 796 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 797 00001854 afbefffc sw -4(r29),r30; push fp 798 00001858 001df020 add r30,r0,r29; fp = sp 799 0000185c afbffff8 sw -8(r29),r31; push ret addr 800 00001860 2fbd0010 subui r29,r29,#16; alloc local storage 801 00001864 afa20000 sw 0(r29),r2 802 00001868 afa30004 sw 4(r29),r3 803 0000186c 8fc20000 lw r2,(r30) 804 00001870 8fc30004 lw r3,4(r30) 805 00001874 08000024 j L187_LF2 806 00001878 54000000 nop; not filled. 807 0000187c L183_LF2: 808 0000187c 33e100ff andi r1,r31,#0x00ff 809 00001880 00230828 seq r1,r1,r3 810 00001884 10200010 beqz r1,L184_LF2 811 00001888 54000000 nop; not filled. 812 0000188c 00020820 add r1,r0,r2 813 00001890 08000020 j L186_LF2 814 00001894 54000000 nop; not filled. 815 00001898 L184_LF2: 816 00001898 20420001 addi r2,r2,#1 817 0000189c L187_LF2: 818 0000189c 805f0000 lb r31,(r2) 819 000018a0 33e100ff andi r1,r31,#0x00ff 820 000018a4 64210000 snei r1,r1,#0 821 000018a8 1420ffd0 bnez r1,L183_LF2 822 000018ac 54000000 nop; not filled. 823 000018b0 20010000 addi r1,r0,#0 824 000018b4 L186_LF2: 825 000018b4 8fa20000 lw r2,0(r29) 826 000018b8 8fa30004 lw r3,4(r29) 827 000018bc 8fdffff8 lw r31,-8(r30) 828 000018c0 001ee820 add r29,r0,r30 829 000018c4 8fdefffc lw r30,-4(r30) 830 000018c8 4be00000 jr r31 831 000018cc 54000000 nop 832 000018d0 .endproc _dindex 833 000018d0 .align 2 834 000018d0 .proc _ditoa 835 000018d0 .global _ditoa 836 000018d0 _ditoa: 837 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 838 000018d0 afbefffc sw -4(r29),r30; push fp 839 000018d4 001df020 add r30,r0,r29; fp = sp 840 000018d8 afbffff8 sw -8(r29),r31; push ret addr 841 000018dc 2fbd0020 subui r29,r29,#32; alloc local storage 842 000018e0 afa20000 sw 0(r29),r2 843 000018e4 afa30004 sw 4(r29),r3 844 000018e8 afa40008 sw 8(r29),r4 845 000018ec afa5000c sw 12(r29),r5 846 000018f0 afa60010 sw 16(r29),r6 847 000018f4 8fc30000 lw r3,(r30) 848 000018f8 8fc40004 lw r4,4(r30) 849 000018fc 68610000 slti r1,r3,#0 850 00001900 10200010 beqz r1,L203_LF2 851 00001904 54000000 nop; not filled. 852 00001908 2006002d addi r6,r0,(#0x2d)&0xff 853 0000190c 08000014 j L216_LF2 854 00001910 54000000 nop; not filled. 855 00001914 L203_LF2: 856 00001914 64610000 snei r1,r3,#0 857 00001918 14200018 bnez r1,L205_LF2 858 0000191c 54000000 nop; not filled. 859 00001920 20060030 addi r6,r0,(#0x30)&0xff 860 00001924 L216_LF2: 861 00001924 a0860000 sb (r4),r6 862 00001928 20840001 addi r4,r4,#1 863 0000192c 0800007c j L204_LF2 864 00001930 54000000 nop; not filled. 865 00001934 L205_LF2: 866 00001934 201f0001 addi r31,r0,#1 867 00001938 03e3082c sle r1,r31,r3 868 0000193c 1020001c beqz r1,L208_LF2 869 00001940 54000000 nop; not filled. 870 00001944 L209_LF2: 871 00001944 53e10002 slli r1,r31,#0x2 872 00001948 003f0820 add r1,r1,r31 873 0000194c 503f0001 slli r31,r1,#0x1 874 00001950 03e3082c sle r1,r31,r3 875 00001954 1420ffec bnez r1,L209_LF2 876 00001958 54000000 nop; not filled. 877 0000195c L208_LF2: 878 0000195c 2005000a addi r5,r0,#10 879 00001960 L212_LF2: 880 00001960 03e00035 movi2fp f0,r31 881 00001964 00a00835 movi2fp f1,r5 882 00001968 0401000f div f0,f0,f1 883 0000196c 0000f834 movfp2i r31,f0 884 00001970 00600035 movi2fp f0,r3 885 00001974 03e00835 movi2fp f1,r31 886 00001978 0401000f div f0,f0,f1 887 0000197c 00001034 movfp2i r2,f0 888 00001980 20410030 addi r1,r2,#48 889 00001984 a0810000 sb (r4),r1 890 00001988 20840001 addi r4,r4,#1 891 0000198c 00400035 movi2fp f0,r2 892 00001990 03e00835 movi2fp f1,r31 893 00001994 0401000e mult f0,f0,f1 894 00001998 00000834 movfp2i r1,f0 895 0000199c 00611822 sub r3,r3,r1 896 000019a0 6fe10001 sgti r1,r31,#1 897 000019a4 1420ffb8 bnez r1,L212_LF2 898 000019a8 54000000 nop; not filled. 899 000019ac L204_LF2: 900 000019ac 20060000 addi r6,r0,(#0x0)&0xff 901 000019b0 a0860000 sb (r4),r6 902 000019b4 8fa20000 lw r2,0(r29) 903 000019b8 8fa30004 lw r3,4(r29) 904 000019bc 8fa40008 lw r4,8(r29) 905 000019c0 8fa5000c lw r5,12(r29) 906 000019c4 8fa60010 lw r6,16(r29) 907 000019c8 8fdffff8 lw r31,-8(r30) 908 000019cc 001ee820 add r29,r0,r30 909 000019d0 8fdefffc lw r30,-4(r30) 910 000019d4 4be00000 jr r31 911 000019d8 54000000 nop 912 000019dc .endproc _ditoa 913 000019dc .align 2 914 000019dc .proc _dstrtol 915 000019dc .global _dstrtol 916 000019dc _dstrtol: 917 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 918 000019dc afbefffc sw -4(r29),r30; push fp 919 000019e0 001df020 add r30,r0,r29; fp = sp 920 000019e4 afbffff8 sw -8(r29),r31; push ret addr 921 000019e8 2fbd0020 subui r29,r29,#32; alloc local storage 922 000019ec afa20000 sw 0(r29),r2 923 000019f0 afa30004 sw 4(r29),r3 924 000019f4 afa40008 sw 8(r29),r4 925 000019f8 afa5000c sw 12(r29),r5 926 000019fc afa60010 sw 16(r29),r6 927 00001a00 8fc20000 lw r2,(r30) 928 00001a04 8fc50004 lw r5,4(r30) 929 00001a08 8fc40008 lw r4,8(r30) 930 00001a0c 20030000 addi r3,r0,#0 931 00001a10 08000008 j L247_LF2 932 00001a14 54000000 nop; not filled. 933 00001a18 L220_LF2: 934 00001a18 20420001 addi r2,r2,#1 935 00001a1c L247_LF2: 936 00001a1c 805f0000 lb r31,(r2) 937 00001a20 33e100ff andi r1,r31,#0x00ff 938 00001a24 60210020 seqi r1,r1,#32 939 00001a28 1420ffec bnez r1,L220_LF2 940 00001a2c 54000000 nop; not filled. 941 00001a30 23e1fff7 addi r1,r31,#-9 942 00001a34 302100ff andi r1,r1,#0x00ff 943 00001a38 70210001 sleui r1,r1,#1 944 00001a3c 1420ffd8 bnez r1,L220_LF2 945 00001a40 54000000 nop; not filled. 946 00001a44 64a10000 snei r1,r5,#0 947 00001a48 10200008 beqz r1,L222_LF2 948 00001a4c 54000000 nop; not filled. 949 00001a50 aca20000 sw (r5),r2 950 00001a54 L222_LF2: 951 00001a54 905f0000 lbu r31,(r2) 952 00001a58 67e10000 snei r1,r31,#0 953 00001a5c 10200090 beqz r1,L248_LF2 954 00001a60 54000000 nop; not filled. 955 00001a64 63e1002d seqi r1,r31,#45 956 00001a68 10200014 beqz r1,L224_LF2 957 00001a6c 54000000 nop; not filled. 958 00001a70 2006ffff addi r6,r0,#-1 959 00001a74 20420001 addi r2,r2,#1 960 00001a78 08000008 j L225_LF2 961 00001a7c 54000000 nop; not filled. 962 00001a80 L224_LF2: 963 00001a80 20060001 addi r6,r0,#1 964 00001a84 L225_LF2: 965 00001a84 64810000 snei r1,r4,#0 966 00001a88 14200054 bnez r1,L226_LF2 967 00001a8c 54000000 nop; not filled. 968 00001a90 90410000 lbu r1,(r2) 969 00001a94 60210030 seqi r1,r1,#48 970 00001a98 10200040 beqz r1,L227_LF2 971 00001a9c 54000000 nop; not filled. 972 00001aa0 20420001 addi r2,r2,#1 973 00001aa4 905f0000 lbu r31,(r2) 974 00001aa8 63e10078 seqi r1,r31,#120 975 00001aac 14200010 bnez r1,L229_LF2 976 00001ab0 54000000 nop; not filled. 977 00001ab4 63e10058 seqi r1,r31,#88 978 00001ab8 10200014 beqz r1,L228_LF2 979 00001abc 54000000 nop; not filled. 980 00001ac0 L229_LF2: 981 00001ac0 20040010 addi r4,r0,#16 982 00001ac4 20420001 addi r2,r2,#1 983 00001ac8 08000014 j L226_LF2 984 00001acc 54000000 nop; not filled. 985 00001ad0 L228_LF2: 986 00001ad0 20040008 addi r4,r0,#8 987 00001ad4 08000008 j L226_LF2 988 00001ad8 54000000 nop; not filled. 989 00001adc L227_LF2: 990 00001adc 2004000a addi r4,r0,#10 991 00001ae0 L226_LF2: 992 00001ae0 2081ffff addi r1,r4,#-1 993 00001ae4 6c21000f sgtui r1,r1,#15 994 00001ae8 10200010 beqz r1,L233_LF2 995 00001aec 54000000 nop; not filled. 996 00001af0 L248_LF2: 997 00001af0 00030820 add r1,r0,r3 998 00001af4 080000c4 j L245_LF2 999 00001af8 54000000 nop; not filled. 1000 00001afc L233_LF2: 1001 00001afc 805f0000 lb r31,(r2) 1002 00001b00 23e1ffd0 addi r1,r31,#-48 1003 00001b04 302100ff andi r1,r1,#0x00ff 1004 00001b08 70210009 sleui r1,r1,#9 1005 00001b0c 10200014 beqz r1,L236_LF2 1006 00001b10 54000000 nop; not filled. 1007 00001b14 33e100ff andi r1,r31,#0x00ff 1008 00001b18 2021ffd0 addi r1,r1,#-48 1009 00001b1c 08000050 j L237_LF2 1010 00001b20 54000000 nop; not filled. 1011 00001b24 L236_LF2: 1012 00001b24 23e1ff9f addi r1,r31,#-97 1013 00001b28 302100ff andi r1,r1,#0x00ff 1014 00001b2c 70210019 sleui r1,r1,#25 1015 00001b30 10200014 beqz r1,L238_LF2 1016 00001b34 54000000 nop; not filled. 1017 00001b38 33e100ff andi r1,r31,#0x00ff 1018 00001b3c 2021ffa9 addi r1,r1,#-87 1019 00001b40 0800002c j L237_LF2 1020 00001b44 54000000 nop; not filled. 1021 00001b48 L238_LF2: 1022 00001b48 23e1ffbf addi r1,r31,#-65 1023 00001b4c 302100ff andi r1,r1,#0x00ff 1024 00001b50 70210019 sleui r1,r1,#25 1025 00001b54 10200014 beqz r1,L240_LF2 1026 00001b58 54000000 nop; not filled. 1027 00001b5c 33e100ff andi r1,r31,#0x00ff 1028 00001b60 2021ffc9 addi r1,r1,#-55 1029 00001b64 08000008 j L237_LF2 1030 00001b68 54000000 nop; not filled. 1031 00001b6c L240_LF2: 1032 00001b6c 200103e8 addi r1,r0,#1000 1033 00001b70 L237_LF2: 1034 00001b70 0024f82a slt r31,r1,r4 1035 00001b74 13e00024 beqz r31,L246_LF2 1036 00001b78 54000000 nop; not filled. 1037 00001b7c 00600035 movi2fp f0,r3 1038 00001b80 00800835 movi2fp f1,r4 1039 00001b84 0401000e mult f0,f0,f1 1040 00001b88 00001834 movfp2i r3,f0 1041 00001b8c 00611820 add r3,r3,r1 1042 00001b90 20420001 addi r2,r2,#1 1043 00001b94 17e0ff64 bnez r31,L233_LF2 1044 00001b98 54000000 nop; not filled. 1045 00001b9c L246_LF2: 1046 00001b9c 64a10000 snei r1,r5,#0 1047 00001ba0 10200008 beqz r1,L244_LF2 1048 00001ba4 54000000 nop; not filled. 1049 00001ba8 aca20000 sw (r5),r2 1050 00001bac L244_LF2: 1051 00001bac 00600035 movi2fp f0,r3 1052 00001bb0 00c00835 movi2fp f1,r6 1053 00001bb4 0401000e mult f0,f0,f1 1054 00001bb8 00000834 movfp2i r1,f0 1055 00001bbc L245_LF2: 1056 00001bbc 8fa20000 lw r2,0(r29) 1057 00001bc0 8fa30004 lw r3,4(r29) 1058 00001bc4 8fa40008 lw r4,8(r29) 1059 00001bc8 8fa5000c lw r5,12(r29) 1060 00001bcc 8fa60010 lw r6,16(r29) 1061 00001bd0 8fdffff8 lw r31,-8(r30) 1062 00001bd4 001ee820 add r29,r0,r30 1063 00001bd8 8fdefffc lw r30,-4(r30) 1064 00001bdc 4be00000 jr r31 1065 00001be0 54000000 nop 1066 00001be4 .endproc _dstrtol 1067 00001be4 .align 2 1068 00001be4 .proc _bcopy 1069 00001be4 .global _bcopy 1070 00001be4 _bcopy: 1071 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 1072 00001be4 afbefffc sw -4(r29),r30; push fp 1073 00001be8 001df020 add r30,r0,r29; fp = sp 1074 00001bec afbffff8 sw -8(r29),r31; push ret addr 1075 00001bf0 2fbd0018 subui r29,r29,#24; alloc local storage 1076 00001bf4 afa20000 sw 0(r29),r2 1077 00001bf8 afa30004 sw 4(r29),r3 1078 00001bfc afa40008 sw 8(r29),r4 1079 00001c00 8fc30000 lw r3,(r30) 1080 00001c04 8fc20004 lw r2,4(r30) 1081 00001c08 8fdf0008 lw r31,8(r30) 1082 00001c0c 08000014 j L259_LF2 1083 00001c10 54000000 nop; not filled. 1084 00001c14 L257_LF2: 1085 00001c14 80640000 lb r4,(r3) 1086 00001c18 a0440000 sb (r2),r4 1087 00001c1c 20630001 addi r3,r3,#1 1088 00001c20 20420001 addi r2,r2,#1 1089 00001c24 L259_LF2: 1090 00001c24 001f0820 add r1,r0,r31 1091 00001c28 23ffffff addi r31,r31,#-1 1092 00001c2c 6c210000 sgti r1,r1,#0 1093 00001c30 1420ffe0 bnez r1,L257_LF2 1094 00001c34 54000000 nop; not filled. 1095 00001c38 8fa20000 lw r2,0(r29) 1096 00001c3c 8fa30004 lw r3,4(r29) 1097 00001c40 8fa40008 lw r4,8(r29) 1098 00001c44 8fdffff8 lw r31,-8(r30) 1099 00001c48 001ee820 add r29,r0,r30 1100 00001c4c 8fdefffc lw r30,-4(r30) 1101 00001c50 4be00000 jr r31 1102 00001c54 54000000 nop 1103 00001c58 .endproc _bcopy 1104 00001c58 .align 2 1105 00001c58 .proc _bzero 1106 00001c58 .global _bzero 1107 00001c58 _bzero: 1108 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 1109 00001c58 afbefffc sw -4(r29),r30; push fp 1110 00001c5c 001df020 add r30,r0,r29; fp = sp 1111 00001c60 afbffff8 sw -8(r29),r31; push ret addr 1112 00001c64 2fbd0010 subui r29,r29,#16; alloc local storage 1113 00001c68 afa20000 sw 0(r29),r2 1114 00001c6c afa30004 sw 4(r29),r3 1115 00001c70 8fc20000 lw r2,(r30) 1116 00001c74 8fdf0004 lw r31,4(r30) 1117 00001c78 08000010 j L270_LF2 1118 00001c7c 54000000 nop; not filled. 1119 00001c80 L268_LF2: 1120 00001c80 20030000 addi r3,r0,(#0x0)&0xff 1121 00001c84 a0430000 sb (r2),r3 1122 00001c88 20420001 addi r2,r2,#1 1123 00001c8c L270_LF2: 1124 00001c8c 001f0820 add r1,r0,r31 1125 00001c90 23ffffff addi r31,r31,#-1 1126 00001c94 6c210000 sgti r1,r1,#0 1127 00001c98 1420ffe4 bnez r1,L268_LF2 1128 00001c9c 54000000 nop; not filled. 1129 00001ca0 8fa20000 lw r2,0(r29) 1130 00001ca4 8fa30004 lw r3,4(r29) 1131 00001ca8 8fdffff8 lw r31,-8(r30) 1132 00001cac 001ee820 add r29,r0,r30 1133 00001cb0 8fdefffc lw r30,-4(r30) 1134 00001cb4 4be00000 jr r31 1135 00001cb8 54000000 nop 1136 00001cbc .endproc _bzero 1137 ;;; Ethan L. Miller, 1999. Released to the public domain 1138 ;;; 1139 ;;; Most of the traps are called in files from libtraps. 1142 00001cbc .align 2 1143 00001cbc .proc _exit 1144 00001cbc .global _exit 1145 00001cbc _exit: 1146 00001cbc 44000300 trap #0x300 1147 00001cc0 4be00000 jr r31 1148 00001cc4 54000000 nop 1149 00001cc8 .endproc _exit 1151 ; for the benefit of gcc. 1152 00001cc8 .proc ___main 1153 00001cc8 .global ___main 1154 00001cc8 ___main: 1155 00001cc8 4be00000 jr r31 1156 00001ccc 54000000 nop 1157 00001cd0 .endproc ___main 1158 00001cd0 .text 1159 00001cd0 .global _etext 1160 00001cd0 _etext: 1161 00001cd0 .align 3 1162 00001cd0 .data 1163 000020ee .global _edata 1164 000020ee _edata:
home/bshapir/cs314/project2/src/sysproc.o
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Process #\000" .align 2 LC1: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething _doSomething: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#120 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52 nop ; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop ; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw 4(r29),r8 jal _dstrcpy nop ; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop ; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop ; not filled. addi r29,r29,#-8 lhi r8,((_doSomething)>>16)&0xffff addui r8,r8,(_doSomething)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop ; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56 nop ; not filled. L52: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop ; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59 nop ; not filled. addi r5,r0,#1000 add r4,r0,r2 L61: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62 nop ; not filled. addi r29,r29,#-16 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop ; not filled. addi r29,r29,#16 L62: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61 nop ; not filled. L59: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems)>>16)&0xffff addui r8,r8,(_mysems)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething .data .align 2 LC2: .ascii "chasetail\000" .align 2 LC3: .ascii "Chasing tail %d.\n\000" .align 2 LC4: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail _chaseTail: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2)>>16)&0xffff addui r3,r3,(LC2)&0xffff addi r29,r29,#-8 lhi r5,((LC3)>>16)&0xffff addui r5,r5,(LC3)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop ; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop ; not filled. addi r29,r29,#-8 lhi r5,((LC4)>>16)&0xffff addui r5,r5,(LC4)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop ; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail)>>16)&0xffff addui r5,r5,(_chaseTail)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5)>>16)&0xffff addui r5,r5,(LC5)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop ; not filled. addi r29,r29,#16 L67: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail .data .align 2 LC6: .ascii "%d \000" .align 2 LC7: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems)>>16)&0xffff addui r2,r2,(_mysems)&0xffff addi r3,r2,#180 L90: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop ; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90 nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems: .space 200
home/bshapir/cs314/project2/src/queue.c
// // queue.c // // Variables for queues, and a routine to initialize the pool of links. // // #include "dlxos.h" #include "queue.h" Queue freeLinks; static Link linkpool[QUEUE_MAX_LINKS]; void QueueModuleInit () { int i; QueueInit (&freeLinks); for (i = 0; i < QUEUE_MAX_LINKS; i++) { dbprintf ('i', "Initializing queue link %d.\n", i); linkpool[i].next = NULL; QueueFreeLink (&(linkpool[i])); } } void QueueInit (Queue *q) { q->first = (Link *)q; q->last = (Link *)q; q->nitems = 0; } void QueueFreeLink (Link *l) { extern Queue freeLinks; // Make sure the link has already been freed! ASSERT ((l->next == NULL), "Link not empty"); QueueInsertLast (&freeLinks, l); } Link * QueueAllocLink () { extern Queue freeLinks; Link *l; if (! QueueEmpty (&freeLinks)) { l = QueueFirst (&freeLinks); QueueRemove (l); } else { l = NULL; } ASSERT ((l != NULL), "Link not allocated!"); return (l); }
home/bshapir/cs314/project2/src/userprog2.c
#include "lab2-api.h" typedef struct DB { int some_int; char some_char; } DB; main (int argc, char *argv[]) { int i; DB *db; uint32 handle; //Handle of the shared page sem_t spage, semaphore; //Various semaphores if(argc!=4) { Printf("Usage: "); Printf(argv[0]); Printf(" handle_str spage_str semaphore_str\n"); exit(); } handle = dstrtol(argv[1], NULL, 10); //Get the handle from the arguments spage = dstrtol(argv[2], NULL, 10); //Get semaphore spage semaphore = dstrtol(argv[2], NULL, 10); //Get semaphore db = (DB *)shmat(handle); //Map the shared page to address spac if(db == NULL) { Printf("Could not map the virtual address to the memory, exiting...\n"); exit(); } //Now let us wake up the calling process so that it can quit if(sem_signal(spage)) { Printf("Bad semaphore spage.... Exiting!\n"); exit(); } //Now let us print the message Printf("This is one of the %d instances you created\n", db->some_int); Printf("The shared character is %c\n", db->some_char); Printf("My PID is %d\n", getpid()); }
home/bshapir/cs314/project2/src/userprog.lst
line address contents 1 ; Linked by DLX-LD. 2 ; MemSize 20480 3 ; Data size: 126 4 ; Text size: 3324 5 ; Stack size: 8192 6 00000000 .text 0x1000 7 00001000 .data 0x2000 8 ; Compiled by GCC 10 00002000 .align 2 11 00002000 LC0_LF0: 12 00002000 53657474 .ascii "Setting number = %d\n\000" 12 00002004 696e6720 12 00002008 6e756d62 12 0000200c 6572203d 12 00002010 2025640a 12 00002014 00 13 00002015 .align 2 14 00002018 LC1_LF0: 15 00002018 55736167 .ascii "Usage: \000" 15 0000201c 653a2000 16 00002020 .align 2 17 00002020 LC2_LF0: 18 00002020 206e756d .ascii " number\n\000" 18 00002024 6265720a 18 00002028 00 19 00002029 .align 2 20 0000202c LC3_LF0: 21 0000202c 436f756c .ascii "Could not map the shared page to virtual address, exiting..\n\000" 21 00002030 64206e6f 21 00002034 74206d61 21 00002038 70207468 21 0000203c 65207368 21 00002040 61726564 21 00002044 20706167 21 00002048 6520746f 21 0000204c 20766972 21 00002050 7475616c 21 00002054 20616464 21 00002058 72657373 21 0000205c 2c206578 21 00002060 6974696e 21 00002064 672e2e0a 21 00002068 00 22 00002069 .align 2 23 0000206c LC4_LF0: 24 0000206c 75736572 .ascii "userprog2.dlx.obj\000" 24 00002070 70726f67 24 00002074 322e646c 24 00002078 782e6f62 24 0000207c 6a00 25 0000207e .text 26 00001000 .align 2 27 00001000 .proc _main 28 00001000 .global _main 29 00001000 _main: 30 ; Function 'main'; 48 bytes of locals, 0 regs to save. 31 00001000 afbefffc sw -4(r29),r30; push fp 32 00001004 001df020 add r30,r0,r29; fp = sp 33 00001008 afbffff8 sw -8(r29),r31; push ret addr 34 0000100c 2fbd0038 subui r29,r29,#56; alloc local storage 35 00001010 8fc20000 lw r2,(r30) 36 00001014 8fc30004 lw r3,4(r30) 37 00001018 0c000cd8 jal ___main 38 0000101c 54000000 nop; not filled. 39 00001020 60410002 seqi r1,r2,#2 40 00001024 10200050 beqz r1,L4_LF0 41 00001028 54000000 nop; not filled. 42 0000102c 23bdfff0 addi r29,r29,#-16 43 00001030 8c630004 lw r3,4(r3) 44 00001034 afa30000 sw (r29),r3 45 00001038 20080000 addi r8,r0,#0 46 0000103c afa80004 sw 4(r29),r8 47 00001040 2008000a addi r8,r0,#10 48 00001044 afa80008 sw 8(r29),r8 49 00001048 0c0009bc jal _dstrtol 50 0000104c 54000000 nop; not filled. 51 00001050 00012820 add r5,r0,r1 52 00001054 3c080000 lhi r8,((LC0_LF0)>>16)&0xffff 53 00001058 25082000 addui r8,r8,(LC0_LF0)&0xffff 54 0000105c afa80000 sw (r29),r8 55 00001060 afa50004 sw 4(r29),r5 56 00001064 0c0001d0 jal _Printf 57 00001068 54000000 nop; not filled. 58 0000106c 23bd0010 addi r29,r29,#16 59 00001070 08000048 j L2_LF0 60 00001074 54000000 nop; not filled. 61 00001078 L4_LF0: 62 00001078 23bdfff8 addi r29,r29,#-8 63 0000107c 3c080000 lhi r8,((LC1_LF0)>>16)&0xffff 64 00001080 25082018 addui r8,r8,(LC1_LF0)&0xffff 65 00001084 afa80000 sw (r29),r8 66 00001088 0c0001ac jal _Printf 67 0000108c 54000000 nop; not filled. 68 00001090 8c630000 lw r3,(r3) 69 00001094 afa30000 sw (r29),r3 70 00001098 0c00019c jal _Printf 71 0000109c 54000000 nop; not filled. 72 000010a0 3c080000 lhi r8,((LC2_LF0)>>16)&0xffff 73 000010a4 25082020 addui r8,r8,(LC2_LF0)&0xffff 74 000010a8 afa80000 sw (r29),r8 75 000010ac 0c000188 jal _Printf 76 000010b0 54000000 nop; not filled. 77 000010b4 0c000c30 jal _exit 78 000010b8 54000000 nop; not filled. 79 000010bc L2_LF0: 80 000010bc 0c00019c jal _shmget 81 000010c0 54000000 nop; not filled. 82 000010c4 00011820 add r3,r0,r1 83 000010c8 23bdfff8 addi r29,r29,#-8 84 000010cc afa30000 sw (r29),r3 85 000010d0 0c000194 jal _shmat 86 000010d4 54000000 nop; not filled. 87 000010d8 00011020 add r2,r0,r1 88 000010dc 23bd0008 addi r29,r29,#8 89 000010e0 64410000 snei r1,r2,#0 90 000010e4 14200024 bnez r1,L6_LF0 91 000010e8 54000000 nop; not filled. 92 000010ec 23bdfff8 addi r29,r29,#-8 93 000010f0 3c080000 lhi r8,((LC3_LF0)>>16)&0xffff 94 000010f4 2508202c addui r8,r8,(LC3_LF0)&0xffff 95 000010f8 afa80000 sw (r29),r8 96 000010fc 0c000138 jal _Printf 97 00001100 54000000 nop; not filled. 98 00001104 0c000be0 jal _exit 99 00001108 54000000 nop; not filled. 100 0000110c L6_LF0: 101 0000110c ac450000 sw (r2),r5 102 00001110 20080041 addi r8,r0,(#0x41)&0xff 103 00001114 a0480004 sb 4(r2),r8 104 00001118 23bdfff8 addi r29,r29,#-8 105 0000111c 20080000 addi r8,r0,#0 106 00001120 afa80000 sw (r29),r8 107 00001124 0c00014c jal _sem_create 108 00001128 54000000 nop; not filled. 109 0000112c 00013820 add r7,r0,r1 110 00001130 20080005 addi r8,r0,#5 111 00001134 afa80000 sw (r29),r8 112 00001138 0c000138 jal _sem_create 113 0000113c 54000000 nop; not filled. 114 00001140 00011020 add r2,r0,r1 115 00001144 afa30000 sw (r29),r3 116 00001148 23c6ffe8 addi r6,r30,#-24 117 0000114c afa60004 sw 4(r29),r6 118 00001150 0c0007a8 jal _ditoa 119 00001154 54000000 nop; not filled. 120 00001158 afa70000 sw (r29),r7 121 0000115c 23c4ffd8 addi r4,r30,#-40 122 00001160 afa40004 sw 4(r29),r4 123 00001164 0c000794 jal _ditoa 124 00001168 54000000 nop; not filled. 125 0000116c afa20000 sw (r29),r2 126 00001170 23c3ffc8 addi r3,r30,#-56 127 00001174 afa30004 sw 4(r29),r3 128 00001178 0c000780 jal _ditoa 129 0000117c 54000000 nop; not filled. 130 00001180 20020000 addi r2,r0,#0 131 00001184 23bd0008 addi r29,r29,#8 132 00001188 0045082a slt r1,r2,r5 133 0000118c 10200044 beqz r1,L8_LF0 134 00001190 54000000 nop; not filled. 135 00001194 L10_LF0: 136 00001194 23bdffe8 addi r29,r29,#-24 137 00001198 3c080000 lhi r8,((LC4_LF0)>>16)&0xffff 138 0000119c 2508206c addui r8,r8,(LC4_LF0)&0xffff 139 000011a0 afa80000 sw (r29),r8 140 000011a4 afa60004 sw 4(r29),r6 141 000011a8 afa40008 sw 8(r29),r4 142 000011ac afa3000c sw 12(r29),r3 143 000011b0 20080000 addi r8,r0,#0 144 000011b4 afa80010 sw 16(r29),r8 145 000011b8 0c000094 jal _process_create 146 000011bc 54000000 nop; not filled. 147 000011c0 23bd0018 addi r29,r29,#24 148 000011c4 20420001 addi r2,r2,#1 149 000011c8 0045082a slt r1,r2,r5 150 000011cc 1420ffc4 bnez r1,L10_LF0 151 000011d0 54000000 nop; not filled. 152 000011d4 L8_LF0: 153 000011d4 23bdfff8 addi r29,r29,#-8 154 000011d8 afa70000 sw (r29),r7 155 000011dc 0c0000a0 jal _sem_wait 156 000011e0 54000000 nop; not filled. 157 000011e4 23bd0008 addi r29,r29,#8 158 000011e8 0c000afc jal _exit 159 000011ec 54000000 nop 160 000011f0 .endproc _main 161 ;;; 162 ;;; Stub functions for DLX traps. 163 ;;; 164 ;;; Ethan L. Miller, 1999. Released to the public domain. 165 ;;; 166 ;;; The traps such as Open and Close 167 ;;; (note the capital letters) are for use by user programs. The traps 168 ;;; with names such as open and close (lower case) are for use by the OS. 169 ;;; 172 000011f0 .align 2 174 ;;; The following are the traps to be used by user-level programs 175 ;;; 177 000011f0 .align 2 178 000011f0 .proc _Open 179 000011f0 .global _Open 180 000011f0 _Open: 181 ;;; Note that trap #0x213 actually causes a trap vector in the OS of 182 ;;; 0x1213. The same is true for other user traps. Thus, a user trap 183 ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. 184 000011f0 44000213 trap #0x213 185 000011f4 4be00000 jr r31 186 000011f8 54000000 nop 187 000011fc .endproc _Open 189 000011fc .proc _Close 190 000011fc .global _Close 191 000011fc _Close: 192 000011fc 44000214 trap #0x214 193 00001200 4be00000 jr r31 194 00001204 54000000 nop 195 00001208 .endproc _Close 197 00001208 .proc _Read 198 00001208 .global _Read 199 00001208 _Read: 200 00001208 44000210 trap #0x210 201 0000120c 4be00000 jr r31 202 00001210 54000000 nop 203 00001214 .endproc _Read 205 00001214 .proc _Write 206 00001214 .global _Write 207 00001214 _Write: 208 00001214 44000211 trap #0x211 209 00001218 4be00000 jr r31 210 0000121c 54000000 nop 211 00001220 .endproc _Write 213 00001220 .proc _Lseek 214 00001220 .global _Lseek 215 00001220 _Lseek: 216 00001220 44000212 trap #0x212 217 00001224 4be00000 jr r31 218 00001228 54000000 nop 219 0000122c .endproc _Lseek 221 0000122c .proc _Putchar 222 0000122c .global _Putchar 223 0000122c _Putchar: 224 0000122c 44000280 trap #0x280 225 00001230 4be00000 jr r31 226 00001234 54000000 nop 227 00001238 .endproc _Putchar 229 00001238 .proc _Printf 230 00001238 .global _Printf 231 00001238 _Printf: 232 00001238 44000201 trap #0x201 233 0000123c 4be00000 jr r31 234 00001240 54000000 nop 235 00001244 .endproc _Printf 237 00001244 .proc _getpid 238 00001244 .global _getpid 239 00001244 _getpid: 240 00001244 44000431 trap #0x431 241 00001248 4be00000 jr r31 242 0000124c 54000000 nop 243 00001250 .endproc _getpid 245 00001250 .proc _process_create 246 00001250 .global _process_create 247 00001250 _process_create: 248 00001250 44000432 trap #0x432 249 00001254 4be00000 jr r31 250 00001258 54000000 nop 251 0000125c .endproc _process_create 253 0000125c .proc _shmget 254 0000125c .global _shmget 255 0000125c _shmget: 256 0000125c 44000440 trap #0x440 257 00001260 4be00000 jr r31 258 00001264 54000000 nop 259 00001268 .endproc _shmget 261 00001268 .proc _shmat 262 00001268 .global _shmat 263 00001268 _shmat: 264 00001268 44000441 trap #0x441 265 0000126c 4be00000 jr r31 266 00001270 54000000 nop 267 00001274 .endproc _shmat 269 00001274 .proc _sem_create 270 00001274 .global _sem_create 271 00001274 _sem_create: 272 00001274 44000450 trap #0x450 273 00001278 4be00000 jr r31 274 0000127c 54000000 nop 275 00001280 .endproc _sem_create 277 00001280 .proc _sem_wait 278 00001280 .global _sem_wait 279 00001280 _sem_wait: 280 00001280 44000451 trap #0x451 281 00001284 4be00000 jr r31 282 00001288 54000000 nop 283 0000128c .endproc _sem_wait 285 0000128c .proc _sem_signal 286 0000128c .global _sem_signal 287 0000128c _sem_signal: 288 0000128c 44000452 trap #0x452 289 00001290 4be00000 jr r31 290 00001294 54000000 nop 291 00001298 .endproc _sem_signal 293 00001298 .proc _lock_create 294 00001298 .global _lock_create 295 00001298 _lock_create: 296 00001298 44000453 trap #0x453 297 0000129c 4be00000 jr r31 298 000012a0 54000000 nop 299 000012a4 .endproc _lock_create 301 000012a4 .proc _lock_acquire 302 000012a4 .global _lock_acquire 303 000012a4 _lock_acquire: 304 000012a4 44000454 trap #0x454 305 000012a8 4be00000 jr r31 306 000012ac 54000000 nop 307 000012b0 .endproc _lock_acquire 309 000012b0 .proc _lock_release 310 000012b0 .global _lock_release 311 000012b0 _lock_release: 312 000012b0 44000455 trap #0x455 313 000012b4 4be00000 jr r31 314 000012b8 54000000 nop 315 000012bc .endproc _lock_release 317 000012bc .proc _cond_create 318 000012bc .global _cond_create 319 000012bc _cond_create: 320 000012bc 44000456 trap #0x456 321 000012c0 4be00000 jr r31 322 000012c4 54000000 nop 323 000012c8 .endproc _cond_create 325 000012c8 .proc _cond_wait 326 000012c8 .global _cond_wait 327 000012c8 _cond_wait: 328 000012c8 44000457 trap #0x457 329 000012cc 4be00000 jr r31 330 000012d0 54000000 nop 331 000012d4 .endproc _cond_wait 333 000012d4 .proc _cond_signal 334 000012d4 .global _cond_signal 335 000012d4 _cond_signal: 336 000012d4 44000458 trap #0x458 337 000012d8 4be00000 jr r31 338 000012dc 54000000 nop 339 000012e0 .endproc _cond_signal 341 000012e0 .proc _cond_broadcast 342 000012e0 .global _cond_broadcast 343 000012e0 _cond_broadcast: 344 000012e0 44000459 trap #0x459 345 000012e4 4be00000 jr r31 346 000012e8 54000000 nop 347 000012ec .endproc _cond_broadcast 349 ; Compiled by GCC 351 000012ec .align 2 352 000012ec .proc _isspace 353 000012ec .global _isspace 354 000012ec _isspace: 355 ; Function 'isspace'; 0 bytes of locals, 1 regs to save. 356 000012ec afbefffc sw -4(r29),r30; push fp 357 000012f0 001df020 add r30,r0,r29; fp = sp 358 000012f4 afbffff8 sw -8(r29),r31; push ret addr 359 000012f8 2fbd0010 subui r29,r29,#16; alloc local storage 360 000012fc afa20000 sw 0(r29),r2 361 00001300 83c20003 lb r2,3(r30) 362 00001304 201f0000 addi r31,r0,#0 363 00001308 304100ff andi r1,r2,#0x00ff 364 0000130c 60210020 seqi r1,r1,#32 365 00001310 14200018 bnez r1,L6_LF2 366 00001314 54000000 nop; not filled. 367 00001318 2041fff7 addi r1,r2,#-9 368 0000131c 302100ff andi r1,r1,#0x00ff 369 00001320 70210001 sleui r1,r1,#1 370 00001324 10200008 beqz r1,L5_LF2 371 00001328 54000000 nop; not filled. 372 0000132c L6_LF2: 373 0000132c 201f0001 addi r31,r0,#1 374 00001330 L5_LF2: 375 00001330 001f0820 add r1,r0,r31 376 00001334 8fa20000 lw r2,0(r29) 377 00001338 8fdffff8 lw r31,-8(r30) 378 0000133c 001ee820 add r29,r0,r30 379 00001340 8fdefffc lw r30,-4(r30) 380 00001344 4be00000 jr r31 381 00001348 54000000 nop 382 0000134c .endproc _isspace 383 0000134c .align 2 384 0000134c .proc _isxdigit 385 0000134c .global _isxdigit 386 0000134c _isxdigit: 387 ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. 388 0000134c afbefffc sw -4(r29),r30; push fp 389 00001350 001df020 add r30,r0,r29; fp = sp 390 00001354 afbffff8 sw -8(r29),r31; push ret addr 391 00001358 2fbd0010 subui r29,r29,#16; alloc local storage 392 0000135c afa20000 sw 0(r29),r2 393 00001360 83df0003 lb r31,3(r30) 394 00001364 20020000 addi r2,r0,#0 395 00001368 23e1ffd0 addi r1,r31,#-48 396 0000136c 302100ff andi r1,r1,#0x00ff 397 00001370 70210009 sleui r1,r1,#9 398 00001374 14200028 bnez r1,L12_LF2 399 00001378 54000000 nop; not filled. 400 0000137c 23e1ff9f addi r1,r31,#-97 401 00001380 302100ff andi r1,r1,#0x00ff 402 00001384 70210005 sleui r1,r1,#5 403 00001388 14200014 bnez r1,L12_LF2 404 0000138c 54000000 nop; not filled. 405 00001390 33e100ff andi r1,r31,#0x00ff 406 00001394 64210041 snei r1,r1,#65 407 00001398 14200008 bnez r1,L11_LF2 408 0000139c 54000000 nop; not filled. 409 000013a0 L12_LF2: 410 000013a0 20020001 addi r2,r0,#1 411 000013a4 L11_LF2: 412 000013a4 00020820 add r1,r0,r2 413 000013a8 8fa20000 lw r2,0(r29) 414 000013ac 8fdffff8 lw r31,-8(r30) 415 000013b0 001ee820 add r29,r0,r30 416 000013b4 8fdefffc lw r30,-4(r30) 417 000013b8 4be00000 jr r31 418 000013bc 54000000 nop 419 000013c0 .endproc _isxdigit 420 000013c0 .align 2 421 000013c0 .proc _dstrcpy 422 000013c0 .global _dstrcpy 423 000013c0 _dstrcpy: 424 ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. 425 000013c0 afbefffc sw -4(r29),r30; push fp 426 000013c4 001df020 add r30,r0,r29; fp = sp 427 000013c8 afbffff8 sw -8(r29),r31; push ret addr 428 000013cc 2fbd0010 subui r29,r29,#16; alloc local storage 429 000013d0 afa20000 sw 0(r29),r2 430 000013d4 afa30004 sw 4(r29),r3 431 000013d8 8fdf0000 lw r31,(r30) 432 000013dc 8fc20004 lw r2,4(r30) 433 000013e0 001f1820 add r3,r0,r31 434 000013e4 L19_LF2: 435 000013e4 80410000 lb r1,(r2) 436 000013e8 a3e10000 sb (r31),r1 437 000013ec 20420001 addi r2,r2,#1 438 000013f0 23ff0001 addi r31,r31,#1 439 000013f4 302100ff andi r1,r1,#0x00ff 440 000013f8 64210000 snei r1,r1,#0 441 000013fc 1420ffe4 bnez r1,L19_LF2 442 00001400 54000000 nop; not filled. 443 00001404 00030820 add r1,r0,r3 444 00001408 8fa20000 lw r2,0(r29) 445 0000140c 8fa30004 lw r3,4(r29) 446 00001410 8fdffff8 lw r31,-8(r30) 447 00001414 001ee820 add r29,r0,r30 448 00001418 8fdefffc lw r30,-4(r30) 449 0000141c 4be00000 jr r31 450 00001420 54000000 nop 451 00001424 .endproc _dstrcpy 452 00001424 .align 2 453 00001424 .proc _dstrncpy 454 00001424 .global _dstrncpy 455 00001424 _dstrncpy: 456 ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. 457 00001424 afbefffc sw -4(r29),r30; push fp 458 00001428 001df020 add r30,r0,r29; fp = sp 459 0000142c afbffff8 sw -8(r29),r31; push ret addr 460 00001430 2fbd0018 subui r29,r29,#24; alloc local storage 461 00001434 afa20000 sw 0(r29),r2 462 00001438 afa30004 sw 4(r29),r3 463 0000143c afa40008 sw 8(r29),r4 464 00001440 8fc20000 lw r2,(r30) 465 00001444 8fc30004 lw r3,4(r30) 466 00001448 8fdf0008 lw r31,8(r30) 467 0000144c 00022020 add r4,r0,r2 468 00001450 08000024 j L37_LF2 469 00001454 54000000 nop; not filled. 470 00001458 L34_LF2: 471 00001458 80610000 lb r1,(r3) 472 0000145c a0410000 sb (r2),r1 473 00001460 20630001 addi r3,r3,#1 474 00001464 20420001 addi r2,r2,#1 475 00001468 302100ff andi r1,r1,#0x00ff 476 0000146c 64210000 snei r1,r1,#0 477 00001470 10200018 beqz r1,L32_LF2 478 00001474 54000000 nop; not filled. 479 00001478 L37_LF2: 480 00001478 001f0820 add r1,r0,r31 481 0000147c 23ffffff addi r31,r31,#-1 482 00001480 70210000 slei r1,r1,#0 483 00001484 1020ffd0 beqz r1,L34_LF2 484 00001488 54000000 nop; not filled. 485 0000148c L32_LF2: 486 0000148c 00040820 add r1,r0,r4 487 00001490 8fa20000 lw r2,0(r29) 488 00001494 8fa30004 lw r3,4(r29) 489 00001498 8fa40008 lw r4,8(r29) 490 0000149c 8fdffff8 lw r31,-8(r30) 491 000014a0 001ee820 add r29,r0,r30 492 000014a4 8fdefffc lw r30,-4(r30) 493 000014a8 4be00000 jr r31 494 000014ac 54000000 nop 495 000014b0 .endproc _dstrncpy 496 000014b0 .align 2 497 000014b0 .proc _dstrcat 498 000014b0 .global _dstrcat 499 000014b0 _dstrcat: 500 ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. 501 000014b0 afbefffc sw -4(r29),r30; push fp 502 000014b4 001df020 add r30,r0,r29; fp = sp 503 000014b8 afbffff8 sw -8(r29),r31; push ret addr 504 000014bc 2fbd0010 subui r29,r29,#16; alloc local storage 505 000014c0 afa20000 sw 0(r29),r2 506 000014c4 afa30004 sw 4(r29),r3 507 000014c8 8fdf0000 lw r31,(r30) 508 000014cc 001f1820 add r3,r0,r31 509 000014d0 90610000 lbu r1,(r3) 510 000014d4 64210000 snei r1,r1,#0 511 000014d8 10200018 beqz r1,L50_LF2 512 000014dc 54000000 nop; not filled. 513 000014e0 L51_LF2: 514 000014e0 23ff0001 addi r31,r31,#1 515 000014e4 93e10000 lbu r1,(r31) 516 000014e8 64210000 snei r1,r1,#0 517 000014ec 1420fff0 bnez r1,L51_LF2 518 000014f0 54000000 nop; not filled. 519 000014f4 L50_LF2: 520 000014f4 001f1020 add r2,r0,r31 521 000014f8 8fdf0004 lw r31,4(r30) 522 000014fc L54_LF2: 523 000014fc 83e10000 lb r1,(r31) 524 00001500 a0410000 sb (r2),r1 525 00001504 23ff0001 addi r31,r31,#1 526 00001508 20420001 addi r2,r2,#1 527 0000150c 302100ff andi r1,r1,#0x00ff 528 00001510 64210000 snei r1,r1,#0 529 00001514 1420ffe4 bnez r1,L54_LF2 530 00001518 54000000 nop; not filled. 531 0000151c 00030820 add r1,r0,r3 532 00001520 8fa20000 lw r2,0(r29) 533 00001524 8fa30004 lw r3,4(r29) 534 00001528 8fdffff8 lw r31,-8(r30) 535 0000152c 001ee820 add r29,r0,r30 536 00001530 8fdefffc lw r30,-4(r30) 537 00001534 4be00000 jr r31 538 00001538 54000000 nop 539 0000153c .endproc _dstrcat 540 0000153c .align 2 541 0000153c .proc _dstrncmp 542 0000153c .global _dstrncmp 543 0000153c _dstrncmp: 544 ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. 545 0000153c afbefffc sw -4(r29),r30; push fp 546 00001540 001df020 add r30,r0,r29; fp = sp 547 00001544 afbffff8 sw -8(r29),r31; push ret addr 548 00001548 2fbd0018 subui r29,r29,#24; alloc local storage 549 0000154c afa20000 sw 0(r29),r2 550 00001550 afa30004 sw 4(r29),r3 551 00001554 afa40008 sw 8(r29),r4 552 00001558 afa5000c sw 12(r29),r5 553 0000155c 8fc30000 lw r3,(r30) 554 00001560 8fc40004 lw r4,4(r30) 555 00001564 8fc50008 lw r5,8(r30) 556 00001568 20020000 addi r2,r0,#0 557 0000156c 0045082a slt r1,r2,r5 558 00001570 1020003c beqz r1,L73_LF2 559 00001574 54000000 nop; not filled. 560 00001578 L75_LF2: 561 00001578 909f0000 lbu r31,(r4) 562 0000157c 67e10000 snei r1,r31,#0 563 00001580 10200038 beqz r1,L86_LF2 564 00001584 54000000 nop; not filled. 565 00001588 90610000 lbu r1,(r3) 566 0000158c 003f0829 sne r1,r1,r31 567 00001590 1420001c bnez r1,L73_LF2 568 00001594 54000000 nop; not filled. 569 00001598 20630001 addi r3,r3,#1 570 0000159c 20840001 addi r4,r4,#1 571 000015a0 20420001 addi r2,r2,#1 572 000015a4 0045082a slt r1,r2,r5 573 000015a8 1420ffcc bnez r1,L75_LF2 574 000015ac 54000000 nop; not filled. 575 000015b0 L73_LF2: 576 000015b0 00450828 seq r1,r2,r5 577 000015b4 10200010 beqz r1,L80_LF2 578 000015b8 54000000 nop; not filled. 579 000015bc L86_LF2: 580 000015bc 20010000 addi r1,r0,#0 581 000015c0 08000028 j L84_LF2 582 000015c4 54000000 nop; not filled. 583 000015c8 L80_LF2: 584 000015c8 907f0000 lbu r31,(r3) 585 000015cc 90830000 lbu r3,(r4) 586 000015d0 03e30822 sub r1,r31,r3 587 000015d4 74210000 sgei r1,r1,#0 588 000015d8 2002ffff addi r2,r0,#-1 589 000015dc 10200008 beqz r1,L82_LF2 590 000015e0 54000000 nop; not filled. 591 000015e4 03e31029 sne r2,r31,r3 592 000015e8 L82_LF2: 593 000015e8 00020820 add r1,r0,r2 594 000015ec L84_LF2: 595 000015ec 8fa20000 lw r2,0(r29) 596 000015f0 8fa30004 lw r3,4(r29) 597 000015f4 8fa40008 lw r4,8(r29) 598 000015f8 8fa5000c lw r5,12(r29) 599 000015fc 8fdffff8 lw r31,-8(r30) 600 00001600 001ee820 add r29,r0,r30 601 00001604 8fdefffc lw r30,-4(r30) 602 00001608 4be00000 jr r31 603 0000160c 54000000 nop 604 00001610 .endproc _dstrncmp 605 00001610 .align 2 606 00001610 .proc _dstrlen 607 00001610 .global _dstrlen 608 00001610 _dstrlen: 609 ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. 610 00001610 afbefffc sw -4(r29),r30; push fp 611 00001614 001df020 add r30,r0,r29; fp = sp 612 00001618 afbffff8 sw -8(r29),r31; push ret addr 613 0000161c 2fbd0010 subui r29,r29,#16; alloc local storage 614 00001620 afa20000 sw 0(r29),r2 615 00001624 8fdf0000 lw r31,(r30) 616 00001628 20020000 addi r2,r0,#0 617 0000162c 08000008 j L97_LF2 618 00001630 54000000 nop; not filled. 619 00001634 L95_LF2: 620 00001634 20420001 addi r2,r2,#1 621 00001638 L97_LF2: 622 00001638 93e10000 lbu r1,(r31) 623 0000163c 23ff0001 addi r31,r31,#1 624 00001640 64210000 snei r1,r1,#0 625 00001644 1420ffec bnez r1,L95_LF2 626 00001648 54000000 nop; not filled. 627 0000164c 00020820 add r1,r0,r2 628 00001650 8fa20000 lw r2,0(r29) 629 00001654 8fdffff8 lw r31,-8(r30) 630 00001658 001ee820 add r29,r0,r30 631 0000165c 8fdefffc lw r30,-4(r30) 632 00001660 4be00000 jr r31 633 00001664 54000000 nop 634 00001668 .endproc _dstrlen 635 00001668 .align 2 636 00001668 .proc _dstrstr 637 00001668 .global _dstrstr 638 00001668 _dstrstr: 639 ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. 640 00001668 afbefffc sw -4(r29),r30; push fp 641 0000166c 001df020 add r30,r0,r29; fp = sp 642 00001670 afbffff8 sw -8(r29),r31; push ret addr 643 00001674 2fbd0020 subui r29,r29,#32; alloc local storage 644 00001678 afa20000 sw 0(r29),r2 645 0000167c afa30004 sw 4(r29),r3 646 00001680 afa40008 sw 8(r29),r4 647 00001684 afa5000c sw 12(r29),r5 648 00001688 afa60010 sw 16(r29),r6 649 0000168c afa70014 sw 20(r29),r7 650 00001690 8fc50000 lw r5,(r30) 651 00001694 8fc70004 lw r7,4(r30) 652 00001698 20030000 addi r3,r0,#0 653 0000169c 90e10000 lbu r1,(r7) 654 000016a0 20e20001 addi r2,r7,#1 655 000016a4 64210000 snei r1,r1,#0 656 000016a8 1020001c beqz r1,L125_LF2 657 000016ac 54000000 nop; not filled. 658 000016b0 L126_LF2: 659 000016b0 20630001 addi r3,r3,#1 660 000016b4 90410000 lbu r1,(r2) 661 000016b8 20420001 addi r2,r2,#1 662 000016bc 64210000 snei r1,r1,#0 663 000016c0 1420ffec bnez r1,L126_LF2 664 000016c4 54000000 nop; not filled. 665 000016c8 L125_LF2: 666 000016c8 00033020 add r6,r0,r3 667 000016cc 080000ac j L149_LF2 668 000016d0 54000000 nop; not filled. 669 000016d4 L130_LF2: 670 000016d4 00051820 add r3,r0,r5 671 000016d8 00072020 add r4,r0,r7 672 000016dc 20020000 addi r2,r0,#0 673 000016e0 0046082a slt r1,r2,r6 674 000016e4 1020003c beqz r1,L134_LF2 675 000016e8 54000000 nop; not filled. 676 000016ec L136_LF2: 677 000016ec 909f0000 lbu r31,(r4) 678 000016f0 67e10000 snei r1,r31,#0 679 000016f4 10200038 beqz r1,L150_LF2 680 000016f8 54000000 nop; not filled. 681 000016fc 90610000 lbu r1,(r3) 682 00001700 003f0829 sne r1,r1,r31 683 00001704 1420001c bnez r1,L134_LF2 684 00001708 54000000 nop; not filled. 685 0000170c 20630001 addi r3,r3,#1 686 00001710 20840001 addi r4,r4,#1 687 00001714 20420001 addi r2,r2,#1 688 00001718 0046082a slt r1,r2,r6 689 0000171c 1420ffcc bnez r1,L136_LF2 690 00001720 54000000 nop; not filled. 691 00001724 L134_LF2: 692 00001724 00460828 seq r1,r2,r6 693 00001728 10200010 beqz r1,L141_LF2 694 0000172c 54000000 nop; not filled. 695 00001730 L150_LF2: 696 00001730 20010000 addi r1,r0,#0 697 00001734 08000028 j L132_LF2 698 00001738 54000000 nop; not filled. 699 0000173c L141_LF2: 700 0000173c 90630000 lbu r3,(r3) 701 00001740 90820000 lbu r2,(r4) 702 00001744 00620822 sub r1,r3,r2 703 00001748 74210000 sgei r1,r1,#0 704 0000174c 201fffff addi r31,r0,#-1 705 00001750 10200008 beqz r1,L143_LF2 706 00001754 54000000 nop; not filled. 707 00001758 0062f829 sne r31,r3,r2 708 0000175c L143_LF2: 709 0000175c 001f0820 add r1,r0,r31 710 00001760 L132_LF2: 711 00001760 64210000 snei r1,r1,#0 712 00001764 14200010 bnez r1,L131_LF2 713 00001768 54000000 nop; not filled. 714 0000176c 00050820 add r1,r0,r5 715 00001770 0800001c j L146_LF2 716 00001774 54000000 nop; not filled. 717 00001778 L131_LF2: 718 00001778 20a50001 addi r5,r5,#1 719 0000177c L149_LF2: 720 0000177c 90a10000 lbu r1,(r5) 721 00001780 64210000 snei r1,r1,#0 722 00001784 1420ff4c bnez r1,L130_LF2 723 00001788 54000000 nop; not filled. 724 0000178c 20010000 addi r1,r0,#0 725 00001790 L146_LF2: 726 00001790 8fa20000 lw r2,0(r29) 727 00001794 8fa30004 lw r3,4(r29) 728 00001798 8fa40008 lw r4,8(r29) 729 0000179c 8fa5000c lw r5,12(r29) 730 000017a0 8fa60010 lw r6,16(r29) 731 000017a4 8fa70014 lw r7,20(r29) 732 000017a8 8fdffff8 lw r31,-8(r30) 733 000017ac 001ee820 add r29,r0,r30 734 000017b0 8fdefffc lw r30,-4(r30) 735 000017b4 4be00000 jr r31 736 000017b8 54000000 nop 737 000017bc .endproc _dstrstr 738 000017bc .align 2 739 000017bc .proc _dmindex 740 000017bc .global _dmindex 741 000017bc _dmindex: 742 ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. 743 000017bc afbefffc sw -4(r29),r30; push fp 744 000017c0 001df020 add r30,r0,r29; fp = sp 745 000017c4 afbffff8 sw -8(r29),r31; push ret addr 746 000017c8 2fbd0020 subui r29,r29,#32; alloc local storage 747 000017cc afa20000 sw 0(r29),r2 748 000017d0 afa30004 sw 4(r29),r3 749 000017d4 afa40008 sw 8(r29),r4 750 000017d8 afa5000c sw 12(r29),r5 751 000017dc afa60010 sw 16(r29),r6 752 000017e0 8fc40000 lw r4,(r30) 753 000017e4 8fc60004 lw r6,4(r30) 754 000017e8 90810000 lbu r1,(r4) 755 000017ec 64210000 snei r1,r1,#0 756 000017f0 10200060 beqz r1,L164_LF2 757 000017f4 54000000 nop; not filled. 758 000017f8 00012820 add r5,r0,r1 759 000017fc L165_LF2: 760 000017fc 00061020 add r2,r0,r6 761 00001800 80df0000 lb r31,(r6) 762 00001804 33e100ff andi r1,r31,#0x00ff 763 00001808 64210000 snei r1,r1,#0 764 0000180c 1020003c beqz r1,L163_LF2 765 00001810 54000000 nop; not filled. 766 00001814 90830000 lbu r3,(r4) 767 00001818 L169_LF2: 768 00001818 33e100ff andi r1,r31,#0x00ff 769 0000181c 00610828 seq r1,r3,r1 770 00001820 10200010 beqz r1,L168_LF2 771 00001824 54000000 nop; not filled. 772 00001828 00040820 add r1,r0,r4 773 0000182c 08000028 j L173_LF2 774 00001830 54000000 nop; not filled. 775 00001834 L168_LF2: 776 00001834 20420001 addi r2,r2,#1 777 00001838 805f0000 lb r31,(r2) 778 0000183c 33e100ff andi r1,r31,#0x00ff 779 00001840 64210000 snei r1,r1,#0 780 00001844 1420ffd0 bnez r1,L169_LF2 781 00001848 54000000 nop; not filled. 782 0000184c L163_LF2: 783 0000184c 14a0ffac bnez r5,L165_LF2 784 00001850 54000000 nop; not filled. 785 00001854 L164_LF2: 786 00001854 20010000 addi r1,r0,#0 787 00001858 L173_LF2: 788 00001858 8fa20000 lw r2,0(r29) 789 0000185c 8fa30004 lw r3,4(r29) 790 00001860 8fa40008 lw r4,8(r29) 791 00001864 8fa5000c lw r5,12(r29) 792 00001868 8fa60010 lw r6,16(r29) 793 0000186c 8fdffff8 lw r31,-8(r30) 794 00001870 001ee820 add r29,r0,r30 795 00001874 8fdefffc lw r30,-4(r30) 796 00001878 4be00000 jr r31 797 0000187c 54000000 nop 798 00001880 .endproc _dmindex 799 00001880 .align 2 800 00001880 .proc _dindex 801 00001880 .global _dindex 802 00001880 _dindex: 803 ; Function 'dindex'; 0 bytes of locals, 2 regs to save. 804 00001880 afbefffc sw -4(r29),r30; push fp 805 00001884 001df020 add r30,r0,r29; fp = sp 806 00001888 afbffff8 sw -8(r29),r31; push ret addr 807 0000188c 2fbd0010 subui r29,r29,#16; alloc local storage 808 00001890 afa20000 sw 0(r29),r2 809 00001894 afa30004 sw 4(r29),r3 810 00001898 8fc20000 lw r2,(r30) 811 0000189c 8fc30004 lw r3,4(r30) 812 000018a0 08000024 j L187_LF2 813 000018a4 54000000 nop; not filled. 814 000018a8 L183_LF2: 815 000018a8 33e100ff andi r1,r31,#0x00ff 816 000018ac 00230828 seq r1,r1,r3 817 000018b0 10200010 beqz r1,L184_LF2 818 000018b4 54000000 nop; not filled. 819 000018b8 00020820 add r1,r0,r2 820 000018bc 08000020 j L186_LF2 821 000018c0 54000000 nop; not filled. 822 000018c4 L184_LF2: 823 000018c4 20420001 addi r2,r2,#1 824 000018c8 L187_LF2: 825 000018c8 805f0000 lb r31,(r2) 826 000018cc 33e100ff andi r1,r31,#0x00ff 827 000018d0 64210000 snei r1,r1,#0 828 000018d4 1420ffd0 bnez r1,L183_LF2 829 000018d8 54000000 nop; not filled. 830 000018dc 20010000 addi r1,r0,#0 831 000018e0 L186_LF2: 832 000018e0 8fa20000 lw r2,0(r29) 833 000018e4 8fa30004 lw r3,4(r29) 834 000018e8 8fdffff8 lw r31,-8(r30) 835 000018ec 001ee820 add r29,r0,r30 836 000018f0 8fdefffc lw r30,-4(r30) 837 000018f4 4be00000 jr r31 838 000018f8 54000000 nop 839 000018fc .endproc _dindex 840 000018fc .align 2 841 000018fc .proc _ditoa 842 000018fc .global _ditoa 843 000018fc _ditoa: 844 ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. 845 000018fc afbefffc sw -4(r29),r30; push fp 846 00001900 001df020 add r30,r0,r29; fp = sp 847 00001904 afbffff8 sw -8(r29),r31; push ret addr 848 00001908 2fbd0020 subui r29,r29,#32; alloc local storage 849 0000190c afa20000 sw 0(r29),r2 850 00001910 afa30004 sw 4(r29),r3 851 00001914 afa40008 sw 8(r29),r4 852 00001918 afa5000c sw 12(r29),r5 853 0000191c afa60010 sw 16(r29),r6 854 00001920 8fc30000 lw r3,(r30) 855 00001924 8fc40004 lw r4,4(r30) 856 00001928 68610000 slti r1,r3,#0 857 0000192c 10200010 beqz r1,L203_LF2 858 00001930 54000000 nop; not filled. 859 00001934 2006002d addi r6,r0,(#0x2d)&0xff 860 00001938 08000014 j L216_LF2 861 0000193c 54000000 nop; not filled. 862 00001940 L203_LF2: 863 00001940 64610000 snei r1,r3,#0 864 00001944 14200018 bnez r1,L205_LF2 865 00001948 54000000 nop; not filled. 866 0000194c 20060030 addi r6,r0,(#0x30)&0xff 867 00001950 L216_LF2: 868 00001950 a0860000 sb (r4),r6 869 00001954 20840001 addi r4,r4,#1 870 00001958 0800007c j L204_LF2 871 0000195c 54000000 nop; not filled. 872 00001960 L205_LF2: 873 00001960 201f0001 addi r31,r0,#1 874 00001964 03e3082c sle r1,r31,r3 875 00001968 1020001c beqz r1,L208_LF2 876 0000196c 54000000 nop; not filled. 877 00001970 L209_LF2: 878 00001970 53e10002 slli r1,r31,#0x2 879 00001974 003f0820 add r1,r1,r31 880 00001978 503f0001 slli r31,r1,#0x1 881 0000197c 03e3082c sle r1,r31,r3 882 00001980 1420ffec bnez r1,L209_LF2 883 00001984 54000000 nop; not filled. 884 00001988 L208_LF2: 885 00001988 2005000a addi r5,r0,#10 886 0000198c L212_LF2: 887 0000198c 03e00035 movi2fp f0,r31 888 00001990 00a00835 movi2fp f1,r5 889 00001994 0401000f div f0,f0,f1 890 00001998 0000f834 movfp2i r31,f0 891 0000199c 00600035 movi2fp f0,r3 892 000019a0 03e00835 movi2fp f1,r31 893 000019a4 0401000f div f0,f0,f1 894 000019a8 00001034 movfp2i r2,f0 895 000019ac 20410030 addi r1,r2,#48 896 000019b0 a0810000 sb (r4),r1 897 000019b4 20840001 addi r4,r4,#1 898 000019b8 00400035 movi2fp f0,r2 899 000019bc 03e00835 movi2fp f1,r31 900 000019c0 0401000e mult f0,f0,f1 901 000019c4 00000834 movfp2i r1,f0 902 000019c8 00611822 sub r3,r3,r1 903 000019cc 6fe10001 sgti r1,r31,#1 904 000019d0 1420ffb8 bnez r1,L212_LF2 905 000019d4 54000000 nop; not filled. 906 000019d8 L204_LF2: 907 000019d8 20060000 addi r6,r0,(#0x0)&0xff 908 000019dc a0860000 sb (r4),r6 909 000019e0 8fa20000 lw r2,0(r29) 910 000019e4 8fa30004 lw r3,4(r29) 911 000019e8 8fa40008 lw r4,8(r29) 912 000019ec 8fa5000c lw r5,12(r29) 913 000019f0 8fa60010 lw r6,16(r29) 914 000019f4 8fdffff8 lw r31,-8(r30) 915 000019f8 001ee820 add r29,r0,r30 916 000019fc 8fdefffc lw r30,-4(r30) 917 00001a00 4be00000 jr r31 918 00001a04 54000000 nop 919 00001a08 .endproc _ditoa 920 00001a08 .align 2 921 00001a08 .proc _dstrtol 922 00001a08 .global _dstrtol 923 00001a08 _dstrtol: 924 ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. 925 00001a08 afbefffc sw -4(r29),r30; push fp 926 00001a0c 001df020 add r30,r0,r29; fp = sp 927 00001a10 afbffff8 sw -8(r29),r31; push ret addr 928 00001a14 2fbd0020 subui r29,r29,#32; alloc local storage 929 00001a18 afa20000 sw 0(r29),r2 930 00001a1c afa30004 sw 4(r29),r3 931 00001a20 afa40008 sw 8(r29),r4 932 00001a24 afa5000c sw 12(r29),r5 933 00001a28 afa60010 sw 16(r29),r6 934 00001a2c 8fc20000 lw r2,(r30) 935 00001a30 8fc50004 lw r5,4(r30) 936 00001a34 8fc40008 lw r4,8(r30) 937 00001a38 20030000 addi r3,r0,#0 938 00001a3c 08000008 j L247_LF2 939 00001a40 54000000 nop; not filled. 940 00001a44 L220_LF2: 941 00001a44 20420001 addi r2,r2,#1 942 00001a48 L247_LF2: 943 00001a48 805f0000 lb r31,(r2) 944 00001a4c 33e100ff andi r1,r31,#0x00ff 945 00001a50 60210020 seqi r1,r1,#32 946 00001a54 1420ffec bnez r1,L220_LF2 947 00001a58 54000000 nop; not filled. 948 00001a5c 23e1fff7 addi r1,r31,#-9 949 00001a60 302100ff andi r1,r1,#0x00ff 950 00001a64 70210001 sleui r1,r1,#1 951 00001a68 1420ffd8 bnez r1,L220_LF2 952 00001a6c 54000000 nop; not filled. 953 00001a70 64a10000 snei r1,r5,#0 954 00001a74 10200008 beqz r1,L222_LF2 955 00001a78 54000000 nop; not filled. 956 00001a7c aca20000 sw (r5),r2 957 00001a80 L222_LF2: 958 00001a80 905f0000 lbu r31,(r2) 959 00001a84 67e10000 snei r1,r31,#0 960 00001a88 10200090 beqz r1,L248_LF2 961 00001a8c 54000000 nop; not filled. 962 00001a90 63e1002d seqi r1,r31,#45 963 00001a94 10200014 beqz r1,L224_LF2 964 00001a98 54000000 nop; not filled. 965 00001a9c 2006ffff addi r6,r0,#-1 966 00001aa0 20420001 addi r2,r2,#1 967 00001aa4 08000008 j L225_LF2 968 00001aa8 54000000 nop; not filled. 969 00001aac L224_LF2: 970 00001aac 20060001 addi r6,r0,#1 971 00001ab0 L225_LF2: 972 00001ab0 64810000 snei r1,r4,#0 973 00001ab4 14200054 bnez r1,L226_LF2 974 00001ab8 54000000 nop; not filled. 975 00001abc 90410000 lbu r1,(r2) 976 00001ac0 60210030 seqi r1,r1,#48 977 00001ac4 10200040 beqz r1,L227_LF2 978 00001ac8 54000000 nop; not filled. 979 00001acc 20420001 addi r2,r2,#1 980 00001ad0 905f0000 lbu r31,(r2) 981 00001ad4 63e10078 seqi r1,r31,#120 982 00001ad8 14200010 bnez r1,L229_LF2 983 00001adc 54000000 nop; not filled. 984 00001ae0 63e10058 seqi r1,r31,#88 985 00001ae4 10200014 beqz r1,L228_LF2 986 00001ae8 54000000 nop; not filled. 987 00001aec L229_LF2: 988 00001aec 20040010 addi r4,r0,#16 989 00001af0 20420001 addi r2,r2,#1 990 00001af4 08000014 j L226_LF2 991 00001af8 54000000 nop; not filled. 992 00001afc L228_LF2: 993 00001afc 20040008 addi r4,r0,#8 994 00001b00 08000008 j L226_LF2 995 00001b04 54000000 nop; not filled. 996 00001b08 L227_LF2: 997 00001b08 2004000a addi r4,r0,#10 998 00001b0c L226_LF2: 999 00001b0c 2081ffff addi r1,r4,#-1 1000 00001b10 6c21000f sgtui r1,r1,#15 1001 00001b14 10200010 beqz r1,L233_LF2 1002 00001b18 54000000 nop; not filled. 1003 00001b1c L248_LF2: 1004 00001b1c 00030820 add r1,r0,r3 1005 00001b20 080000c4 j L245_LF2 1006 00001b24 54000000 nop; not filled. 1007 00001b28 L233_LF2: 1008 00001b28 805f0000 lb r31,(r2) 1009 00001b2c 23e1ffd0 addi r1,r31,#-48 1010 00001b30 302100ff andi r1,r1,#0x00ff 1011 00001b34 70210009 sleui r1,r1,#9 1012 00001b38 10200014 beqz r1,L236_LF2 1013 00001b3c 54000000 nop; not filled. 1014 00001b40 33e100ff andi r1,r31,#0x00ff 1015 00001b44 2021ffd0 addi r1,r1,#-48 1016 00001b48 08000050 j L237_LF2 1017 00001b4c 54000000 nop; not filled. 1018 00001b50 L236_LF2: 1019 00001b50 23e1ff9f addi r1,r31,#-97 1020 00001b54 302100ff andi r1,r1,#0x00ff 1021 00001b58 70210019 sleui r1,r1,#25 1022 00001b5c 10200014 beqz r1,L238_LF2 1023 00001b60 54000000 nop; not filled. 1024 00001b64 33e100ff andi r1,r31,#0x00ff 1025 00001b68 2021ffa9 addi r1,r1,#-87 1026 00001b6c 0800002c j L237_LF2 1027 00001b70 54000000 nop; not filled. 1028 00001b74 L238_LF2: 1029 00001b74 23e1ffbf addi r1,r31,#-65 1030 00001b78 302100ff andi r1,r1,#0x00ff 1031 00001b7c 70210019 sleui r1,r1,#25 1032 00001b80 10200014 beqz r1,L240_LF2 1033 00001b84 54000000 nop; not filled. 1034 00001b88 33e100ff andi r1,r31,#0x00ff 1035 00001b8c 2021ffc9 addi r1,r1,#-55 1036 00001b90 08000008 j L237_LF2 1037 00001b94 54000000 nop; not filled. 1038 00001b98 L240_LF2: 1039 00001b98 200103e8 addi r1,r0,#1000 1040 00001b9c L237_LF2: 1041 00001b9c 0024f82a slt r31,r1,r4 1042 00001ba0 13e00024 beqz r31,L246_LF2 1043 00001ba4 54000000 nop; not filled. 1044 00001ba8 00600035 movi2fp f0,r3 1045 00001bac 00800835 movi2fp f1,r4 1046 00001bb0 0401000e mult f0,f0,f1 1047 00001bb4 00001834 movfp2i r3,f0 1048 00001bb8 00611820 add r3,r3,r1 1049 00001bbc 20420001 addi r2,r2,#1 1050 00001bc0 17e0ff64 bnez r31,L233_LF2 1051 00001bc4 54000000 nop; not filled. 1052 00001bc8 L246_LF2: 1053 00001bc8 64a10000 snei r1,r5,#0 1054 00001bcc 10200008 beqz r1,L244_LF2 1055 00001bd0 54000000 nop; not filled. 1056 00001bd4 aca20000 sw (r5),r2 1057 00001bd8 L244_LF2: 1058 00001bd8 00600035 movi2fp f0,r3 1059 00001bdc 00c00835 movi2fp f1,r6 1060 00001be0 0401000e mult f0,f0,f1 1061 00001be4 00000834 movfp2i r1,f0 1062 00001be8 L245_LF2: 1063 00001be8 8fa20000 lw r2,0(r29) 1064 00001bec 8fa30004 lw r3,4(r29) 1065 00001bf0 8fa40008 lw r4,8(r29) 1066 00001bf4 8fa5000c lw r5,12(r29) 1067 00001bf8 8fa60010 lw r6,16(r29) 1068 00001bfc 8fdffff8 lw r31,-8(r30) 1069 00001c00 001ee820 add r29,r0,r30 1070 00001c04 8fdefffc lw r30,-4(r30) 1071 00001c08 4be00000 jr r31 1072 00001c0c 54000000 nop 1073 00001c10 .endproc _dstrtol 1074 00001c10 .align 2 1075 00001c10 .proc _bcopy 1076 00001c10 .global _bcopy 1077 00001c10 _bcopy: 1078 ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. 1079 00001c10 afbefffc sw -4(r29),r30; push fp 1080 00001c14 001df020 add r30,r0,r29; fp = sp 1081 00001c18 afbffff8 sw -8(r29),r31; push ret addr 1082 00001c1c 2fbd0018 subui r29,r29,#24; alloc local storage 1083 00001c20 afa20000 sw 0(r29),r2 1084 00001c24 afa30004 sw 4(r29),r3 1085 00001c28 afa40008 sw 8(r29),r4 1086 00001c2c 8fc30000 lw r3,(r30) 1087 00001c30 8fc20004 lw r2,4(r30) 1088 00001c34 8fdf0008 lw r31,8(r30) 1089 00001c38 08000014 j L259_LF2 1090 00001c3c 54000000 nop; not filled. 1091 00001c40 L257_LF2: 1092 00001c40 80640000 lb r4,(r3) 1093 00001c44 a0440000 sb (r2),r4 1094 00001c48 20630001 addi r3,r3,#1 1095 00001c4c 20420001 addi r2,r2,#1 1096 00001c50 L259_LF2: 1097 00001c50 001f0820 add r1,r0,r31 1098 00001c54 23ffffff addi r31,r31,#-1 1099 00001c58 6c210000 sgti r1,r1,#0 1100 00001c5c 1420ffe0 bnez r1,L257_LF2 1101 00001c60 54000000 nop; not filled. 1102 00001c64 8fa20000 lw r2,0(r29) 1103 00001c68 8fa30004 lw r3,4(r29) 1104 00001c6c 8fa40008 lw r4,8(r29) 1105 00001c70 8fdffff8 lw r31,-8(r30) 1106 00001c74 001ee820 add r29,r0,r30 1107 00001c78 8fdefffc lw r30,-4(r30) 1108 00001c7c 4be00000 jr r31 1109 00001c80 54000000 nop 1110 00001c84 .endproc _bcopy 1111 00001c84 .align 2 1112 00001c84 .proc _bzero 1113 00001c84 .global _bzero 1114 00001c84 _bzero: 1115 ; Function 'bzero'; 0 bytes of locals, 2 regs to save. 1116 00001c84 afbefffc sw -4(r29),r30; push fp 1117 00001c88 001df020 add r30,r0,r29; fp = sp 1118 00001c8c afbffff8 sw -8(r29),r31; push ret addr 1119 00001c90 2fbd0010 subui r29,r29,#16; alloc local storage 1120 00001c94 afa20000 sw 0(r29),r2 1121 00001c98 afa30004 sw 4(r29),r3 1122 00001c9c 8fc20000 lw r2,(r30) 1123 00001ca0 8fdf0004 lw r31,4(r30) 1124 00001ca4 08000010 j L270_LF2 1125 00001ca8 54000000 nop; not filled. 1126 00001cac L268_LF2: 1127 00001cac 20030000 addi r3,r0,(#0x0)&0xff 1128 00001cb0 a0430000 sb (r2),r3 1129 00001cb4 20420001 addi r2,r2,#1 1130 00001cb8 L270_LF2: 1131 00001cb8 001f0820 add r1,r0,r31 1132 00001cbc 23ffffff addi r31,r31,#-1 1133 00001cc0 6c210000 sgti r1,r1,#0 1134 00001cc4 1420ffe4 bnez r1,L268_LF2 1135 00001cc8 54000000 nop; not filled. 1136 00001ccc 8fa20000 lw r2,0(r29) 1137 00001cd0 8fa30004 lw r3,4(r29) 1138 00001cd4 8fdffff8 lw r31,-8(r30) 1139 00001cd8 001ee820 add r29,r0,r30 1140 00001cdc 8fdefffc lw r30,-4(r30) 1141 00001ce0 4be00000 jr r31 1142 00001ce4 54000000 nop 1143 00001ce8 .endproc _bzero 1144 ;;; Ethan L. Miller, 1999. Released to the public domain 1145 ;;; 1146 ;;; Most of the traps are called in files from libtraps. 1149 00001ce8 .align 2 1150 00001ce8 .proc _exit 1151 00001ce8 .global _exit 1152 00001ce8 _exit: 1153 00001ce8 44000300 trap #0x300 1154 00001cec 4be00000 jr r31 1155 00001cf0 54000000 nop 1156 00001cf4 .endproc _exit 1158 ; for the benefit of gcc. 1159 00001cf4 .proc ___main 1160 00001cf4 .global ___main 1161 00001cf4 ___main: 1162 00001cf4 4be00000 jr r31 1163 00001cf8 54000000 nop 1164 00001cfc .endproc ___main 1165 00001cfc .text 1166 00001cfc .global _etext 1167 00001cfc _etext: 1168 00001cfc .align 3 1169 00001d00 .data 1170 0000207e .global _edata 1171 0000207e _edata:
home/bshapir/cs314/project2/src/memory.c
// // memory.c // // Routines for dealing with memory management. static char rcsid[] = "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "memory.h" #include "process.h" #include "queue.h" static uint32 pagestart; static int freemapmax; static int nfreepages; static uint32 freepages[MEMORY_MAX_PAGES/32]; static uint32 negativeone = 0xffffffff; //---------------------------------------------------------------------- // // This silliness is required because the compiler believes that // it can invert a number by subtracting it from zero and subtracting // an additional 1. This works unless you try to negate 0x80000000, // which causes an overflow when subtracted from 0. Simply // trying to do an XOR with 0xffffffff results in the same code // being emitted. // //---------------------------------------------------------------------- static inline uint32 invert (uint32 n) { return (n ^ negativeone); } //---------------------------------------------------------------------- // // MemoryGetSize // // Return the total size of memory in the simulator. This is // available by reading a special location. // //---------------------------------------------------------------------- int MemoryGetSize () { return (*((int *)DLX_MEMSIZE_ADDRESS)); } //---------------------------------------------------------------------- // // MemorySetFreemap // //---------------------------------------------------------------------- inline void MemorySetFreemap (int p, int b) { uint32 wd = p / 32; uint32 bitnum = p % 32; freepages[wd] = (freepages[wd] & invert(1 << bitnum)) | (b << bitnum); dbprintf ('m', "Set freemap entry %d to 0x%x.\n", wd, freepages[wd]); } � //---------------------------------------------------------------------- // // MemoryInitModule // // Initialize the memory module of the operating system. // //---------------------------------------------------------------------- void MemoryModuleInit () { int i; int maxpage = MemoryGetSize () / MEMORY_PAGE_SIZE; int curpage; pagestart = (lastosaddress + MEMORY_PAGE_SIZE - 4) / MEMORY_PAGE_SIZE; freemapmax = (maxpage+31) / 32; dbprintf ('m', "Map has %d entries, memory size is 0x%x.\n", freemapmax, maxpage); dbprintf ('m', "Free pages start with page # 0x%x.\n", pagestart); for (i = 0; i < freemapmax; i++) { // Initially, all pages are considered in use. This is done to make // sure we don't have any partially initialized freemap entries. freepages[i] = 0; } nfreepages = 0; for (curpage = pagestart; curpage < maxpage; curpage++) { nfreepages += 1; MemorySetFreemap (curpage, 1); } dbprintf ('m', "Initialized %d free pages.\n", nfreepages); } � //---------------------------------------------------------------------- // // MemoryAllocPage // // Allocate a page of memory. // //---------------------------------------------------------------------- inline int MemoryAllocPage () { static int mapnum = 0; int bitnum; uint32 v; if (nfreepages == 0) { printf("ERROR AT THIS POINT\n"); return (0); } dbprintf ('m', "Allocating memory, starting with page %d\n", mapnum); while (freepages[mapnum] == 0) { mapnum += 1; if (mapnum >= freemapmax) { mapnum = 0; } } v = freepages[mapnum]; for (bitnum = 0; (v & (1 << bitnum)) == 0; bitnum++) { } freepages[mapnum] &= invert(1 << bitnum); v = (mapnum * 32) + bitnum; dbprintf ('m', "Allocated memory, from map %d, page %d, map=0x%x.\n", mapnum, v, freepages[mapnum]); nfreepages -= 1; return (v); } //---------------------------------------------------------------------- // // MemoryFreePage // // Free a page of memory. // //---------------------------------------------------------------------- void MemoryFreePage(uint32 page) { MemorySetFreemap (page, 1); nfreepages += 1; dbprintf ('m',"Freed page 0x%x, %d remaining.\n", page, nfreepages); } � //---------------------------------------------------------------------- // // MemoryTranslateUserToSystem // // Translate a user address (in the process referenced by pcb) // into an OS (physical) address. This works for simple one-level // page tables, but will have to be modified for two-level page // tables. // //---------------------------------------------------------------------- uint32 MemoryTranslateUserToSystem (PCB *pcb, uint32 addr) { int page = addr / MEMORY_PAGE_SIZE; int offset = addr % MEMORY_PAGE_SIZE; if (page > pcb->npages) { return (0); } return ((pcb->pagetable[page] & MEMORY_PTE_MASK) + offset); } � //---------------------------------------------------------------------- // // moveBetweenSpaces // // Copy data between user and system spaces. This is done page by // page by: // * Translating the user address into system space. // * Copying all of the data in that page // * Repeating until all of the data is copied. // A positive direction means the copy goes from system to user // space; negative direction means the copy goes from user to system // space. // // This routine returns the number of bytes copied. Note that this // may be less than the number requested if there were unmapped pages // in the user range. If this happens, the copy stops at the // first unmapped address. // //---------------------------------------------------------------------- static int moveBetweenSpaces (PCB *pcb, unsigned char *s, unsigned char *u, int n, int dir) { unsigned char *curUser; int bytesCopied = 0; int bytesToCopy; while (n > 0) { // Translate current user page to system address. If this fails, return // the number of bytes copied so far. curUser = (unsigned char *)MemoryTranslateUserToSystem (pcb, (uint32)u); if (curUser == (unsigned char *)0) { // Leave the loop if translation fails. break; } // Calculate the number of bytes to copy this time. This is the minimum // of the bytes left on this page and the bytes left to copy. bytesToCopy = MEMORY_PAGE_SIZE - ((uint32)curUser % MEMORY_PAGE_SIZE); if (bytesToCopy > n) { bytesToCopy = n; } // Perform the copy. if (dir >= 0) { bcopy (s, curUser, bytesToCopy); } else { bcopy (curUser, s, bytesToCopy); } // Keep track of bytes copied and adjust addresses appropriately. n -= bytesToCopy; bytesCopied += bytesToCopy; s += bytesToCopy; u += bytesToCopy; } return (bytesCopied); } //---------------------------------------------------------------------- // // These two routines copy data between user and system spaces. // They call a common routine to do the copying; the only difference // between the calls is the actual call to do the copying. Everything // else is identical. // //---------------------------------------------------------------------- int MemoryCopySystemToUser (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, from, to, n, 1)); } int MemoryCopyUserToSystem (PCB *pcb, unsigned char *from,unsigned char *to, int n) { return (moveBetweenSpaces (pcb, to, from, n, -1)); } � //---------------------------------------------------------------------- // // MemorySetupPte // // Set up a PTE given a page number. // //---------------------------------------------------------------------- uint32 MemorySetupPte (uint32 page) { return ((page * MEMORY_PAGE_SIZE) | MEMORY_PTE_VALID); } //---------------------------------------------------------------------- // // MemoryFreePte // // Free a page given its PTE. // //---------------------------------------------------------------------- void MemoryFreePte (uint32 pte) { MemoryFreePage ((pte & MEMORY_PTE_MASK) / MEMORY_PAGE_SIZE); } //---------------------------------------------------------------------- // // MemoryPteToPage // // Given a PTE, return the base address for the (virtual) page the // PTE references. // //---------------------------------------------------------------------- uint32 MemoryPteToPage (uint32 pte) { return (pte & MEMORY_PTE_MASK); } � //---------------------------------------------------------------------- // // MemoryGetOperandAddress // // This routine takes an instruction and a pointer to a PCB, and // returns the address that the instruction is trying to use // for its memory operand. If the instruction doesn't access memory, // it returns 0xffffffff. Note that this means it's impossible to // distinguish between a valid access to 0xffffffff and an instruction // without an operand.... // //---------------------------------------------------------------------- uint32 MemoryGetOperandAddress (PCB *pcb, uint32 instr) { static uint32 invalidOps = 0x3404; uint32 opcode = (instr >> 26) & 0x3f; uint32 reg; uint32 addr; uint32 offset; uint32 regValue; if ((opcode<0x20) || (opcode>0x2f) || ((invalidOps >> (opcode-0x20) & 1))) { return (0xffffffff); } reg = (instr >> 21) & 0x1f; offset = instr & 0xffff; if (offset & 0x8000) { offset |= 0xffff0000; } regValue = pcb->currentSavedFrame[PROCESS_STACK_IREG+reg]; addr = regValue + offset; dbprintf ('m', "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n", instr, addr, reg, regValue); return (addr); }
home/bshapir/cs314/project2/src/dlxos.h
// // Routines used by the entire operating system. // #ifndef _dlxos_h_ #define _dlxos_h_ #include "misc.h" typedef unsigned int uint32; #define DLX_PROCESS_QUANTUM 10000 // in microseconds extern void SetTimer (int); extern char debugstr[]; #define ASSERT(cond,s) (cond ? 0 : printf ("%s: %s\n", __FUNCTION__,s)) // dbprintf() is a VERY useful macro. It gets used as follows: // dbprintf ('x', "This prints %d and %x\n", val1, val2); // This will print the expected string only if the debugging options contain // the letter 'x'. This allows users to turn on different debugging // statements at different times by using different letters. For example, // process debugging statements could use 'p', and memory 'm'. Specifying // a '+' in the debugging string will turn on all debugging printfs. #define dbprintf(flag, format, args...) \ if ((dindex(debugstr,flag)!=(char *)0) || \ (dindex(debugstr,'+')!=(char *)0)) { \ printf (format, ## args); \ } extern int CurrentIntrs (); extern int SetIntrs (int); extern void KbdModuleInit (); extern void intrreturn (); inline int DisableIntrs () { return (SetIntrs (0xf)); } inline int EnableIntrs () { return (SetIntrs (0x0)); } inline int RestoreIntrs (int intrs) { return (SetIntrs (intrs)); } #endif // _dlxos_h_
home/bshapir/cs314/project2/src/filesys.c
// // filesys.c // // This file has handlers for the file systems supported by the DLX // operating system. These include both the basic, simulator-provided // file system and the more complex file system from the file system // assignment. static char rcsid[] = "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $"; #include "dlxos.h" #include "process.h" #include "filesys.h" // One entry for each type of file system. Currently, the file systems // are native Unix (0) and DLX (1). static Fs fs[2]; // One entry for each open file in the operating system. static FsOpenFile openfiles[FS_MAX_OPEN_FILES]; //---------------------------------------------------------------------- // // FdValid // // Return 1 if the file descriptor is valid, 0 otherwise. // //---------------------------------------------------------------------- static inline int FdValid (int fd) { return ((fd > 0) && (fd < FS_MAX_OPEN_FILES) && (openfiles[fd].flags != 0)); } //---------------------------------------------------------------------- // // FsFreeEntry // // Free an entry in the open files table. // //---------------------------------------------------------------------- static inline void FsFreeEntry (int x) { openfiles[x].flags = 0; } � //---------------------------------------------------------------------- // // FsOpen // // Open a file. The name of the file is passed, along with the file // mode (read or write). // // This function figures out which file system is desired using a // simple heuristic. Basically, if the file starts with "dlx:", it's // a DLX file system file. Otherwise, it's a UNIX file. // // Once the file system is figured out, this routine allocates a // file descriptor and calls the file-system specific open routine. // //---------------------------------------------------------------------- int FsOpen (const char *name, int mode) { int i, retval; dbprintf ('f', "Attepmting to open %s mode=%d.\n", name, mode); // Mask off all but the mode bits mode &= FS_MODE_RW; // ERROR if the caller hasn't specified a file mode. if (mode == 0) { return (-1); } for (i = 0; i < FS_MAX_OPEN_FILES; i++) { if (openfiles[i].flags == 0) { break; } } if (i >= FS_MAX_OPEN_FILES) { return (-1); } openfiles[i].flags = mode; // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxOpen. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" openfiles[i].fs = 1; } else { openfiles[i].fs = 0; } dbprintf ('f', "File %s opening in file system %d.\n",name,openfiles[i].fs); retval = fs[openfiles[i].fs].Open (i, name, mode); if (retval < 0) { // Open failed, so return error code FsFreeEntry (i); return (retval); } dbprintf ('f', "Opened %s in FS %d, mode=%d slot=%d.\n", name, openfiles[i].fs, mode, i); return (i); } //---------------------------------------------------------------------- // // FsClose // // Close an open file. Call the FS-specific routine, and then mark // the file table entry unused. // //---------------------------------------------------------------------- int FsClose (int fd) { int retval; if (!FdValid (fd)) { return (-1); } retval = fs[openfiles[fd].fs].Close (fd); FsFreeEntry (fd); return (retval); } � //---------------------------------------------------------------------- // // FsRead // // Read data from a file. // //---------------------------------------------------------------------- int FsRead (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Read (fd, buf, n)); } //---------------------------------------------------------------------- // // FsWrite // // Write data to a file. // //---------------------------------------------------------------------- int FsWrite (int fd, char *buf, int n) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Write (fd, buf, n)); } //---------------------------------------------------------------------- // // FsSeek // // Seek in a file. // //---------------------------------------------------------------------- int FsSeek (int fd, int offset, int whence) { if (!FdValid (fd)) { return (-1); } return (fs[openfiles[fd].fs].Seek (fd, offset, whence)); } //---------------------------------------------------------------------- // // FsDelete // // Delete a file. // //---------------------------------------------------------------------- int FsDelete (const char *name) { // If file name starts with "dlx:", it's a DLX file system file. Pass // the remainder of the file name to FsDlxDelete. if (!dstrncmp (name, "dlx:", 4)) { name += 4; // Skip past the "dlx:" return (fs[1].Delete (name)); } else { return (fs[0].Delete (name)); } } � //---------------------------------------------------------------------- // // FsUnixOpen // FsUnixRead // FsUnixWrite // FsUnixSeek // FsUnixClose // // Unix file I/O routines. These are pretty simple, and just call // the simulator traps directly using the file descriptor stored in // the open file table. // //---------------------------------------------------------------------- int FsUnixOpen (int x, const char *name, int mode) { dbprintf ('f', "Attempting to open file %s into desc %d, mode %d.\n", name, x, mode); if ((openfiles[x].u.Unix.fd = open (name, mode)) < 0) { return (openfiles[x].u.Unix.fd); } return (1); } int FsUnixRead (int x, char *buf, int n) { return (read (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixWrite (int x, char *buf, int n) { return (write (openfiles[x].u.Unix.fd, buf, n)); } int FsUnixSeek (int x, int offset, int where) { return (lseek (openfiles[x].u.Unix.fd, offset, where)); } int FsUnixClose (int x) { int retval; retval = close (openfiles[x].u.Unix.fd); return (retval); } int FsUnixDelete (const char *name) { // Refuse to delete Unix files via the simulator. This is for safety // reasons. return (-1); } � //---------------------------------------------------------------------- // // FsDlxIo // // Perform a read or a write on a DLX file. // //---------------------------------------------------------------------- int FsDlxIo (int fd, char *buf, int n, int which) { // Your code to read or write a DLX file goes here. return (1); } //---------------------------------------------------------------------- // // FsDlxRead // FsDlxWrite // // This is just a stub that calls FsDlxIo to do either a read or a // write in the DLX file system. // //---------------------------------------------------------------------- int FsDlxRead (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 0)); } int FsDlxWrite (int fd, char *buf, int n) { return (FsDlxIo (fd, buf, n, 1)); } � //---------------------------------------------------------------------- // // FsDlxOpen // // Open a file in the DLX file system. Currently, this just means // to set current position to 0. However, it should also check to // make sure that the file exists. // //---------------------------------------------------------------------- int FsDlxOpen (int f, const char *name, int mode) { openfiles[f].u.Dlx.curpos = 0; // You may want to put additional code here (checking to see if the // file exists, etc.) return (1); } //---------------------------------------------------------------------- // // FsDlxSeek // // Seek in a DLX file. This just requires adjusting the current // position as recorded in the open files table. // //---------------------------------------------------------------------- int FsDlxSeek (int f, int offset, int whence) { switch (whence) { case FS_SEEK_SET: break; case FS_SEEK_CUR: break; case FS_SEEK_END: break; }; return (openfiles[f].u.Dlx.curpos); } //---------------------------------------------------------------------- // // FsDlxClose // // Close a DLX file system file. //---------------------------------------------------------------------- int FsDlxClose (int f) { // You may want to add code to this routine. return (1); } � //---------------------------------------------------------------------- // // FsDlxDelete // // Delete a file in the DLX file system. // //---------------------------------------------------------------------- int FsDlxDelete (const char *file) { // Your code goes here. return (1); } � //---------------------------------------------------------------------- // // FsModuleInit // // Initialize the file system module. This consists simply of marking // all the file slots as available. // //---------------------------------------------------------------------- void FsModuleInit () { int i; for (i = 0; i < FS_MAX_OPEN_FILES; i++) { openfiles[i].flags = 0; } fs[0].Open = FsUnixOpen; fs[0].Close = FsUnixClose; fs[0].Read = FsUnixRead; fs[0].Write = FsUnixWrite; fs[0].Seek = FsUnixSeek; fs[0].Delete = FsUnixDelete; fs[1].Open = FsDlxOpen; fs[1].Close = FsDlxClose; fs[1].Read = FsDlxRead; fs[1].Write = FsDlxWrite; fs[1].Seek = FsDlxSeek; fs[1].Delete = FsDlxDelete; }
home/bshapir/cs314/project2/src/synch.c
// // synch.c // // Routines for synchronization // // #include "dlxos.h" #include "process.h" #include "synch.h" static Sem sems[MAX_SEMS]; //All semaphores in the system extern struct PCB *currentPCB; //---------------------------------------------------------------------- // SynchModuleInit // // Initializes the synchronization primitives: the semaphores //---------------------------------------------------------------------- void SynchModuleInit() { int i; dbprintf ('p', "Entering SynchModuleInit\n"); for(i=0; i<MAX_SEMS; i++) { sems[i].inuse = 0; } for(i=0; i<MAX_LOCKS; i++) { // Your stuff for initializing locks goes here } for(i=0; i<MAX_CONDS; i++) { // Your stuff for initializing Condition variables goes here } dbprintf ('p', "Leaving SynchModuleInit\n"); } //--------------------------------------------------------------------- // // SemInit // // Initialize a semaphore to a particular value. This just means // initting the process queue and setting the counter. // //---------------------------------------------------------------------- void SemInit (Sem *sem, int count) { QueueInit (&sem->waiting); sem->count = count; } //---------------------------------------------------------------------- // SemCreate // // Grabs a Semaphore, initializes it and returns a handle to this // semaphore. All subsequent accesses to this semaphore should be made // through this handle //---------------------------------------------------------------------- sem_t SemCreate(int count) { sem_t sem; uint32 intrval; // grabbing a semaphore should be an atomic operation intrval = DisableIntrs(); for(sem=0; sem<MAX_SEMS; sem++) { if(sems[sem].inuse==0) { sems[sem].inuse = 1; break; } } RestoreIntrs(intrval); if(sem==MAX_SEMS) return INVALID_SEM; SemInit(&sems[sem], count); return sem; } � //---------------------------------------------------------------------- // // SemWait // // Wait on a semaphore. As described in Section 6.4 of _OSC_, // OR section 2.3 of Modern Operating Systems, // we decrement the counter and suspend the process if the // semaphore's value is less than 0. To ensure atomicity, // interrupts are disabled for the entire operation. Note that, // if the process is put to sleep, interrupts will be OFF when // it returns from sleep. Thus, we enable interrupts at the end of // the routine. // //---------------------------------------------------------------------- void SemWait (Sem *sem) { Link *l; int intrval; intrval = DisableIntrs (); dbprintf ('I', "Old interrupt value was 0x%x.\n", intrval); dbprintf ('s', "Proc 0x%x waiting on sem 0x%x, count=%d.\n", currentPCB, sem, sem->count); sem->count -= 1; if (sem->count < 0) { l = QueueAllocLink (); QueueLinkInit (l, (void *)currentPCB); dbprintf ('s', "Suspending current proc (0x%x).\n", currentPCB); QueueInsertLast (&sem->waiting, l); ProcessSleep (); } RestoreIntrs (intrval); } int SemHandleWait(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemWait(&sems[sem]); return 0; } return 1; } else { return 1; } } � //---------------------------------------------------------------------- // // SemSignal // // Signal on a semaphore. Again, details are in Section 6.4 of // _OSC_ OR section 2.3 of Modern Operating Systems. // //---------------------------------------------------------------------- void SemSignal (Sem *sem) { Link *l; int intrs; intrs = DisableIntrs (); dbprintf ('s', "Signalling on sem 0x%x, count=%d.\n", sem, sem->count); sem->count += 1; if (sem->count <= 0) { l = QueueFirst (&sem->waiting); QueueRemove (l); dbprintf ('s', "Waking up PCB 0x%x.\n", l->object); ProcessWakeup ((PCB *)(l->object)); QueueFreeLink (l); } RestoreIntrs (intrs); } int SemHandleSignal(sem_t sem) { if(sem>=0&&sem<MAX_SEMS) { if(sems[sem].inuse) { SemSignal(&sems[sem]); return 0; } return 1; } else { return 1; } } //----------------------------------------------------------------------- // LockCreate // // LockCreate grabs a lock from the systeme-wide pool of locks and // initializes it. // It also sets the inuse flag of the lock to indicate that the lock is // being used by a process. It returns a unique id for the lock. All the // references to the lock should be made through the returned id. The // process of grabbing the lock should be atomic. // // If a new lock cannot be created, your implementation should return // INVALID_LOCK (see synch.h). //----------------------------------------------------------------------- lock_t LockCreate() { // Your stuff goes here } //--------------------------------------------------------------------------- // LockHandleAcquire // // This routine acquires a lock given its handle. The handle must be a // valid handle for this routine to succeed. In that case this routine // returns a zero. Otherwise the routine returns a 1. // // Your implementation should be such that if a process that already owns // the lock calls LockHandleAcquire for that lock, it should not block. //--------------------------------------------------------------------------- int LockHandleAcquire(lock_t lock) { //Your stuff goes here } //--------------------------------------------------------------------------- // LockHandleRelease // // This procedure releases the unique lock described by the handle. It // first checks whether the lock is a valid lock. If not, it returns 1. // If the lock is a valid lock, it should check whether the calling // process actually holds the lock. If not it returns 1. Otherwise it // releases the lock, and returns 0. //--------------------------------------------------------------------------- int LockHandleRelease(lock_t lock) { // Your stuff goes here } //-------------------------------------------------------------------------- // CondCreate // // This function grabs a condition variable from the system-wide pool of // condition variables and associates the specified lock with // it. It should also initialize all the fields that need to initialized. // The lock being associated should be a valid lock, which means that // it should have been obtained via previous call to LockCreate(). // // If for some reason a condition variable cannot be created (no more // condition variables left, or the specified lock is not a valid lock), // this function should return INVALID_COND (see synch.h). Otherwise it // should return handle of the condition variable. //-------------------------------------------------------------------------- cond_t CondCreate(lock_t lock) { // Your stuff goes here } //--------------------------------------------------------------------------- // CondHandleWait // // This function makes the calling process block on the condition variable // till either ConditionHandleSignal or ConditionHandleBroadcast is // received. The process calling CondHandleWait must have acquired the // lock associated with the condition variable (the lock that was passed // to CondCreate. This implies the lock handle needs to be stored // somewhere. hint! hint!) for this function to // succeed. If the calling process has not acquired the lock, it does not // block on the condition variable, but a value of 1 is returned // indicating that the call was not successful. Return value of 0 implies // that the call was successful. // // This function should be written in such a way that the calling process // should release the lock associated with this condition variable before // going to sleep, so that the process that intends to signal this // process could acquire the lock for that purpose. After waking up, the // blocked process should acquire (i.e. wait on) the lock associated with // the condition variable. In other words, this process does not // "actually" wake up until the process calling CondHandleSignal or // CondHandleBroadcast releases the lock explicitly. //--------------------------------------------------------------------------- int CondHandleWait(cond_t cond) { // Your stuff goes here } //--------------------------------------------------------------------------- // CondHandleSignal // // This call wakes up exactly one process waiting on the condition // variable, if at least one is waiting. If there are no processes // waiting on the condition variable, it does nothing. In either case, // the calling process must have acquired the lock associated with // condition variable for this call to succeed, in which case it returns // 0. If the calling process does not own the lock, it returns 1, // indicating that the call was not successful. This function should be // written in such a way that the calling process should retain the // acquired lock even after the call completion (in other words, it // should not release the lock it has already acquired before the call). // // Note that the process woken up by this call tries to acquire the lock // associated with the condition variable as soon as it wakes up. Thus, // for such a process to run, the process invoking CondHandleSignal // must explicitly release the lock after the call is complete. //--------------------------------------------------------------------------- int CondHandleSignal(cond_t cond) { // Your stuff goes here } //--------------------------------------------------------------------------- // CondHandleBroadcast // // This function is very similar to CondHandleSignal. But instead of // waking only one process, it wakes up all the processes waiting on the // condition variable. For this call to succeed, the calling process must // have acquired the lock associated with the condition variable. This // function should be written in such a way that the calling process // should retain the lock even after call completion. // // Note that the process woken up by this call tries to acquire the lock // associated with the condition variable as soon as it wakes up. Thus, // for such a process to run, the process invoking CondHandleBroadcast // must explicitly release the lock after the call completion. //--------------------------------------------------------------------------- int CondHandleBroadcast(cond_t cond) { // Your stuff goes here }
home/bshapir/cs314/project2/src/misc.o
| ; Compiled by GCC | |||
| .text | |||
| .align 2 | |||
| .proc _isspace | |||
| .global _isspace | |||
| _isspace: | |||
| ; Function 'isspace'; 0 bytes of locals, 1 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| lb | r2,3(r30) | ||
| addi | r31,r0,#0 | ||
| andi | r1,r2,#0x00ff | ||
| seqi | r1,r1,#32 | ||
| bnez | r1,L6 | ||
| nop | ; not filled. | ||
| addi | r1,r2,#-9 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#1 | ||
| beqz | r1,L5 | ||
| nop | ; not filled. | ||
| L6: | |||
| addi | r31,r0,#1 | ||
| L5: | |||
| add | r1,r0,r31 | ||
| lw | r2,0(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _isspace | |||
| .align 2 | |||
| .proc _isxdigit | |||
| .global _isxdigit | |||
| _isxdigit: | |||
| ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| lb | r31,3(r30) | ||
| addi | r2,r0,#0 | ||
| addi | r1,r31,#-48 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#9 | ||
| bnez | r1,L12 | ||
| nop | ; not filled. | ||
| addi | r1,r31,#-97 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#5 | ||
| bnez | r1,L12 | ||
| nop | ; not filled. | ||
| andi | r1,r31,#0x00ff | ||
| snei | r1,r1,#65 | ||
| bnez | r1,L11 | ||
| nop | ; not filled. | ||
| L12: | |||
| addi | r2,r0,#1 | ||
| L11: | |||
| add | r1,r0,r2 | ||
| lw | r2,0(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _isxdigit | |||
| .align 2 | |||
| .proc _dstrcpy | |||
| .global _dstrcpy | |||
| _dstrcpy: | |||
| ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| lw | r31,(r30) | ||
| lw | r2,4(r30) | ||
| add | r3,r0,r31 | ||
| L19: | |||
| lb | r1,(r2) | ||
| sb | (r31),r1 | ||
| addi | r2,r2,#1 | ||
| addi | r31,r31,#1 | ||
| andi | r1,r1,#0x00ff | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L19 | ||
| nop | ; not filled. | ||
| add | r1,r0,r3 | ||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrcpy | |||
| .align 2 | |||
| .proc _dstrncpy | |||
| .global _dstrncpy | |||
| _dstrncpy: | |||
| ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#24 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| lw | r2,(r30) | ||
| lw | r3,4(r30) | ||
| lw | r31,8(r30) | ||
| add | r4,r0,r2 | ||
| j | L37 | ||
| nop | ; not filled. | ||
| L34: | |||
| lb | r1,(r3) | ||
| sb | (r2),r1 | ||
| addi | r3,r3,#1 | ||
| addi | r2,r2,#1 | ||
| andi | r1,r1,#0x00ff | ||
| snei | r1,r1,#0 | ||
| beqz | r1,L32 | ||
| nop | ; not filled. | ||
| L37: | |||
| add | r1,r0,r31 | ||
| addi | r31,r31,#-1 | ||
| slei | r1,r1,#0 | ||
| beqz | r1,L34 | ||
| nop | ; not filled. | ||
| L32: | |||
| add | r1,r0,r4 | ||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrncpy | |||
| .align 2 | |||
| .proc _dstrcat | |||
| .global _dstrcat | |||
| _dstrcat: | |||
| ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| lw | r31,(r30) | ||
| add | r3,r0,r31 | ||
| lbu | r1,(r3) | ||
| snei | r1,r1,#0 | ||
| beqz | r1,L50 | ||
| nop | ; not filled. | ||
| L51: | |||
| addi | r31,r31,#1 | ||
| lbu | r1,(r31) | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L51 | ||
| nop | ; not filled. | ||
| L50: | |||
| add | r2,r0,r31 | ||
| lw | r31,4(r30) | ||
| L54: | |||
| lb | r1,(r31) | ||
| sb | (r2),r1 | ||
| addi | r31,r31,#1 | ||
| addi | r2,r2,#1 | ||
| andi | r1,r1,#0x00ff | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L54 | ||
| nop | ; not filled. | ||
| add | r1,r0,r3 | ||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrcat | |||
| .align 2 | |||
| .proc _dstrncmp | |||
| .global _dstrncmp | |||
| _dstrncmp: | |||
| ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#24 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| sw | 12(r29),r5 | ||
| lw | r3,(r30) | ||
| lw | r4,4(r30) | ||
| lw | r5,8(r30) | ||
| addi | r2,r0,#0 | ||
| slt | r1,r2,r5 | ||
| beqz | r1,L73 | ||
| nop | ; not filled. | ||
| L75: | |||
| lbu | r31,(r4) | ||
| snei | r1,r31,#0 | ||
| beqz | r1,L86 | ||
| nop | ; not filled. | ||
| lbu | r1,(r3) | ||
| sne | r1,r1,r31 | ||
| bnez | r1,L73 | ||
| nop | ; not filled. | ||
| addi | r3,r3,#1 | ||
| addi | r4,r4,#1 | ||
| addi | r2,r2,#1 | ||
| slt | r1,r2,r5 | ||
| bnez | r1,L75 | ||
| nop | ; not filled. | ||
| L73: | |||
| seq | r1,r2,r5 | ||
| beqz | r1,L80 | ||
| nop | ; not filled. | ||
| L86: | |||
| addi | r1,r0,#0 | ||
| j | L84 | ||
| nop | ; not filled. | ||
| L80: | |||
| lbu | r31,(r3) | ||
| lbu | r3,(r4) | ||
| sub | r1,r31,r3 | ||
| sgei | r1,r1,#0 | ||
| addi | r2,r0,#-1 | ||
| beqz | r1,L82 | ||
| nop | ; not filled. | ||
| sne | r2,r31,r3 | ||
| L82: | |||
| add | r1,r0,r2 | ||
| L84: | |||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r5,12(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrncmp | |||
| .align 2 | |||
| .proc _dstrlen | |||
| .global _dstrlen | |||
| _dstrlen: | |||
| ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| lw | r31,(r30) | ||
| addi | r2,r0,#0 | ||
| j | L97 | ||
| nop | ; not filled. | ||
| L95: | |||
| addi | r2,r2,#1 | ||
| L97: | |||
| lbu | r1,(r31) | ||
| addi | r31,r31,#1 | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L95 | ||
| nop | ; not filled. | ||
| add | r1,r0,r2 | ||
| lw | r2,0(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrlen | |||
| .align 2 | |||
| .proc _dstrstr | |||
| .global _dstrstr | |||
| _dstrstr: | |||
| ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#32 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| sw | 12(r29),r5 | ||
| sw | 16(r29),r6 | ||
| sw | 20(r29),r7 | ||
| lw | r5,(r30) | ||
| lw | r7,4(r30) | ||
| addi | r3,r0,#0 | ||
| lbu | r1,(r7) | ||
| addi | r2,r7,#1 | ||
| snei | r1,r1,#0 | ||
| beqz | r1,L125 | ||
| nop | ; not filled. | ||
| L126: | |||
| addi | r3,r3,#1 | ||
| lbu | r1,(r2) | ||
| addi | r2,r2,#1 | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L126 | ||
| nop | ; not filled. | ||
| L125: | |||
| add | r6,r0,r3 | ||
| j | L149 | ||
| nop | ; not filled. | ||
| L130: | |||
| add | r3,r0,r5 | ||
| add | r4,r0,r7 | ||
| addi | r2,r0,#0 | ||
| slt | r1,r2,r6 | ||
| beqz | r1,L134 | ||
| nop | ; not filled. | ||
| L136: | |||
| lbu | r31,(r4) | ||
| snei | r1,r31,#0 | ||
| beqz | r1,L150 | ||
| nop | ; not filled. | ||
| lbu | r1,(r3) | ||
| sne | r1,r1,r31 | ||
| bnez | r1,L134 | ||
| nop | ; not filled. | ||
| addi | r3,r3,#1 | ||
| addi | r4,r4,#1 | ||
| addi | r2,r2,#1 | ||
| slt | r1,r2,r6 | ||
| bnez | r1,L136 | ||
| nop | ; not filled. | ||
| L134: | |||
| seq | r1,r2,r6 | ||
| beqz | r1,L141 | ||
| nop | ; not filled. | ||
| L150: | |||
| addi | r1,r0,#0 | ||
| j | L132 | ||
| nop | ; not filled. | ||
| L141: | |||
| lbu | r3,(r3) | ||
| lbu | r2,(r4) | ||
| sub | r1,r3,r2 | ||
| sgei | r1,r1,#0 | ||
| addi | r31,r0,#-1 | ||
| beqz | r1,L143 | ||
| nop | ; not filled. | ||
| sne | r31,r3,r2 | ||
| L143: | |||
| add | r1,r0,r31 | ||
| L132: | |||
| snei | r1,r1,#0 | ||
| bnez | r1,L131 | ||
| nop | ; not filled. | ||
| add | r1,r0,r5 | ||
| j | L146 | ||
| nop | ; not filled. | ||
| L131: | |||
| addi | r5,r5,#1 | ||
| L149: | |||
| lbu | r1,(r5) | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L130 | ||
| nop | ; not filled. | ||
| addi | r1,r0,#0 | ||
| L146: | |||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r5,12(r29) | ||
| lw | r6,16(r29) | ||
| lw | r7,20(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrstr | |||
| .align 2 | |||
| .proc _dmindex | |||
| .global _dmindex | |||
| _dmindex: | |||
| ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#32 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| sw | 12(r29),r5 | ||
| sw | 16(r29),r6 | ||
| lw | r4,(r30) | ||
| lw | r6,4(r30) | ||
| lbu | r1,(r4) | ||
| snei | r1,r1,#0 | ||
| beqz | r1,L164 | ||
| nop | ; not filled. | ||
| add | r5,r0,r1 | ||
| L165: | |||
| add | r2,r0,r6 | ||
| lb | r31,(r6) | ||
| andi | r1,r31,#0x00ff | ||
| snei | r1,r1,#0 | ||
| beqz | r1,L163 | ||
| nop | ; not filled. | ||
| lbu | r3,(r4) | ||
| L169: | |||
| andi | r1,r31,#0x00ff | ||
| seq | r1,r3,r1 | ||
| beqz | r1,L168 | ||
| nop | ; not filled. | ||
| add | r1,r0,r4 | ||
| j | L173 | ||
| nop | ; not filled. | ||
| L168: | |||
| addi | r2,r2,#1 | ||
| lb | r31,(r2) | ||
| andi | r1,r31,#0x00ff | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L169 | ||
| nop | ; not filled. | ||
| L163: | |||
| bnez | r5,L165 | ||
| nop | ; not filled. | ||
| L164: | |||
| addi | r1,r0,#0 | ||
| L173: | |||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r5,12(r29) | ||
| lw | r6,16(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dmindex | |||
| .align 2 | |||
| .proc _dindex | |||
| .global _dindex | |||
| _dindex: | |||
| ; Function 'dindex'; 0 bytes of locals, 2 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| lw | r2,(r30) | ||
| lw | r3,4(r30) | ||
| j | L187 | ||
| nop | ; not filled. | ||
| L183: | |||
| andi | r1,r31,#0x00ff | ||
| seq | r1,r1,r3 | ||
| beqz | r1,L184 | ||
| nop | ; not filled. | ||
| add | r1,r0,r2 | ||
| j | L186 | ||
| nop | ; not filled. | ||
| L184: | |||
| addi | r2,r2,#1 | ||
| L187: | |||
| lb | r31,(r2) | ||
| andi | r1,r31,#0x00ff | ||
| snei | r1,r1,#0 | ||
| bnez | r1,L183 | ||
| nop | ; not filled. | ||
| addi | r1,r0,#0 | ||
| L186: | |||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dindex | |||
| .align 2 | |||
| .proc _ditoa | |||
| .global _ditoa | |||
| _ditoa: | |||
| ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#32 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| sw | 12(r29),r5 | ||
| sw | 16(r29),r6 | ||
| lw | r3,(r30) | ||
| lw | r4,4(r30) | ||
| slti | r1,r3,#0 | ||
| beqz | r1,L203 | ||
| nop | ; not filled. | ||
| addi | r6,r0,(#0x2d)&0xff | ||
| j | L216 | ||
| nop | ; not filled. | ||
| L203: | |||
| snei | r1,r3,#0 | ||
| bnez | r1,L205 | ||
| nop | ; not filled. | ||
| addi | r6,r0,(#0x30)&0xff | ||
| L216: | |||
| sb | (r4),r6 | ||
| addi | r4,r4,#1 | ||
| j | L204 | ||
| nop | ; not filled. | ||
| L205: | |||
| addi | r31,r0,#1 | ||
| sle | r1,r31,r3 | ||
| beqz | r1,L208 | ||
| nop | ; not filled. | ||
| L209: | |||
| slli | r1,r31,#0x2 | ||
| add | r1,r1,r31 | ||
| slli | r31,r1,#0x1 | ||
| sle | r1,r31,r3 | ||
| bnez | r1,L209 | ||
| nop | ; not filled. | ||
| L208: | |||
| addi | r5,r0,#10 | ||
| L212: | |||
| movi2fp | f0,r31 | ||
| movi2fp | f1,r5 | ||
| div | f0,f0,f1 | ||
| movfp2i | r31,f0 | ||
| movi2fp | f0,r3 | ||
| movi2fp | f1,r31 | ||
| div | f0,f0,f1 | ||
| movfp2i | r2,f0 | ||
| addi | r1,r2,#48 | ||
| sb | (r4),r1 | ||
| addi | r4,r4,#1 | ||
| movi2fp | f0,r2 | ||
| movi2fp | f1,r31 | ||
| mult | f0,f0,f1 | ||
| movfp2i | r1,f0 | ||
| sub | r3,r3,r1 | ||
| sgti | r1,r31,#1 | ||
| bnez | r1,L212 | ||
| nop | ; not filled. | ||
| L204: | |||
| addi | r6,r0,(#0x0)&0xff | ||
| sb | (r4),r6 | ||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r5,12(r29) | ||
| lw | r6,16(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _ditoa | |||
| .align 2 | |||
| .proc _dstrtol | |||
| .global _dstrtol | |||
| _dstrtol: | |||
| ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#32 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| sw | 12(r29),r5 | ||
| sw | 16(r29),r6 | ||
| lw | r2,(r30) | ||
| lw | r5,4(r30) | ||
| lw | r4,8(r30) | ||
| addi | r3,r0,#0 | ||
| j | L247 | ||
| nop | ; not filled. | ||
| L220: | |||
| addi | r2,r2,#1 | ||
| L247: | |||
| lb | r31,(r2) | ||
| andi | r1,r31,#0x00ff | ||
| seqi | r1,r1,#32 | ||
| bnez | r1,L220 | ||
| nop | ; not filled. | ||
| addi | r1,r31,#-9 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#1 | ||
| bnez | r1,L220 | ||
| nop | ; not filled. | ||
| snei | r1,r5,#0 | ||
| beqz | r1,L222 | ||
| nop | ; not filled. | ||
| sw | (r5),r2 | ||
| L222: | |||
| lbu | r31,(r2) | ||
| snei | r1,r31,#0 | ||
| beqz | r1,L248 | ||
| nop | ; not filled. | ||
| seqi | r1,r31,#45 | ||
| beqz | r1,L224 | ||
| nop | ; not filled. | ||
| addi | r6,r0,#-1 | ||
| addi | r2,r2,#1 | ||
| j | L225 | ||
| nop | ; not filled. | ||
| L224: | |||
| addi | r6,r0,#1 | ||
| L225: | |||
| snei | r1,r4,#0 | ||
| bnez | r1,L226 | ||
| nop | ; not filled. | ||
| lbu | r1,(r2) | ||
| seqi | r1,r1,#48 | ||
| beqz | r1,L227 | ||
| nop | ; not filled. | ||
| addi | r2,r2,#1 | ||
| lbu | r31,(r2) | ||
| seqi | r1,r31,#120 | ||
| bnez | r1,L229 | ||
| nop | ; not filled. | ||
| seqi | r1,r31,#88 | ||
| beqz | r1,L228 | ||
| nop | ; not filled. | ||
| L229: | |||
| addi | r4,r0,#16 | ||
| addi | r2,r2,#1 | ||
| j | L226 | ||
| nop | ; not filled. | ||
| L228: | |||
| addi | r4,r0,#8 | ||
| j | L226 | ||
| nop | ; not filled. | ||
| L227: | |||
| addi | r4,r0,#10 | ||
| L226: | |||
| addi | r1,r4,#-1 | ||
| sgtui | r1,r1,#15 | ||
| beqz | r1,L233 | ||
| nop | ; not filled. | ||
| L248: | |||
| add | r1,r0,r3 | ||
| j | L245 | ||
| nop | ; not filled. | ||
| L233: | |||
| lb | r31,(r2) | ||
| addi | r1,r31,#-48 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#9 | ||
| beqz | r1,L236 | ||
| nop | ; not filled. | ||
| andi | r1,r31,#0x00ff | ||
| addi | r1,r1,#-48 | ||
| j | L237 | ||
| nop | ; not filled. | ||
| L236: | |||
| addi | r1,r31,#-97 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#25 | ||
| beqz | r1,L238 | ||
| nop | ; not filled. | ||
| andi | r1,r31,#0x00ff | ||
| addi | r1,r1,#-87 | ||
| j | L237 | ||
| nop | ; not filled. | ||
| L238: | |||
| addi | r1,r31,#-65 | ||
| andi | r1,r1,#0x00ff | ||
| sleui | r1,r1,#25 | ||
| beqz | r1,L240 | ||
| nop | ; not filled. | ||
| andi | r1,r31,#0x00ff | ||
| addi | r1,r1,#-55 | ||
| j | L237 | ||
| nop | ; not filled. | ||
| L240: | |||
| addi | r1,r0,#1000 | ||
| L237: | |||
| slt | r31,r1,r4 | ||
| beqz | r31,L246 | ||
| nop | ; not filled. | ||
| movi2fp | f0,r3 | ||
| movi2fp | f1,r4 | ||
| mult | f0,f0,f1 | ||
| movfp2i | r3,f0 | ||
| add | r3,r3,r1 | ||
| addi | r2,r2,#1 | ||
| bnez | r31,L233 | ||
| nop | ; not filled. | ||
| L246: | |||
| snei | r1,r5,#0 | ||
| beqz | r1,L244 | ||
| nop | ; not filled. | ||
| sw | (r5),r2 | ||
| L244: | |||
| movi2fp | f0,r3 | ||
| movi2fp | f1,r6 | ||
| mult | f0,f0,f1 | ||
| movfp2i | r1,f0 | ||
| L245: | |||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r5,12(r29) | ||
| lw | r6,16(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _dstrtol | |||
| .align 2 | |||
| .proc _bcopy | |||
| .global _bcopy | |||
| _bcopy: | |||
| ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#24 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| sw | 8(r29),r4 | ||
| lw | r3,(r30) | ||
| lw | r2,4(r30) | ||
| lw | r31,8(r30) | ||
| j | L259 | ||
| nop | ; not filled. | ||
| L257: | |||
| lb | r4,(r3) | ||
| sb | (r2),r4 | ||
| addi | r3,r3,#1 | ||
| addi | r2,r2,#1 | ||
| L259: | |||
| add | r1,r0,r31 | ||
| addi | r31,r31,#-1 | ||
| sgti | r1,r1,#0 | ||
| bnez | r1,L257 | ||
| nop | ; not filled. | ||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r4,8(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _bcopy | |||
| .align 2 | |||
| .proc _bzero | |||
| .global _bzero | |||
| _bzero: | |||
| ; Function 'bzero'; 0 bytes of locals, 2 regs to save. | |||
| sw | -4(r29),r30 | ; push fp | |
| add | r30,r0,r29 | ; fp = sp | |
| sw | -8(r29),r31 | ; push ret addr | |
| subui | r29,r29,#16 | ; alloc local storage | |
| sw | 0(r29),r2 | ||
| sw | 4(r29),r3 | ||
| lw | r2,(r30) | ||
| lw | r31,4(r30) | ||
| j | L270 | ||
| nop | ; not filled. | ||
| L268: | |||
| addi | r3,r0,(#0x0)&0xff | ||
| sb | (r2),r3 | ||
| addi | r2,r2,#1 | ||
| L270: | |||
| add | r1,r0,r31 | ||
| addi | r31,r31,#-1 | ||
| sgti | r1,r1,#0 | ||
| bnez | r1,L268 | ||
| nop | ; not filled. | ||
| lw | r2,0(r29) | ||
| lw | r3,4(r29) | ||
| lw | r31,-8(r30) | ||
| add | r29,r0,r30 | ||
| lw | r30,-4(r30) | ||
| jr | r31 | ||
| nop | |||
| .endproc _bzero |
home/bshapir/cs314/project2/src/trap_random.s
; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .text .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom
home/bshapir/cs314/project2/src/lab2-api.h
/***************************************************************** * * Various APIs for Lab 2 of OS469 * Copyright: Uday Savagaonkar, Jan 2002 * *****************************************************************/ #ifndef _LAB2_API_H_ #define _LAB2_API_H_ #define NULL (void *)0x0 #define INVALID_SEM -1 #define BUFFERSIZE 5 typedef unsigned int uint32; typedef int sem_t; typedef int lock_t; typedef int cond_t; //Related to processes uint32 getpid(); //trap 0x431 void process_create(char *arg1, ...); //trap 0x432 //Related to shared memory uint32 shmget(); //trap 0x440 void *shmat(uint32 handle); //trap 0x441 //Related to semaphores sem_t sem_create(int count); //trap 0x450 Calls SemCreate() int sem_wait(sem_t sem); //trap 0x451 Calls SemHandleWait() int sem_signal(sem_t sem); //trap 0x452 Calls SemHandleSignal() //----------------------------------------------------------------------- // You need to write OS handler routines for the following functions // We have already provided the trap interface. All you need to do is fill in // the missing parts in synch.c and synch.h. The routines that need to be // modified are also given in front of each system call. For detailed // description of thses routines, see synch.c. //------------------------------------------------------------------------ lock_t lock_create(); //trap 0x452 Calls LockCreate() int lock_acquire(lock_t lock); //trap 0x453 Calls LockHandleAcquire() int lock_release(lock_t lock); //trap 0x454 Calls LockHandleRelease() cond_t cond_create(lock_t lock); //trap 0x455 Calls CondCreate() int cond_wait(cond_t cond); //trap 0x456 Calls CondHandleWait() int cond_signal(cond_t cond); //trap 0x457 Calls CondHandleSignal() int cond_broadcast(cond_t cond); //trap 0x458 Calls CondHandleBroadcast() #endif _LAB2_API_H_
home/bshapir/cs314/project2/src/traps.h
// // dlxtraps.h // // Traps used by the DLX simulator. These traps have to be handled by the // operating system. // // Copyright 1999 by Ethan L. Miller // University of Maryland Baltimore County // // $Id: traps.h,v 1.1 2000/09/20 01:50:19 elm Exp elm $ // #ifndef _dlxtraps_h_ #define _dlxtraps_h_ #define TRAP_ILLEGALINST 0x1 // Illegal instruction #define TRAP_ADDRESS 0x2 // Bad address #define TRAP_ACCESS 0x3 // Attempted to access illegal memory #define TRAP_OVERFLOW 0x4 // Math overflow #define TRAP_DIV0 0x5 // Divide by 0 #define TRAP_PRIVILEGE 0x6 // Instruction must be executed as sys #define TRAP_FORMAT 0x7 // Instruction is malformed #define TRAP_PAGEFAULT 0x20 #define TRAP_TLBFAULT 0x30 #define TRAP_TIMER 0x40 // timer interrupt #define TRAP_KBD 0x48 // keyboard interrupt // This bit is set in CAUSE if the interrupt was a trap instruction #define TRAP_TRAP_INSTR 0x08000000 // The following traps are all defined in the basic traps library. To // call TRAP_READ, use a Read() call from a user-level program. This applies // to every trap except EXIT, which is called via exit() [no uppercase]. #define TRAP_PRINTF 0x201 #define TRAP_READ 0x210 #define TRAP_WRITE 0x211 #define TRAP_LSEEK 0x212 #define TRAP_SEEK TRAP_LSEEK // SEEK and LSEEK are synonyms #define TRAP_OPEN 0x213 #define TRAP_CLOSE 0x214 #define TRAP_DELETE 0x580 #define TRAP_EXIT 0x300 // Following are user-defined traps. Traps should be in the range // 0x400 - 0xfff #define TRAP_CONTEXT_SWITCH 0x400 //#define TRAP_SEM_WAIT 0x401 //#define TRAP_SEM_SIGNAL 0x402 #define TRAP_PROCESS_SLEEP 0x410 #define TRAP_PROCESS_WAKEUP 0x420 #define TRAP_PROCESS_FORK 0x430 #define TRAP_PROCESS_GETPID 0x431 #define TRAP_PROCESS_CREATE 0x432 #define TRAP_SHARE_CREATE_PAGE 0x440 #define TRAP_SHARE_MAP_PAGE 0x441 #define TRAP_SEM_CREATE 0x450 #define TRAP_SEM_WAIT 0x451 #define TRAP_SEM_SIGNAL 0x452 #define TRAP_LOCK_CREATE 0x453 #define TRAP_LOCK_ACQUIRE 0x454 #define TRAP_LOCK_RELEASE 0x455 #define TRAP_COND_CREATE 0x456 #define TRAP_COND_WAIT 0x457 #define TRAP_COND_SIGNAL 0x458 #define TRAP_COND_BROADCAST 0x459 // The following are special I/O addresses for DLX. #define DLX_TIMER_ADDRESS 0xfff00010 #define DLX_KBD_PUTCHAR 0xfff00100 #define DLX_KBD_NCHARSOUT 0xfff00120 #define DLX_KBD_GETCHAR 0xfff00180 #define DLX_KBD_NCHARSIN 0xfff001a0 #define DLX_KBD_INTR 0xfff001c0 #define TRAP_STACK_SIZE 0x800 // interrupt stack is 2K words #endif /* _dlxtraps_h_ */
home/bshapir/cs314/project2/src/syscall.h
// // syscall.h // // This file declares all of the system calls available as builtins // in the simulator. // #ifndef _syscall_h_ #define _syscall_h_ extern int open(const char *, int); extern int read(int, char *, int); extern int write(int, char *, int); extern int lseek(int, int, int); extern int close(int); #endif // _syscall_h_
home/bshapir/cs314/project2/src/share_memory.h
/*********************************************************************** * * share_memory.h * Copyright: Uday Savagaonkar (2002). All rights reserved. * Share memory API for dlxos * ***********************************************************************/ #ifndef _SHARE_MEMORY_H_ #define _SHARE_MEMORY_H_ #include "dlxos.h" #include "memory.h" #include "process.h" #define MEMORY_MAX_SHARED_PAGES 32 //Maximum number of pages that can be //shared amongst different processes #define PROCESS_MAX_PAGES 16 //Maximum number of pages allowed in Level //1 page table void SharedInitModule(); //Turns on the shared memory module uint32 MemoryCreateSharedPage(PCB *pcb); //Creates a shared page in the memory void *mmap(PCB *pcb, uint32 handle); //Maps a shared page to the virtual address //space int MemoryFreeSharedPage(PCB *pcb, uint32 handle); //Releases a shared page. The page is not //actually deallocated untill all the process //release it. #endif _SHARE_MEMORY_H_
home/bshapir/cs314/project2/src/userprog.o
; Compiled by GCC .data .align 2 LC0: .ascii "Setting number = %d\n\000" .align 2 LC1: .ascii "Usage: \000" .align 2 LC2: .ascii " number\n\000" .align 2 LC3: .ascii "Could not map the shared page to virtual address, exiting..\n\000" .align 2 LC4: .ascii "userprog2.dlx.obj\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 48 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#56 ; alloc local storage lw r2,(r30) lw r3,4(r30) jal ___main nop ; not filled. seqi r1,r2,#2 beqz r1,L4 nop ; not filled. addi r29,r29,#-16 lw r3,4(r3) sw (r29),r3 addi r8,r0,#0 sw 4(r29),r8 addi r8,r0,#10 sw 8(r29),r8 jal _dstrtol nop ; not filled. add r5,r0,r1 lhi r8,((LC0)>>16)&0xffff addui r8,r8,(LC0)&0xffff sw (r29),r8 sw 4(r29),r5 jal _Printf nop ; not filled. addi r29,r29,#16 j L2 nop ; not filled. L4: addi r29,r29,#-8 lhi r8,((LC1)>>16)&0xffff addui r8,r8,(LC1)&0xffff sw (r29),r8 jal _Printf nop ; not filled. lw r3,(r3) sw (r29),r3 jal _Printf nop ; not filled. lhi r8,((LC2)>>16)&0xffff addui r8,r8,(LC2)&0xffff sw (r29),r8 jal _Printf nop ; not filled. jal _exit nop ; not filled. L2: jal _shmget nop ; not filled. add r3,r0,r1 addi r29,r29,#-8 sw (r29),r3 jal _shmat nop ; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L6 nop ; not filled. addi r29,r29,#-8 lhi r8,((LC3)>>16)&0xffff addui r8,r8,(LC3)&0xffff sw (r29),r8 jal _Printf nop ; not filled. jal _exit nop ; not filled. L6: sw (r2),r5 addi r8,r0,(#0x41)&0xff sb 4(r2),r8 addi r29,r29,#-8 addi r8,r0,#0 sw (r29),r8 jal _sem_create nop ; not filled. add r7,r0,r1 addi r8,r0,#5 sw (r29),r8 jal _sem_create nop ; not filled. add r2,r0,r1 sw (r29),r3 addi r6,r30,#-24 sw 4(r29),r6 jal _ditoa nop ; not filled. sw (r29),r7 addi r4,r30,#-40 sw 4(r29),r4 jal _ditoa nop ; not filled. sw (r29),r2 addi r3,r30,#-56 sw 4(r29),r3 jal _ditoa nop ; not filled. addi r2,r0,#0 addi r29,r29,#8 slt r1,r2,r5 beqz r1,L8 nop ; not filled. L10: addi r29,r29,#-24 lhi r8,((LC4)>>16)&0xffff addui r8,r8,(LC4)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r4 sw 12(r29),r3 addi r8,r0,#0 sw 16(r29),r8 jal _process_create nop ; not filled. addi r29,r29,#24 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L10 nop ; not filled. L8: addi r29,r29,#-8 sw (r29),r7 jal _sem_wait nop ; not filled. addi r29,r29,#8 jal _exit nop .endproc _main
home/bshapir/cs314/project2/src/share_memory.o
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ShareModuleInit .global _ShareModuleInit _ShareModuleInit: ; Function 'ShareModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L64 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L63 nop ; not filled. L64: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L63: lhi r2,((_spages)>>16)&0xffff addui r2,r2,(_spages)&0xffff addi r4,r2,#248 L68: addi r5,r0,#0 sw (r2),r5 add r31,r0,r2 add r3,r0,r2 L72: addi r1,r31,#4 addi r5,r0,#0 sw (r1),r5 add r31,r0,r1 sle r1,r31,r3 bnez r1,L72 nop ; not filled. addi r2,r2,#8 sle r1,r2,r4 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L76 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L75 nop ; not filled. L76: addi r29,r29,#-8 lhi r5,((LC1)>>16)&0xffff addui r5,r5,(LC1)&0xffff sw (r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L75: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ShareModuleInit .data .align 2 LC2: .ascii "FATAL: couldn\'t allocate memory - no free pages!\n\000" .text .align 2 .proc _MemoryCreateSharedPage .global _MemoryCreateSharedPage _MemoryCreateSharedPage: ; Function 'MemoryCreateSharedPage'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) addi r29,r29,#-8 sw (r29),r6 jal _findpid nop ; not filled. add r5,r0,r1 srli r8,r5,#0x5 slli r1,r8,#0x5 sub r5,r5,r1 addi r29,r29,#8 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r7,r0,r1 addi r29,r29,#8 lw r1,160(r6) seqi r1,r1,#16 bnez r1,L92 nop ; not filled. addi r3,r0,#0 lhi r9,((_spages)>>16)&0xffff addui r9,r9,(_spages)&0xffff add r2,r0,r9 L84: lw r1,(r2) snei r1,r1,#0 beqz r1,L82 nop ; not filled. addi r2,r2,#8 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L84 nop ; not filled. L82: seqi r1,r3,#32 beqz r1,L87 nop ; not filled. L92: addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#0 j L91 nop ; not filled. L87: jal _MemoryAllocPage nop ; not filled. add r4,r0,r1 snei r1,r4,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r10,((LC2)>>16)&0xffff addui r10,r10,(LC2)&0xffff sw (r29),r10 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L89: slli r1,r3,#0x3 add r2,r1,r9 sw (r2),r4 slli r1,r8,#0x2 add r2,r1,r2 addi r1,r0,#1 sll r1,r1,r5 sw 4(r2),r1 addi r29,r29,#-8 sw (r29),r4 jal _MemorySetupPte nop ; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r2,r1,#1 sw 160(r6),r2 lw r1,8(r6) addui r1,r1,#65164 sw 316(r1),r2 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop ; not filled. addi r29,r29,#8 add r1,r0,r4 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCreateSharedPage .align 2 .proc _mmap .global _mmap _mmap: ; Function 'mmap'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) lw r7,4(r30) snei r1,r7,#0 bnez r1,L94 nop ; not filled. addi r1,r0,#0 j L115 nop ; not filled. L94: lw r1,8(r6) addui r9,r1,#65164 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r8,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r2,((_spages)>>16)&0xffff addui r2,r2,(_spages)&0xffff L99: lw r1,(r2) seq r1,r1,r7 bnez r1,L97 nop ; not filled. addi r2,r2,#8 addi r3,r3,#1 sleui r1,r3,#31 bnez r1,L99 nop ; not filled. L97: seqi r1,r3,#32 bnez r1,L116 nop ; not filled. slli r31,r7,#0x10 addi r5,r0,#0 lw r4,160(r6) slt r1,r5,r4 beqz r1,L105 nop ; not filled. add r2,r0,r6 L107: lw r1,96(r2) addi r10,r0,#-8 and r1,r1,r10 seq r1,r1,r31 bnez r1,L105 nop ; not filled. addi r2,r2,#4 addi r5,r5,#1 slt r1,r5,r4 bnez r1,L107 nop ; not filled. L105: lw r2,160(r6) seq r1,r5,r2 beqz r1,L110 nop ; not filled. slei r1,r2,#15 bnez r1,L111 nop ; not filled. L116: addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#0 j L115 nop ; not filled. L111: addi r29,r29,#-8 sw (r29),r7 jal _MemorySetupPte nop ; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r1,r1,#1 sw 160(r6),r1 sw 316(r9),r1 addi r29,r29,#8 L110: addi r29,r29,#-8 sw (r29),r6 jal _findpid nop ; not filled. add r2,r0,r1 srli r4,r2,#0x5 slli r1,r4,#0x5 sub r2,r2,r1 slli r3,r3,#0x3 slli r1,r4,#0x2 add r1,r3,r1 lhi r10,((_spages+4)>>16)&0xffff addui r10,r10,(_spages+4)&0xffff add r3,r1,r10 addi r1,r0,#1 sll r2,r1,r2 lw r1,(r3) or r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop ; not filled. addi r29,r29,#8 slli r1,r5,#0x10 L115: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _mmap .data .align 2 LC3: .ascii "FATAL: Attempted to free memory page 0\n\000" .text .align 2 .proc _MemoryFreeSharedPte .global _MemoryFreeSharedPte _MemoryFreeSharedPte: ; Function 'MemoryFreeSharedPte'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r8,(r30) lw r2,4(r30) addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r9,r0,r1 addi r29,r29,#8 slli r1,r2,#0x2 add r1,r1,r8 lhu r7,96(r1) snei r1,r7,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 lhi r10,((LC3)>>16)&0xffff addui r10,r10,(LC3)&0xffff sw (r29),r10 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L119: addi r4,r0,#0 lhi r5,((_spages)>>16)&0xffff addui r5,r5,(_spages)&0xffff add r2,r0,r5 L123: lw r1,(r2) seq r1,r1,r7 bnez r1,L121 nop ; not filled. addi r2,r2,#8 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L123 nop ; not filled. L121: seqi r1,r4,#32 beqz r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#-1 j L141 nop ; not filled. L126: addi r29,r29,#-8 sw (r29),r8 jal _findpid nop ; not filled. add r2,r0,r1 srli r3,r1,#0x5 slli r1,r3,#0x5 sub r2,r2,r1 slli r1,r4,#0x3 add r4,r1,r5 slli r1,r3,#0x2 add r1,r1,r4 addi r3,r1,#4 addi r1,r0,#1 sll r1,r1,r2 addi r10,r0,#-1 xor r2,r1,r10 lw r1,(r3) and r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r6,r0,#0 addi r5,r0,#0 L132: addi r3,r0,#1 addi r2,r0,#0 lw r31,4(r4) L136: and r1,r31,r3 snei r1,r1,#0 add r6,r6,r1 slli r3,r3,#0x1 addi r2,r2,#1 slei r1,r2,#31 bnez r1,L136 nop ; not filled. addi r4,r4,#4 addi r5,r5,#1 slei r1,r5,#0 bnez r1,L132 nop ; not filled. lw r1,160(r8) addi r2,r1,#-1 sw 160(r8),r2 lw r1,8(r8) addui r1,r1,#65164 sw 316(r1),r2 snei r1,r6,#0 bnez r1,L139 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 L139: addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop ; not filled. addi r29,r29,#8 add r1,r0,r6 L141: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreeSharedPte .data .align 2 _spages: .space 256
home/bshapir/cs314/project2/src/share_memory.api
; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ShareModuleInit .global _ShareModuleInit _ShareModuleInit: ; Function 'ShareModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#24 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L64 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L63 nop ; not filled. L64: addi r29,r29,#-8 lhi r5,((LC0)>>16)&0xffff addui r5,r5,(LC0)&0xffff sw (r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L63: lhi r2,((_spages)>>16)&0xffff addui r2,r2,(_spages)&0xffff addi r4,r2,#248 L68: addi r5,r0,#0 sw (r2),r5 add r31,r0,r2 add r3,r0,r2 L72: addi r1,r31,#4 addi r5,r0,#0 sw (r1),r5 add r31,r0,r1 sle r1,r31,r3 bnez r1,L72 nop ; not filled. addi r2,r2,#8 sle r1,r2,r4 bnez r1,L68 nop ; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L76 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L75 nop ; not filled. L76: addi r29,r29,#-8 lhi r5,((LC1)>>16)&0xffff addui r5,r5,(LC1)&0xffff sw (r29),r5 jal _printf nop ; not filled. addi r29,r29,#8 L75: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ShareModuleInit .data .align 2 LC2: .ascii "FATAL: couldn\'t allocate memory - no free pages!\n\000" .text .align 2 .proc _MemoryCreateSharedPage .global _MemoryCreateSharedPage _MemoryCreateSharedPage: ; Function 'MemoryCreateSharedPage'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) addi r29,r29,#-8 sw (r29),r6 jal _findpid nop ; not filled. add r5,r0,r1 srli r8,r5,#0x5 slli r1,r8,#0x5 sub r5,r5,r1 addi r29,r29,#8 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r7,r0,r1 addi r29,r29,#8 lw r1,160(r6) seqi r1,r1,#16 bnez r1,L92 nop ; not filled. addi r3,r0,#0 lhi r9,((_spages)>>16)&0xffff addui r9,r9,(_spages)&0xffff add r2,r0,r9 L84: lw r1,(r2) snei r1,r1,#0 beqz r1,L82 nop ; not filled. addi r2,r2,#8 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L84 nop ; not filled. L82: seqi r1,r3,#32 beqz r1,L87 nop ; not filled. L92: addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#0 j L91 nop ; not filled. L87: jal _MemoryAllocPage nop ; not filled. add r4,r0,r1 snei r1,r4,#0 bnez r1,L89 nop ; not filled. addi r29,r29,#-8 lhi r10,((LC2)>>16)&0xffff addui r10,r10,(LC2)&0xffff sw (r29),r10 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L89: slli r1,r3,#0x3 add r2,r1,r9 sw (r2),r4 slli r1,r8,#0x2 add r2,r1,r2 addi r1,r0,#1 sll r1,r1,r5 sw 4(r2),r1 addi r29,r29,#-8 sw (r29),r4 jal _MemorySetupPte nop ; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r2,r1,#1 sw 160(r6),r2 lw r1,8(r6) addui r1,r1,#65164 sw 316(r1),r2 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop ; not filled. addi r29,r29,#8 add r1,r0,r4 L91: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCreateSharedPage .align 2 .proc _mmap .global _mmap _mmap: ; Function 'mmap'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) lw r7,4(r30) snei r1,r7,#0 bnez r1,L94 nop ; not filled. addi r1,r0,#0 j L115 nop ; not filled. L94: lw r1,8(r6) addui r9,r1,#65164 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r8,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r2,((_spages)>>16)&0xffff addui r2,r2,(_spages)&0xffff L99: lw r1,(r2) seq r1,r1,r7 bnez r1,L97 nop ; not filled. addi r2,r2,#8 addi r3,r3,#1 sleui r1,r3,#31 bnez r1,L99 nop ; not filled. L97: seqi r1,r3,#32 bnez r1,L116 nop ; not filled. slli r31,r7,#0x10 addi r5,r0,#0 lw r4,160(r6) slt r1,r5,r4 beqz r1,L105 nop ; not filled. add r2,r0,r6 L107: lw r1,96(r2) addi r10,r0,#-8 and r1,r1,r10 seq r1,r1,r31 bnez r1,L105 nop ; not filled. addi r2,r2,#4 addi r5,r5,#1 slt r1,r5,r4 bnez r1,L107 nop ; not filled. L105: lw r2,160(r6) seq r1,r5,r2 beqz r1,L110 nop ; not filled. slei r1,r2,#15 bnez r1,L111 nop ; not filled. L116: addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#0 j L115 nop ; not filled. L111: addi r29,r29,#-8 sw (r29),r7 jal _MemorySetupPte nop ; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r1,r1,#1 sw 160(r6),r1 sw 316(r9),r1 addi r29,r29,#8 L110: addi r29,r29,#-8 sw (r29),r6 jal _findpid nop ; not filled. add r2,r0,r1 srli r4,r2,#0x5 slli r1,r4,#0x5 sub r2,r2,r1 slli r3,r3,#0x3 slli r1,r4,#0x2 add r1,r3,r1 lhi r10,((_spages+4)>>16)&0xffff addui r10,r10,(_spages+4)&0xffff add r3,r1,r10 addi r1,r0,#1 sll r2,r1,r2 lw r1,(r3) or r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop ; not filled. addi r29,r29,#8 slli r1,r5,#0x10 L115: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _mmap .data .align 2 LC3: .ascii "FATAL: Attempted to free memory page 0\n\000" .text .align 2 .proc _MemoryFreeSharedPte .global _MemoryFreeSharedPte _MemoryFreeSharedPte: ; Function 'MemoryFreeSharedPte'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#48 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r8,(r30) lw r2,4(r30) addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop ; not filled. add r9,r0,r1 addi r29,r29,#8 slli r1,r2,#0x2 add r1,r1,r8 lhu r7,96(r1) snei r1,r7,#0 bnez r1,L119 nop ; not filled. addi r29,r29,#-8 lhi r10,((LC3)>>16)&0xffff addui r10,r10,(LC3)&0xffff sw (r29),r10 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L119: addi r4,r0,#0 lhi r5,((_spages)>>16)&0xffff addui r5,r5,(_spages)&0xffff add r2,r0,r5 L123: lw r1,(r2) seq r1,r1,r7 bnez r1,L121 nop ; not filled. addi r2,r2,#8 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L123 nop ; not filled. L121: seqi r1,r4,#32 beqz r1,L126 nop ; not filled. addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop ; not filled. addi r29,r29,#8 addi r1,r0,#-1 j L141 nop ; not filled. L126: addi r29,r29,#-8 sw (r29),r8 jal _findpid nop ; not filled. add r2,r0,r1 srli r3,r1,#0x5 slli r1,r3,#0x5 sub r2,r2,r1 slli r1,r4,#0x3 add r4,r1,r5 slli r1,r3,#0x2 add r1,r1,r4 addi r3,r1,#4 addi r1,r0,#1 sll r1,r1,r2 addi r10,r0,#-1 xor r2,r1,r10 lw r1,(r3) and r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r6,r0,#0 addi r5,r0,#0 L132: addi r3,r0,#1 addi r2,r0,#0 lw r31,4(r4) L136: and r1,r31,r3 snei r1,r1,#0 add r6,r6,r1 slli r3,r3,#0x1 addi r2,r2,#1 slei r1,r2,#31 bnez r1,L136 nop ; not filled. addi r4,r4,#4 addi r5,r5,#1 slei r1,r5,#0 bnez r1,L132 nop ; not filled. lw r1,160(r8) addi r2,r1,#-1 sw 160(r8),r2 lw r1,8(r8) addui r1,r1,#65164 sw 316(r1),r2 snei r1,r6,#0 bnez r1,L139 nop ; not filled. addi r29,r29,#-8 sw (r29),r7 jal _MemoryFreePage nop ; not filled. addi r29,r29,#8 L139: addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop ; not filled. addi r29,r29,#8 add r1,r0,r6 L141: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreeSharedPte .data .align 2 _spages: .space 256
home/bshapir/cs314/project2/src/traps.o
; Compiled by GCC .data .align 2 _rcsid: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6 nop ; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5 nop ; not filled. L6: addi r31,r0,#1 L5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12 nop ; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12 nop ; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11 nop ; not filled. L12: addi r2,r0,#1 L11: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop ; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#16 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44 nop ; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#8 ; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler _TrapProcessCreateHandler: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#1696 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65 nop ; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73 nop ; not filled. j L68 nop ; not filled. L67: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop ; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L73: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74 nop ; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86 nop ; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop ; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77 nop ; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80 nop ; not filled. L77: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86 nop ; not filled. j L85 nop ; not filled. L74: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop ; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92 nop ; not filled. addi r29,r29,#-8 lhi r12,((LC0)>>16)&0xffff addui r12,r12,(LC0)&0xffff sw (r29),r12 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#8 L92: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop ; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93 nop ; not filled. L86: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop ; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler .align 2 .proc _TrapPrintfHandler _TrapPrintfHandler: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#208 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95 nop ; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop ; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101 nop ; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101 nop ; not filled. j L96 nop ; not filled. L95: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop ; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop ; not filled. addi r29,r29,#16 L101: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103 nop ; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104 nop ; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107 nop ; not filled. addi r3,r3,#1 j L104 nop ; not filled. L107: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109 nop ; not filled. seqi r1,r2,#108 bnez r1,L110 nop ; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116 nop ; not filled. seqi r1,r2,#101 beqz r1,L115 nop ; not filled. L116: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109 nop ; not filled. L115: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110 nop ; not filled. L109: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105 nop ; not filled. L103: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop ; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler .data .align 2 LC1: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2: .ascii "Got a context switch trap!\n\000" .align 2 LC3: .ascii "Got an exit trap!\n\000" .align 2 LC4: .ascii "Got a fork trap!\n\000" .align 2 LC5: .ascii "Got a process sleep trap!\n\000" .align 2 LC6: .ascii "Got a printf trap!\n\000" .align 2 LC7: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9: .ascii "Got a timer interrupt!\n\000" .align 2 LC10: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11: .ascii "Exiting after illegal access at iar=0x%x, isr=0x%x\n\000" .align 2 LC12: .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" .align 2 LC13: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC14: .ascii "Exiting after page fault at iar=0x%x, isr=0x%x\n\000" .align 2 LC15: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC16: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30 ; push fp add r30,r0,r29 ; fp = sp sw -8(r29),r31 ; push ret addr subui r29,r29,#88 ; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r4,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r5,((_debugstr)>>16)&0xffff addui r5,r5,(_debugstr)&0xffff sw (r29),r5 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123 nop ; not filled. addi r29,r29,#-8 sw (r29),r5 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122 nop ; not filled. L123: addi r29,r29,#-24 lhi r7,((LC1)>>16)&0xffff addui r7,r7,(LC1)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r4 sw 16(r29),r3 jal _printf nop ; not filled. addi r29,r29,#24 L122: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124 nop ; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1088 bnez r1,L163 nop ; not filled. sgtui r1,r2,#1088 bnez r1,L207 nop ; not filled. seqi r1,r2,#532 bnez r1,L146 nop ; not filled. sgtui r1,r2,#532 bnez r1,L208 nop ; not filled. seqi r1,r2,#529 bnez r1,L152 nop ; not filled. sgtui r1,r2,#529 bnez r1,L209 nop ; not filled. seqi r1,r2,#513 bnez r1,L138 nop ; not filled. seqi r1,r2,#528 beqz r1,L205 nop ; not filled. j L149 nop ; not filled. L209: seqi r1,r2,#530 bnez r1,L158 nop ; not filled. seqi r1,r2,#531 beqz r1,L205 nop ; not filled. j L141 nop ; not filled. L208: seqi r1,r2,#1040 bnez r1,L135 nop ; not filled. sgtui r1,r2,#1040 bnez r1,L210 nop ; not filled. seqi r1,r2,#768 bnez r1,L129 nop ; not filled. seqi r1,r2,#1024 beqz r1,L205 nop ; not filled. j L126 nop ; not filled. L210: seqi r1,r2,#1073 bnez r1,L161 nop ; not filled. sgtui r1,r2,#1073 bnez r1,L211 nop ; not filled. seqi r1,r2,#1072 beqz r1,L205 nop ; not filled. j L132 nop ; not filled. L211: seqi r1,r2,#1074 beqz r1,L205 nop ; not filled. j L162 nop ; not filled. L207: seqi r1,r2,#1108 bnez r1,L181 nop ; not filled. sgtui r1,r2,#1108 bnez r1,L212 nop ; not filled. seqi r1,r2,#1105 bnez r1,L172 nop ; not filled. sgtui r1,r2,#1105 bnez r1,L213 nop ; not filled. seqi r1,r2,#1089 bnez r1,L164 nop ; not filled. seqi r1,r2,#1104 beqz r1,L205 nop ; not filled. j L168 nop ; not filled. L213: seqi r1,r2,#1106 bnez r1,L176 nop ; not filled. seqi r1,r2,#1107 beqz r1,L205 nop ; not filled. j L180 nop ; not filled. L212: seqi r1,r2,#1111 bnez r1,L193 nop ; not filled. sgtui r1,r2,#1111 bnez r1,L214 nop ; not filled. seqi r1,r2,#1109 bnez r1,L185 nop ; not filled. seqi r1,r2,#1110 beqz r1,L205 nop ; not filled. j L189 nop ; not filled. L214: seqi r1,r2,#1113 bnez r1,L201 nop ; not filled. sltui r1,r2,#1113 bnez r1,L197 nop ; not filled. seqi r1,r2,#1408 beqz r1,L205 nop ; not filled. j L155 nop ; not filled. L126: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L218 nop ; not filled. L128: addi r29,r29,#-8 lhi r7,((LC2)>>16)&0xffff addui r7,r7,(LC2)&0xffff j L248 nop ; not filled. L129: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130 nop ; not filled. L131: addi r29,r29,#-8 lhi r7,((LC3)>>16)&0xffff addui r7,r7,(LC3)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L130: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessDestroy nop ; not filled. jal _ProcessSchedule nop ; not filled. j L235 nop ; not filled. L132: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L134 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L215 nop ; not filled. L134: addi r29,r29,#-8 lhi r7,((LC4)>>16)&0xffff addui r7,r7,(LC4)&0xffff sw (r29),r7 jal _printf nop ; not filled. j L235 nop ; not filled. L135: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L137 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L136 nop ; not filled. L137: addi r29,r29,#-8 lhi r7,((LC5)>>16)&0xffff addui r7,r7,(LC5)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L136: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop ; not filled. jal _ProcessSchedule nop ; not filled. j L235 nop ; not filled. L138: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L140 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L139 nop ; not filled. L140: addi r29,r29,#-8 lhi r7,((LC6)>>16)&0xffff addui r7,r7,(LC6)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L139: addi r29,r29,#-8 sw (r29),r3 andi r1,r4,#64 sw 4(r29),r1 jal _TrapPrintfHandler nop ; not filled. j L235 nop ; not filled. L141: andi r1,r4,#64 snei r1,r1,#0 beqz r1,L142 nop ; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L143 nop ; not filled. L142: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L143: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop ; not filled. addi r29,r29,#-8 lhi r7,((LC7)>>16)&0xffff addui r7,r7,(LC7)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop ; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L235 nop ; not filled. L146: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L235 nop ; not filled. L149: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L235 nop ; not filled. L152: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L235 nop ; not filled. L155: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L235 nop ; not filled. L158: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop ; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop ; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop ; not filled. j L235 nop ; not filled. L161: jal _GetCurrentPid nop ; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L162: addi r29,r29,#-8 sw (r29),r3 andi r1,r4,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler nop ; not filled. j L235 nop ; not filled. L163: addi r29,r29,#-8 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 jal _MemoryCreateSharedPage nop ; not filled. add r31,r0,r1 lw r2,(r2) sw (r29),r2 sw 4(r29),r31 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L164: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L166 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L236 nop ; not filled. L166: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L236: addi r29,r29,#16 lw r31,-60(r30) addi r29,r29,#-8 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r31 jal _mmap nop ; not filled. add r31,r0,r1 lw r2,(r2) sw (r29),r2 sw 4(r29),r31 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L168: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L170 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L237 nop ; not filled. L170: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L237: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L172: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L174 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L238 nop ; not filled. L174: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L238: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop ; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L176: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L178 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L239 nop ; not filled. L178: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L239: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop ; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L180: jal _LockCreate nop ; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L181: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L183 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L240 nop ; not filled. L183: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L240: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _LockHandleAcquire nop ; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L185: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L187 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L241 nop ; not filled. L187: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L241: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _LockHandleRelease nop ; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L189: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L191 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L242 nop ; not filled. L191: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L242: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondCreate nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L193: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L195 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L243 nop ; not filled. L195: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L243: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondHandleWait nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L197: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L199 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L244 nop ; not filled. L199: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L244: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondHandleSignal nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L201: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L203 nop ; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop ; not filled. j L245 nop ; not filled. L203: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop ; not filled. L245: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondHandleBroadcast nop ; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop ; not filled. j L235 nop ; not filled. L205: addi r29,r29,#-8 lhi r7,((LC8)>>16)&0xffff addui r7,r7,(LC8)&0xffff j L246 nop ; not filled. L124: seqi r1,r2,#3 bnez r1,L225 nop ; not filled. sgtui r1,r2,#3 bnez r1,L231 nop ; not filled. seqi r1,r2,#1 bnez r1,L227 nop ; not filled. seqi r1,r2,#2 beqz r1,L229 nop ; not filled. j L226 nop ; not filled. L231: seqi r1,r2,#64 bnez r1,L217 nop ; not filled. sgtui r1,r2,#64 bnez r1,L232 nop ; not filled. seqi r1,r2,#32 beqz r1,L229 nop ; not filled. j L228 nop ; not filled. L232: seqi r1,r2,#72 beqz r1,L229 nop ; not filled. j L220 nop ; not filled. L217: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L219 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L218 nop ; not filled. L219: addi r29,r29,#-8 lhi r7,((LC9)>>16)&0xffff addui r7,r7,(LC9)&0xffff L248: sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L218: jal _ProcessSchedule nop ; not filled. j L215 nop ; not filled. L220: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L221: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10)>>16)&0xffff addui r7,r7,(LC10)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop ; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L215 nop ; not filled. j L221 nop ; not filled. L225: addi r29,r29,#-16 lhi r7,((LC11)>>16)&0xffff addui r7,r7,(LC11)&0xffff j L247 nop ; not filled. L226: addi r29,r29,#-16 lhi r7,((LC12)>>16)&0xffff addui r7,r7,(LC12)&0xffff j L247 nop ; not filled. L227: addi r29,r29,#-16 lhi r7,((LC13)>>16)&0xffff addui r7,r7,(LC13)&0xffff j L247 nop ; not filled. L228: addi r29,r29,#-16 lhi r7,((LC14)>>16)&0xffff addui r7,r7,(LC14)&0xffff L247: sw (r29),r7 sw 4(r29),r6 sw 8(r29),r4 jal _printf nop ; not filled. jal _exitsim nop ; not filled. addi r29,r29,#16 j L215 nop ; not filled. L229: addi r29,r29,#-8 lhi r7,((LC15)>>16)&0xffff addui r7,r7,(LC15)&0xffff L246: sw (r29),r7 sw 4(r29),r2 jal _printf nop ; not filled. jal _exitsim nop ; not filled. L235: addi r29,r29,#8 L215: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L234 nop ; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop ; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L233 nop ; not filled. L234: addi r29,r29,#-8 lhi r7,((LC16)>>16)&0xffff addui r7,r7,(LC16)&0xffff sw (r29),r7 jal _printf nop ; not filled. addi r29,r29,#8 L233: jal _intrreturn nop ; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt
home/bshapir/cs314/project2/src/usertraps.o
;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .text .align 2 ;;; The following are the traps to be used by user-level programs ;;; .text .align 2 .proc _Open .global _Open _Open: ;;; Note that trap #0x213 actually causes a trap vector in the OS of ;;; 0x1213. The same is true for other user traps. Thus, a user trap ;;; with trap #0x240 will result in a trap vector of 0x1240 in the OS. trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek .proc _Putchar .global _Putchar _Putchar: trap #0x280 jr r31 nop .endproc _Putchar .proc _Printf .global _Printf _Printf: trap #0x201 jr r31 nop .endproc _Printf .proc _getpid .global _getpid _getpid: trap #0x431 jr r31 nop .endproc _getpid .proc _process_create .global _process_create _process_create: trap #0x432 jr r31 nop .endproc _process_create .proc _shmget .global _shmget _shmget: trap #0x440 jr r31 nop .endproc _shmget .proc _shmat .global _shmat _shmat: trap #0x441 jr r31 nop .endproc _shmat .proc _sem_create .global _sem_create _sem_create: trap #0x450 jr r31 nop .endproc _sem_create .proc _sem_wait .global _sem_wait _sem_wait: trap #0x451 jr r31 nop .endproc _sem_wait .proc _sem_signal .global _sem_signal _sem_signal: trap #0x452 jr r31 nop .endproc _sem_signal .proc _lock_create .global _lock_create _lock_create: trap #0x453 jr r31 nop .endproc _lock_create .proc _lock_acquire .global _lock_acquire _lock_acquire: trap #0x454 jr r31 nop .endproc _lock_acquire .proc _lock_release .global _lock_release _lock_release: trap #0x455 jr r31 nop .endproc _lock_release .proc _cond_create .global _cond_create _cond_create: trap #0x456 jr r31 nop .endproc _cond_create .proc _cond_wait .global _cond_wait _cond_wait: trap #0x457 jr r31 nop .endproc _cond_wait .proc _cond_signal .global _cond_signal _cond_signal: trap #0x458 jr r31 nop .endproc _cond_signal .proc _cond_broadcast .global _cond_broadcast _cond_broadcast: trap #0x459 jr r31 nop .endproc _cond_broadcast
home/bshapir/cs314/project2/src/out
dlx.h dlxos.h filesys.c filesys.h lab2-api.h 10a11,12 > #include "queue.h" > 13d14 < #define BUFFERSIZE 5 29,31c30,40 < sem_t sem_create(int count); //trap 0x450 Calls SemCreate() < int sem_wait(sem_t sem); //trap 0x451 Calls SemHandleWait() < int sem_signal(sem_t sem); //trap 0x452 Calls SemHandleSignal() --- > sem_t sem_create(int count); //trap 0x450 > int sem_wait(sem_t sem); //trap 0x451 > int sem_signal(sem_t sem); //trap 0x452 > > typedef struct buffer{ > sem_t buff_sem; > sem_t oxy_sem; > sem_t hyd_sem; > int num_hyd; > int num_oxy; > }buffer; memory.c memory.h misc.c misc.h process.c 15a16 > float MyFuncRetZero(); 452c453 < dum[2] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; --- > dum[2] = MEMORY_PAGE_SIZE - SIZE_ARG_BUFF + offset; 709c710 < char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, --- > char *param[12]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 712c713 < --- > 713a715,716 > printf("Hi Uday, How are you?\n"); > MyFuncRetZero(); 723c726 < for (i = 0; i < argc; i++) --- > for (i = 0; i < argc; i++) 725c728 < if (argv[i][0] == '-') --- > if (argv[i][0] == '-') 727c730 < switch (argv[i][1]) --- > switch (argv[i][1]) 749c752 < while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) --- > while ((n = ProcessGetFromFile (fd, buf, &addr, sizeof (buf))) > 0) 751c754 < for (j = 0; j < n; j += 4) --- > for (j = 0; j < n; j += 4) 814a818,822 > float MyFuncRetZero() > { > return 0; > } > 830c838 < --- > 836c844 < --- > 859c867 < --- > process.h 9c9 < #ifndef _process_h_ --- > #ifndef _process_h__ queue.c 59a60 > queue.h 18a19 > 32,38d32 < inline < void < QueueLinkInit (Link *l, void *obj) < { < l->next = NULL; < l->object = obj; < } 83c77 < QueueInsertFirst (Queue *q, Link *l) --- > QueueRemove (Link *l) 85c79,84 < QueueInsertAfter (q, (Link *)q, l); --- > if (l->queue->nitems > 0) { > l->prev->next = l->next; > l->next->prev = l->prev; > l->queue->nitems -= 1; > } > l->next = NULL; 90c89 < QueueInsertLast (Queue *q, Link *l) --- > QueueInsertFirst (Queue *q, Link *l) 92c91 < QueueInsertAfter (q, QueueLast(q), l); --- > QueueInsertAfter (q, (Link *)q, l); 97c96 < QueueRemove (Link *l) --- > QueueInsertLast (Queue *q, Link *l) 99,104c98 < if (l->queue->nitems > 0) { < l->prev->next = l->next; < l->next->prev = l->prev; < l->queue->nitems -= 1; < } < l->next = NULL; --- > QueueInsertAfter (q, QueueLast(q), l); 106a101 > 123c118 < extern Link *QueueAllocLink (); --- > extern Link *QueueAllocLink (); share_memory.h synch.c 12a13,14 > static Lock locks[MAX_LOCKS]; > static Cond conds[MAX_CONDS]; 14c16 < extern struct PCB *currentPCB; --- > extern struct PCB *currentPCB; 20c22 < void --- > void 31c33,34 < // Your stuff for initializing locks goes here --- > locks[i].inuse = 0; > 35c38,39 < // Your stuff for initializing Condition variables goes here --- > conds[i].inuse = 0; > 51a56 > 61c66 < sem_t --- > sem_t 78c83 < --- > 87c92 < � --- > 93d97 < // OR section 2.3 of Modern Operating Systems, 144c148 < // _OSC_ OR section 2.3 of Modern Operating Systems. --- > // _OSC_. 206c210,232 < // Your stuff goes here --- > lock_t x; > uint32 intrval; > > intrval = DisableIntrs(); > for(x=0; x < MAX_LOCKS; x++) > { > if(locks[x].inuse == 0) > { > locks[x].inuse = 1; > locks[x].pid = -1; > break; > } > } > RestoreIntrs(intrval); > > if(x==MAX_LOCKS) > return INVALID_LOCK; > > SemInit(&(locks[x].semlock), 1); > > > return x; > 212,213c238,239 < // This routine acquires a lock given its handle. The handle must be a < // valid handle for this routine to succeed. In that case this routine --- > // This routine acquires a lock given its handle. The handle must be a > // valid handle for this routine to succeed. In that case this routine 222c248,265 < //Your stuff goes here --- > if ( (lock < 0) > || (lock >= 64) ) > { > return 1; > } > > if ( locks[lock].pid == GetCurrentPid() ) > { > return 0; > } > > > SemWait(&(locks[lock].semlock)); > > locks[lock].pid = GetCurrentPid(); > > return 0; > 237,238c280,304 < // Your stuff goes here < } --- > > if ( (lock < 0) > || (lock >= 64) ) > { > return 1; > } > > if ( locks[lock].inuse == 0) > { > return 1; > } > > if ( (locks[lock].pid) == GetCurrentPid() ) > { > locks[lock].pid = -1; > > SemSignal(&(locks[lock].semlock)); > > > > > return 0; > } > return 1; > } 247,248c313,314 < // it should have been obtained via previous call to LockCreate(). < // --- > // it should have been obtained via previous call to LockCreate(). > // 257c323,361 < // Your stuff goes here --- > int I; > uint32 intrval; > intrval = DisableIntrs(); > > if ( lock <0 > || lock > 63 ) > { > printf("Invalid lock in condcreate\n"); > return 1; > } > > > for(I=0; I< MAX_CONDS; I++) > { > if(conds[I].inuse == 0) > { > conds[I].inuse = 1; > conds[I].lockcond = lock; > conds[I].condcounter = 0; > break; > } > } > > RestoreIntrs(intrval); > > > if(I == MAX_CONDS) > { > return INVALID_COND; > } > > > SemInit(&(conds[I].semcond), 0); > > > return I; > > > 286c390,417 < // Your stuff goes here --- > if ( (cond < 0) > || (cond > 31) ) > { > printf ("Invalid Cond\n"); > return 1; > } > > if ( locks[conds[cond].lockcond].pid != GetCurrentPid()) > { > return 1; > } > > if ( (conds[cond].inuse) != 1) > { > printf("Invalid Cond\n"); > return 1; > } > > > conds[cond].condcounter++; > LockHandleRelease(conds[cond].lockcond); > > SemWait(&(conds[cond].semcond)); > > LockHandleAcquire(conds[cond].lockcond); > > return 0; > 311c442,468 < // Your stuff goes here --- > if (conds[cond].inuse != 1) > { > printf("Lock is not is use\n "); > return 1; > } > > if ( (cond < 0) > || (cond > 31) ) > { > printf ("Invalid Cond\n"); > return 1; > } > > > if ( locks[conds[cond].lockcond].pid != GetCurrentPid()) > { > return 1; > } > > if (conds[cond].condcounter >= 1) > { > SemSignal(&(conds[cond].semcond)); > conds[cond].condcounter--; > return 0; > } > return 0; > 332c489,521 < // Your stuff goes here --- > > if (conds[cond].inuse != 1) > { > printf("Lock is not is use\n "); > return 1; > } > > if ( (cond < 0) > || (cond > 31) ) > { > printf ("Invalid Cond\n"); > return 1; > } > > > if ( locks[conds[cond].lockcond].pid != GetCurrentPid()) > { > return 1; > } > > > if ( conds[cond].condcounter > 0 ) > { > do > { > SemSignal(&(conds[cond].semcond)); > conds[cond].condcounter--; > }while(conds[cond].condcounter > 0); > > return 0; > } > > synch.h 2,26c2,26 < // synch.h < // < // Include file for synchronization stuff. The synchronization < // primitives include: < // Semaphore < // Lock < // Condition < // < // Semaphores are the only "native" synchronization primitive. < // Condition variables and locks are implemented using semaphores. < // < < #ifndef _synch_h_ < #define _synch_h_ < < #include "queue.h" < < #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system < #define MAX_LOCKS 64 //Maximum 64 locks allowed in the system < //This is because condition vars also use < //locks from the same pool < #define MAX_CONDS 32 //Maximum 32 conds allowed in the system < < typedef int sem_t; < typedef int lock_t; --- > // synch.h > // > // Include file for synchronization stuff. The synchronization > // primitives include: > // Semaphore > // Lock > // Condition > // > // Semaphores are the only "native" synchronization primitive. > // Condition variables and locks are implemented using semaphores. > // > > #ifndef _synch_h_ > #define _synch_h_ > > #include "queue.h" > > #define MAX_SEMS 32 //Maximum 32 semaphores allowed in the system > #define MAX_LOCKS 64 //Maximum 64 locks allowed in the system > //This is because condition vars also use > //locks from the same pool > #define MAX_CONDS 32 //Maximum 32 conds allowed in the system > > typedef int sem_t; > typedef int lock_t; 28,43c28,43 < < #define INVALID_SEM -1 < #define INVALID_LOCK -1 < #define INVALID_PROC -1 < #define INVALID_COND -1 < typedef struct Sem { < Queue waiting; < int count; < uint32 inuse; //indicates whether the semaphore is being < //used by any process < } Sem; < < extern void SemInit (Sem *, int); < extern void SemWait (Sem *); < extern void SemSignal (Sem *); < --- > > #define INVALID_SEM -1 > #define INVALID_LOCK -1 > #define INVALID_PROC -1 > #define INVALID_COND -1 > typedef struct Sem { > Queue waiting; > int count; > uint32 inuse; //indicates whether the semaphore is being > //used by any process > } Sem; > > extern void SemInit (Sem *, int); > extern void SemWait (Sem *); > extern void SemSignal (Sem *); > 45,46c45,47 < < //Your stuff goes here --- > Sem semlock; > int pid; > uint32 inuse; 50,51c51,54 < < //Your stuff goes here --- > int condcounter; > uint32 inuse; > lock_t lockcond; > Sem semcond; 54a58 > syscall.h sysproc.c traps.c traps.h userprog.c userprog2.c
home/bshapir/cs314/project2/src/misc.h
// // Routines used by the entire operating system. // #ifndef _misc_h_ #define _misc_h_ extern char* dstrcpy(char*, const char*); extern char* dstrncpy(char*, const char*, int n); extern const char *dstrstr (const char *, const char *); extern int dstrlen (const char *); extern int dstrncmp (const char *, const char *, int); extern int dstrtol(char*, char**, int); extern const char* dindex(const char*, int); extern const char* dmindex(const char*, const char *); inline int isspace (char c) { return ((c == ' ') || (c == '\t') || (c == '\n')); } inline int isxdigit (char c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) || ((c >= 'A') && (c <= 'A'))); } #endif // !_misc_h_
home/bshapir/cs314/project2/src/os.dlx
; Linked by DLX-LD. ; MemSize 98304 ; Data size: 34832 ; Text size: 45600 ; Stack size: 8192 .text 0x1000 .data 0xd000 ;;; ;;; Initialization code for programs running in the DLX simulator. ;;; Copyright (c) 1999 by Ethan Miller ;;; ;;; .text .align 2 ;;;---------------------------------------------------------------------- ;;; osinit ;;; ;;; This is the first function called by the simulator, even before main. ;;; Since it's called BEFORE any "real" routines, we can use any registers ;;; we want as long as we don't mess up the stack or frame pointers. ;;; ;;; This routine loads the interrupt vector to point to the interrupt ;;; handler later in this file. It should never return, because _main ;;; should call exitsim() or exit() rather than returning here. ;;; ;;; After initialization is done, this routine jumps to _main to start the ;;; C code portion of the operating system. ;;;---------------------------------------------------------------------- .proc _osinit .global _osinit _osinit: ;; Set up the interrupt handler lhi r1,(_intrhandler>>16)&0xffff addui r1,r1,_intrhandler&0xffff movi2s intrvec,r1 ;; Never returns because exitsim is called first j _main .endproc _osinit ;;;---------------------------------------------------------------------- ;;; intrhandler ;;; ;;; Called when an interrupt or trap is received by the CPU. It stores the ;;; current register set on the system stack. It then pushes the parameters ;;; to the C interrupt handler onto the stack: the ISR, IAR, and CAUSE ;;; registers along with the original stack pointer. The C interrupt ;;; handler can then copy arguments from the original stack, performing ;;; user -> system translations if necessary. ;;; ;;;---------------------------------------------------------------------- .proc _intrhandler .global _intrhandler _intrhandler: ;; We can use r31 as scratch space because its value was saved in ;; ir31. However, we must save the "real" value of r31 on the ;; stack. ;; Always store the registers on the system stack. This way, we don't ;; have to worry about translating things from user -> system. We ;; use r31 as the base register because its value was saved in ir31. ;; If this was a user process, load r29 with the current system ;; stack pointer. If it was a system process, just use the ;; current stack pointer. movs2i r31,isr andi r31,r31,0x40 bnez r31,intrSystem_LF0 lhi r31,(_currentPCB>>16)&0xffff addui r31,r31,_currentPCB&0xffff lw r31,(r31) lw r31,4(r31) ;; Save the original (user) stack pointer sw -184(r31),r29; we haven't yet bumped SP, and 156-340 = -184 ;; Copy the system stack pointer into r29 (current stack pointer) ori r29,r31,0 beqz r0,intrSaveReg_LF0; skip over the system part.... intrSystem_LF0: ;; Use the stack pointer we're already using ;; Save r29 because we won't save it later sw -184(r29),r29; we haven't yet bumped SP, and 156-340 = -184 intrSaveReg_LF0: ;; Adjust stack pointer for all the stuff we're going to push. This ;; is a bit more space than we need currently, but it leaves room ;; for more stuff if needed. subui r29,r29,#340 ;; Push all the stuff onto the stack sw 44(r29),r1 sw 48(r29),r2 sw 52(r29),r3 sw 56(r29),r4 sw 60(r29),r5 sw 64(r29),r6 sw 68(r29),r7 sw 72(r29),r8 sw 76(r29),r9 sw 80(r29),r10 sw 84(r29),r11 sw 88(r29),r12 sw 92(r29),r13 sw 96(r29),r14 sw 100(r29),r15 sw 104(r29),r16 sw 108(r29),r17 sw 112(r29),r18 sw 116(r29),r19 sw 120(r29),r20 sw 124(r29),r21 sw 128(r29),r22 sw 132(r29),r23 sw 136(r29),r24 sw 140(r29),r25 sw 144(r29),r26 sw 148(r29),r27 sw 152(r29),r28 ;; Skip r29 - stored earlier! sw 160(r29),r30 ;; Load the value of r31 from the special register and then save it movs2i r3,ir31 sw 164(r29),r3 ;; Store the floating-point registers sd 168(r29),f0 sd 176(r29),f2 sd 184(r29),f4 sd 192(r29),f6 sd 200(r29),f8 sd 208(r29),f10 sd 216(r29),f12 sd 224(r29),f14 sd 232(r29),f16 sd 240(r29),f18 sd 248(r29),f20 sd 256(r29),f22 sd 264(r29),f24 sd 272(r29),f26 sd 280(r29),f28 sd 288(r29),f30 ;; NOTE: we don't save the interrupt vector register because it ;; doesn't change from process to process. ;; NOTE: we don't save the status register because most of the flags ;; are the same from process to process if they're in the interrupt ;; handler. Of course, we DO save the ISR. movs2i r4,iar sw 296(r29),r4 movs2i r5,isr sw 300(r29),r5 movs2i r6,cause sw 304(r29),r6 movs2i r3,fault sw 308(r29),r3 movs2i r3,ptbase sw 312(r29),r3 movs2i r3,ptsize sw 316(r29),r3 movs2i r3,ptbits sw 320(r29),r3 ;; Push the interrupt information onto the stack sw 0(r29),r6; push CAUSE sw 4(r29),r4; push IAR sw 8(r29),r5; push ISR ;; Get the original stack pointer lw r1,156(r29) sw 12(r29),r1 ;; Save the previous interrupt stack frame address in the current frame lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,(r1) lw r2,0(r1) sw 40(r29),r2 ;; Save this frame address in the PCB. This is used so the OS can ;; easily access the current interrupt save frame sw 0(r1),r29 ;; Call the "real" interrupt handler. This will possibly switch ;; contexts. This call never returns; instead, a separate routine ;; (_intrreturn) is called to return from interrupts after restoring ;; the current context. j _dointerrupt nop .endproc _intrhandler ;;;---------------------------------------------------------------------- ;;; intrreturn ;;; ;;; Return from an interrupt or trap. This restores all of the previously ;;; saved registers and then returns to where the program left off. The ;;; current contents of the registers are destroyed. This routine uses ;;; the saved interrupt frame pointer, so the stack pointer need not ;;; be correct. Note, though, that the register contents from the previous ;;; process must have previously been saved - in other words, call this ;;; routine from a trap or interrupt handler. ;;;---------------------------------------------------------------------- .proc _intrreturn .global _intrreturn _intrreturn: ;; Disable interrupts - this routine must be atomic, and interrupts ;; may not be currently disabled. Don't worry about saving registers ;; because we're about to reload them anyway. jal _DisableIntrs ;; Get our interrupt stack frame location and load it into the stack ;; pointer. lhi r1,(_currentPCB>>16)&0xffff addui r1,r1,_currentPCB&0xffff lw r1,0(r1) lw r29,0(r1) ;; Get the previous interrupt stack frame location and make it the ;; current interrupt save frame. lw r2,40(r29) sw 0(r1),r2 ;; Reload the registers for the new process. We don't have to ;; load in the exact opposite order as long as we're careful to ;; get the right values back in. lw r3,296(r29) movi2s iar,r3 lw r3,300(r29) movi2s isr,r3 lw r3,304(r29) movi2s cause,r3 lw r3,308(r29) movi2s fault,r3 lw r3,312(r29) movi2s ptbase,r3 lw r3,316(r29) movi2s ptsize,r3 lw r3,320(r29) movi2s ptbits,r3 ;; Reload the floating point registers ld f0,168(r29) ld f2,176(r29) ld f4,184(r29) ld f6,192(r29) ld f8,200(r29) ld f10,208(r29) ld f12,216(r29) ld f14,224(r29) ld f16,232(r29) ld f18,240(r29) ld f20,248(r29) ld f22,256(r29) ld f24,264(r29) ld f26,272(r29) ld f28,280(r29) ld f30,288(r29) ;; Reload the integer registers. We don't reload r0 because it's ;; always 0. We won't reload r29 here because we're using it as ;; the stack pointer. The same goes for r1, which we'll use as ;; scratch so we can store r29. ;; Skip r1 - restored later lw r2,48(r29) lw r3,52(r29) lw r4,56(r29) lw r5,60(r29) lw r6,64(r29) lw r7,68(r29) lw r8,72(r29) lw r9,76(r29) lw r10,80(r29) lw r11,84(r29) lw r12,88(r29) lw r13,92(r29) lw r14,96(r29) lw r15,100(r29) lw r16,104(r29) lw r17,108(r29) lw r18,112(r29) lw r19,116(r29) lw r20,120(r29) lw r21,124(r29) lw r22,128(r29) lw r23,132(r29) lw r24,136(r29) lw r25,140(r29) lw r26,144(r29) lw r27,148(r29) lw r28,152(r29) ;; Skip r29 - restored later lw r30,160(r29) lw r31,164(r29) addui r29,r29,#340 ;; Save the current value of the stack pointer after adjusting it ;; Note that this will "destroy" the stack values below this interrupt ;; stack frame. This is exactly what we want! sw 4(r1),r29 ori r1,r29,#0 lw r29,-184(r1); 156-340 = -184 lw r1,-296(r1); 44-340 = -296 rfe .endproc _intrreturn ;;;---------------------------------------------------------------------- ;;; SetIntrs ;;; ;;; This routine sets the interrupt level to the value passed (0 -> all ;;; interrupts enabled; 0xf -> all interrupts disabled). It returns the ;;; former value for the interrupt flags. ;;;---------------------------------------------------------------------- .proc _SetIntrs .global _SetIntrs _SetIntrs: subui r29,r29,#16 sw 12(r29),r2; save r2 lw r2,16(r29); Get the new interrupt level andi r2,r2,#0x0f; Mask off interrupt levels movs2i r1,status sw 8(r29),r1; Store the old interrupt values andi r1,r1,#0xfff0; Mask off old interrupt level or r1,r2,r1; OR in new interrupt level movi2s status,r1 lw r1,8(r29); Get back the original interrupt level andi r1,r1,#0x0f; Mask off all but interrupt levels lw r2,12(r29); restore r2 addui r29,r29,#16; restore stack pointer jr r31 nop .endproc _SetIntrs .proc _CurrentIntrs .global _CurrentIntrs _CurrentIntrs: movs2i r1,status andi r1,r1,#0xf jr r31 nop .endproc _CurrentIntrs ;;;---------------------------------------------------------------------- ;;; _ProcessSleep ;;; ;;; If a context switch from elsewhere in the kernel is desired, take a ;;; trap and call this routine from the trap handler. ;;;---------------------------------------------------------------------- .proc _ProcessSleep .global _ProcessSleep _ProcessSleep: trap #0x410; This is a process sleep trap nop jr r31 nop .endproc _ProcessSleep ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .align 2 .proc _random .global _random _random: trap #0x2020 jr r31 nop .endproc _random .proc _srandom .global _srandom _srandom: trap #0x2021 jr r31 nop .endproc _srandom ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF2 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF2 nop; not filled. L6_LF2: addi r31,r0,#1 L5_LF2: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF2 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF2 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF2 nop; not filled. L12_LF2: addi r2,r0,#1 L11_LF2: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF2 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF2: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF2: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1_LF2: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ShareModuleInit .global _ShareModuleInit _ShareModuleInit: ; Function 'ShareModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L64_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L63_LF2 nop; not filled. L64_LF2: addi r29,r29,#-8 lhi r5,((LC0_LF2)>>16)&0xffff addui r5,r5,(LC0_LF2)&0xffff sw (r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L63_LF2: lhi r2,((_spages_LF2)>>16)&0xffff addui r2,r2,(_spages_LF2)&0xffff addi r4,r2,#248 L68_LF2: addi r5,r0,#0 sw (r2),r5 add r31,r0,r2 add r3,r0,r2 L72_LF2: addi r1,r31,#4 addi r5,r0,#0 sw (r1),r5 add r31,r0,r1 sle r1,r31,r3 bnez r1,L72_LF2 nop; not filled. addi r2,r2,#8 sle r1,r2,r4 bnez r1,L68_LF2 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#112 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L76_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L75_LF2 nop; not filled. L76_LF2: addi r29,r29,#-8 lhi r5,((LC1_LF2)>>16)&0xffff addui r5,r5,(LC1_LF2)&0xffff sw (r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L75_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ShareModuleInit .data .align 2 LC2_LF2: .ascii "FATAL: couldn\'t allocate memory - no free pages!\n\000" .text .align 2 .proc _MemoryCreateSharedPage .global _MemoryCreateSharedPage _MemoryCreateSharedPage: ; Function 'MemoryCreateSharedPage'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) addi r29,r29,#-8 sw (r29),r6 jal _findpid nop; not filled. add r5,r0,r1 srli r8,r5,#0x5 slli r1,r8,#0x5 sub r5,r5,r1 addi r29,r29,#8 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop; not filled. add r7,r0,r1 addi r29,r29,#8 lw r1,160(r6) seqi r1,r1,#16 bnez r1,L92_LF2 nop; not filled. addi r3,r0,#0 lhi r9,((_spages_LF2)>>16)&0xffff addui r9,r9,(_spages_LF2)&0xffff add r2,r0,r9 L84_LF2: lw r1,(r2) snei r1,r1,#0 beqz r1,L82_LF2 nop; not filled. addi r2,r2,#8 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L84_LF2 nop; not filled. L82_LF2: seqi r1,r3,#32 beqz r1,L87_LF2 nop; not filled. L92_LF2: addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r1,r0,#0 j L91_LF2 nop; not filled. L87_LF2: jal _MemoryAllocPage nop; not filled. add r4,r0,r1 snei r1,r4,#0 bnez r1,L89_LF2 nop; not filled. addi r29,r29,#-8 lhi r10,((LC2_LF2)>>16)&0xffff addui r10,r10,(LC2_LF2)&0xffff sw (r29),r10 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L89_LF2: slli r1,r3,#0x3 add r2,r1,r9 sw (r2),r4 slli r1,r8,#0x2 add r2,r1,r2 addi r1,r0,#1 sll r1,r1,r5 sw 4(r2),r1 addi r29,r29,#-8 sw (r29),r4 jal _MemorySetupPte nop; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r2,r1,#1 sw 160(r6),r2 lw r1,8(r6) addui r1,r1,#65164 sw 316(r1),r2 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r7 jal _SetIntrs nop; not filled. addi r29,r29,#8 add r1,r0,r4 L91_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCreateSharedPage .align 2 .proc _mmap .global _mmap _mmap: ; Function 'mmap'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r6,(r30) lw r7,4(r30) snei r1,r7,#0 bnez r1,L94_LF2 nop; not filled. addi r1,r0,#0 j L115_LF2 nop; not filled. L94_LF2: lw r1,8(r6) addui r9,r1,#65164 addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop; not filled. add r8,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r2,((_spages_LF2)>>16)&0xffff addui r2,r2,(_spages_LF2)&0xffff L99_LF2: lw r1,(r2) seq r1,r1,r7 bnez r1,L97_LF2 nop; not filled. addi r2,r2,#8 addi r3,r3,#1 sleui r1,r3,#31 bnez r1,L99_LF2 nop; not filled. L97_LF2: seqi r1,r3,#32 bnez r1,L116_LF2 nop; not filled. slli r31,r7,#0x10 addi r5,r0,#0 lw r4,160(r6) slt r1,r5,r4 beqz r1,L105_LF2 nop; not filled. add r2,r0,r6 L107_LF2: lw r1,96(r2) addi r10,r0,#-8 and r1,r1,r10 seq r1,r1,r31 bnez r1,L105_LF2 nop; not filled. addi r2,r2,#4 addi r5,r5,#1 slt r1,r5,r4 bnez r1,L107_LF2 nop; not filled. L105_LF2: lw r2,160(r6) seq r1,r5,r2 beqz r1,L110_LF2 nop; not filled. slei r1,r2,#15 bnez r1,L111_LF2 nop; not filled. L116_LF2: addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r1,r0,#0 j L115_LF2 nop; not filled. L111_LF2: addi r29,r29,#-8 sw (r29),r7 jal _MemorySetupPte nop; not filled. lw r2,160(r6) slli r2,r2,#0x2 add r2,r2,r6 sw 96(r2),r1 lw r1,160(r6) addi r1,r1,#1 sw 160(r6),r1 sw 316(r9),r1 addi r29,r29,#8 L110_LF2: addi r29,r29,#-8 sw (r29),r6 jal _findpid nop; not filled. add r2,r0,r1 srli r4,r2,#0x5 slli r1,r4,#0x5 sub r2,r2,r1 slli r3,r3,#0x3 slli r1,r4,#0x2 add r1,r3,r1 lhi r10,((_spages_LF2+4)>>16)&0xffff addui r10,r10,(_spages_LF2+4)&0xffff add r3,r1,r10 addi r1,r0,#1 sll r2,r1,r2 lw r1,(r3) or r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r8 jal _SetIntrs nop; not filled. addi r29,r29,#8 slli r1,r5,#0x10 L115_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _mmap .data .align 2 LC3_LF2: .ascii "FATAL: Attempted to free memory page 0\n\000" .text .align 2 .proc _MemoryFreeSharedPte .global _MemoryFreeSharedPte _MemoryFreeSharedPte: ; Function 'MemoryFreeSharedPte'; 0 bytes of locals, 9 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 lw r8,(r30) lw r2,4(r30) addi r29,r29,#-8 addi r10,r0,#15 sw (r29),r10 jal _SetIntrs nop; not filled. add r9,r0,r1 addi r29,r29,#8 slli r1,r2,#0x2 add r1,r1,r8 lhu r7,96(r1) snei r1,r7,#0 bnez r1,L119_LF2 nop; not filled. addi r29,r29,#-8 lhi r10,((LC3_LF2)>>16)&0xffff addui r10,r10,(LC3_LF2)&0xffff sw (r29),r10 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L119_LF2: addi r4,r0,#0 lhi r5,((_spages_LF2)>>16)&0xffff addui r5,r5,(_spages_LF2)&0xffff add r2,r0,r5 L123_LF2: lw r1,(r2) seq r1,r1,r7 bnez r1,L121_LF2 nop; not filled. addi r2,r2,#8 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L123_LF2 nop; not filled. L121_LF2: seqi r1,r4,#32 beqz r1,L126_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r1,r0,#-1 j L141_LF2 nop; not filled. L126_LF2: addi r29,r29,#-8 sw (r29),r8 jal _findpid nop; not filled. add r2,r0,r1 srli r3,r1,#0x5 slli r1,r3,#0x5 sub r2,r2,r1 slli r1,r4,#0x3 add r4,r1,r5 slli r1,r3,#0x2 add r1,r1,r4 addi r3,r1,#4 addi r1,r0,#1 sll r1,r1,r2 addi r10,r0,#-1 xor r2,r1,r10 lw r1,(r3) and r1,r1,r2 sw (r3),r1 addi r29,r29,#8 addi r6,r0,#0 addi r5,r0,#0 L132_LF2: addi r3,r0,#1 addi r2,r0,#0 lw r31,4(r4) L136_LF2: and r1,r31,r3 snei r1,r1,#0 add r6,r6,r1 slli r3,r3,#0x1 addi r2,r2,#1 slei r1,r2,#31 bnez r1,L136_LF2 nop; not filled. addi r4,r4,#4 addi r5,r5,#1 slei r1,r5,#0 bnez r1,L132_LF2 nop; not filled. lw r1,160(r8) addi r2,r1,#-1 sw 160(r8),r2 lw r1,8(r8) addui r1,r1,#65164 sw 316(r1),r2 snei r1,r6,#0 bnez r1,L139_LF2 nop; not filled. addi r29,r29,#-8 sw (r29),r7 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 L139_LF2: addi r29,r29,#-8 sw (r29),r9 jal _SetIntrs nop; not filled. addi r29,r29,#8 add r1,r0,r6 L141_LF2: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreeSharedPte .data .align 2 _spages_LF2: .space 256 ; Compiled by GCC .align 2 _rcsid_LF3: .ascii "$Id: filesys.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF3 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF3 nop; not filled. L6_LF3: addi r31,r0,#1 L5_LF3: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF3 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF3 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF3 nop; not filled. L12_LF3: addi r2,r0,#1 L11_LF3: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF3 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF3: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF3: .ascii "Attepmting to open %s mode=%d.\n\000" .align 2 LC1_LF3: .ascii "dlx:\000" .align 2 LC2_LF3: .ascii "File %s opening in file system %d.\n\000" .align 2 LC3_LF3: .ascii "Opened %s in FS %d, mode=%d slot=%d.\n\000" .text .align 2 .proc _FsOpen .global _FsOpen _FsOpen: ; Function 'FsOpen'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r4,(r30) lw r5,4(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L56_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L55_LF3 nop; not filled. L56_LF3: addi r29,r29,#-16 lhi r8,((LC0_LF3)>>16)&0xffff addui r8,r8,(LC0_LF3)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L55_LF3: andi r5,r5,#3 snei r1,r5,#0 beqz r1,L74_LF3 nop; not filled. addi r3,r0,#0 lhi r6,((_openfiles_LF3)>>16)&0xffff addui r6,r6,(_openfiles_LF3)&0xffff add r2,r0,r6 L61_LF3: lw r1,4(r2) snei r1,r1,#0 beqz r1,L59_LF3 nop; not filled. addi r2,r2,#268 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L61_LF3 nop; not filled. L59_LF3: sgti r1,r3,#31 beqz r1,L64_LF3 nop; not filled. L74_LF3: addi r1,r0,#-1 j L73_LF3 nop; not filled. L64_LF3: slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 add r2,r1,r6 sw 4(r2),r5 addi r29,r29,#-16 sw (r29),r4 lhi r1,((LC1_LF3)>>16)&0xffff addui r1,r1,(LC1_LF3)&0xffff sw 4(r29),r1 addi r8,r0,#4 sw 8(r29),r8 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L65_LF3 nop; not filled. addi r4,r4,#4 addi r8,r0,#1 j L75_LF3 nop; not filled. L65_LF3: addi r8,r0,#0 L75_LF3: sw (r2),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L68_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L67_LF3 nop; not filled. L68_LF3: addi r29,r29,#-16 lhi r8,((LC2_LF3)>>16)&0xffff addui r8,r8,(LC2_LF3)&0xffff sw (r29),r8 sw 4(r29),r4 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r1,r1,#0x2 lhi r8,((_openfiles_LF3)>>16)&0xffff addui r8,r8,(_openfiles_LF3)&0xffff add r1,r1,r8 lw r1,(r1) sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L67_LF3: addi r29,r29,#-16 slli r1,r3,#0x4 add r1,r1,r3 slli r1,r1,#0x2 sub r1,r1,r3 slli r6,r1,#0x2 lhi r8,((_openfiles_LF3)>>16)&0xffff addui r8,r8,(_openfiles_LF3)&0xffff add r7,r6,r8 lw r2,(r7) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r8,((_fs_LF3)>>16)&0xffff addui r8,r8,(_fs_LF3)&0xffff add r1,r1,r8 sw (r29),r3 sw 4(r29),r4 sw 8(r29),r5 lw r1,(r1) jalr r1 nop; not filled. add r2,r0,r1 addi r29,r29,#16 slti r1,r2,#0 beqz r1,L69_LF3 nop; not filled. lhi r8,((_openfiles_LF3)>>16)&0xffff addui r8,r8,(_openfiles_LF3)&0xffff add r1,r6,r8 addi r8,r0,#0 sw 4(r1),r8 add r1,r0,r2 j L73_LF3 nop; not filled. L69_LF3: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#102 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF3 nop; not filled. L72_LF3: addi r29,r29,#-24 lhi r8,((LC3_LF3)>>16)&0xffff addui r8,r8,(LC3_LF3)&0xffff sw (r29),r8 sw 4(r29),r4 lw r7,(r7) sw 8(r29),r7 sw 12(r29),r5 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L71_LF3: add r1,r0,r3 L73_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsOpen .align 2 .proc _FsClose .global _FsClose _FsClose: ; Function 'FsClose'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L84_LF3 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r4,((_openfiles_LF3)>>16)&0xffff addui r4,r4,(_openfiles_LF3)&0xffff add r1,r1,r4 lw r1,4(r1) snei r1,r1,#0 beqz r1,L84_LF3 nop; not filled. addi r2,r0,#1 L84_LF3: snei r1,r2,#0 beqz r1,L82_LF3 nop; not filled. addi r29,r29,#-8 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r3,r1,#0x2 lhi r4,((_openfiles_LF3)>>16)&0xffff addui r4,r4,(_openfiles_LF3)&0xffff add r1,r3,r4 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r4,((_fs_LF3)>>16)&0xffff addui r4,r4,(_fs_LF3)&0xffff add r1,r1,r4 sw (r29),r31 lw r1,16(r1) jalr r1 nop; not filled. addi r29,r29,#8 lhi r4,((_openfiles_LF3)>>16)&0xffff addui r4,r4,(_openfiles_LF3)&0xffff add r2,r3,r4 addi r4,r0,#0 sw 4(r2),r4 j L86_LF3 nop; not filled. L82_LF3: addi r1,r0,#-1 L86_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsClose .align 2 .proc _FsRead .global _FsRead _FsRead: ; Function 'FsRead'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L94_LF3 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L94_LF3 nop; not filled. addi r2,r0,#1 L94_LF3: snei r1,r2,#0 beqz r1,L92_LF3 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF3)>>16)&0xffff addui r3,r3,(_fs_LF3)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,4(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L91_LF3 nop; not filled. L92_LF3: addi r1,r0,#-1 L91_LF3: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsRead .align 2 .proc _FsWrite .global _FsWrite _FsWrite: ; Function 'FsWrite'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L103_LF3 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L103_LF3 nop; not filled. addi r2,r0,#1 L103_LF3: snei r1,r2,#0 beqz r1,L101_LF3 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF3)>>16)&0xffff addui r3,r3,(_fs_LF3)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,8(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L100_LF3 nop; not filled. L101_LF3: addi r1,r0,#-1 L100_LF3: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsWrite .align 2 .proc _FsSeek .global _FsSeek _FsSeek: ; Function 'FsSeek'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) addi r2,r0,#0 addi r1,r31,#-1 sleui r1,r1,#30 beqz r1,L112_LF3 nop; not filled. slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r1,4(r1) snei r1,r1,#0 beqz r1,L112_LF3 nop; not filled. addi r2,r0,#1 L112_LF3: snei r1,r2,#0 beqz r1,L110_LF3 nop; not filled. addi r29,r29,#-16 slli r1,r31,#0x4 add r1,r1,r31 slli r1,r1,#0x2 sub r1,r1,r31 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r2,(r1) slli r1,r2,#0x1 add r1,r1,r2 slli r1,r1,#0x3 lhi r3,((_fs_LF3)>>16)&0xffff addui r3,r3,(_fs_LF3)&0xffff add r1,r1,r3 sw (r29),r31 lw r3,4(r30) sw 4(r29),r3 lw r3,8(r30) sw 8(r29),r3 lw r1,12(r1) jalr r1 nop; not filled. addi r29,r29,#16 j L109_LF3 nop; not filled. L110_LF3: addi r1,r0,#-1 L109_LF3: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsSeek .align 2 .proc _FsDelete .global _FsDelete _FsDelete: ; Function 'FsDelete'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-16 sw (r29),r2 lhi r1,((LC1_LF3)>>16)&0xffff addui r1,r1,(LC1_LF3)&0xffff sw 4(r29),r1 addi r3,r0,#4 sw 8(r29),r3 jal _dstrncmp nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L118_LF3 nop; not filled. addi r2,r2,#4 addi r29,r29,#-8 lhi r1,((_fs_LF3+44)>>16)&0xffff addui r1,r1,(_fs_LF3+44)&0xffff j L120_LF3 nop; not filled. L118_LF3: addi r29,r29,#-8 lhi r1,((_fs_LF3+20)>>16)&0xffff addui r1,r1,(_fs_LF3+20)&0xffff L120_LF3: sw (r29),r2 lw r1,(r1) jalr r1 nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDelete .data .align 2 LC4_LF3: .ascii "Attempting to open file %s into desc %d, mode %d.\n\000" .text .align 2 .proc _FsUnixOpen .global _FsUnixOpen _FsUnixOpen: ; Function 'FsUnixOpen'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r3,4(r30) lw r5,8(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#102 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L127_LF3 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L126_LF3 nop; not filled. L127_LF3: addi r29,r29,#-16 lhi r6,((LC4_LF3)>>16)&0xffff addui r6,r6,(LC4_LF3)&0xffff sw (r29),r6 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L126_LF3: addi r29,r29,#-8 sw (r29),r3 sw 4(r29),r5 jal _open nop; not filled. add r3,r0,r1 slli r1,r4,#0x4 add r1,r1,r4 slli r1,r1,#0x2 sub r1,r1,r4 slli r1,r1,#0x2 lhi r6,((_openfiles_LF3)>>16)&0xffff addui r6,r6,(_openfiles_LF3)&0xffff add r1,r1,r6 sw 264(r1),r3 addi r29,r29,#8 slti r2,r3,#0 add r1,r0,r3 bnez r2,L128_LF3 nop; not filled. addi r1,r0,#1 L128_LF3: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixOpen .align 2 .proc _FsUnixRead .global _FsUnixRead _FsUnixRead: ; Function 'FsUnixRead'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF3)>>16)&0xffff addui r5,r5,(_openfiles_LF3)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _read nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixRead .align 2 .proc _FsUnixWrite .global _FsUnixWrite _FsUnixWrite: ; Function 'FsUnixWrite'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF3)>>16)&0xffff addui r5,r5,(_openfiles_LF3)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _write nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixWrite .align 2 .proc _FsUnixSeek .global _FsUnixSeek _FsUnixSeek: ; Function 'FsUnixSeek'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) lw r3,4(r30) lw r4,8(r30) addi r29,r29,#-16 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r5,((_openfiles_LF3)>>16)&0xffff addui r5,r5,(_openfiles_LF3)&0xffff add r1,r1,r5 lw r1,264(r1) sw (r29),r1 sw 4(r29),r3 sw 8(r29),r4 jal _lseek nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixSeek .align 2 .proc _FsUnixClose .global _FsUnixClose _FsUnixClose: ; Function 'FsUnixClose'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) addi r29,r29,#-8 slli r1,r2,#0x4 add r1,r1,r2 slli r1,r1,#0x2 sub r1,r1,r2 slli r1,r1,#0x2 lhi r3,((_openfiles_LF3)>>16)&0xffff addui r3,r3,(_openfiles_LF3)&0xffff add r1,r1,r3 lw r1,264(r1) sw (r29),r1 jal _close nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixClose .align 2 .proc _FsUnixDelete .global _FsUnixDelete _FsUnixDelete: ; Function 'FsUnixDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#-1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsUnixDelete .align 2 .proc _FsDlxIo .global _FsDlxIo _FsDlxIo: ; Function 'FsDlxIo'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxIo .align 2 .proc _FsDlxRead .global _FsDlxRead _FsDlxRead: ; Function 'FsDlxRead'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxRead .align 2 .proc _FsDlxWrite .global _FsDlxWrite _FsDlxWrite: ; Function 'FsDlxWrite'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxWrite .align 2 .proc _FsDlxOpen .global _FsDlxOpen _FsDlxOpen: ; Function 'FsDlxOpen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF3)>>16)&0xffff addui r31,r31,(_openfiles_LF3)&0xffff add r1,r1,r31 addi r31,r0,#0 sw 264(r1),r31 addi r1,r0,#1 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxOpen .align 2 .proc _FsDlxSeek .global _FsDlxSeek _FsDlxSeek: ; Function 'FsDlxSeek'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) slli r2,r1,#0x4 add r2,r2,r1 slli r2,r2,#0x2 sub r1,r2,r1 slli r1,r1,#0x2 lhi r31,((_openfiles_LF3)>>16)&0xffff addui r31,r31,(_openfiles_LF3)&0xffff add r1,r1,r31 lw r1,264(r1) lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxSeek .align 2 .proc _FsDlxClose .global _FsDlxClose _FsDlxClose: ; Function 'FsDlxClose'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxClose .align 2 .proc _FsDlxDelete .global _FsDlxDelete _FsDlxDelete: ; Function 'FsDlxDelete'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r1,r0,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsDlxDelete .align 2 .proc _FsModuleInit .global _FsModuleInit _FsModuleInit: ; Function 'FsModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lhi r31,((_openfiles_LF3)>>16)&0xffff addui r31,r31,(_openfiles_LF3)&0xffff addi r2,r31,#8308 L182_LF3: addi r3,r0,#0 sw 4(r31),r3 addi r31,r31,#268 sle r1,r31,r2 bnez r1,L182_LF3 nop; not filled. lhi r1,((_fs_LF3)>>16)&0xffff addui r1,r1,(_fs_LF3)&0xffff lhi r3,((_FsUnixOpen)>>16)&0xffff addui r3,r3,(_FsUnixOpen)&0xffff sw (r1),r3 lhi r3,((_FsUnixClose)>>16)&0xffff addui r3,r3,(_FsUnixClose)&0xffff sw 16(r1),r3 lhi r3,((_FsUnixRead)>>16)&0xffff addui r3,r3,(_FsUnixRead)&0xffff sw 4(r1),r3 lhi r3,((_FsUnixWrite)>>16)&0xffff addui r3,r3,(_FsUnixWrite)&0xffff sw 8(r1),r3 lhi r3,((_FsUnixSeek)>>16)&0xffff addui r3,r3,(_FsUnixSeek)&0xffff sw 12(r1),r3 lhi r3,((_FsUnixDelete)>>16)&0xffff addui r3,r3,(_FsUnixDelete)&0xffff sw 20(r1),r3 lhi r3,((_FsDlxOpen)>>16)&0xffff addui r3,r3,(_FsDlxOpen)&0xffff sw 24(r1),r3 lhi r3,((_FsDlxClose)>>16)&0xffff addui r3,r3,(_FsDlxClose)&0xffff sw 40(r1),r3 lhi r3,((_FsDlxRead)>>16)&0xffff addui r3,r3,(_FsDlxRead)&0xffff sw 28(r1),r3 lhi r3,((_FsDlxWrite)>>16)&0xffff addui r3,r3,(_FsDlxWrite)&0xffff sw 32(r1),r3 lhi r3,((_FsDlxSeek)>>16)&0xffff addui r3,r3,(_FsDlxSeek)&0xffff sw 36(r1),r3 lhi r3,((_FsDlxDelete)>>16)&0xffff addui r3,r3,(_FsDlxDelete)&0xffff sw 44(r1),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _FsModuleInit .data .align 2 _fs_LF3: .space 48 .align 2 _openfiles_LF3: .space 8576 ; Compiled by GCC .align 2 _rcsid_LF4: .ascii "$Id: memory.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF4 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF4 nop; not filled. L6_LF4: addi r31,r0,#1 L5_LF4: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF4 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF4 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF4 nop; not filled. L12_LF4: addi r2,r0,#1 L11_LF4: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF4 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF4: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _negativeone_LF4: .word -1 .text .align 2 .proc _MemoryGetSize .global _MemoryGetSize _MemoryGetSize: ; Function 'MemoryGetSize'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-1 addui r1,r1,#0 lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetSize .data .align 2 LC0_LF4: .ascii "Set freemap entry %d to 0x%x.\n\000" .text .align 2 .proc _MemorySetFreemap .global _MemorySetFreemap _MemorySetFreemap: ; Function 'MemorySetFreemap'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r31,4(r30) add r2,r0,r3 sgei r1,r3,#0 bnez r1,L61_LF4 nop; not filled. addi r2,r3,#31 L61_LF4: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r3,r3,r1 addi r1,r0,#1 sll r2,r1,r3 lhi r1,((_negativeone_LF4)>>16)&0xffff addui r1,r1,(_negativeone_LF4)&0xffff lw r1,(r1) xor r2,r2,r1 slli r1,r5,#0x2 lhi r6,((_freepages_LF4)>>16)&0xffff addui r6,r6,(_freepages_LF4)&0xffff add r4,r1,r6 lw r1,(r4) and r2,r1,r2 sll r1,r31,r3 or r1,r2,r1 sw (r4),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r6,r0,#109 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r6,r0,#43 sw 4(r29),r6 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF4 nop; not filled. L65_LF4: addi r29,r29,#-16 lhi r6,((LC0_LF4)>>16)&0xffff addui r6,r6,(LC0_LF4)&0xffff sw (r29),r6 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L64_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetFreemap .data .align 2 LC1_LF4: .ascii "Map has %d entries, memory size is 0x%x.\n\000" .align 2 LC2_LF4: .ascii "Free pages start with page # 0x%x.\n\000" .align 2 LC3_LF4: .ascii "Initialized %d free pages.\n\000" .text .align 2 .proc _MemoryModuleInit .global _MemoryModuleInit _MemoryModuleInit: ; Function 'MemoryModuleInit'; 0 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#48; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lhi r1,#-1 addui r1,r1,#0 lw r2,(r1) sgei r1,r2,#0 bnez r1,L68_LF4 nop; not filled. addui r2,r2,#65535 L68_LF4: srai r8,r2,#0x10 lhi r3,((_pagestart_LF4)>>16)&0xffff addui r3,r3,(_pagestart_LF4)&0xffff lhi r1,((_lastosaddress)>>16)&0xffff addui r1,r1,(_lastosaddress)&0xffff lw r1,(r1) addui r2,r1,#65532 sgei r1,r2,#0 bnez r1,L69_LF4 nop; not filled. addui r2,r2,#65535 L69_LF4: srai r1,r2,#0x10 sw (r3),r1 lhi r3,((_freemapmax_LF4)>>16)&0xffff addui r3,r3,(_freemapmax_LF4)&0xffff addi r2,r8,#31 sgei r1,r2,#0 bnez r1,L70_LF4 nop; not filled. addi r2,r8,#62 L70_LF4: srai r1,r2,#0x5 sw (r3),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L72_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L71_LF4 nop; not filled. L72_LF4: addi r29,r29,#-16 lhi r11,((LC1_LF4)>>16)&0xffff addui r11,r11,(LC1_LF4)&0xffff sw (r29),r11 lw r1,(r3) sw 4(r29),r1 sw 8(r29),r8 jal _printf nop; not filled. addi r29,r29,#16 L71_LF4: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L74_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L73_LF4 nop; not filled. L74_LF4: addi r29,r29,#-8 lhi r11,((LC2_LF4)>>16)&0xffff addui r11,r11,(LC2_LF4)&0xffff sw (r29),r11 lhi r1,((_pagestart_LF4)>>16)&0xffff addui r1,r1,(_pagestart_LF4)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L73_LF4: addi r2,r0,#0 lhi r4,((_freemapmax_LF4)>>16)&0xffff addui r4,r4,(_freemapmax_LF4)&0xffff lw r1,(r4) slt r1,r2,r1 beqz r1,L76_LF4 nop; not filled. lhi r3,((_freepages_LF4)>>16)&0xffff addui r3,r3,(_freepages_LF4)&0xffff L78_LF4: addi r11,r0,#0 sw (r3),r11 addi r3,r3,#4 addi r2,r2,#1 lw r1,(r4) slt r1,r2,r1 bnez r1,L78_LF4 nop; not filled. L76_LF4: lhi r2,((_nfreepages_LF4)>>16)&0xffff addui r2,r2,(_nfreepages_LF4)&0xffff addi r11,r0,#0 sw (r2),r11 lhi r1,((_pagestart_LF4)>>16)&0xffff addui r1,r1,(_pagestart_LF4)&0xffff lw r4,(r1) slt r1,r4,r8 beqz r1,L81_LF4 nop; not filled. add r7,r0,r2 addi r10,r0,#1 lhi r9,((_negativeone_LF4)>>16)&0xffff addui r9,r9,(_negativeone_LF4)&0xffff L83_LF4: lw r1,(r7) addi r1,r1,#1 sw (r7),r1 add r2,r0,r4 sgei r1,r4,#0 bnez r1,L85_LF4 nop; not filled. addi r2,r4,#31 L85_LF4: srai r6,r2,#0x5 slli r1,r6,#0x5 sub r1,r4,r1 sll r3,r10,r1 lw r1,(r9) xor r2,r3,r1 slli r1,r6,#0x2 lhi r11,((_freepages_LF4)>>16)&0xffff addui r11,r11,(_freepages_LF4)&0xffff add r5,r1,r11 lw r1,(r5) and r1,r1,r2 or r1,r1,r3 sw (r5),r1 addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L89_LF4 nop; not filled. addi r29,r29,#-8 lhi r11,((_debugstr)>>16)&0xffff addui r11,r11,(_debugstr)&0xffff sw (r29),r11 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L82_LF4 nop; not filled. L89_LF4: addi r29,r29,#-16 lhi r11,((LC0_LF4)>>16)&0xffff addui r11,r11,(LC0_LF4)&0xffff sw (r29),r11 sw 4(r29),r6 lw r5,(r5) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L82_LF4: addi r4,r4,#1 slt r1,r4,r8 bnez r1,L83_LF4 nop; not filled. L81_LF4: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r11,r0,#109 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L92_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r11,r0,#43 sw 4(r29),r11 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L91_LF4 nop; not filled. L92_LF4: addi r29,r29,#-8 lhi r11,((LC3_LF4)>>16)&0xffff addui r11,r11,(LC3_LF4)&0xffff sw (r29),r11 lhi r1,((_nfreepages_LF4)>>16)&0xffff addui r1,r1,(_nfreepages_LF4)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L91_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryModuleInit .data .align 2 _mapnum42_LF4: .word 0 .align 2 LC4_LF4: .ascii "ERROR AT THIS POINT\n\000" .align 2 LC5_LF4: .ascii "Allocating memory, starting with page %d\n\000" .align 2 LC6_LF4: .ascii "Allocated memory, from map %d, page %d, map=0x%x.\n\000" .text .align 2 .proc _MemoryAllocPage .global _MemoryAllocPage _MemoryAllocPage: ; Function 'MemoryAllocPage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lhi r1,((_nfreepages_LF4)>>16)&0xffff addui r1,r1,(_nfreepages_LF4)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L111_LF4 nop; not filled. addi r29,r29,#-8 lhi r7,((LC4_LF4)>>16)&0xffff addui r7,r7,(LC4_LF4)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L110_LF4 nop; not filled. L111_LF4: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L113_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L112_LF4 nop; not filled. L113_LF4: addi r29,r29,#-8 lhi r7,((LC5_LF4)>>16)&0xffff addui r7,r7,(LC5_LF4)&0xffff sw (r29),r7 lhi r1,((_mapnum42_LF4)>>16)&0xffff addui r1,r1,(_mapnum42_LF4)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L112_LF4: lhi r2,((_mapnum42_LF4)>>16)&0xffff addui r2,r2,(_mapnum42_LF4)&0xffff lw r1,(r2) lhi r4,((_freepages_LF4)>>16)&0xffff addui r4,r4,(_freepages_LF4)&0xffff slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 bnez r1,L115_LF4 nop; not filled. lhi r1,((_freemapmax_LF4)>>16)&0xffff addui r1,r1,(_freemapmax_LF4)&0xffff lw r3,(r1) L116_LF4: lw r1,(r2) addi r1,r1,#1 sw (r2),r1 sge r1,r1,r3 beqz r1,L114_LF4 nop; not filled. addi r7,r0,#0 sw (r2),r7 L114_LF4: lw r1,(r2) slli r1,r1,#0x2 add r1,r1,r4 lw r1,(r1) snei r1,r1,#0 beqz r1,L116_LF4 nop; not filled. L115_LF4: lhi r1,((_mapnum42_LF4)>>16)&0xffff addui r1,r1,(_mapnum42_LF4)&0xffff lw r1,(r1) slli r1,r1,#0x2 lhi r7,((_freepages_LF4)>>16)&0xffff addui r7,r7,(_freepages_LF4)&0xffff add r1,r1,r7 lw r3,(r1) addi r31,r0,#0 andi r1,r3,#1 bnez r1,L120_LF4 nop; not filled. addi r2,r0,#1 L121_LF4: addi r31,r31,#1 sll r1,r2,r31 and r1,r3,r1 snei r1,r1,#0 beqz r1,L121_LF4 nop; not filled. L120_LF4: addi r1,r0,#1 sll r2,r1,r31 lhi r1,((_negativeone_LF4)>>16)&0xffff addui r1,r1,(_negativeone_LF4)&0xffff lw r1,(r1) xor r4,r2,r1 lhi r5,((_mapnum42_LF4)>>16)&0xffff addui r5,r5,(_mapnum42_LF4)&0xffff lw r3,(r5) lhi r6,((_freepages_LF4)>>16)&0xffff addui r6,r6,(_freepages_LF4)&0xffff slli r1,r3,#0x2 add r2,r1,r6 lw r1,(r2) and r1,r1,r4 sw (r2),r1 slli r1,r3,#0x5 add r3,r1,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L126_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L125_LF4 nop; not filled. L126_LF4: addi r29,r29,#-16 lhi r7,((LC6_LF4)>>16)&0xffff addui r7,r7,(LC6_LF4)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 sw 8(r29),r3 slli r1,r1,#0x2 add r1,r1,r6 lw r1,(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L125_LF4: lhi r1,((_nfreepages_LF4)>>16)&0xffff addui r1,r1,(_nfreepages_LF4)&0xffff lw r2,(r1) addi r2,r2,#-1 sw (r1),r2 add r1,r0,r3 L110_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryAllocPage .data .align 2 LC7_LF4: .ascii "Freed page 0x%x, %d remaining.\n\000" .text .align 2 .proc _MemoryFreePage .global _MemoryFreePage _MemoryFreePage: ; Function 'MemoryFreePage'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r6,(r30) addi r3,r0,#1 add r2,r0,r6 sgei r1,r6,#0 bnez r1,L129_LF4 nop; not filled. addi r2,r6,#31 L129_LF4: srai r5,r2,#0x5 slli r1,r5,#0x5 sub r1,r6,r1 sll r3,r3,r1 lhi r1,((_negativeone_LF4)>>16)&0xffff addui r1,r1,(_negativeone_LF4)&0xffff lw r1,(r1) xor r2,r3,r1 slli r1,r5,#0x2 lhi r7,((_freepages_LF4)>>16)&0xffff addui r7,r7,(_freepages_LF4)&0xffff add r4,r1,r7 lw r1,(r4) and r1,r1,r2 or r1,r1,r3 sw (r4),r1 addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L133_LF4 nop; not filled. addi r29,r29,#-8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff sw (r29),r7 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128_LF4 nop; not filled. L133_LF4: addi r29,r29,#-16 lhi r7,((LC0_LF4)>>16)&0xffff addui r7,r7,(LC0_LF4)&0xffff sw (r29),r7 sw 4(r29),r5 lw r4,(r4) sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L128_LF4: lhi r2,((_nfreepages_LF4)>>16)&0xffff addui r2,r2,(_nfreepages_LF4)&0xffff lw r1,(r2) addi r1,r1,#1 sw (r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L135_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L134_LF4 nop; not filled. L135_LF4: addi r29,r29,#-16 lhi r7,((LC7_LF4)>>16)&0xffff addui r7,r7,(LC7_LF4)&0xffff sw (r29),r7 sw 4(r29),r6 lw r2,(r2) sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L134_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePage .align 2 .proc _MemoryTranslateUserToSystem .global _MemoryTranslateUserToSystem _MemoryTranslateUserToSystem: ; Function 'MemoryTranslateUserToSystem'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,4(r30) srli r31,r1,#0x10 andi r2,r1,#0xffff lw r1,160(r3) sgt r1,r31,r1 bnez r1,L139_LF4 nop; not filled. slli r1,r31,#0x2 add r1,r1,r3 lw r1,96(r1) addi r4,r0,#-8 and r1,r1,r4 add r1,r1,r2 j L140_LF4 nop; not filled. L139_LF4: addi r1,r0,#0 L140_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryTranslateUserToSystem .align 2 .proc _MemoryCopySystemToUser .global _MemoryCopySystemToUser _MemoryCopySystemToUser: ; Function 'MemoryCopySystemToUser'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,4(r30) lw r4,8(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L167_LF4 nop; not filled. lhi r8,#1 addui r8,r8,#0 L168_LF4: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,160(r7) sgt r1,r2,r1 beqz r1,L170_LF4 nop; not filled. addi r31,r0,#0 j L169_LF4 nop; not filled. L170_LF4: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L169_LF4: snei r1,r31,#0 beqz r1,L167_LF4 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L172_LF4 nop; not filled. add r2,r0,r3 L172_LF4: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r31 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L168_LF4 nop; not filled. L167_LF4: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopySystemToUser .align 2 .proc _MemoryCopyUserToSystem .global _MemoryCopyUserToSystem _MemoryCopyUserToSystem: ; Function 'MemoryCopyUserToSystem'; 0 bytes of locals, 8 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 lw r7,(r30) lw r5,8(r30) lw r4,4(r30) lw r3,12(r30) addi r6,r0,#0 sgti r1,r3,#0 beqz r1,L191_LF4 nop; not filled. lhi r8,#1 addui r8,r8,#0 L192_LF4: srli r2,r4,#0x10 andi r31,r4,#0xffff lw r1,160(r7) sgt r1,r2,r1 beqz r1,L194_LF4 nop; not filled. addi r31,r0,#0 j L193_LF4 nop; not filled. L194_LF4: slli r1,r2,#0x2 add r1,r1,r7 lw r1,96(r1) addi r9,r0,#-8 and r1,r1,r9 add r31,r1,r31 L193_LF4: snei r1,r31,#0 beqz r1,L191_LF4 nop; not filled. andi r1,r31,#65535 sub r2,r8,r1 sgt r1,r2,r3 beqz r1,L197_LF4 nop; not filled. add r2,r0,r3 L197_LF4: addi r29,r29,#-16 sw (r29),r31 sw 4(r29),r5 sw 8(r29),r2 jal _bcopy nop; not filled. addi r29,r29,#16 sub r3,r3,r2 add r6,r6,r2 add r5,r5,r2 add r4,r4,r2 sgti r1,r3,#0 bnez r1,L192_LF4 nop; not filled. L191_LF4: add r1,r0,r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryCopyUserToSystem .align 2 .proc _MemorySetupPte .global _MemorySetupPte _MemorySetupPte: ; Function 'MemorySetupPte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) slli r1,r1,#0x10 ori r1,r1,#1 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemorySetupPte .align 2 .proc _MemoryFreePte .global _MemoryFreePte _MemoryFreePte: ; Function 'MemoryFreePte'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage addi r29,r29,#-8 lhu r1,(r30) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryFreePte .align 2 .proc _MemoryPteToPage .global _MemoryPteToPage _MemoryPteToPage: ; Function 'MemoryPteToPage'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) addi r31,r0,#-8 and r1,r1,r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryPteToPage .data .align 2 _invalidOps61_LF4: .word 13316 .align 2 LC8_LF4: .ascii "Operand for instruction %08x is 0x%x (reg=<%d,0x%x>)\n\000" .text .align 2 .proc _MemoryGetOperandAddress .global _MemoryGetOperandAddress _MemoryGetOperandAddress: ; Function 'MemoryGetOperandAddress'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r5,4(r30) srli r1,r5,#0x1a addi r31,r1,#-32 sgtui r1,r31,#15 bnez r1,L214_LF4 nop; not filled. lhi r1,((_invalidOps61_LF4)>>16)&0xffff addui r1,r1,(_invalidOps61_LF4)&0xffff lw r1,(r1) srl r1,r1,r31 andi r1,r1,#1 beqz r1,L213_LF4 nop; not filled. L214_LF4: addi r1,r0,#-1 j L218_LF4 nop; not filled. L213_LF4: srli r1,r5,#0x15 andi r6,r1,#31 andi r31,r5,#0xffff srli r1,r31,#0xf beqz r1,L215_LF4 nop; not filled. lhi r7,#-1 addui r7,r7,#0 or r31,r31,r7 L215_LF4: lw r2,(r2) slli r1,r6,#0x2 add r1,r1,r2 lw r3,40(r1) add r4,r3,r31 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#109 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L217_LF4 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L216_LF4 nop; not filled. L217_LF4: addi r29,r29,#-24 lhi r7,((LC8_LF4)>>16)&0xffff addui r7,r7,(LC8_LF4)&0xffff sw (r29),r7 sw 4(r29),r5 sw 8(r29),r4 sw 12(r29),r6 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L216_LF4: add r1,r0,r4 L218_LF4: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _MemoryGetOperandAddress .data .align 2 _pagestart_LF4: .space 4 .align 2 _freemapmax_LF4: .space 4 .align 2 _nfreepages_LF4: .space 4 .align 2 _freepages_LF4: .space 8192 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF5 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF5 nop; not filled. L6_LF5: addi r31,r0,#1 L5_LF5: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF5 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF5 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF5 nop; not filled. L12_LF5: addi r2,r0,#1 L11_LF5: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _dstrcpy .global _dstrcpy _dstrcpy: ; Function 'dstrcpy'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r2,4(r30) add r3,r0,r31 L19_LF5: lb r1,(r2) sb (r31),r1 addi r2,r2,#1 addi r31,r31,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L19_LF5 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcpy .align 2 .proc _dstrncpy .global _dstrncpy _dstrncpy: ; Function 'dstrncpy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r2,(r30) lw r3,4(r30) lw r31,8(r30) add r4,r0,r2 j L37_LF5 nop; not filled. L34_LF5: lb r1,(r3) sb (r2),r1 addi r3,r3,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 beqz r1,L32_LF5 nop; not filled. L37_LF5: add r1,r0,r31 addi r31,r31,#-1 slei r1,r1,#0 beqz r1,L34_LF5 nop; not filled. L32_LF5: add r1,r0,r4 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncpy .align 2 .proc _dstrcat .global _dstrcat _dstrcat: ; Function 'dstrcat'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) add r3,r0,r31 lbu r1,(r3) snei r1,r1,#0 beqz r1,L50_LF5 nop; not filled. L51_LF5: addi r31,r31,#1 lbu r1,(r31) snei r1,r1,#0 bnez r1,L51_LF5 nop; not filled. L50_LF5: add r2,r0,r31 lw r31,4(r30) L54_LF5: lb r1,(r31) sb (r2),r1 addi r31,r31,#1 addi r2,r2,#1 andi r1,r1,#0x00ff snei r1,r1,#0 bnez r1,L54_LF5 nop; not filled. add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrcat .align 2 .proc _dstrncmp .global _dstrncmp _dstrncmp: ; Function 'dstrncmp'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r3,(r30) lw r4,4(r30) lw r5,8(r30) addi r2,r0,#0 slt r1,r2,r5 beqz r1,L73_LF5 nop; not filled. L75_LF5: lbu r31,(r4) snei r1,r31,#0 beqz r1,L86_LF5 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L73_LF5 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r5 bnez r1,L75_LF5 nop; not filled. L73_LF5: seq r1,r2,r5 beqz r1,L80_LF5 nop; not filled. L86_LF5: addi r1,r0,#0 j L84_LF5 nop; not filled. L80_LF5: lbu r31,(r3) lbu r3,(r4) sub r1,r31,r3 sgei r1,r1,#0 addi r2,r0,#-1 beqz r1,L82_LF5 nop; not filled. sne r2,r31,r3 L82_LF5: add r1,r0,r2 L84_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrncmp .align 2 .proc _dstrlen .global _dstrlen _dstrlen: ; Function 'dstrlen'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) addi r2,r0,#0 j L97_LF5 nop; not filled. L95_LF5: addi r2,r2,#1 L97_LF5: lbu r1,(r31) addi r31,r31,#1 snei r1,r1,#0 bnez r1,L95_LF5 nop; not filled. add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrlen .align 2 .proc _dstrstr .global _dstrstr _dstrstr: ; Function 'dstrstr'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r5,(r30) lw r7,4(r30) addi r3,r0,#0 lbu r1,(r7) addi r2,r7,#1 snei r1,r1,#0 beqz r1,L125_LF5 nop; not filled. L126_LF5: addi r3,r3,#1 lbu r1,(r2) addi r2,r2,#1 snei r1,r1,#0 bnez r1,L126_LF5 nop; not filled. L125_LF5: add r6,r0,r3 j L149_LF5 nop; not filled. L130_LF5: add r3,r0,r5 add r4,r0,r7 addi r2,r0,#0 slt r1,r2,r6 beqz r1,L134_LF5 nop; not filled. L136_LF5: lbu r31,(r4) snei r1,r31,#0 beqz r1,L150_LF5 nop; not filled. lbu r1,(r3) sne r1,r1,r31 bnez r1,L134_LF5 nop; not filled. addi r3,r3,#1 addi r4,r4,#1 addi r2,r2,#1 slt r1,r2,r6 bnez r1,L136_LF5 nop; not filled. L134_LF5: seq r1,r2,r6 beqz r1,L141_LF5 nop; not filled. L150_LF5: addi r1,r0,#0 j L132_LF5 nop; not filled. L141_LF5: lbu r3,(r3) lbu r2,(r4) sub r1,r3,r2 sgei r1,r1,#0 addi r31,r0,#-1 beqz r1,L143_LF5 nop; not filled. sne r31,r3,r2 L143_LF5: add r1,r0,r31 L132_LF5: snei r1,r1,#0 bnez r1,L131_LF5 nop; not filled. add r1,r0,r5 j L146_LF5 nop; not filled. L131_LF5: addi r5,r5,#1 L149_LF5: lbu r1,(r5) snei r1,r1,#0 bnez r1,L130_LF5 nop; not filled. addi r1,r0,#0 L146_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrstr .align 2 .proc _dmindex .global _dmindex _dmindex: ; Function 'dmindex'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r4,(r30) lw r6,4(r30) lbu r1,(r4) snei r1,r1,#0 beqz r1,L164_LF5 nop; not filled. add r5,r0,r1 L165_LF5: add r2,r0,r6 lb r31,(r6) andi r1,r31,#0x00ff snei r1,r1,#0 beqz r1,L163_LF5 nop; not filled. lbu r3,(r4) L169_LF5: andi r1,r31,#0x00ff seq r1,r3,r1 beqz r1,L168_LF5 nop; not filled. add r1,r0,r4 j L173_LF5 nop; not filled. L168_LF5: addi r2,r2,#1 lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L169_LF5 nop; not filled. L163_LF5: bnez r5,L165_LF5 nop; not filled. L164_LF5: addi r1,r0,#0 L173_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dmindex .align 2 .proc _dindex .global _dindex _dindex: ; Function 'dindex'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) j L187_LF5 nop; not filled. L183_LF5: andi r1,r31,#0x00ff seq r1,r1,r3 beqz r1,L184_LF5 nop; not filled. add r1,r0,r2 j L186_LF5 nop; not filled. L184_LF5: addi r2,r2,#1 L187_LF5: lb r31,(r2) andi r1,r31,#0x00ff snei r1,r1,#0 bnez r1,L183_LF5 nop; not filled. addi r1,r0,#0 L186_LF5: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dindex .align 2 .proc _ditoa .global _ditoa _ditoa: ; Function 'ditoa'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r3,(r30) lw r4,4(r30) slti r1,r3,#0 beqz r1,L203_LF5 nop; not filled. addi r6,r0,(#0x2d)&0xff j L216_LF5 nop; not filled. L203_LF5: snei r1,r3,#0 bnez r1,L205_LF5 nop; not filled. addi r6,r0,(#0x30)&0xff L216_LF5: sb (r4),r6 addi r4,r4,#1 j L204_LF5 nop; not filled. L205_LF5: addi r31,r0,#1 sle r1,r31,r3 beqz r1,L208_LF5 nop; not filled. L209_LF5: slli r1,r31,#0x2 add r1,r1,r31 slli r31,r1,#0x1 sle r1,r31,r3 bnez r1,L209_LF5 nop; not filled. L208_LF5: addi r5,r0,#10 L212_LF5: movi2fp f0,r31 movi2fp f1,r5 div f0,f0,f1 movfp2i r31,f0 movi2fp f0,r3 movi2fp f1,r31 div f0,f0,f1 movfp2i r2,f0 addi r1,r2,#48 sb (r4),r1 addi r4,r4,#1 movi2fp f0,r2 movi2fp f1,r31 mult f0,f0,f1 movfp2i r1,f0 sub r3,r3,r1 sgti r1,r31,#1 bnez r1,L212_LF5 nop; not filled. L204_LF5: addi r6,r0,(#0x0)&0xff sb (r4),r6 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ditoa .align 2 .proc _dstrtol .global _dstrtol _dstrtol: ; Function 'dstrtol'; 0 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 lw r2,(r30) lw r5,4(r30) lw r4,8(r30) addi r3,r0,#0 j L247_LF5 nop; not filled. L220_LF5: addi r2,r2,#1 L247_LF5: lb r31,(r2) andi r1,r31,#0x00ff seqi r1,r1,#32 bnez r1,L220_LF5 nop; not filled. addi r1,r31,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L220_LF5 nop; not filled. snei r1,r5,#0 beqz r1,L222_LF5 nop; not filled. sw (r5),r2 L222_LF5: lbu r31,(r2) snei r1,r31,#0 beqz r1,L248_LF5 nop; not filled. seqi r1,r31,#45 beqz r1,L224_LF5 nop; not filled. addi r6,r0,#-1 addi r2,r2,#1 j L225_LF5 nop; not filled. L224_LF5: addi r6,r0,#1 L225_LF5: snei r1,r4,#0 bnez r1,L226_LF5 nop; not filled. lbu r1,(r2) seqi r1,r1,#48 beqz r1,L227_LF5 nop; not filled. addi r2,r2,#1 lbu r31,(r2) seqi r1,r31,#120 bnez r1,L229_LF5 nop; not filled. seqi r1,r31,#88 beqz r1,L228_LF5 nop; not filled. L229_LF5: addi r4,r0,#16 addi r2,r2,#1 j L226_LF5 nop; not filled. L228_LF5: addi r4,r0,#8 j L226_LF5 nop; not filled. L227_LF5: addi r4,r0,#10 L226_LF5: addi r1,r4,#-1 sgtui r1,r1,#15 beqz r1,L233_LF5 nop; not filled. L248_LF5: add r1,r0,r3 j L245_LF5 nop; not filled. L233_LF5: lb r31,(r2) addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 beqz r1,L236_LF5 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-48 j L237_LF5 nop; not filled. L236_LF5: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L238_LF5 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-87 j L237_LF5 nop; not filled. L238_LF5: addi r1,r31,#-65 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L240_LF5 nop; not filled. andi r1,r31,#0x00ff addi r1,r1,#-55 j L237_LF5 nop; not filled. L240_LF5: addi r1,r0,#1000 L237_LF5: slt r31,r1,r4 beqz r31,L246_LF5 nop; not filled. movi2fp f0,r3 movi2fp f1,r4 mult f0,f0,f1 movfp2i r3,f0 add r3,r3,r1 addi r2,r2,#1 bnez r31,L233_LF5 nop; not filled. L246_LF5: snei r1,r5,#0 beqz r1,L244_LF5 nop; not filled. sw (r5),r2 L244_LF5: movi2fp f0,r3 movi2fp f1,r6 mult f0,f0,f1 movfp2i r1,f0 L245_LF5: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dstrtol .align 2 .proc _bcopy .global _bcopy _bcopy: ; Function 'bcopy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r2,4(r30) lw r31,8(r30) j L259_LF5 nop; not filled. L257_LF5: lb r4,(r3) sb (r2),r4 addi r3,r3,#1 addi r2,r2,#1 L259_LF5: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L257_LF5 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bcopy .align 2 .proc _bzero .global _bzero _bzero: ; Function 'bzero'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r31,4(r30) j L270_LF5 nop; not filled. L268_LF5: addi r3,r0,(#0x0)&0xff sb (r2),r3 addi r2,r2,#1 L270_LF5: add r1,r0,r31 addi r31,r31,#-1 sgti r1,r1,#0 bnez r1,L268_LF5 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _bzero ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF6 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF6 nop; not filled. L6_LF6: addi r31,r0,#1 L5_LF6: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF6 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF6 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF6 nop; not filled. L12_LF6: addi r2,r0,#1 L11_LF6: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF6 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF6: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 _processQuantum_LF6: .word 10000 .align 2 LC0_LF6: .ascii "Entering ProcessModuleInit\n\000" .align 2 LC1_LF6: .ascii "Initializing PCB %d @ 0x%x.\n\000" .align 2 LC2_LF6: .ascii "Leaving ProcessModuleInit\n\000" .text .align 2 .proc _ProcessModuleInit .global _ProcessModuleInit _ProcessModuleInit: ; Function 'ProcessModuleInit'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF6 nop; not filled. L53_LF6: addi r29,r29,#-8 lhi r8,((LC0_LF6)>>16)&0xffff addui r8,r8,(LC0_LF6)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L52_LF6: addi r29,r29,#-8 lhi r2,((_freepcbs_LF6)>>16)&0xffff addui r2,r2,(_freepcbs_LF6)&0xffff sw (r29),r2 jal _QueueInit nop; not filled. lhi r8,((_runQueue_LF6)>>16)&0xffff addui r8,r8,(_runQueue_LF6)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_waitQueue_LF6)>>16)&0xffff addui r8,r8,(_waitQueue_LF6)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. lhi r8,((_zombieQueue_LF6)>>16)&0xffff addui r8,r8,(_zombieQueue_LF6)&0xffff sw (r29),r8 jal _QueueInit nop; not filled. addi r4,r0,#0 addi r29,r29,#8 lhi r7,((_debugstr)>>16)&0xffff addui r7,r7,(_debugstr)&0xffff lhi r1,((_pcbs_LF6)>>16)&0xffff addui r1,r1,(_pcbs_LF6)&0xffff add r5,r0,r2 addi r2,r1,#164 add r3,r0,r1 add r6,r0,r3 L57_LF6: addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L59_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r7 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L58_LF6 nop; not filled. L59_LF6: addi r29,r29,#-16 lhi r8,((LC1_LF6)>>16)&0xffff addui r8,r8,(LC1_LF6)&0xffff sw (r29),r8 sw 4(r29),r4 sw 8(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L58_LF6: addi r8,r0,#1 sw 12(r3),r8 addi r8,r0,#0 sw (r2),r8 sw 12(r2),r3 sw 8(r2),r5 sw 4(r2),r5 lw r8,(r5) sw (r2),r8 sw (r5),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 addi r2,r2,#180 addi r3,r3,#180 addi r6,r6,#180 addi r4,r4,#1 slei r1,r4,#31 bnez r1,L57_LF6 nop; not filled. lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff addi r8,r0,#0 sw (r1),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF6 nop; not filled. L65_LF6: addi r29,r29,#-8 lhi r8,((LC2_LF6)>>16)&0xffff addui r8,r8,(LC2_LF6)&0xffff sw (r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L64_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessModuleInit .align 2 .proc _ProcessSetStatus .global _ProcessSetStatus _ProcessSetStatus: ; Function 'ProcessSetStatus'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,12(r3) addi r31,r0,#-64 and r1,r1,r31 or r1,r1,r2 sw 12(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetStatus .align 2 .proc _ProcessFreeResources .global _ProcessFreeResources _ProcessFreeResources: ; Function 'ProcessFreeResources'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((_freepcbs_LF6)>>16)&0xffff addui r3,r3,(_freepcbs_LF6)&0xffff addi r2,r4,#164 lw r1,4(r3) sw 172(r4),r3 sw 168(r4),r1 lw r5,(r1) sw (r2),r5 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r3,160(r4) addi r2,r0,#0 slt r1,r2,r3 beqz r1,L98_LF6 nop; not filled. L90_LF6: addi r29,r29,#-8 sw (r29),r4 sw 4(r29),r2 jal _MemoryFreeSharedPte nop; not filled. addi r29,r29,#8 addi r2,r2,#1 slt r1,r2,r3 bnez r1,L90_LF6 nop; not filled. addi r2,r0,#0 L98_LF6: lw r1,160(r4) slt r1,r2,r1 beqz r1,L93_LF6 nop; not filled. add r3,r0,r4 L95_LF6: addi r29,r29,#-8 lw r5,96(r3) sw (r29),r5 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,160(r4) slt r1,r2,r1 bnez r1,L95_LF6 nop; not filled. L93_LF6: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r5,r0,#-64 and r1,r1,r5 ori r1,r1,#1 sw 12(r4),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFreeResources .align 2 .proc _ProcessSetResult .global _ProcessSetResult _ProcessSetResult: ; Function 'ProcessSetResult'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,4(r30) sw 44(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSetResult .data .align 2 LC3_LF6: .ascii "Now entering ProcessSchedule (cur=0x%x, %d ready)\n\000" .align 2 LC4_LF6: .ascii "No runnable processes - exiting!\n\000" .align 2 LC5_LF6: .ascii "About to switch to PCB 0x%x,flags=0x%x @ 0x%x\n\000" .align 2 LC6_LF6: .ascii "Freeing zombie PCB 0x%x.\n\000" .align 2 LC7_LF6: .ascii "Leaving ProcessSchedule (cur=0x%x)\n\000" .text .align 2 .proc _ProcessSchedule .global _ProcessSchedule _ProcessSchedule: ; Function 'ProcessSchedule'; 0 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#40; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L103_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L102_LF6 nop; not filled. L103_LF6: lhi r1,((_runQueue_LF6)>>16)&0xffff addui r1,r1,(_runQueue_LF6)&0xffff lw r2,8(r1) addi r29,r29,#-16 lhi r8,((LC3_LF6)>>16)&0xffff addui r8,r8,(LC3_LF6)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 L102_LF6: lhi r5,((_runQueue_LF6)>>16)&0xffff addui r5,r5,(_runQueue_LF6)&0xffff lw r1,8(r5) seqi r1,r1,#0 beqz r1,L105_LF6 nop; not filled. addi r29,r29,#-8 lhi r8,((LC4_LF6)>>16)&0xffff addui r8,r8,(LC4_LF6)&0xffff sw (r29),r8 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L105_LF6: lw r1,(r5) lw r4,12(r1) addi r3,r4,#164 lw r1,172(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L110_LF6 nop; not filled. lw r1,168(r4) lw r8,(r3) sw (r1),r8 lw r1,(r3) lw r8,168(r4) sw 4(r1),r8 lw r2,172(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L110_LF6: addi r8,r0,#0 sw (r3),r8 lw r1,4(r5) sw 172(r4),r5 sw 168(r4),r1 lw r8,(r1) sw (r3),r8 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 lw r1,(r5) lw r4,12(r1) lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r4 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L116_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L115_LF6 nop; not filled. L116_LF6: addi r29,r29,#-16 lhi r8,((LC5_LF6)>>16)&0xffff addui r8,r8,(LC5_LF6)&0xffff sw (r29),r8 sw 4(r29),r4 lw r8,12(r4) sw 8(r29),r8 lw r1,4(r4) lw r1,296(r1) sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L115_LF6: lhi r7,((_zombieQueue_LF6)>>16)&0xffff addui r7,r7,(_zombieQueue_LF6)&0xffff lhi r6,((_debugstr)>>16)&0xffff addui r6,r6,(_debugstr)&0xffff lhi r5,((_freepcbs_LF6)>>16)&0xffff addui r5,r5,(_freepcbs_LF6)&0xffff L117_LF6: lw r1,8(r7) seqi r1,r1,#0 bnez r1,L118_LF6 nop; not filled. lw r1,(r7) lw r4,12(r1) addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L124_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r6 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L123_LF6 nop; not filled. L124_LF6: addi r29,r29,#-8 lhi r8,((LC6_LF6)>>16)&0xffff addui r8,r8,(LC6_LF6)&0xffff sw (r29),r8 sw 4(r29),r4 jal _printf nop; not filled. addi r29,r29,#8 L123_LF6: addi r31,r4,#164 lw r1,172(r4) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L126_LF6 nop; not filled. lw r1,168(r4) lw r8,(r31) sw (r1),r8 lw r1,(r31) lw r8,168(r4) sw 4(r1),r8 lw r2,172(r4) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L126_LF6: addi r8,r0,#0 sw (r31),r8 lw r1,4(r5) sw 172(r4),r5 sw 168(r4),r1 lw r8,(r1) sw (r31),r8 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r5) addi r1,r1,#1 sw 8(r5),r1 lw r3,160(r4) addi r2,r0,#0 slt r1,r2,r3 beqz r1,L144_LF6 nop; not filled. L134_LF6: addi r29,r29,#-8 sw (r29),r4 sw 4(r29),r2 jal _MemoryFreeSharedPte nop; not filled. addi r29,r29,#8 addi r2,r2,#1 slt r1,r2,r3 bnez r1,L134_LF6 nop; not filled. addi r2,r0,#0 L144_LF6: lw r1,160(r4) slt r1,r2,r1 beqz r1,L137_LF6 nop; not filled. add r3,r0,r4 L139_LF6: addi r29,r29,#-8 lw r8,96(r3) sw (r29),r8 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,160(r4) slt r1,r2,r1 bnez r1,L139_LF6 nop; not filled. L137_LF6: addi r29,r29,#-8 lhu r1,8(r4) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r4) addi r8,r0,#-64 and r1,r1,r8 ori r1,r1,#1 sw 12(r4),r1 j L117_LF6 nop; not filled. L118_LF6: addi r29,r29,#-8 lhi r1,((_processQuantum_LF6)>>16)&0xffff addui r1,r1,(_processQuantum_LF6)&0xffff lw r1,(r1) sw (r29),r1 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r8,r0,#112 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L143_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r8,r0,#43 sw 4(r29),r8 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L142_LF6 nop; not filled. L143_LF6: addi r29,r29,#-8 lhi r8,((LC7_LF6)>>16)&0xffff addui r8,r8,(LC7_LF6)&0xffff sw (r29),r8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L142_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSchedule .data .align 2 LC8_LF6: .ascii "Suspending PCB 0x%x (%s).\n\000" .align 2 LC9_LF6: .ascii "%s: %s\n\000" .align 2 LC10_LF6: .ascii "ProcessSuspend\000" .align 2 LC11_LF6: .ascii "Trying to suspend a non-running process!\n\000" .text .align 2 .proc _ProcessSuspend .global _ProcessSuspend _ProcessSuspend: ; Function 'ProcessSuspend'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L147_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L146_LF6 nop; not filled. L147_LF6: addi r29,r29,#-16 lhi r4,((LC8_LF6)>>16)&0xffff addui r4,r4,(LC8_LF6)&0xffff sw (r29),r4 sw 4(r29),r3 addi r1,r3,#16 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L146_LF6: lb r4,15(r3) srli r1,r4,#0x1 andi r1,r1,#1 bnez r1,L149_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF6)>>16)&0xffff addui r4,r4,(LC9_LF6)&0xffff sw (r29),r4 lhi r1,((LC10_LF6)>>16)&0xffff addui r1,r1,(LC10_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC11_LF6)>>16)&0xffff addui r4,r4,(LC11_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L149_LF6: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#4 sw 12(r3),r1 addi r31,r3,#164 lw r1,172(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L152_LF6 nop; not filled. lw r1,168(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,168(r3) sw 4(r1),r4 lw r2,172(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L152_LF6: addi r4,r0,#0 sw (r31),r4 lhi r2,((_waitQueue_LF6)>>16)&0xffff addui r2,r2,(_waitQueue_LF6)&0xffff lw r1,4(r2) sw 172(r3),r2 sw 168(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessSuspend .data .align 2 LC12_LF6: .ascii "Waking up PCB 0x%x.\n\000" .align 2 LC13_LF6: .ascii "ProcessWakeup\000" .align 2 LC14_LF6: .ascii "Trying to wake up a non-sleeping process!\n\000" .text .align 2 .proc _ProcessWakeup .global _ProcessWakeup _ProcessWakeup: ; Function 'ProcessWakeup'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L158_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L157_LF6 nop; not filled. L158_LF6: addi r29,r29,#-8 lhi r4,((LC12_LF6)>>16)&0xffff addui r4,r4,(LC12_LF6)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L157_LF6: lb r4,15(r3) srli r1,r4,#0x2 andi r1,r1,#1 bnez r1,L160_LF6 nop; not filled. addi r29,r29,#-16 lhi r4,((LC9_LF6)>>16)&0xffff addui r4,r4,(LC9_LF6)&0xffff sw (r29),r4 lhi r1,((LC13_LF6)>>16)&0xffff addui r1,r1,(LC13_LF6)&0xffff sw 4(r29),r1 lhi r4,((LC14_LF6)>>16)&0xffff addui r4,r4,(LC14_LF6)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L160_LF6: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#2 sw 12(r3),r1 addi r31,r3,#164 lw r1,172(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L163_LF6 nop; not filled. lw r1,168(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,168(r3) sw 4(r1),r4 lw r2,172(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L163_LF6: addi r4,r0,#0 sw (r31),r4 lhi r2,((_runQueue_LF6)>>16)&0xffff addui r2,r2,(_runQueue_LF6)&0xffff lw r1,4(r2) sw 172(r3),r2 sw 168(r3),r1 lw r4,(r1) sw (r31),r4 sw (r1),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessWakeup .data .align 2 LC15_LF6: .ascii "Entering ProcessDestroy for 0x%x.\n\000" .align 2 LC16_LF6: .ascii "Leaving ProcessDestroy for 0x%x.\n\000" .text .align 2 .proc _ProcessDestroy .global _ProcessDestroy _ProcessDestroy: ; Function 'ProcessDestroy'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L169_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L168_LF6 nop; not filled. L169_LF6: addi r29,r29,#-8 lhi r4,((LC15_LF6)>>16)&0xffff addui r4,r4,(LC15_LF6)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L168_LF6: lw r1,12(r3) addi r4,r0,#-64 and r1,r1,r4 ori r1,r1,#16 sw 12(r3),r1 addi r31,r3,#164 lw r1,172(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L172_LF6 nop; not filled. lw r1,168(r3) lw r4,(r31) sw (r1),r4 lw r1,(r31) lw r4,168(r3) sw 4(r1),r4 lw r2,172(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L172_LF6: addi r4,r0,#0 sw (r31),r4 lhi r2,((_zombieQueue_LF6)>>16)&0xffff addui r2,r2,(_zombieQueue_LF6)&0xffff sw 172(r3),r2 sw 168(r3),r2 lw r4,(r2) sw (r31),r4 sw (r2),r31 lw r1,(r31) sw 4(r1),r31 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r4,r0,#112 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L176_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#43 sw 4(r29),r4 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L175_LF6 nop; not filled. L176_LF6: addi r29,r29,#-8 lhi r4,((LC16_LF6)>>16)&0xffff addui r4,r4,(LC16_LF6)&0xffff sw (r29),r4 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L175_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessDestroy .data .align 2 LC17_LF6: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC18_LF6: .ascii "Entering ProcessFork args=0x%x 0x%x %s %d\n\000" .align 2 LC19_LF6: .ascii "FATAL error: no free processes!\n\000" .align 2 LC20_LF6: .ascii "Got a link @ 0x%x\n\000" .align 2 LC21_LF6: .ascii "Before restore interrupt value is 0x%x.\n\000" .align 2 LC22_LF6: .ascii "New interrupt value is 0x%x.\n\000" .align 2 LC23_LF6: .ascii "aFATAL: couldn\'t allocate memory - no free pages!\n\000" .align 2 LC24_LF6: .ascii "bFATAL: couldn\'t allocate system stack - no free pages!\n\000" .align 2 LC25_LF6: .ascii "Setting up PCB @ 0x%x (sys stack=0x%x, mem=0x%x, size=0x%x)\n\000" .align 2 LC26_LF6: .ascii "About to load %s\n\000" .align 2 LC27_LF6: .ascii "File %s -> start=0x%08x\n\000" .align 2 LC28_LF6: .ascii "File %s -> code @ 0x%08x (size=0x%08x)\n\000" .align 2 LC29_LF6: .ascii "File %s -> data @ 0x%08x (size=0x%08x)\n\000" .align 2 LC30_LF6: .ascii "Placing %d bytes at vaddr %08x.\n\000" .align 2 LC31_LF6: .ascii "Setting currentPCB=0x%x, stackframe=0x%x\n\000" .align 2 LC32_LF6: .ascii "Leaving ProcessFork (%s)\n\000" .text .align 2 .proc _ProcessFork .global _ProcessFork _ProcessFork: ; Function 'ProcessFork'; 672 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#728; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r7,(r30) lw r11,4(r30) lw r10,8(r30) lw r4,12(r30) addi r12,r0,#0 sw -680(r30),r12 addi r29,r29,#-8 addi r12,r0,#15 sw (r29),r12 jal _SetIntrs nop; not filled. add r3,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#73 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L181_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L180_LF6 nop; not filled. L181_LF6: addi r29,r29,#-8 lhi r12,((LC17_LF6)>>16)&0xffff addui r12,r12,(LC17_LF6)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L180_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L183_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L182_LF6 nop; not filled. L183_LF6: addi r29,r29,#-24 lhi r12,((LC18_LF6)>>16)&0xffff addui r12,r12,(LC18_LF6)&0xffff sw (r29),r12 sw 4(r29),r7 sw 8(r29),r11 sw 12(r29),r10 sw 16(r29),r4 jal _printf nop; not filled. addi r29,r29,#24 L182_LF6: lhi r2,((_freepcbs_LF6)>>16)&0xffff addui r2,r2,(_freepcbs_LF6)&0xffff lw r1,8(r2) seqi r1,r1,#0 beqz r1,L184_LF6 nop; not filled. addi r29,r29,#-8 lhi r12,((LC19_LF6)>>16)&0xffff addui r12,r12,(LC19_LF6)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L184_LF6: lw r8,(r2) addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L189_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L188_LF6 nop; not filled. L189_LF6: addi r29,r29,#-8 lhi r12,((LC20_LF6)>>16)&0xffff addui r12,r12,(LC20_LF6)&0xffff sw (r29),r12 sw 4(r29),r8 jal _printf nop; not filled. addi r29,r29,#8 L188_LF6: lw r1,8(r8) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L191_LF6 nop; not filled. lw r1,4(r8) lw r12,(r8) sw (r1),r12 lw r1,(r8) lw r12,4(r8) sw 4(r1),r12 lw r2,8(r8) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L191_LF6: addi r12,r0,#0 sw (r8),r12 lw r5,12(r8) lw r1,12(r5) addi r12,r0,#-64 and r1,r1,r12 ori r1,r1,#2 sw 12(r5),r1 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#73 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L194_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L193_LF6 nop; not filled. L194_LF6: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r12,((LC21_LF6)>>16)&0xffff addui r12,r12,(LC21_LF6)&0xffff sw (r29),r12 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L193_LF6: addi r29,r29,#-8 sw (r29),r3 jal _SetIntrs nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#73 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L197_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L196_LF6 nop; not filled. L197_LF6: jal _CurrentIntrs nop; not filled. addi r29,r29,#-8 lhi r12,((LC22_LF6)>>16)&0xffff addui r12,r12,(LC22_LF6)&0xffff sw (r29),r12 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L196_LF6: addi r29,r29,#-8 addi r1,r5,#16 sw (r29),r1 sw 4(r29),r10 jal _dstrcpy nop; not filled. addi r12,r0,#1 sw 160(r5),r12 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L198_LF6 nop; not filled. addi r29,r29,#-8 lhi r12,((LC23_LF6)>>16)&0xffff addui r12,r12,(LC23_LF6)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L198_LF6: addi r29,r29,#-8 sw (r29),r2 jal _MemorySetupPte nop; not filled. sw 96(r5),r1 jal _MemoryAllocPage nop; not filled. add r2,r0,r1 addi r29,r29,#8 snei r1,r2,#0 bnez r1,L199_LF6 nop; not filled. addi r29,r29,#-8 lhi r12,((LC24_LF6)>>16)&0xffff addui r12,r12,(LC24_LF6)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L199_LF6: slli r1,r2,#0x10 sw 8(r5),r1 ori r6,r1,#65164 sw 4(r5),r6 sw (r5),r6 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L201_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L200_LF6 nop; not filled. L201_LF6: addi r29,r29,#-24 lhi r12,((LC25_LF6)>>16)&0xffff addui r12,r12,(LC25_LF6)&0xffff sw (r29),r12 sw 4(r29),r5 lw r12,8(r5) sw 8(r29),r12 lw r12,96(r5) sw 12(r29),r12 lw r1,160(r5) slli r1,r1,#0x10 sw 16(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 L200_LF6: addi r12,r0,#0 sw 40(r6),r12 addi r1,r5,#96 sw 312(r6),r1 lw r12,160(r5) sw 316(r6),r12 lhi r1,#16 addui r1,r1,#16 sw 320(r6),r1 snei r1,r4,#0 beqz r1,L202_LF6 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L204_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L203_LF6 nop; not filled. L204_LF6: addi r29,r29,#-8 lhi r12,((LC26_LF6)>>16)&0xffff addui r12,r12,(LC26_LF6)&0xffff sw (r29),r12 sw 4(r29),r10 jal _printf nop; not filled. addi r29,r29,#8 L203_LF6: addi r29,r29,#-24 sw (r29),r10 addi r1,r30,#-660 sw 4(r29),r1 addi r1,r30,#-664 sw 8(r29),r1 addi r1,r30,#-668 sw 12(r29),r1 addi r1,r30,#-672 sw 16(r29),r1 addi r1,r30,#-676 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r7,r0,r1 addi r29,r29,#24 slti r1,r7,#0 beqz r1,L205_LF6 nop; not filled. lhi r3,((_freepcbs_LF6)>>16)&0xffff addui r3,r3,(_freepcbs_LF6)&0xffff addi r2,r5,#164 lw r1,4(r3) sw 172(r5),r3 sw 168(r5),r1 lw r12,(r1) sw (r2),r12 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r3,160(r5) addi r2,r0,#0 slt r1,r2,r3 beqz r1,L248_LF6 nop; not filled. L213_LF6: addi r29,r29,#-8 sw (r29),r5 sw 4(r29),r2 jal _MemoryFreeSharedPte nop; not filled. addi r29,r29,#8 addi r2,r2,#1 slt r1,r2,r3 bnez r1,L213_LF6 nop; not filled. addi r2,r0,#0 L248_LF6: lw r1,160(r5) slt r1,r2,r1 beqz r1,L216_LF6 nop; not filled. add r3,r0,r5 L218_LF6: addi r29,r29,#-8 lw r12,96(r3) sw (r29),r12 jal _MemoryFreePte nop; not filled. addi r29,r29,#8 addi r3,r3,#4 addi r2,r2,#1 lw r1,160(r5) slt r1,r2,r1 bnez r1,L218_LF6 nop; not filled. L216_LF6: addi r29,r29,#-8 lhu r1,8(r5) sw (r29),r1 jal _MemoryFreePage nop; not filled. addi r29,r29,#8 lw r1,12(r5) addi r12,r0,#-64 and r1,r1,r12 ori r1,r1,#1 sw 12(r5),r1 addi r1,r0,#-1 j L247_LF6 nop; not filled. L205_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L222_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L221_LF6 nop; not filled. L222_LF6: addi r29,r29,#-16 lhi r12,((LC27_LF6)>>16)&0xffff addui r12,r12,(LC27_LF6)&0xffff sw (r29),r12 sw 4(r29),r10 lw r12,-660(r30) sw 8(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 L221_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L224_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L223_LF6 nop; not filled. L224_LF6: addi r29,r29,#-16 lhi r12,((LC28_LF6)>>16)&0xffff addui r12,r12,(LC28_LF6)&0xffff sw (r29),r12 sw 4(r29),r10 lw r12,-664(r30) sw 8(r29),r12 lw r12,-668(r30) sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 L223_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L226_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L225_LF6 nop; not filled. L226_LF6: addi r29,r29,#-16 lhi r12,((LC29_LF6)>>16)&0xffff addui r12,r12,(LC29_LF6)&0xffff sw (r29),r12 sw 4(r29),r10 lw r12,-672(r30) sw 8(r29),r12 lw r12,-676(r30) sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 L225_LF6: addi r3,r30,#-112 addi r9,r30,#-680 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff L227_LF6: addi r29,r29,#-16 sw (r29),r7 sw 4(r29),r3 sw 8(r29),r9 addi r12,r0,#100 sw 12(r29),r12 jal _ProcessGetFromFile nop; not filled. add r2,r0,r1 addi r29,r29,#16 sgti r1,r2,#0 beqz r1,L228_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L231_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L230_LF6 nop; not filled. L231_LF6: addi r29,r29,#-16 lhi r12,((LC30_LF6)>>16)&0xffff addui r12,r12,(LC30_LF6)&0xffff sw (r29),r12 sw 4(r29),r2 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 L230_LF6: addi r29,r29,#-16 sw (r29),r5 sw 4(r29),r3 lw r1,-680(r30) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. addi r29,r29,#16 j L227_LF6 nop; not filled. L228_LF6: addi r29,r29,#-8 sw (r29),r7 jal _FsClose nop; not filled. addi r12,r0,#256 sw 300(r6),r12 addui r2,r0,#64512 sw 156(r6),r2 addi r29,r29,#-8 sw (r29),r5 sw 4(r29),r11 lw r12,156(r6) sw 8(r29),r12 addi r12,r0,#992 sw 12(r29),r12 jal _MemoryCopySystemToUser nop; not filled. sw (r29),r11 jal _get_argument nop; not filled. add r1,r1,r2 sw -648(r30),r1 addi r4,r0,#3 addi r29,r29,#16 add r7,r0,r2 addi r2,r30,#4 L232_LF6: addi r29,r29,#-8 addi r12,r0,#0 sw (r29),r12 jal _get_argument nop; not filled. add r3,r0,r1 add r1,r3,r7 sw -648(r2),r1 addi r29,r29,#8 snei r1,r3,#0 beqz r1,L233_LF6 nop; not filled. addi r2,r2,#4 addi r4,r4,#1 j L232_LF6 nop; not filled. L233_LF6: addi r1,r4,#-2 sw -656(r30),r1 slli r1,r1,#0x2 sub r1,r7,r1 sw -652(r30),r1 addi r29,r29,#-16 sw (r29),r5 addi r1,r30,#-656 sw 4(r29),r1 slli r2,r4,#0x2 lw r1,156(r6) sub r1,r1,r2 sw 8(r29),r1 sw 12(r29),r2 jal _MemoryCopySystemToUser nop; not filled. lw r1,156(r6) sub r1,r1,r2 sw 156(r6),r1 lw r12,-660(r30) sw 296(r6),r12 lw r1,12(r5) ori r1,r1,#512 sw 12(r5),r1 addi r29,r29,#16 j L236_LF6 nop; not filled. L202_LF6: lhi r12,((_ProcessExit_LF6)>>16)&0xffff addui r12,r12,(_ProcessExit_LF6)&0xffff sw 164(r6),r12 lw r1,8(r5) addui r1,r1,#65504 sw 156(r6),r1 sw (r1),r11 sw 296(r6),r7 addi r12,r0,#320 sw 300(r6),r12 lw r1,12(r5) ori r1,r1,#256 sw 12(r5),r1 L236_LF6: addi r29,r29,#-8 addi r12,r0,#15 sw (r29),r12 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r3,((_runQueue_LF6)>>16)&0xffff addui r3,r3,(_runQueue_LF6)&0xffff lw r2,4(r3) sw 8(r8),r3 sw 4(r8),r2 lw r12,(r2) sw (r8),r12 sw (r2),r8 lw r2,(r8) sw 4(r2),r8 lw r2,8(r3) addi r2,r2,#1 sw 8(r3),r2 addi r29,r29,#-8 sw (r29),r1 jal _SetIntrs nop; not filled. addi r29,r29,#8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) snei r1,r1,#0 bnez r1,L242_LF6 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L244_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L243_LF6 nop; not filled. L244_LF6: addi r29,r29,#-16 lhi r12,((LC31_LF6)>>16)&0xffff addui r12,r12,(LC31_LF6)&0xffff sw (r29),r12 sw 4(r29),r5 lw r12,(r5) sw 8(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 L243_LF6: lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff sw (r1),r5 L242_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#112 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L246_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L245_LF6 nop; not filled. L246_LF6: addi r29,r29,#-8 lhi r12,((LC32_LF6)>>16)&0xffff addui r12,r12,(LC32_LF6)&0xffff sw (r29),r12 sw 4(r29),r10 jal _printf nop; not filled. addi r29,r29,#8 L245_LF6: lhi r12,((_pcbs_LF6)>>16)&0xffff addui r12,r12,(_pcbs_LF6)&0xffff sub r2,r5,r12 lhi r1,#-23302 addui r1,r1,#20389 movi2fp f0,r2 movi2fp f1,r1 mult f0,f0,f1 movfp2i r1,f0 srai r1,r1,#0x2 L247_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessFork .data .align 2 LC33_LF6: .ascii "ProcessGetCodeInfo: open of %s failed (%d).\n\000" .align 2 LC34_LF6: .ascii "File descriptor is now %d.\n\000" .align 2 LC35_LF6: .ascii "ProcessGetCodeInfo: read got %d (not %d) bytes from %s\n\000" .align 2 LC36_LF6: .ascii "start:\000" .align 2 LC37_LF6: .ascii "ProcessGetCodeInfo: %s missing start line (not a DLX executable?)\n\000" .text .align 2 .proc _ProcessGetCodeInfo .global _ProcessGetCodeInfo _ProcessGetCodeInfo: ; Function 'ProcessGetCodeInfo'; 112 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#168; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r6,(r30) lw r7,4(r30) lw r8,8(r30) lw r9,12(r30) lw r10,16(r30) lw r11,20(r30) addi r29,r29,#-8 sw (r29),r6 addi r12,r0,#1 sw 4(r29),r12 jal _FsOpen nop; not filled. add r3,r0,r1 addi r29,r29,#8 slti r1,r3,#0 beqz r1,L257_LF6 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L259_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266_LF6 nop; not filled. L259_LF6: addi r29,r29,#-16 lhi r12,((LC33_LF6)>>16)&0xffff addui r12,r12,(LC33_LF6)&0xffff sw (r29),r12 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 j L266_LF6 nop; not filled. L257_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L261_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L260_LF6 nop; not filled. L261_LF6: addi r29,r29,#-8 lhi r12,((LC34_LF6)>>16)&0xffff addui r12,r12,(LC34_LF6)&0xffff sw (r29),r12 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L260_LF6: addi r29,r29,#-16 sw (r29),r3 addi r4,r30,#-112 sw 4(r29),r4 addi r12,r0,#100 sw 8(r29),r12 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 snei r1,r5,#100 beqz r1,L262_LF6 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L264_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L263_LF6 nop; not filled. L264_LF6: addi r29,r29,#-16 lhi r12,((LC35_LF6)>>16)&0xffff addui r12,r12,(LC35_LF6)&0xffff sw (r29),r12 sw 4(r29),r5 addi r12,r0,#100 sw 8(r29),r12 sw 12(r29),r6 jal _printf nop; not filled. addi r29,r29,#16 L263_LF6: addi r29,r29,#-8 sw (r29),r3 jal _FsClose nop; not filled. addi r1,r0,#-1 addi r29,r29,#8 j L256_LF6 nop; not filled. L262_LF6: addi r29,r29,#-8 sw (r29),r4 lhi r1,((LC36_LF6)>>16)&0xffff addui r1,r1,(LC36_LF6)&0xffff sw 4(r29),r1 jal _dstrstr nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L265_LF6 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L267_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L266_LF6 nop; not filled. L267_LF6: addi r29,r29,#-8 lhi r12,((LC37_LF6)>>16)&0xffff addui r12,r12,(LC37_LF6)&0xffff sw (r29),r12 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L266_LF6: addi r1,r0,#-1 j L256_LF6 nop; not filled. L265_LF6: addi r29,r29,#-8 sw (r29),r4 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r1,r1,#1 sw -116(r30),r1 addi r29,r29,#-8 sw (r29),r1 addi r2,r30,#-116 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r8),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r9),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r10),r1 lw r12,-116(r30) sw (r29),r12 sw 4(r29),r2 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r11),r1 sw (r29),r4 addi r12,r0,#10 sw 4(r29),r12 jal _dindex nop; not filled. addi r2,r30,#-113 sub r1,r1,r2 sw (r29),r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. add r1,r0,r3 addi r29,r29,#16 L256_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetCodeInfo .data .align 2 LC38_LF6: .ascii "Got %d bytes at offset %d ...\000" .align 2 LC39_LF6: .ascii " terminated at %d.\n\000" .align 2 LC40_LF6: .ascii "Buffer is \'%s\'\n\000" .align 2 LC41_LF6: .ascii "New address is 0x%x.\n\000" .align 2 LC42_LF6: .ascii "Seeking to %d and returning %d bytes!\n\000" .text .align 2 .proc _ProcessGetFromFile .global _ProcessGetFromFile _ProcessGetFromFile: ; Function 'ProcessGetFromFile'; 216 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#272; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r10,(r30) lw r7,8(r30) lw r2,12(r30) lw r11,4(r30) addi r3,r30,#-216 sw -220(r30),r3 addi r29,r29,#-16 sw (r29),r10 addi r12,r0,#0 sw 4(r29),r12 addi r12,r0,#1 sw 8(r29),r12 jal _FsSeek nop; not filled. add r9,r0,r1 slli r2,r2,#0x1 addi r29,r29,#16 sgtui r1,r2,#200 beqz r1,L270_LF6 nop; not filled. addi r2,r0,#200 L270_LF6: addi r29,r29,#-16 sw (r29),r10 sw 4(r29),r3 sw 8(r29),r2 jal _FsRead nop; not filled. add r5,r0,r1 addi r29,r29,#16 slei r1,r5,#0 beqz r1,L271_LF6 nop; not filled. addi r1,r0,#0 j L325_LF6 nop; not filled. L271_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L273_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L272_LF6 nop; not filled. L273_LF6: addi r29,r29,#-16 lhi r12,((LC38_LF6)>>16)&0xffff addui r12,r12,(LC38_LF6)&0xffff sw (r29),r12 sw 4(r29),r5 sw 8(r29),r9 jal _printf nop; not filled. addi r29,r29,#16 L272_LF6: addi r5,r5,#-1 addi r1,r30,#-216 add r2,r1,r5 j L328_LF6 nop; not filled. L274_LF6: addi r2,r2,#-1 addi r5,r5,#-1 L328_LF6: lbu r1,(r2) snei r1,r1,#10 bnez r1,L274_LF6 nop; not filled. addi r1,r30,#-215 add r1,r1,r5 addi r12,r0,(#0x5a)&0xff sb (r1),r12 addi r1,r30,#-214 add r1,r1,r5 addi r12,r0,(#0x0)&0xff sb (r1),r12 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L279_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L278_LF6 nop; not filled. L279_LF6: addi r29,r29,#-8 lhi r12,((LC39_LF6)>>16)&0xffff addui r12,r12,(LC39_LF6)&0xffff sw (r29),r12 sw 4(r29),r5 jal _printf nop; not filled. addi r29,r29,#8 L278_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L281_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L280_LF6 nop; not filled. L281_LF6: addi r29,r29,#-8 lhi r12,((LC40_LF6)>>16)&0xffff addui r12,r12,(LC40_LF6)&0xffff sw (r29),r12 addi r1,r30,#-216 sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L280_LF6: addi r5,r0,#0 lhi r8,((_debugstr)>>16)&0xffff addui r8,r8,(_debugstr)&0xffff L282_LF6: addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#90 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L283_LF6 nop; not filled. addi r29,r29,#-8 lw r12,-220(r30) sw (r29),r12 addi r12,r0,#58 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L283_LF6 nop; not filled. lw r2,-220(r30) lbu r1,(r2) snei r1,r1,#58 beqz r1,L327_LF6 nop; not filled. sgti r1,r5,#0 bnez r1,L283_LF6 nop; not filled. addi r29,r29,#-16 sw (r29),r2 addi r1,r30,#-220 sw 4(r29),r1 addi r12,r0,#16 sw 8(r29),r12 jal _dstrtol nop; not filled. sw (r7),r1 sw (r29),r8 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L289_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r8 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L286_LF6 nop; not filled. L289_LF6: addi r29,r29,#-8 lhi r12,((LC41_LF6)>>16)&0xffff addui r12,r12,(LC41_LF6)&0xffff sw (r29),r12 lw r1,(r7) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L286_LF6: lw r1,-220(r30) lbu r1,(r1) snei r1,r1,#58 bnez r1,L283_LF6 nop; not filled. L327_LF6: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 add r6,r5,r11 L293_LF6: lw r1,-220(r30) j L329_LF6 nop; not filled. L296_LF6: lw r1,-220(r30) addi r1,r1,#1 sw -220(r30),r1 L329_LF6: lbu r31,(r1) seqi r1,r31,#32 bnez r1,L296_LF6 nop; not filled. seqi r1,r31,#9 bnez r1,L296_LF6 nop; not filled. lw r2,-220(r30) lb r31,(r2) andi r3,r31,#0x00ff seqi r1,r3,#10 beqz r1,L298_LF6 nop; not filled. addi r1,r2,#1 sw -220(r30),r1 j L282_LF6 nop; not filled. L298_LF6: addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L304_LF6 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L304_LF6 nop; not filled. snei r1,r3,#65 bnez r1,L303_LF6 nop; not filled. L304_LF6: addi r2,r0,#1 L303_LF6: snei r1,r2,#0 beqz r1,L282_LF6 nop; not filled. lw r1,-220(r30) lb r2,1(r1) addi r3,r0,#0 addi r1,r2,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L307_LF6 nop; not filled. addi r1,r2,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L307_LF6 nop; not filled. andi r1,r2,#0x00ff snei r1,r1,#65 bnez r1,L306_LF6 nop; not filled. L307_LF6: addi r3,r0,#1 L306_LF6: snei r1,r3,#0 beqz r1,L282_LF6 nop; not filled. lw r1,-220(r30) lbu r2,(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L309_LF6 nop; not filled. add r4,r0,r31 j L308_LF6 nop; not filled. L309_LF6: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L311_LF6 nop; not filled. addi r4,r2,#-87 j L308_LF6 nop; not filled. L311_LF6: addi r1,r3,#-65 sleui r1,r1,#5 addi r4,r0,#0 beqz r1,L308_LF6 nop; not filled. addi r4,r3,#-55 L308_LF6: lw r1,-220(r30) lbu r2,1(r1) add r3,r0,r2 addi r31,r2,#-48 sleui r1,r31,#9 beqz r1,L316_LF6 nop; not filled. add r2,r0,r31 j L315_LF6 nop; not filled. L316_LF6: addi r1,r2,#-97 sleui r1,r1,#5 beqz r1,L318_LF6 nop; not filled. addi r2,r2,#-87 j L315_LF6 nop; not filled. L318_LF6: addi r1,r3,#-65 sleui r1,r1,#5 addi r2,r0,#0 beqz r1,L315_LF6 nop; not filled. addi r2,r3,#-55 L315_LF6: slli r1,r4,#0x4 add r1,r1,r2 sb (r6),r1 addi r6,r6,#1 addi r5,r5,#1 lw r1,-220(r30) addi r1,r1,#2 sw -220(r30),r1 lw r1,(r7) addi r1,r1,#1 sw (r7),r1 j L293_LF6 nop; not filled. L283_LF6: addi r29,r29,#-16 sw (r29),r10 lw r1,-220(r30) add r1,r1,r9 addi r3,r30,#-216 sub r1,r1,r3 sw 4(r29),r1 addi r12,r0,#0 sw 8(r29),r12 jal _FsSeek nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r12,r0,#102 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#16 snei r1,r1,#0 bnez r1,L324_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r12,r0,#43 sw 4(r29),r12 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L323_LF6 nop; not filled. L324_LF6: addi r29,r29,#-16 lhi r12,((LC42_LF6)>>16)&0xffff addui r12,r12,(LC42_LF6)&0xffff sw (r29),r12 lw r1,-220(r30) add r1,r1,r9 sub r1,r1,r3 sw 4(r29),r1 sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L323_LF6: add r1,r0,r5 L325_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessGetFromFile .data .align 2 _temppcb60_LF6: .space 180 .align 2 LC43_LF6: .ascii "Got %d arguments.\n\000" .align 2 LC44_LF6: .ascii "Available memory: 0x%x -> 0x%x.\n\000" .align 2 LC45_LF6: .ascii "Argument count is %d.\n\000" .align 2 LC46_LF6: .ascii "Argument %d is %s.\n\000" .align 2 LC47_LF6: .ascii "Converted %s to %d=%s\n\000" _buf61_LF6: .space 200 .align 2 LC48_LF6: .ascii "%08x: %02x%02x%02x%02x\n\000" .align 2 LC49_LF6: .ascii "Option %s not recognized.\n\000" .align 2 LC50_LF6: .ascii "About to initialize queues.\n\000" .align 2 LC51_LF6: .ascii "After initializing queues.\n\000" .align 2 LC52_LF6: .ascii "After initializing memory.\n\000" .align 2 LC53_LF6: .ascii "After initializing processes.\n\000" .align 2 LC54_LF6: .ascii "After initializing shared memory.\n\000" .align 2 LC55_LF6: .ascii "After initializing synchronization tools.\n\000" .align 2 LC56_LF6: .ascii "After initializing keyboard.\n\000" .align 2 LC57_LF6: .ascii "vm\000" .align 2 LC58_LF6: .ascii "VM Descriptor is %d\n\000" .align 2 LC59_LF6: .ascii "Created processes - about to set timer quantum.\n\000" .align 2 LC60_LF6: .ascii "Set timer quantum to %d, about to run first process.\n\000" .text .align 2 .proc _main .global _main _main: ; Function 'main'; 192 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#200; alloc local storage lw r14,(r30) lw r20,4(r30) jal ___main nop; not filled. addi r16,r0,#0 addi r21,r0,#0 sw -176(r30),r21 sw -172(r30),r21 sw -168(r30),r21 sw -164(r30),r21 sw -160(r30),r21 sw -156(r30),r21 sw -152(r30),r21 sw -148(r30),r21 sw -144(r30),r21 sw -140(r30),r21 sw -136(r30),r21 sw -132(r30),r21 lhi r1,((_debugstr)>>16)&0xffff addui r1,r1,(_debugstr)&0xffff addi r21,r0,(#0x0)&0xff sb (r1),r21 addi r29,r29,#-8 lhi r21,((LC43_LF6)>>16)&0xffff addui r21,r21,(LC43_LF6)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. jal _MemoryGetSize nop; not filled. addi r29,r29,#-8 lhi r21,((LC44_LF6)>>16)&0xffff addui r21,r21,(LC44_LF6)&0xffff sw (r29),r21 lhi r2,((_lastosaddress)>>16)&0xffff addui r2,r2,(_lastosaddress)&0xffff lw r2,(r2) sw 4(r29),r2 sw 8(r29),r1 jal _printf nop; not filled. lhi r21,((LC45_LF6)>>16)&0xffff addui r21,r21,(LC45_LF6)&0xffff sw (r29),r21 sw 4(r29),r14 jal _printf nop; not filled. addi r9,r0,#0 addi r29,r29,#16 slt r1,r9,r14 beqz r1,L332_LF6 nop; not filled. add r2,r0,r20 L334_LF6: addi r29,r29,#-16 lhi r21,((LC46_LF6)>>16)&0xffff addui r21,r21,(LC46_LF6)&0xffff sw (r29),r21 sw 4(r29),r9 lw r21,(r2) sw 8(r29),r21 jal _printf nop; not filled. addi r29,r29,#16 addi r2,r2,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L334_LF6 nop; not filled. L332_LF6: jal _FsModuleInit nop; not filled. addi r9,r0,#0 slt r1,r9,r14 beqz r1,L337_LF6 nop; not filled. addi r12,r30,#-128 addi r13,r30,#-200 lhi r15,((_buf61_LF6)>>16)&0xffff addui r15,r15,(_buf61_LF6)&0xffff addi r18,r15,#1 addi r17,r15,#2 add r8,r0,r20 L339_LF6: lw r2,(r8) lbu r1,(r2) seqi r1,r1,#45 beqz r1,L338_LF6 nop; not filled. lbu r2,1(r2) seqi r1,r2,#102 bnez r1,L344_LF6 nop; not filled. sgti r1,r2,#102 bnez r1,L356_LF6 nop; not filled. seqi r1,r2,#68 beqz r1,L354_LF6 nop; not filled. j L342_LF6 nop; not filled. L356_LF6: seqi r1,r2,#105 bnez r1,L343_LF6 nop; not filled. seqi r1,r2,#117 beqz r1,L354_LF6 nop; not filled. j L353_LF6 nop; not filled. L342_LF6: addi r29,r29,#-8 lhi r21,((_debugstr)>>16)&0xffff addui r21,r21,(_debugstr)&0xffff sw (r29),r21 addi r8,r8,#4 addi r9,r9,#1 lw r1,(r8) sw 4(r29),r1 jal _dstrcpy nop; not filled. j L391_LF6 nop; not filled. L343_LF6: addi r29,r29,#-16 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _dstrtol nop; not filled. add r3,r0,r1 sw (r29),r1 sw 4(r29),r12 jal _ditoa nop; not filled. lhi r21,((LC47_LF6)>>16)&0xffff addui r21,r21,(LC47_LF6)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 sw 8(r29),r3 sw 12(r29),r12 jal _printf nop; not filled. addi r29,r29,#16 j L341_LF6 nop; not filled. L344_LF6: addi r21,r0,#0 sw -200(r30),r21 addi r29,r29,#-24 addi r8,r8,#4 addi r9,r9,#1 lw r21,(r8) sw (r29),r21 addi r1,r30,#-180 sw 4(r29),r1 addi r1,r30,#-184 sw 8(r29),r1 addi r1,r30,#-188 sw 12(r29),r1 addi r1,r30,#-192 sw 16(r29),r1 addi r1,r30,#-196 sw 20(r29),r1 jal _ProcessGetCodeInfo nop; not filled. add r10,r0,r1 lhi r21,((LC27_LF6)>>16)&0xffff addui r21,r21,(LC27_LF6)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-180(r30) sw 8(r29),r21 jal _printf nop; not filled. lhi r21,((LC28_LF6)>>16)&0xffff addui r21,r21,(LC28_LF6)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-184(r30) sw 8(r29),r21 lw r21,-188(r30) sw 12(r29),r21 jal _printf nop; not filled. lhi r21,((LC29_LF6)>>16)&0xffff addui r21,r21,(LC29_LF6)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 lw r21,-192(r30) sw 8(r29),r21 lw r21,-196(r30) sw 12(r29),r21 jal _printf nop; not filled. addi r29,r29,#24 lhi r11,((_buf61_LF6+3)>>16)&0xffff addui r11,r11,(_buf61_LF6+3)&0xffff L345_LF6: addi r29,r29,#-16 sw (r29),r10 lhi r21,((_buf61_LF6)>>16)&0xffff addui r21,r21,(_buf61_LF6)&0xffff sw 4(r29),r21 sw 8(r29),r13 addi r21,r0,#200 sw 12(r29),r21 jal _ProcessGetFromFile nop; not filled. add r3,r0,r1 addi r29,r29,#16 sgti r1,r3,#0 beqz r1,L346_LF6 nop; not filled. addi r2,r0,#0 slt r1,r2,r3 beqz r1,L345_LF6 nop; not filled. add r7,r0,r11 add r6,r0,r17 add r5,r0,r18 add r4,r0,r15 L351_LF6: addi r29,r29,#-24 lhi r21,((LC48_LF6)>>16)&0xffff addui r21,r21,(LC48_LF6)&0xffff sw (r29),r21 lw r1,-200(r30) add r1,r1,r2 sub r1,r1,r3 sw 4(r29),r1 lbu r1,(r4) sw 8(r29),r1 lbu r1,(r5) sw 12(r29),r1 lbu r1,(r6) sw 16(r29),r1 lbu r1,(r7) sw 20(r29),r1 jal _printf nop; not filled. addi r29,r29,#24 addi r7,r7,#4 addi r6,r6,#4 addi r5,r5,#4 addi r4,r4,#4 addi r2,r2,#4 slt r1,r2,r3 bnez r1,L351_LF6 nop; not filled. j L345_LF6 nop; not filled. L346_LF6: addi r29,r29,#-8 sw (r29),r10 jal _close nop; not filled. j L391_LF6 nop; not filled. L353_LF6: addi r8,r8,#4 addi r9,r9,#1 lw r16,(r8) add r19,r0,r9 j L341_LF6 nop; not filled. L354_LF6: addi r29,r29,#-8 lhi r21,((LC49_LF6)>>16)&0xffff addui r21,r21,(LC49_LF6)&0xffff sw (r29),r21 lw r1,(r8) sw 4(r29),r1 jal _printf nop; not filled. L391_LF6: addi r29,r29,#8 L341_LF6: snei r1,r16,#0 bnez r1,L337_LF6 nop; not filled. L338_LF6: addi r8,r8,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L339_LF6 nop; not filled. L337_LF6: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L360_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L359_LF6 nop; not filled. L360_LF6: addi r29,r29,#-8 lhi r21,((LC50_LF6)>>16)&0xffff addui r21,r21,(LC50_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L359_LF6: jal _QueueModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L362_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L361_LF6 nop; not filled. L362_LF6: addi r29,r29,#-8 lhi r21,((LC51_LF6)>>16)&0xffff addui r21,r21,(LC51_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L361_LF6: jal _MemoryModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L364_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L363_LF6 nop; not filled. L364_LF6: addi r29,r29,#-8 lhi r21,((LC52_LF6)>>16)&0xffff addui r21,r21,(LC52_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L363_LF6: jal _ProcessModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L366_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L365_LF6 nop; not filled. L366_LF6: addi r29,r29,#-8 lhi r21,((LC53_LF6)>>16)&0xffff addui r21,r21,(LC53_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L365_LF6: jal _ShareModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L368_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L367_LF6 nop; not filled. L368_LF6: addi r29,r29,#-8 lhi r21,((LC54_LF6)>>16)&0xffff addui r21,r21,(LC54_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L367_LF6: jal _SynchModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L370_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L369_LF6 nop; not filled. L370_LF6: addi r29,r29,#-8 lhi r21,((LC55_LF6)>>16)&0xffff addui r21,r21,(LC55_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L369_LF6: jal _KbdModuleInit nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L372_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L371_LF6 nop; not filled. L372_LF6: addi r29,r29,#-8 lhi r21,((LC56_LF6)>>16)&0xffff addui r21,r21,(LC56_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L371_LF6: addi r2,r30,#-128 addi r3,r30,#-29 L376_LF6: addi r21,r0,(#0x61)&0xff sb (r2),r21 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L376_LF6 nop; not filled. addi r29,r29,#-8 lhi r21,((LC57_LF6)>>16)&0xffff addui r21,r21,(LC57_LF6)&0xffff sw (r29),r21 addi r21,r0,#2 sw 4(r29),r21 jal _FsOpen nop; not filled. add r9,r0,r1 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L379_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L378_LF6 nop; not filled. L379_LF6: addi r29,r29,#-8 lhi r21,((LC58_LF6)>>16)&0xffff addui r21,r21,(LC58_LF6)&0xffff sw (r29),r21 sw 4(r29),r9 jal _printf nop; not filled. addi r29,r29,#8 L378_LF6: addi r29,r29,#-16 sw (r29),r9 addi r21,r0,#0 sw 4(r29),r21 sw 8(r29),r21 jal _FsSeek nop; not filled. sw (r29),r9 addi r1,r30,#-128 sw 4(r29),r1 addi r21,r0,#80 sw 8(r29),r21 jal _FsWrite nop; not filled. sw (r29),r9 jal _FsClose nop; not filled. addi r29,r29,#16 snei r1,r16,#0 beqz r1,L380_LF6 nop; not filled. add r9,r0,r19 slt r1,r19,r14 beqz r1,L382_LF6 nop; not filled. addi r4,r30,#-8 slli r1,r9,#0x2 add r3,r1,r20 L386_LF6: sub r2,r9,r19 slei r1,r2,#10 beqz r1,L382_LF6 nop; not filled. slli r1,r2,#0x2 add r1,r1,r4 lw r21,(r3) sw -168(r1),r21 addi r3,r3,#4 addi r9,r9,#1 slt r1,r9,r14 bnez r1,L386_LF6 nop; not filled. L382_LF6: addi r29,r29,#-48 lw r21,-176(r30) sw (r29),r21 lw r1,-172(r30) sw 4(r29),r1 lw r21,-168(r30) sw 8(r29),r21 lw r21,-164(r30) sw 12(r29),r21 lw r21,-160(r30) sw 16(r29),r21 lw r21,-156(r30) sw 20(r29),r21 lw r21,-152(r30) sw 24(r29),r21 lw r21,-148(r30) sw 28(r29),r21 lw r21,-144(r30) sw 32(r29),r21 lw r21,-140(r30) sw 36(r29),r21 lw r21,-136(r30) sw 40(r29),r21 lw r21,-132(r30) sw 44(r29),r21 jal _process_create nop; not filled. addi r29,r29,#48 L380_LF6: jal _SysprocCreateProcesses nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L388_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L387_LF6 nop; not filled. L388_LF6: addi r29,r29,#-8 lhi r21,((LC59_LF6)>>16)&0xffff addui r21,r21,(LC59_LF6)&0xffff sw (r29),r21 jal _printf nop; not filled. addi r29,r29,#8 L387_LF6: addi r29,r29,#-8 lhi r3,((_processQuantum_LF6)>>16)&0xffff addui r3,r3,(_processQuantum_LF6)&0xffff lw r21,(r3) sw (r29),r21 jal _TimerSet nop; not filled. lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r21,r0,#105 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L390_LF6 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r21,r0,#43 sw 4(r29),r21 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L389_LF6 nop; not filled. L390_LF6: addi r29,r29,#-8 lhi r21,((LC60_LF6)>>16)&0xffff addui r21,r21,(LC60_LF6)&0xffff sw (r29),r21 lw r1,(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L389_LF6: jal _intrreturn nop; not filled. jal _exitsim nop; not filled. jal _exit nop .endproc _main .align 2 .proc _GetCurrentPid .global _GetCurrentPid _GetCurrentPid: ; Function 'GetCurrentPid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) lhi r31,((_pcbs_LF6)>>16)&0xffff addui r31,r31,(_pcbs_LF6)&0xffff sub r2,r1,r31 lhi r1,#-23302 addui r1,r1,#20389 movi2fp f0,r2 movi2fp f1,r1 mult f0,f0,f1 movfp2i r1,f0 srai r1,r1,#0x2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _GetCurrentPid .align 2 .proc _findpid .global _findpid _findpid: ; Function 'findpid'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lhi r31,((_pcbs_LF6)>>16)&0xffff addui r31,r31,(_pcbs_LF6)&0xffff sub r2,r1,r31 lhi r1,#-23302 addui r1,r1,#20389 movi2fp f0,r2 movi2fp f1,r1 mult f0,f0,f1 movfp2i r1,f0 srai r1,r1,#0x2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _findpid .data .align 2 _str68_LF6: .space 4 .align 2 _location69_LF6: .word 0 .text .align 2 .proc _get_argument .global _get_argument _get_argument: ; Function 'get_argument'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) snei r1,r2,#0 beqz r1,L407_LF6 nop; not filled. lhi r1,((_str68_LF6)>>16)&0xffff addui r1,r1,(_str68_LF6)&0xffff sw (r1),r2 lhi r1,((_location69_LF6)>>16)&0xffff addui r1,r1,(_location69_LF6)&0xffff addi r5,r0,#0 sw (r1),r5 L407_LF6: lhi r31,((_location69_LF6)>>16)&0xffff addui r31,r31,(_location69_LF6)&0xffff lw r3,(r31) lhi r1,((_str68_LF6)>>16)&0xffff addui r1,r1,(_str68_LF6)&0xffff lw r2,(r1) add r1,r2,r3 lbu r1,(r1) snei r1,r1,#0 beqz r1,L409_LF6 nop; not filled. sgti r1,r3,#98 beqz r1,L408_LF6 nop; not filled. L409_LF6: addi r1,r0,#0 j L416_LF6 nop; not filled. L417_LF6: addi r1,r31,#1 sw (r2),r1 j L411_LF6 nop; not filled. L408_LF6: slei r1,r3,#99 beqz r1,L411_LF6 nop; not filled. add r4,r0,r2 add r2,r0,r31 L413_LF6: lw r31,(r2) add r1,r4,r31 lbu r1,(r1) snei r1,r1,#0 beqz r1,L417_LF6 nop; not filled. addi r1,r31,#1 sw (r2),r1 slei r1,r1,#99 bnez r1,L413_LF6 nop; not filled. L411_LF6: add r1,r0,r3 L416_LF6: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _get_argument .align 2 .proc _process_create .global _process_create _process_create: ; Function 'process_create'; 1000 bytes of locals, 5 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1032; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 addi r4,r0,#0 lw r1,(r30) snei r1,r1,#0 beqz r1,L420_LF6 nop; not filled. addi r5,r30,#-1008 add r31,r0,r30 L422_LF6: addi r2,r0,#0 add r3,r4,r5 L423_LF6: lw r1,(r31) add r1,r1,r2 lb r1,(r1) sb (r3),r1 addi r2,r2,#1 addi r3,r3,#1 addi r4,r4,#1 lw r1,(r31) add r1,r2,r1 lbu r1,-1(r1) snei r1,r1,#0 bnez r1,L423_LF6 nop; not filled. addi r31,r31,#4 lw r1,(r31) snei r1,r1,#0 bnez r1,L422_LF6 nop; not filled. L420_LF6: addi r3,r30,#-1008 add r2,r3,r4 addi r1,r30,#-1007 add r1,r1,r4 addi r6,r0,(#0x0)&0xff sb (r1),r6 sb (r2),r6 addi r29,r29,#-16 addi r6,r0,#0 sw (r29),r6 sw 4(r29),r3 lw r6,(r30) sw 8(r29),r6 addi r6,r0,#1 sw 12(r29),r6 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _process_create .data .global _debugstr _debugstr: .space 200 .align 2 .global _currentPCB _currentPCB: .space 4 .align 2 _freepcbs_LF6: .space 12 .align 2 _runQueue_LF6: .space 12 .align 2 _waitQueue_LF6: .space 12 .align 2 _zombieQueue_LF6: .space 12 .align 2 _pcbs_LF6: .space 5760 .text .align 2 .proc _ProcessExit_LF6 _ProcessExit_LF6: ; Function 'ProcessExit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage jal _exit nop; not filled. lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _ProcessExit_LF6 ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF7 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF7 nop; not filled. L6_LF7: addi r31,r0,#1 L5_LF7: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF7 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF7 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF7 nop; not filled. L12_LF7: addi r2,r0,#1 L11_LF7: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF7 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF7: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF7: .ascii "Initializing queue link %d.\n\000" .text .align 2 .proc _QueueModuleInit .global _QueueModuleInit _QueueModuleInit: ; Function 'QueueModuleInit'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 lhi r5,((_freeLinks)>>16)&0xffff addui r5,r5,(_freeLinks)&0xffff sw (r29),r5 jal _QueueInit nop; not filled. addi r3,r0,#0 addi r29,r29,#8 lhi r4,((_debugstr)>>16)&0xffff addui r4,r4,(_debugstr)&0xffff lhi r2,((_linkpool_LF7)>>16)&0xffff addui r2,r2,(_linkpool_LF7)&0xffff L63_LF7: addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#105 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L65_LF7 nop; not filled. addi r29,r29,#-8 sw (r29),r4 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L64_LF7 nop; not filled. L65_LF7: addi r29,r29,#-8 lhi r5,((LC0_LF7)>>16)&0xffff addui r5,r5,(LC0_LF7)&0xffff sw (r29),r5 sw 4(r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L64_LF7: addi r5,r0,#0 sw (r2),r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 addi r2,r2,#16 addi r3,r3,#1 slei r1,r3,#399 bnez r1,L63_LF7 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueModuleInit .align 2 .proc _QueueInit .global _QueueInit _QueueInit: ; Function 'QueueInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) sw (r1),r1 sw 4(r1),r1 addi r31,r0,#0 sw 8(r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInit .data .align 2 LC1_LF7: .ascii "%s: %s\n\000" .align 2 LC2_LF7: .ascii "QueueFreeLink\000" .align 2 LC3_LF7: .ascii "Link not empty\000" .text .align 2 .proc _QueueFreeLink .global _QueueFreeLink _QueueFreeLink: ; Function 'QueueFreeLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lw r3,(r30) lw r1,(r3) snei r1,r1,#0 beqz r1,L77_LF7 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF7)>>16)&0xffff addui r4,r4,(LC1_LF7)&0xffff sw (r29),r4 lhi r1,((LC2_LF7)>>16)&0xffff addui r1,r1,(LC2_LF7)&0xffff sw 4(r29),r1 lhi r4,((LC3_LF7)>>16)&0xffff addui r4,r4,(LC3_LF7)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L77_LF7: lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,4(r2) sw 8(r3),r2 sw 4(r3),r1 lw r4,(r1) sw (r3),r4 sw (r1),r3 lw r1,(r3) sw 4(r1),r3 lw r1,8(r2) addi r1,r1,#1 sw 8(r2),r1 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFreeLink .data .align 2 LC4_LF7: .ascii "QueueAllocLink\000" .align 2 LC5_LF7: .ascii "Link not allocated!\000" .text .align 2 .proc _QueueAllocLink .global _QueueAllocLink _QueueAllocLink: ; Function 'QueueAllocLink'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_freeLinks)>>16)&0xffff addui r2,r2,(_freeLinks)&0xffff lw r1,8(r2) seqi r1,r1,#0 bnez r1,L92_LF7 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L97_LF7 nop; not filled. lw r1,4(r3) lw r4,(r3) sw (r1),r4 lw r1,(r3) lw r4,4(r3) sw 4(r1),r4 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L97_LF7: addi r4,r0,#0 sw (r3),r4 j L98_LF7 nop; not filled. L92_LF7: addi r3,r0,#0 L98_LF7: snei r1,r3,#0 bnez r1,L100_LF7 nop; not filled. addi r29,r29,#-16 lhi r4,((LC1_LF7)>>16)&0xffff addui r4,r4,(LC1_LF7)&0xffff sw (r29),r4 lhi r1,((LC4_LF7)>>16)&0xffff addui r1,r1,(LC4_LF7)&0xffff sw 4(r29),r1 lhi r4,((LC5_LF7)>>16)&0xffff addui r4,r4,(LC5_LF7)&0xffff sw 8(r29),r4 jal _printf nop; not filled. addi r29,r29,#16 L100_LF7: add r1,r0,r3 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueAllocLink .data .align 2 .global _freeLinks _freeLinks: .space 12 .align 2 _linkpool_LF7: .space 6400 ; Compiled by GCC .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF8 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF8 nop; not filled. L6_LF8: addi r31,r0,#1 L5_LF8: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF8 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF8 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF8 nop; not filled. L12_LF8: addi r2,r0,#1 L11_LF8: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF8 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF8: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF8: .ascii "Entering SynchModuleInit\n\000" .align 2 LC1_LF8: .ascii "Leaving SynchModuleInit\n\000" .text .align 2 .proc _SynchModuleInit .global _SynchModuleInit _SynchModuleInit: ; Function 'SynchModuleInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L53_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L52_LF8 nop; not filled. L53_LF8: addi r29,r29,#-8 lhi r3,((LC0_LF8)>>16)&0xffff addui r3,r3,(LC0_LF8)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L52_LF8: lhi r31,((_sems_LF8)>>16)&0xffff addui r31,r31,(_sems_LF8)&0xffff addi r2,r31,#620 L57_LF8: addi r3,r0,#0 sw 16(r31),r3 addi r31,r31,#20 sle r1,r31,r2 bnez r1,L57_LF8 nop; not filled. addi r31,r0,#0 L61_LF8: addi r31,r31,#1 slei r1,r31,#63 bnez r1,L61_LF8 nop; not filled. addi r31,r0,#0 L66_LF8: addi r31,r31,#1 slei r1,r31,#31 bnez r1,L66_LF8 nop; not filled. addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r3,r0,#112 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L70_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r3,r0,#43 sw 4(r29),r3 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L69_LF8 nop; not filled. L70_LF8: addi r29,r29,#-8 lhi r3,((LC1_LF8)>>16)&0xffff addui r3,r3,(LC1_LF8)&0xffff sw (r29),r3 jal _printf nop; not filled. addi r29,r29,#8 L69_LF8: lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SynchModuleInit .align 2 .proc _SemInit .global _SemInit _SemInit: ; Function 'SemInit'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r2,(r30) lw r3,4(r30) addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. sw 12(r2),r3 addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemInit .align 2 .proc _SemCreate .global _SemCreate _SemCreate: ; Function 'SemCreate'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r3,r0,#0 lhi r31,((_sems_LF8)>>16)&0xffff addui r31,r31,(_sems_LF8)&0xffff L89_LF8: add r2,r0,r31 lw r1,16(r31) snei r1,r1,#0 beqz r1,L96_LF8 nop; not filled. addi r31,r2,#20 addi r3,r3,#1 slei r1,r3,#31 bnez r1,L89_LF8 nop; not filled. L87_LF8: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 seqi r1,r3,#32 bnez r1,L93_LF8 nop; not filled. slli r1,r3,#0x2 add r1,r1,r3 slli r1,r1,#0x2 lhi r5,((_sems_LF8)>>16)&0xffff addui r5,r5,(_sems_LF8)&0xffff add r2,r1,r5 addi r29,r29,#-8 sw (r29),r2 jal _QueueInit nop; not filled. lw r5,(r30) sw 12(r2),r5 addi r29,r29,#8 add r1,r0,r3 j L95_LF8 nop; not filled. L96_LF8: addi r5,r0,#1 sw 16(r31),r5 j L87_LF8 nop; not filled. L93_LF8: addi r1,r0,#-1 L95_LF8: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemCreate .data .align 2 LC2_LF8: .ascii "Old interrupt value was 0x%x.\n\000" .align 2 LC3_LF8: .ascii "Proc 0x%x waiting on sem 0x%x, count=%d.\n\000" .align 2 LC4_LF8: .ascii "Suspending current proc (0x%x).\n\000" .text .align 2 .proc _SemWait .global _SemWait _SemWait: ; Function 'SemWait'; 0 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#32; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r4,(r30) addi r29,r29,#-8 addi r7,r0,#15 sw (r29),r7 jal _SetIntrs nop; not filled. add r6,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#73 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L100_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L99_LF8 nop; not filled. L100_LF8: addi r29,r29,#-8 lhi r7,((LC2_LF8)>>16)&0xffff addui r7,r7,(LC2_LF8)&0xffff sw (r29),r7 sw 4(r29),r6 jal _printf nop; not filled. addi r29,r29,#8 L99_LF8: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L102_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L101_LF8 nop; not filled. L102_LF8: addi r29,r29,#-16 lhi r7,((LC3_LF8)>>16)&0xffff addui r7,r7,(LC3_LF8)&0xffff sw (r29),r7 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw 4(r29),r1 sw 8(r29),r4 lw r7,12(r4) sw 12(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 L101_LF8: lw r1,12(r4) addi r1,r1,#-1 sw 12(r4),r1 slti r1,r1,#0 beqz r1,L103_LF8 nop; not filled. jal _QueueAllocLink nop; not filled. add r2,r0,r1 lhi r5,((_currentPCB)>>16)&0xffff addui r5,r5,(_currentPCB)&0xffff lw r1,(r5) addi r7,r0,#0 sw (r2),r7 sw 12(r2),r1 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r7,r0,#115 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L106_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L105_LF8 nop; not filled. L106_LF8: addi r29,r29,#-8 lhi r7,((LC4_LF8)>>16)&0xffff addui r7,r7,(LC4_LF8)&0xffff sw (r29),r7 lw r1,(r5) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L105_LF8: lw r1,4(r4) sw 8(r2),r4 sw 4(r2),r1 lw r7,(r1) sw (r2),r7 sw (r1),r2 lw r1,(r2) sw 4(r1),r2 lw r1,8(r4) addi r1,r1,#1 sw 8(r4),r1 jal _ProcessSleep nop; not filled. L103_LF8: addi r29,r29,#-8 sw (r29),r6 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemWait .align 2 .proc _SemHandleWait .global _SemHandleWait _SemHandleWait: ; Function 'SemHandleWait'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L116_LF8 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF8)>>16)&0xffff addui r2,r2,(_sems_LF8)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L117_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemWait nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L115_LF8 nop; not filled. L117_LF8: addi r1,r0,#1 j L115_LF8 nop; not filled. L116_LF8: addi r1,r0,#1 L115_LF8: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleWait .data .align 2 LC5_LF8: .ascii "Signalling on sem 0x%x, count=%d.\n\000" .align 2 LC6_LF8: .ascii "Waking up PCB 0x%x.\n\000" .text .align 2 .proc _SemSignal .global _SemSignal _SemSignal: ; Function 'SemSignal'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r2,(r30) addi r29,r29,#-8 addi r5,r0,#15 sw (r29),r5 jal _SetIntrs nop; not filled. add r4,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r3,((_debugstr)>>16)&0xffff addui r3,r3,(_debugstr)&0xffff sw (r29),r3 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r3 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122_LF8 nop; not filled. L123_LF8: addi r29,r29,#-16 lhi r5,((LC5_LF8)>>16)&0xffff addui r5,r5,(LC5_LF8)&0xffff sw (r29),r5 sw 4(r29),r2 lw r5,12(r2) sw 8(r29),r5 jal _printf nop; not filled. addi r29,r29,#16 L122_LF8: lw r1,12(r2) addi r1,r1,#1 sw 12(r2),r1 slei r1,r1,#0 beqz r1,L124_LF8 nop; not filled. lw r3,(r2) lw r1,8(r3) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L127_LF8 nop; not filled. lw r1,4(r3) lw r5,(r3) sw (r1),r5 lw r1,(r3) lw r5,4(r3) sw 4(r1),r5 lw r2,8(r3) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L127_LF8: addi r5,r0,#0 sw (r3),r5 addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r5,r0,#115 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L129_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r5,r0,#43 sw 4(r29),r5 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L128_LF8 nop; not filled. L129_LF8: addi r29,r29,#-8 lhi r5,((LC6_LF8)>>16)&0xffff addui r5,r5,(LC6_LF8)&0xffff sw (r29),r5 lw r1,12(r3) sw 4(r29),r1 jal _printf nop; not filled. addi r29,r29,#8 L128_LF8: addi r29,r29,#-8 lw r5,12(r3) sw (r29),r5 jal _ProcessWakeup nop; not filled. sw (r29),r3 jal _QueueFreeLink nop; not filled. addi r29,r29,#8 L124_LF8: addi r29,r29,#-8 sw (r29),r4 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemSignal .align 2 .proc _SemHandleSignal .global _SemHandleSignal _SemHandleSignal: ; Function 'SemHandleSignal'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r31,(r30) sleui r1,r31,#31 beqz r1,L136_LF8 nop; not filled. slli r1,r31,#0x2 add r1,r1,r31 slli r1,r1,#0x2 lhi r2,((_sems_LF8)>>16)&0xffff addui r2,r2,(_sems_LF8)&0xffff add r31,r1,r2 lw r1,16(r31) snei r1,r1,#0 beqz r1,L137_LF8 nop; not filled. addi r29,r29,#-8 sw (r29),r31 jal _SemSignal nop; not filled. addi r1,r0,#0 addi r29,r29,#8 j L135_LF8 nop; not filled. L137_LF8: addi r1,r0,#1 j L135_LF8 nop; not filled. L136_LF8: addi r1,r0,#1 L135_LF8: lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SemHandleSignal .align 2 .proc _LockCreate .global _LockCreate _LockCreate: ; Function 'LockCreate'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockCreate .align 2 .proc _LockHandleAcquire .global _LockHandleAcquire _LockHandleAcquire: ; Function 'LockHandleAcquire'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockHandleAcquire .align 2 .proc _LockHandleRelease .global _LockHandleRelease _LockHandleRelease: ; Function 'LockHandleRelease'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _LockHandleRelease .align 2 .proc _CondCreate .global _CondCreate _CondCreate: ; Function 'CondCreate'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondCreate .align 2 .proc _CondHandleWait .global _CondHandleWait _CondHandleWait: ; Function 'CondHandleWait'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondHandleWait .align 2 .proc _CondHandleSignal .global _CondHandleSignal _CondHandleSignal: ; Function 'CondHandleSignal'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondHandleSignal .align 2 .proc _CondHandleBroadcast .global _CondHandleBroadcast _CondHandleBroadcast: ; Function 'CondHandleBroadcast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _CondHandleBroadcast .data .align 2 _sems_LF8: .space 640 ; Compiled by GCC .align 2 _rcsid_LF9: .ascii "$Id: traps.c,v 1.1 2000/09/20 01:50:19 elm Exp elm $\000" .text .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF9 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF9 nop; not filled. L6_LF9: addi r31,r0,#1 L5_LF9: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF9 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF9 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF9 nop; not filled. L12_LF9: addi r2,r0,#1 L11_LF9: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF9 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF9: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .align 2 .proc _TimerSet .global _TimerSet _TimerSet: ; Function 'TimerSet'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#16 lw r31,(r30) sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TimerSet .align 2 .proc _KbdModuleInit .global _KbdModuleInit _KbdModuleInit: ; Function 'KbdModuleInit'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lhi r1,#-16 addui r1,r1,#448 addi r31,r0,#1 sw (r1),r31 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _KbdModuleInit .data .align 2 LC0_LF9: .ascii "Fatal: Cumulative length of all arguments > 100\n\000" .text .align 2 .proc _TrapProcessCreateHandler_LF9 _TrapProcessCreateHandler_LF9: ; Function 'TrapProcessCreateHandler'; 1640 bytes of locals, 11 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#1696; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 sw 40(r29),r12 lw r4,(r30) lw r6,4(r30) addi r2,r30,#-1032 addi r3,r30,#-933 L65_LF9: addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r2,r2,#1 sle r1,r2,r3 bnez r1,L65_LF9 nop; not filled. addi r5,r0,#0 snei r1,r6,#0 bnez r1,L67_LF9 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r12,(r2) sw (r29),r12 sw 4(r29),r4 addi r1,r30,#-1648 sw 8(r29),r1 addi r12,r0,#512 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r4,r30,#-1137 addi r3,r30,#-1136 L68_LF9: addi r29,r29,#-16 lw r12,(r2) sw (r29),r12 lw r1,-1648(r30) add r1,r1,r5 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r29,r29,#16 sleui r1,r5,#99 beqz r1,L73_LF9 nop; not filled. lbu r1,(r4) snei r1,r1,#0 beqz r1,L73_LF9 nop; not filled. j L68_LF9 nop; not filled. L67_LF9: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-1648 sw 4(r29),r1 addi r12,r0,#512 sw 8(r29),r12 jal _bcopy nop; not filled. lw r12,-1648(r30) sw (r29),r12 addi r1,r30,#-1136 sw 4(r29),r1 addi r12,r0,#100 sw 8(r29),r12 jal _dstrncpy nop; not filled. addi r29,r29,#16 L73_LF9: addi r12,r0,(#0x0)&0xff sb -1037(r30),r12 addi r5,r0,#0 snei r1,r6,#0 bnez r1,L74_LF9 nop; not filled. lhi r8,((_currentPCB)>>16)&0xffff addui r8,r8,(_currentPCB)&0xffff addi r11,r30,#-1032 addi r10,r30,#-1033 addi r6,r30,#-8 addi r9,r30,#32 L85_LF9: lw r1,-1640(r6) snei r1,r1,#0 beqz r1,L86_LF9 nop; not filled. addi r2,r0,#0 add r7,r0,r6 add r4,r5,r10 add r3,r5,r11 L80_LF9: addi r29,r29,#-16 lw r12,(r8) sw (r29),r12 lw r1,-1640(r7) add r1,r1,r2 sw 4(r29),r1 sw 8(r29),r3 addi r12,r0,#1 sw 12(r29),r12 jal _MemoryCopyUserToSystem nop; not filled. addi r4,r4,#1 addi r3,r3,#1 addi r5,r5,#1 addi r2,r2,#1 addi r29,r29,#16 sleui r1,r5,#1023 beqz r1,L77_LF9 nop; not filled. lbu r1,(r4) snei r1,r1,#0 bnez r1,L80_LF9 nop; not filled. L77_LF9: addi r6,r6,#4 sle r1,r6,r9 beqz r1,L86_LF9 nop; not filled. j L85_LF9 nop; not filled. L74_LF9: addi r5,r30,#-1032 add r7,r0,r5 addi r3,r30,#-8 addi r6,r30,#32 L93_LF9: addi r4,r3,#-1640 lw r2,(r4) snei r1,r2,#0 beqz r1,L86_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 jal _dstrlen nop; not filled. add r2,r5,r1 sub r1,r2,r7 addi r29,r29,#8 sgti r1,r1,#100 beqz r1,L92_LF9 nop; not filled. addi r29,r29,#-8 lhi r12,((LC0_LF9)>>16)&0xffff addui r12,r12,(LC0_LF9)&0xffff sw (r29),r12 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#8 L92_LF9: addi r29,r29,#-8 sw (r29),r5 lw r1,(r4) sw 4(r29),r1 jal _dstrcpy nop; not filled. addi r12,r0,(#0x0)&0xff sb (r2),r12 addi r29,r29,#8 addi r3,r3,#4 sle r1,r3,r6 bnez r1,L93_LF9 nop; not filled. L86_LF9: addi r12,r0,(#0x0)&0xff sb -9(r30),r12 addi r29,r29,#-16 addi r12,r0,#0 sw (r29),r12 addi r1,r30,#-1032 sw 4(r29),r1 addi r1,r30,#-1136 sw 8(r29),r1 addi r12,r0,#1 sw 12(r29),r12 jal _ProcessFork nop; not filled. addi r29,r29,#16 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r12,40(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapProcessCreateHandler_LF9 .align 2 .proc _TrapPrintfHandler_LF9 _TrapPrintfHandler_LF9: ; Function 'TrapPrintfHandler'; 160 bytes of locals, 10 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#208; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 sw 28(r29),r9 sw 32(r29),r10 sw 36(r29),r11 lw r4,(r30) lw r1,4(r30) addi r8,r0,#0 add r3,r0,r8 snei r1,r1,#0 bnez r1,L95_LF9 nop; not filled. addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r11,(r2) sw (r29),r11 sw 4(r29),r4 addi r1,r30,#-168 sw 8(r29),r1 addi r11,r0,#40 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r29,r29,#16 addi r5,r30,#-89 addi r4,r30,#-88 L96_LF9: addi r29,r29,#-16 lw r11,(r2) sw (r29),r11 lw r1,-168(r30) add r1,r1,r3 sw 4(r29),r1 sw 8(r29),r4 addi r11,r0,#1 sw 12(r29),r11 jal _MemoryCopyUserToSystem nop; not filled. addi r5,r5,#1 addi r4,r4,#1 addi r3,r3,#1 addi r29,r29,#16 sleui r1,r3,#79 beqz r1,L101_LF9 nop; not filled. lbu r1,(r5) snei r1,r1,#0 beqz r1,L101_LF9 nop; not filled. j L96_LF9 nop; not filled. L95_LF9: addi r29,r29,#-16 sw (r29),r4 addi r1,r30,#-168 sw 4(r29),r1 addi r11,r0,#40 sw 8(r29),r11 jal _bcopy nop; not filled. lw r11,-168(r30) sw (r29),r11 addi r1,r30,#-88 sw 4(r29),r1 addi r11,r0,#80 sw 8(r29),r11 jal _dstrncpy nop; not filled. addi r29,r29,#16 L101_LF9: addi r11,r0,(#0x0)&0xff sb -9(r30),r11 addi r3,r30,#-88 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 beqz r1,L103_LF9 nop; not filled. addi r10,r30,#-8 addi r9,r30,#-164 slli r1,r8,#0x2 add r7,r1,r9 add r6,r1,r10 L105_LF9: andi r1,r2,#0x00ff seqi r1,r1,#37 beqz r1,L104_LF9 nop; not filled. lbu r1,1(r3) seqi r1,r1,#37 beqz r1,L107_LF9 nop; not filled. addi r3,r3,#1 j L104_LF9 nop; not filled. L107_LF9: lw r11,(r7) sw -120(r6),r11 slli r1,r8,#0x2 add r5,r1,r9 add r4,r1,r10 L110_LF9: addi r3,r3,#1 lb r31,(r3) andi r2,r31,#0x00ff seqi r1,r2,#115 bnez r1,L109_LF9 nop; not filled. seqi r1,r2,#108 bnez r1,L110_LF9 nop; not filled. addi r1,r31,#-102 andi r1,r1,#0x00ff sleui r1,r1,#1 bnez r1,L116_LF9 nop; not filled. seqi r1,r2,#101 beqz r1,L115_LF9 nop; not filled. L116_LF9: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 lw r5,4(r5) sw -116(r4),r5 j L109_LF9 nop; not filled. L115_LF9: addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#25 beqz r1,L110_LF9 nop; not filled. L109_LF9: addi r7,r7,#4 addi r6,r6,#4 addi r8,r8,#1 L104_LF9: addi r3,r3,#1 lb r2,(r3) andi r1,r2,#0x00ff snei r1,r1,#0 bnez r1,L105_LF9 nop; not filled. L103_LF9: addi r29,r29,#-40 addi r1,r30,#-88 sw (r29),r1 lw r1,-128(r30) sw 4(r29),r1 lw r11,-124(r30) sw 8(r29),r11 lw r11,-120(r30) sw 12(r29),r11 lw r11,-116(r30) sw 16(r29),r11 lw r11,-112(r30) sw 20(r29),r11 lw r11,-108(r30) sw 24(r29),r11 lw r11,-104(r30) sw 28(r29),r11 lw r11,-100(r30) sw 32(r29),r11 jal _printf nop; not filled. addi r29,r29,#40 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r9,28(r29) lw r10,32(r29) lw r11,36(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _TrapPrintfHandler_LF9 .data .align 2 LC1_LF9: .ascii "Interrupt cause=0x%x iar=0x%x isr=0x%x args=0x%08x.\n\000" .align 2 LC2_LF9: .ascii "Got a context switch trap!\n\000" .align 2 LC3_LF9: .ascii "Got an exit trap!\n\000" .align 2 LC4_LF9: .ascii "Got a fork trap!\n\000" .align 2 LC5_LF9: .ascii "Got a process sleep trap!\n\000" .align 2 LC6_LF9: .ascii "Got a printf trap!\n\000" .align 2 LC7_LF9: .ascii "Got an open with parameters (\'%s\',0x%x)\n\000" .align 2 LC8_LF9: .ascii "Got an unrecognized trap (0x%x) - exiting!\n\000" .align 2 LC9_LF9: .ascii "Got a timer interrupt!\n\000" .align 2 LC10_LF9: .ascii "Got a keyboard interrupt (char=0x%x(%c), nleft=%d)!\n\000" .align 2 LC11_LF9: .ascii "Exiting after illegal access at iar=0x%x, isr=0x%x\n\000" .align 2 LC12_LF9: .ascii "Exiting after illegal address at iar=0x%x, isr=0x%x\n\000" .align 2 LC13_LF9: .ascii "Exiting after illegal instruction at iar=0x%x, isr=0x%x\n\000" .align 2 LC14_LF9: .ascii "Exiting after page fault at iar=0x%x, isr=0x%x\n\000" .align 2 LC15_LF9: .ascii "Got an unrecognized system interrupt (0x%x) - exiting!\n\000" .align 2 LC16_LF9: .ascii "About to return from dointerrupt.\n\000" .text .align 2 .proc _dointerrupt .global _dointerrupt _dointerrupt: ; Function 'dointerrupt'; 56 bytes of locals, 6 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#88; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 lw r2,(r30) lw r6,4(r30) lw r4,8(r30) lw r3,12(r30) addi r29,r29,#-8 lhi r5,((_debugstr)>>16)&0xffff addui r5,r5,(_debugstr)&0xffff sw (r29),r5 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L123_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r5 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L122_LF9 nop; not filled. L123_LF9: addi r29,r29,#-24 lhi r7,((LC1_LF9)>>16)&0xffff addui r7,r7,(LC1_LF9)&0xffff sw (r29),r7 sw 4(r29),r2 sw 8(r29),r6 sw 12(r29),r4 sw 16(r29),r3 jal _printf nop; not filled. addi r29,r29,#24 L122_LF9: lhi r7,#2048 addui r7,r7,#0 and r1,r2,r7 snei r1,r1,#0 beqz r1,L124_LF9 nop; not filled. lhi r7,#-2049 addui r7,r7,#65535 and r2,r2,r7 seqi r1,r2,#1088 bnez r1,L163_LF9 nop; not filled. sgtui r1,r2,#1088 bnez r1,L207_LF9 nop; not filled. seqi r1,r2,#532 bnez r1,L146_LF9 nop; not filled. sgtui r1,r2,#532 bnez r1,L208_LF9 nop; not filled. seqi r1,r2,#529 bnez r1,L152_LF9 nop; not filled. sgtui r1,r2,#529 bnez r1,L209_LF9 nop; not filled. seqi r1,r2,#513 bnez r1,L138_LF9 nop; not filled. seqi r1,r2,#528 beqz r1,L205_LF9 nop; not filled. j L149_LF9 nop; not filled. L209_LF9: seqi r1,r2,#530 bnez r1,L158_LF9 nop; not filled. seqi r1,r2,#531 beqz r1,L205_LF9 nop; not filled. j L141_LF9 nop; not filled. L208_LF9: seqi r1,r2,#1040 bnez r1,L135_LF9 nop; not filled. sgtui r1,r2,#1040 bnez r1,L210_LF9 nop; not filled. seqi r1,r2,#768 bnez r1,L129_LF9 nop; not filled. seqi r1,r2,#1024 beqz r1,L205_LF9 nop; not filled. j L126_LF9 nop; not filled. L210_LF9: seqi r1,r2,#1073 bnez r1,L161_LF9 nop; not filled. sgtui r1,r2,#1073 bnez r1,L211_LF9 nop; not filled. seqi r1,r2,#1072 beqz r1,L205_LF9 nop; not filled. j L132_LF9 nop; not filled. L211_LF9: seqi r1,r2,#1074 beqz r1,L205_LF9 nop; not filled. j L162_LF9 nop; not filled. L207_LF9: seqi r1,r2,#1108 bnez r1,L181_LF9 nop; not filled. sgtui r1,r2,#1108 bnez r1,L212_LF9 nop; not filled. seqi r1,r2,#1105 bnez r1,L172_LF9 nop; not filled. sgtui r1,r2,#1105 bnez r1,L213_LF9 nop; not filled. seqi r1,r2,#1089 bnez r1,L164_LF9 nop; not filled. seqi r1,r2,#1104 beqz r1,L205_LF9 nop; not filled. j L168_LF9 nop; not filled. L213_LF9: seqi r1,r2,#1106 bnez r1,L176_LF9 nop; not filled. seqi r1,r2,#1107 beqz r1,L205_LF9 nop; not filled. j L180_LF9 nop; not filled. L212_LF9: seqi r1,r2,#1111 bnez r1,L193_LF9 nop; not filled. sgtui r1,r2,#1111 bnez r1,L214_LF9 nop; not filled. seqi r1,r2,#1109 bnez r1,L185_LF9 nop; not filled. seqi r1,r2,#1110 beqz r1,L205_LF9 nop; not filled. j L189_LF9 nop; not filled. L214_LF9: seqi r1,r2,#1113 bnez r1,L201_LF9 nop; not filled. sltui r1,r2,#1113 bnez r1,L197_LF9 nop; not filled. seqi r1,r2,#1408 beqz r1,L205_LF9 nop; not filled. j L155_LF9 nop; not filled. L126_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L128_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L218_LF9 nop; not filled. L128_LF9: addi r29,r29,#-8 lhi r7,((LC2_LF9)>>16)&0xffff addui r7,r7,(LC2_LF9)&0xffff j L248_LF9 nop; not filled. L129_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L131_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L130_LF9 nop; not filled. L131_LF9: addi r29,r29,#-8 lhi r7,((LC3_LF9)>>16)&0xffff addui r7,r7,(LC3_LF9)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L130_LF9: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessDestroy nop; not filled. jal _ProcessSchedule nop; not filled. j L235_LF9 nop; not filled. L132_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L134_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L215_LF9 nop; not filled. L134_LF9: addi r29,r29,#-8 lhi r7,((LC4_LF9)>>16)&0xffff addui r7,r7,(LC4_LF9)&0xffff sw (r29),r7 jal _printf nop; not filled. j L235_LF9 nop; not filled. L135_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L137_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L136_LF9 nop; not filled. L137_LF9: addi r29,r29,#-8 lhi r7,((LC5_LF9)>>16)&0xffff addui r7,r7,(LC5_LF9)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L136_LF9: addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 jal _ProcessSuspend nop; not filled. jal _ProcessSchedule nop; not filled. j L235_LF9 nop; not filled. L138_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L140_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L139_LF9 nop; not filled. L140_LF9: addi r29,r29,#-8 lhi r7,((LC6_LF9)>>16)&0xffff addui r7,r7,(LC6_LF9)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L139_LF9: addi r29,r29,#-8 sw (r29),r3 andi r1,r4,#64 sw 4(r29),r1 jal _TrapPrintfHandler_LF9 nop; not filled. j L235_LF9 nop; not filled. L141_LF9: andi r1,r4,#64 snei r1,r1,#0 beqz r1,L142_LF9 nop; not filled. lw r7,(r3) sw -24(r30),r7 lw r3,4(r3) sw -20(r30),r3 j L143_LF9 nop; not filled. L142_LF9: addi r29,r29,#-16 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r3 addi r1,r30,#-24 sw 8(r29),r1 addi r7,r0,#8 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. lw r2,(r2) sw (r29),r2 lw r1,-24(r30) sw 4(r29),r1 addi r2,r30,#-56 sw 8(r29),r2 addi r7,r0,#31 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. addi r7,r0,(#0x0)&0xff sb -25(r30),r7 sw -24(r30),r2 addi r29,r29,#16 L143_LF9: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 lw r1,-20(r30) lhi r7,#1 addui r7,r7,#0 add r1,r1,r7 sw 4(r29),r1 jal _ProcessSetResult nop; not filled. addi r29,r29,#-8 lhi r7,((LC7_LF9)>>16)&0xffff addui r7,r7,(LC7_LF9)&0xffff sw (r29),r7 lw r1,-24(r30) sw 4(r29),r1 lw r7,-20(r30) sw 8(r29),r7 jal _printf nop; not filled. addi r29,r29,#16 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L235_LF9 nop; not filled. L146_LF9: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L235_LF9 nop; not filled. L149_LF9: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L235_LF9 nop; not filled. L152_LF9: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L235_LF9 nop; not filled. L155_LF9: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L235_LF9 nop; not filled. L158_LF9: addi r29,r29,#-8 addi r7,r0,#0 sw (r29),r7 jal _SetIntrs nop; not filled. add r2,r0,r1 addi r29,r29,#8 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 addi r7,r0,#-1 sw 4(r29),r7 jal _ProcessSetResult nop; not filled. addi r29,r29,#8 addi r29,r29,#-8 sw (r29),r2 jal _SetIntrs nop; not filled. j L235_LF9 nop; not filled. L161_LF9: jal _GetCurrentPid nop; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L162_LF9: addi r29,r29,#-8 sw (r29),r3 andi r1,r4,#64 sw 4(r29),r1 jal _TrapProcessCreateHandler_LF9 nop; not filled. j L235_LF9 nop; not filled. L163_LF9: addi r29,r29,#-8 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 jal _MemoryCreateSharedPage nop; not filled. add r31,r0,r1 lw r2,(r2) sw (r29),r2 sw 4(r29),r31 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L164_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L166_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L236_LF9 nop; not filled. L166_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L236_LF9: addi r29,r29,#16 lw r31,-60(r30) addi r29,r29,#-8 lhi r2,((_currentPCB)>>16)&0xffff addui r2,r2,(_currentPCB)&0xffff lw r7,(r2) sw (r29),r7 sw 4(r29),r31 jal _mmap nop; not filled. add r31,r0,r1 lw r2,(r2) sw (r29),r2 sw 4(r29),r31 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L168_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L170_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L237_LF9 nop; not filled. L170_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L237_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemCreate nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L172_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L174_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L238_LF9 nop; not filled. L174_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L238_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleWait nop; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L176_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L178_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L239_LF9 nop; not filled. L178_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L239_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _SemHandleSignal nop; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L180_LF9: jal _LockCreate nop; not filled. add r2,r0,r1 addi r29,r29,#-8 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L181_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L183_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L240_LF9 nop; not filled. L183_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L240_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _LockHandleAcquire nop; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L185_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L187_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L241_LF9 nop; not filled. L187_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L241_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _LockHandleRelease nop; not filled. add r31,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r31 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L189_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L191_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L242_LF9 nop; not filled. L191_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L242_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondCreate nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L193_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L195_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L243_LF9 nop; not filled. L195_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L243_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondHandleWait nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L197_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L199_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L244_LF9 nop; not filled. L199_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L244_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondHandleSignal nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L201_LF9: andi r1,r4,#64 snei r1,r1,#0 bnez r1,L203_LF9 nop; not filled. addi r29,r29,#-16 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r3 addi r1,r30,#-60 sw 8(r29),r1 addi r7,r0,#4 sw 12(r29),r7 jal _MemoryCopyUserToSystem nop; not filled. j L245_LF9 nop; not filled. L203_LF9: addi r29,r29,#-16 sw (r29),r3 addi r1,r30,#-60 sw 4(r29),r1 addi r7,r0,#4 sw 8(r29),r7 jal _bcopy nop; not filled. L245_LF9: addi r29,r29,#16 addi r29,r29,#-8 lw r7,-60(r30) sw (r29),r7 jal _CondHandleBroadcast nop; not filled. add r2,r0,r1 lhi r1,((_currentPCB)>>16)&0xffff addui r1,r1,(_currentPCB)&0xffff lw r1,(r1) sw (r29),r1 sw 4(r29),r2 jal _ProcessSetResult nop; not filled. j L235_LF9 nop; not filled. L205_LF9: addi r29,r29,#-8 lhi r7,((LC8_LF9)>>16)&0xffff addui r7,r7,(LC8_LF9)&0xffff j L246_LF9 nop; not filled. L124_LF9: seqi r1,r2,#3 bnez r1,L225_LF9 nop; not filled. sgtui r1,r2,#3 bnez r1,L231_LF9 nop; not filled. seqi r1,r2,#1 bnez r1,L227_LF9 nop; not filled. seqi r1,r2,#2 beqz r1,L229_LF9 nop; not filled. j L226_LF9 nop; not filled. L231_LF9: seqi r1,r2,#64 bnez r1,L217_LF9 nop; not filled. sgtui r1,r2,#64 bnez r1,L232_LF9 nop; not filled. seqi r1,r2,#32 beqz r1,L229_LF9 nop; not filled. j L228_LF9 nop; not filled. L232_LF9: seqi r1,r2,#72 beqz r1,L229_LF9 nop; not filled. j L220_LF9 nop; not filled. L217_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L219_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L218_LF9 nop; not filled. L219_LF9: addi r29,r29,#-8 lhi r7,((LC9_LF9)>>16)&0xffff addui r7,r7,(LC9_LF9)&0xffff L248_LF9: sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L218_LF9: jal _ProcessSchedule nop; not filled. j L215_LF9 nop; not filled. L220_LF9: lhi r4,#-16 addui r4,r4,#416 lhi r3,#-16 addui r3,r3,#384 L221_LF9: lw r2,(r4) lw r1,(r3) addi r29,r29,#-16 lhi r7,((LC10_LF9)>>16)&0xffff addui r7,r7,(LC10_LF9)&0xffff sw (r29),r7 sw 4(r29),r1 sw 8(r29),r1 sw 12(r29),r2 jal _printf nop; not filled. addi r29,r29,#16 sgti r1,r2,#1 beqz r1,L215_LF9 nop; not filled. j L221_LF9 nop; not filled. L225_LF9: addi r29,r29,#-16 lhi r7,((LC11_LF9)>>16)&0xffff addui r7,r7,(LC11_LF9)&0xffff j L247_LF9 nop; not filled. L226_LF9: addi r29,r29,#-16 lhi r7,((LC12_LF9)>>16)&0xffff addui r7,r7,(LC12_LF9)&0xffff j L247_LF9 nop; not filled. L227_LF9: addi r29,r29,#-16 lhi r7,((LC13_LF9)>>16)&0xffff addui r7,r7,(LC13_LF9)&0xffff j L247_LF9 nop; not filled. L228_LF9: addi r29,r29,#-16 lhi r7,((LC14_LF9)>>16)&0xffff addui r7,r7,(LC14_LF9)&0xffff L247_LF9: sw (r29),r7 sw 4(r29),r6 sw 8(r29),r4 jal _printf nop; not filled. jal _exitsim nop; not filled. addi r29,r29,#16 j L215_LF9 nop; not filled. L229_LF9: addi r29,r29,#-8 lhi r7,((LC15_LF9)>>16)&0xffff addui r7,r7,(LC15_LF9)&0xffff L246_LF9: sw (r29),r7 sw 4(r29),r2 jal _printf nop; not filled. jal _exitsim nop; not filled. L235_LF9: addi r29,r29,#8 L215_LF9: addi r29,r29,#-8 lhi r2,((_debugstr)>>16)&0xffff addui r2,r2,(_debugstr)&0xffff sw (r29),r2 addi r7,r0,#116 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 bnez r1,L234_LF9 nop; not filled. addi r29,r29,#-8 sw (r29),r2 addi r7,r0,#43 sw 4(r29),r7 jal _dindex nop; not filled. addi r29,r29,#8 snei r1,r1,#0 beqz r1,L233_LF9 nop; not filled. L234_LF9: addi r29,r29,#-8 lhi r7,((LC16_LF9)>>16)&0xffff addui r7,r7,(LC16_LF9)&0xffff sw (r29),r7 jal _printf nop; not filled. addi r29,r29,#8 L233_LF9: jal _intrreturn nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _dointerrupt ; Compiled by GCC .align 2 .proc _isspace .global _isspace _isspace: ; Function 'isspace'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r2,3(r30) addi r31,r0,#0 andi r1,r2,#0x00ff seqi r1,r1,#32 bnez r1,L6_LF10 nop; not filled. addi r1,r2,#-9 andi r1,r1,#0x00ff sleui r1,r1,#1 beqz r1,L5_LF10 nop; not filled. L6_LF10: addi r31,r0,#1 L5_LF10: add r1,r0,r31 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isspace .align 2 .proc _isxdigit .global _isxdigit _isxdigit: ; Function 'isxdigit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lb r31,3(r30) addi r2,r0,#0 addi r1,r31,#-48 andi r1,r1,#0x00ff sleui r1,r1,#9 bnez r1,L12_LF10 nop; not filled. addi r1,r31,#-97 andi r1,r1,#0x00ff sleui r1,r1,#5 bnez r1,L12_LF10 nop; not filled. andi r1,r31,#0x00ff snei r1,r1,#65 bnez r1,L11_LF10 nop; not filled. L12_LF10: addi r2,r0,#1 L11_LF10: add r1,r0,r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _isxdigit .align 2 .proc _DisableIntrs .global _DisableIntrs _DisableIntrs: ; Function 'DisableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#15 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _DisableIntrs .align 2 .proc _EnableIntrs .global _EnableIntrs _EnableIntrs: ; Function 'EnableIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 addi r2,r0,#0 sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _EnableIntrs .align 2 .proc _RestoreIntrs .global _RestoreIntrs _RestoreIntrs: ; Function 'RestoreIntrs'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 addi r29,r29,#-8 lw r2,(r30) sw (r29),r2 jal _SetIntrs nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _RestoreIntrs .align 2 .proc _QueueLinkInit .global _QueueLinkInit _QueueLinkInit: ; Function 'QueueLinkInit'; 0 bytes of locals, 1 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 lw r1,(r30) lw r2,4(r30) addi r31,r0,#0 sw (r1),r31 sw 12(r1),r2 lw r2,0(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLinkInit .align 2 .proc _QueueNext .global _QueueNext _QueueNext: ; Function 'QueueNext'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueNext .align 2 .proc _QueuePrev .global _QueuePrev _QueuePrev: ; Function 'QueuePrev'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueuePrev .align 2 .proc _QueueFirst .global _QueueFirst _QueueFirst: ; Function 'QueueFirst'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueFirst .align 2 .proc _QueueLast .global _QueueLast _QueueLast: ; Function 'QueueLast'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,4(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLast .align 2 .proc _QueueInsertAfter .global _QueueInsertAfter _QueueInsertAfter: ; Function 'QueueInsertAfter'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r2,4(r30) lw r1,8(r30) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertAfter .align 2 .proc _QueueInsertFirst .global _QueueInsertFirst _QueueInsertFirst: ; Function 'QueueInsertFirst'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) sw 8(r1),r3 sw 4(r1),r3 lw r31,(r3) sw (r1),r31 sw (r3),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertFirst .align 2 .proc _QueueInsertLast .global _QueueInsertLast _QueueInsertLast: ; Function 'QueueInsertLast'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r3,(r30) lw r1,4(r30) lw r2,4(r3) sw 8(r1),r3 sw 4(r1),r2 lw r31,(r2) sw (r1),r31 sw (r2),r1 lw r2,(r1) sw 4(r2),r1 lw r1,8(r3) addi r1,r1,#1 sw 8(r3),r1 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueInsertLast .align 2 .proc _QueueRemove .global _QueueRemove _QueueRemove: ; Function 'QueueRemove'; 0 bytes of locals, 2 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#16; alloc local storage sw 0(r29),r2 sw 4(r29),r3 lw r31,(r30) lw r1,8(r31) lw r1,8(r1) sgti r1,r1,#0 beqz r1,L44_LF10 nop; not filled. lw r1,4(r31) lw r3,(r31) sw (r1),r3 lw r1,(r31) lw r3,4(r31) sw 4(r1),r3 lw r2,8(r31) lw r1,8(r2) addi r1,r1,#-1 sw 8(r2),r1 L44_LF10: addi r3,r0,#0 sw (r31),r3 lw r2,0(r29) lw r3,4(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueRemove .align 2 .proc _QueueLength .global _QueueLength _QueueLength: ; Function 'QueueLength'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueLength .align 2 .proc _QueueEmpty .global _QueueEmpty _QueueEmpty: ; Function 'QueueEmpty'; 0 bytes of locals, 0 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#8; alloc local storage lw r1,(r30) lw r1,8(r1) seqi r1,r1,#0 lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _QueueEmpty .data .align 2 LC0_LF10: .ascii "Process #\000" .align 2 LC1_LF10: .ascii "Running process %d (iteration %d)!\n\000" .text .align 2 .proc _doSomething_LF10 _doSomething_LF10: ; Function 'doSomething'; 80 bytes of locals, 7 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#120; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 sw 16(r29),r6 sw 20(r29),r7 sw 24(r29),r8 lw r6,(r30) addi r1,r0,#10 movi2fp f0,r6 movi2fp f1,r1 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x2 add r1,r1,r2 slli r1,r1,#0x1 sub r7,r6,r1 slei r1,r6,#99 beqz r1,L52_LF10 nop; not filled. addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF10)>>16)&0xffff addui r8,r8,(_mysems_LF10)&0xffff add r1,r1,r8 sw (r29),r1 addi r8,r0,#1 sw 4(r29),r8 jal _SemInit nop; not filled. addi r3,r0,#1 addi r29,r29,#8 addi r4,r30,#-48 addi r5,r30,#-88 add r2,r0,r6 L56_LF10: addi r29,r29,#-8 sw (r29),r4 lhi r8,((LC0_LF10)>>16)&0xffff addui r8,r8,(LC0_LF10)&0xffff sw 4(r29),r8 jal _dstrcpy nop; not filled. sw (r29),r3 sw 4(r29),r5 jal _ditoa nop; not filled. sw (r29),r4 sw 4(r29),r5 jal _dstrcat nop; not filled. addi r29,r29,#-8 lhi r8,((_doSomething_LF10)>>16)&0xffff addui r8,r8,(_doSomething_LF10)&0xffff sw (r29),r8 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 add r1,r1,r6 sw 4(r29),r1 sw 8(r29),r4 addi r8,r0,#0 sw 12(r29),r8 jal _ProcessFork nop; not filled. addi r29,r29,#16 add r2,r2,r6 addi r3,r3,#1 slei r1,r3,#6 bnez r1,L56_LF10 nop; not filled. L52_LF10: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF10)>>16)&0xffff addui r8,r8,(_mysems_LF10)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemWait nop; not filled. addi r3,r0,#0 addi r29,r29,#8 slli r2,r6,#0x1 slt r1,r3,r2 beqz r1,L59_LF10 nop; not filled. addi r5,r0,#1000 add r4,r0,r2 L61_LF10: movi2fp f0,r3 movi2fp f1,r5 div f0,f0,f1 movfp2i r2,f0 slli r1,r2,#0x5 sub r1,r1,r2 slli r1,r1,#0x2 add r1,r1,r2 slli r1,r1,#0x3 sne r1,r3,r1 bnez r1,L62_LF10 nop; not filled. addi r29,r29,#-16 lhi r8,((LC1_LF10)>>16)&0xffff addui r8,r8,(LC1_LF10)&0xffff sw (r29),r8 sw 4(r29),r6 sw 8(r29),r3 jal _printf nop; not filled. addi r29,r29,#16 L62_LF10: addi r3,r3,#1 slt r1,r3,r4 bnez r1,L61_LF10 nop; not filled. L59_LF10: addi r29,r29,#-8 slli r1,r7,#0x2 add r1,r1,r7 slli r1,r1,#0x2 lhi r8,((_mysems_LF10)>>16)&0xffff addui r8,r8,(_mysems_LF10)&0xffff add r1,r1,r8 sw (r29),r1 jal _SemSignal nop; not filled. addi r29,r29,#8 lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r6,16(r29) lw r7,20(r29) lw r8,24(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _doSomething_LF10 .data .align 2 LC2_LF10: .ascii "chasetail\000" .align 2 LC3_LF10: .ascii "Chasing tail %d.\n\000" .align 2 LC4_LF10: .ascii "Open of (%s,0x%x) returns 0x%x.\n\000" .align 2 LC5_LF10: .ascii "ChaseTail\000" .text .align 2 .proc _chaseTail_LF10 _chaseTail_LF10: ; Function 'chaseTail'; 0 bytes of locals, 4 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 sw 12(r29),r5 lw r4,(r30) lhi r3,((LC2_LF10)>>16)&0xffff addui r3,r3,(LC2_LF10)&0xffff addi r29,r29,#-8 lhi r5,((LC3_LF10)>>16)&0xffff addui r5,r5,(LC3_LF10)&0xffff sw (r29),r5 sw 4(r29),r4 jal _printf nop; not filled. sw (r29),r3 addi r2,r4,#8192 sw 4(r29),r2 jal _Open nop; not filled. addi r29,r29,#-8 lhi r5,((LC4_LF10)>>16)&0xffff addui r5,r5,(LC4_LF10)&0xffff sw (r29),r5 sw 4(r29),r3 sw 8(r29),r2 sw 12(r29),r1 jal _printf nop; not filled. addi r29,r29,#16 slei r1,r4,#39 beqz r1,L67_LF10 nop; not filled. addi r29,r29,#-16 lhi r5,((_chaseTail_LF10)>>16)&0xffff addui r5,r5,(_chaseTail_LF10)&0xffff sw (r29),r5 addi r1,r4,#1 sw 4(r29),r1 lhi r5,((LC5_LF10)>>16)&0xffff addui r5,r5,(LC5_LF10)&0xffff sw 8(r29),r5 addi r5,r0,#0 sw 12(r29),r5 jal _ProcessFork nop; not filled. addi r29,r29,#16 L67_LF10: lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r5,12(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _chaseTail_LF10 .data .align 2 LC6_LF10: .ascii "%d \000" .align 2 LC7_LF10: .ascii "Random number %02i is 0x%08x.\n\000" .text .align 2 .proc _SysprocCreateProcesses .global _SysprocCreateProcesses _SysprocCreateProcesses: ; Function 'SysprocCreateProcesses'; 0 bytes of locals, 3 regs to save. sw -4(r29),r30; push fp add r30,r0,r29; fp = sp sw -8(r29),r31; push ret addr subui r29,r29,#24; alloc local storage sw 0(r29),r2 sw 4(r29),r3 sw 8(r29),r4 lhi r2,((_mysems_LF10)>>16)&0xffff addui r2,r2,(_mysems_LF10)&0xffff addi r3,r2,#180 L90_LF10: addi r29,r29,#-8 sw (r29),r2 addi r4,r0,#1 sw 4(r29),r4 jal _SemInit nop; not filled. addi r29,r29,#8 addi r2,r2,#20 sle r1,r2,r3 bnez r1,L90_LF10 nop; not filled. lw r2,0(r29) lw r3,4(r29) lw r4,8(r29) lw r31,-8(r30) add r29,r0,r30 lw r30,-4(r30) jr r31 nop .endproc _SysprocCreateProcesses .data .align 2 _mysems_LF10: .space 200 ;;; This file just includes a single variable that contains the last address ;;; in the operating system. The rest of memory is available for use by ;;; processes. .align 2 .global _lastosaddress _lastosaddress: .word _lastosaddress+8 ;;; Ethan L. Miller, 1999. Released to the public domain ;;; ;;; Most of the traps are called in files from libtraps. .text .align 2 .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; for the benefit of gcc. .proc ___main .global ___main ___main: jr r31 nop .endproc ___main ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two sets of traps here. The traps such as Open and Close ;;; (note the capital letters) are for use by user programs. The traps ;;; with names such as open and close (lower case) are for use by the OS. ;;; .align 2 .proc _open .global _open _open: trap #0x2013 jr r31 nop .endproc _open .proc _close .global _close _close: trap #0x2014 jr r31 nop .endproc _close .proc _read .global _read _read: trap #0x2010 jr r31 nop .endproc _read .proc _write .global _write _write: trap #0x2011 jr r31 nop .endproc _write .proc _lseek .global _lseek _lseek: trap #0x2012 jr r31 nop .endproc _lseek ;;; The following are the traps to be used by user-level programs ;;; .align 2 .proc _Open .global _Open _Open: trap #0x213 jr r31 nop .endproc _Open .proc _Close .global _Close _Close: trap #0x214 jr r31 nop .endproc _Close .proc _Read .global _Read _Read: trap #0x210 jr r31 nop .endproc _Read .proc _Write .global _Write _Write: trap #0x211 jr r31 nop .endproc _Write .proc _Lseek .global _Lseek _Lseek: trap #0x212 jr r31 nop .endproc _Lseek ;;; ;;; Stub functions for DLX traps. ;;; ;;; Ethan L. Miller, 1999. Released to the public domain. ;;; ;;; There are two exit traps. The first, _exitsim, actually exits the ;;; simulator. The second, _exit, simply calls a regular trap in the ;;; DLX simulator, and would be suitable for a user program that wants ;;; to signal the OS that it's exiting. ;;; ;;; IMPORTANT: all code that's run "native" on the simulator - OS code and ;;; programs run without an OS - should call exitsim() rather than just ;;; falling through to exit. ;;; .align 2 .proc _exitsim .global _exitsim _exitsim: trap #0x2f00 jr r31 nop .endproc _exitsim .proc _exit .global _exit _exit: trap #0x300 jr r31 nop .endproc _exit ; ; Stub functions for DLX traps. ; ; Aaron Sawdey 1996; released to the Public Domain. ; .proc _printf .global _printf _printf: trap #0x2001 jr r31 nop .endproc _printf .text .global _etext _etext: .align 3 .data .global _edata _edata: